Compile libupdate_engine without DBus.
Test: mma with and without BRILLO_USE_DBUS=1
Test: adb shell /data/nativetest/update_engine_unittests/update_engine_unittests
Bug: 28800946
Change-Id: If3b05e7bc7a123d3d9b0dcc4597d915249a2de33
diff --git a/update_manager/real_device_policy_provider.cc b/update_manager/real_device_policy_provider.cc
index e3e0659..d9880c3 100644
--- a/update_manager/real_device_policy_provider.cc
+++ b/update_manager/real_device_policy_provider.cc
@@ -52,6 +52,7 @@
// On Init() we try to get the device policy and keep updating it.
RefreshDevicePolicyAndReschedule();
+#if USE_DBUS
// We also listen for signals from the session manager to force a device
// policy refresh.
session_manager_proxy_->RegisterPropertyChangeCompleteSignalHandler(
@@ -59,6 +60,7 @@
base::Unretained(this)),
base::Bind(&RealDevicePolicyProvider::OnSignalConnected,
base::Unretained(this)));
+#endif // USE_DBUS
return true;
}
diff --git a/update_manager/real_device_policy_provider.h b/update_manager/real_device_policy_provider.h
index 51c7db9..5b5ee58 100644
--- a/update_manager/real_device_policy_provider.h
+++ b/update_manager/real_device_policy_provider.h
@@ -24,7 +24,9 @@
#include <brillo/message_loops/message_loop.h>
#include <gtest/gtest_prod.h> // for FRIEND_TEST
#include <policy/libpolicy.h>
+#if USE_DBUS
#include <session_manager/dbus-proxies.h>
+#endif // USE_DBUS
#include "update_engine/update_manager/device_policy_provider.h"
#include "update_engine/update_manager/generic_variables.h"
@@ -34,12 +36,16 @@
// DevicePolicyProvider concrete implementation.
class RealDevicePolicyProvider : public DevicePolicyProvider {
public:
+#if USE_DBUS
RealDevicePolicyProvider(
std::unique_ptr<org::chromium::SessionManagerInterfaceProxyInterface>
session_manager_proxy,
policy::PolicyProvider* policy_provider)
: policy_provider_(policy_provider),
session_manager_proxy_(std::move(session_manager_proxy)) {}
+#endif // USE_DBUS
+ explicit RealDevicePolicyProvider(policy::PolicyProvider* policy_provider)
+ : policy_provider_(policy_provider) {}
~RealDevicePolicyProvider();
// Initializes the provider and returns whether it succeeded.
@@ -141,9 +147,11 @@
brillo::MessageLoop::TaskId scheduled_refresh_{
brillo::MessageLoop::kTaskIdNull};
+#if USE_DBUS
// The DBus (mockable) session manager proxy.
std::unique_ptr<org::chromium::SessionManagerInterfaceProxyInterface>
session_manager_proxy_;
+#endif // USE_DBUS
// Variable exposing whether the policy is loaded.
AsyncCopyVariable<bool> var_device_policy_is_loaded_{
diff --git a/update_manager/real_device_policy_provider_unittest.cc b/update_manager/real_device_policy_provider_unittest.cc
index 94746b7..71c95bb 100644
--- a/update_manager/real_device_policy_provider_unittest.cc
+++ b/update_manager/real_device_policy_provider_unittest.cc
@@ -26,17 +26,23 @@
#include <gtest/gtest.h>
#include <policy/mock_device_policy.h>
#include <policy/mock_libpolicy.h>
+#if USE_DBUS
#include <session_manager/dbus-proxies.h>
#include <session_manager/dbus-proxy-mocks.h>
+#endif // USE_DBUS
#include "update_engine/common/test_utils.h"
+#if USE_DBUS
#include "update_engine/dbus_test_utils.h"
+#endif // USE_DBUS
#include "update_engine/update_manager/umtest_utils.h"
using base::TimeDelta;
using brillo::MessageLoop;
using chromeos_update_engine::ConnectionType;
+#if USE_DBUS
using chromeos_update_engine::dbus_test_utils::MockSignalHandler;
+#endif // USE_DBUS
using std::set;
using std::string;
using std::unique_ptr;
@@ -53,20 +59,26 @@
protected:
void SetUp() override {
loop_.SetAsCurrent();
+#if USE_DBUS
auto session_manager_proxy_mock =
new org::chromium::SessionManagerInterfaceProxyMock();
provider_.reset(new RealDevicePolicyProvider(
brillo::make_unique_ptr(session_manager_proxy_mock),
&mock_policy_provider_));
+#else
+ provider_.reset(new RealDevicePolicyProvider(&mock_policy_provider_));
+#endif // USE_DBUS
// By default, we have a device policy loaded. Tests can call
// SetUpNonExistentDevicePolicy() to override this.
SetUpExistentDevicePolicy();
+#if USE_DBUS
// Setup the session manager_proxy such that it will accept the signal
// handler and store it in the |property_change_complete_| once registered.
MOCK_SIGNAL_HANDLER_EXPECT_SIGNAL_HANDLER(property_change_complete_,
*session_manager_proxy_mock,
PropertyChangeComplete);
+#endif // USE_DBUS
}
void TearDown() override {
@@ -98,8 +110,10 @@
testing::NiceMock<policy::MockPolicyProvider> mock_policy_provider_;
unique_ptr<RealDevicePolicyProvider> provider_;
+#if USE_DBUS
// The registered signal handler for the signal.
MockSignalHandler<void(const string&)> property_change_complete_;
+#endif // USE_DBUS
};
TEST_F(UmRealDevicePolicyProviderTest, RefreshScheduledTest) {
@@ -115,21 +129,29 @@
EXPECT_CALL(mock_policy_provider_, Reload());
EXPECT_TRUE(provider_->Init());
Mock::VerifyAndClearExpectations(&mock_policy_provider_);
-
+ // We won't be notified that signal is connected without DBus.
+#if USE_DBUS
EXPECT_CALL(mock_policy_provider_, Reload());
+#endif // USE_DBUS
loop_.RunOnce(false);
}
TEST_F(UmRealDevicePolicyProviderTest, NonExistentDevicePolicyReloaded) {
// Checks that the policy is reloaded by RefreshDevicePolicy().
SetUpNonExistentDevicePolicy();
+ // We won't be notified that signal is connected without DBus.
+#if USE_DBUS
EXPECT_CALL(mock_policy_provider_, Reload()).Times(3);
+#else
+ EXPECT_CALL(mock_policy_provider_, Reload()).Times(2);
+#endif // USE_DBUS
EXPECT_TRUE(provider_->Init());
loop_.RunOnce(false);
// Force the policy refresh.
provider_->RefreshDevicePolicy();
}
+#if USE_DBUS
TEST_F(UmRealDevicePolicyProviderTest, SessionManagerSignalForcesReload) {
// Checks that a signal from the SessionManager forces a reload.
SetUpNonExistentDevicePolicy();
@@ -142,6 +164,7 @@
ASSERT_TRUE(property_change_complete_.IsHandlerRegistered());
property_change_complete_.signal_callback().Run("success");
}
+#endif // USE_DBUS
TEST_F(UmRealDevicePolicyProviderTest, NonExistentDevicePolicyEmptyVariables) {
SetUpNonExistentDevicePolicy();
@@ -199,7 +222,11 @@
TEST_F(UmRealDevicePolicyProviderTest, ScatterFactorConverted) {
SetUpExistentDevicePolicy();
EXPECT_CALL(mock_device_policy_, GetScatterFactorInSeconds(_))
+#if USE_DBUS
.Times(2)
+#else
+ .Times(1)
+#endif // USE_DBUS
.WillRepeatedly(DoAll(SetArgPointee<0>(1234), Return(true)));
EXPECT_TRUE(provider_->Init());
loop_.RunOnce(false);
@@ -211,7 +238,11 @@
TEST_F(UmRealDevicePolicyProviderTest, NegativeScatterFactorIgnored) {
SetUpExistentDevicePolicy();
EXPECT_CALL(mock_device_policy_, GetScatterFactorInSeconds(_))
+#if USE_DBUS
.Times(2)
+#else
+ .Times(1)
+#endif // USE_DBUS
.WillRepeatedly(DoAll(SetArgPointee<0>(-1), Return(true)));
EXPECT_TRUE(provider_->Init());
loop_.RunOnce(false);
@@ -222,7 +253,11 @@
TEST_F(UmRealDevicePolicyProviderTest, AllowedTypesConverted) {
SetUpExistentDevicePolicy();
EXPECT_CALL(mock_device_policy_, GetAllowedConnectionTypesForUpdate(_))
+#if USE_DBUS
.Times(2)
+#else
+ .Times(1)
+#endif // USE_DBUS
.WillRepeatedly(DoAll(
SetArgPointee<0>(set<string>{"bluetooth", "wifi", "not-a-type"}),
Return(true)));
diff --git a/update_manager/real_system_provider.cc b/update_manager/real_system_provider.cc
index fde6bfa..44d5566 100644
--- a/update_manager/real_system_provider.cc
+++ b/update_manager/real_system_provider.cc
@@ -22,7 +22,9 @@
#include <base/time/time.h>
#include "update_engine/common/utils.h"
+#if USE_LIBCROS
#include "update_engine/libcros_proxy.h"
+#endif
#include "update_engine/update_manager/generic_variables.h"
#include "update_engine/update_manager/variable.h"
diff --git a/update_manager/real_system_provider_unittest.cc b/update_manager/real_system_provider_unittest.cc
index bb42817..c997ad8 100644
--- a/update_manager/real_system_provider_unittest.cc
+++ b/update_manager/real_system_provider_unittest.cc
@@ -20,31 +20,37 @@
#include <base/time/time.h>
#include <brillo/make_unique_ptr.h>
+#include <gmock/gmock.h>
#include <gtest/gtest.h>
-#include "libcros/dbus-proxies.h"
-#include "libcros/dbus-proxy-mocks.h"
#include "update_engine/common/fake_boot_control.h"
#include "update_engine/common/fake_hardware.h"
-#include "update_engine/libcros_proxy.h"
#include "update_engine/update_manager/umtest_utils.h"
+#if USE_LIBCROS
+#include "libcros/dbus-proxies.h"
+#include "libcros/dbus-proxy-mocks.h"
+#include "update_engine/libcros_proxy.h"
using org::chromium::LibCrosServiceInterfaceProxyMock;
+#endif // USE_LIBCROS
using std::unique_ptr;
using testing::_;
using testing::DoAll;
using testing::Return;
using testing::SetArgPointee;
+#if USE_LIBCROS
namespace {
const char kRequiredPlatformVersion[] ="1234.0.0";
} // namespace
+#endif // USE_LIBCROS
namespace chromeos_update_manager {
class UmRealSystemProviderTest : public ::testing::Test {
protected:
void SetUp() override {
+#if USE_LIBCROS
service_interface_mock_ = new LibCrosServiceInterfaceProxyMock();
libcros_proxy_.reset(new chromeos_update_engine::LibCrosProxy(
brillo::make_unique_ptr(service_interface_mock_),
@@ -56,8 +62,12 @@
.WillByDefault(
DoAll(SetArgPointee<0>(kRequiredPlatformVersion), Return(true)));
- provider_.reset(new RealSystemProvider(&fake_hardware_, &fake_boot_control_,
- libcros_proxy_.get()));
+ provider_.reset(new RealSystemProvider(
+ &fake_hardware_, &fake_boot_control_, libcros_proxy_.get()));
+#else
+ provider_.reset(
+ new RealSystemProvider(&fake_hardware_, &fake_boot_control_, nullptr));
+#endif // USE_LIBCROS
EXPECT_TRUE(provider_->Init());
}
@@ -65,11 +75,13 @@
chromeos_update_engine::FakeBootControl fake_boot_control_;
unique_ptr<RealSystemProvider> provider_;
+#if USE_LIBCROS
// Local pointers to the mocks. The instances are owned by the
// |libcros_proxy_|.
LibCrosServiceInterfaceProxyMock* service_interface_mock_;
unique_ptr<chromeos_update_engine::LibCrosProxy> libcros_proxy_;
+#endif // USE_LIBCROS
};
TEST_F(UmRealSystemProviderTest, InitTest) {
diff --git a/update_manager/state_factory.cc b/update_manager/state_factory.cc
index bd7160a..6c8808b 100644
--- a/update_manager/state_factory.cc
+++ b/update_manager/state_factory.cc
@@ -20,20 +20,24 @@
#include <base/logging.h>
#include <brillo/make_unique_ptr.h>
+#if USE_DBUS
#include <session_manager/dbus-proxies.h>
+#endif // USE_DBUS
#include "update_engine/common/clock_interface.h"
-#include "update_engine/dbus_connection.h"
-#include "update_engine/libcros_proxy.h"
-#include "update_engine/shill_proxy.h"
+#include "update_engine/update_manager/fake_shill_provider.h"
#include "update_engine/update_manager/real_config_provider.h"
#include "update_engine/update_manager/real_device_policy_provider.h"
#include "update_engine/update_manager/real_random_provider.h"
-#include "update_engine/update_manager/real_shill_provider.h"
#include "update_engine/update_manager/real_state.h"
#include "update_engine/update_manager/real_system_provider.h"
#include "update_engine/update_manager/real_time_provider.h"
#include "update_engine/update_manager/real_updater_provider.h"
+#if USE_DBUS
+#include "update_engine/dbus_connection.h"
+#include "update_engine/shill_proxy.h"
+#include "update_engine/update_manager/real_shill_provider.h"
+#endif // USE_DBUS
using std::unique_ptr;
@@ -46,6 +50,7 @@
chromeos_update_engine::ClockInterface* const clock = system_state->clock();
unique_ptr<RealConfigProvider> config_provider(
new RealConfigProvider(system_state->hardware()));
+#if USE_DBUS
scoped_refptr<dbus::Bus> bus =
chromeos_update_engine::DBusConnection::Get()->GetDBus();
unique_ptr<RealDevicePolicyProvider> device_policy_provider(
@@ -53,9 +58,14 @@
brillo::make_unique_ptr(
new org::chromium::SessionManagerInterfaceProxy(bus)),
policy_provider));
- unique_ptr<RealRandomProvider> random_provider(new RealRandomProvider());
unique_ptr<RealShillProvider> shill_provider(
new RealShillProvider(new chromeos_update_engine::ShillProxy(), clock));
+#else
+ unique_ptr<RealDevicePolicyProvider> device_policy_provider(
+ new RealDevicePolicyProvider(policy_provider));
+ unique_ptr<FakeShillProvider> shill_provider(new FakeShillProvider());
+#endif // USE_DBUS
+ unique_ptr<RealRandomProvider> random_provider(new RealRandomProvider());
unique_ptr<RealSystemProvider> system_provider(new RealSystemProvider(
system_state->hardware(), system_state->boot_control(), libcros_proxy));
unique_ptr<RealTimeProvider> time_provider(new RealTimeProvider(clock));
@@ -65,7 +75,9 @@
if (!(config_provider->Init() &&
device_policy_provider->Init() &&
random_provider->Init() &&
+#if USE_DBUS
shill_provider->Init() &&
+#endif // USE_DBUS
system_provider->Init() &&
time_provider->Init() &&
updater_provider->Init())) {