Define updateBaseConfiguration and updateDeviceInfo in BaseApiHandler
BUG:24267885
Change-Id: I8c885a2910eb152559ba59e51cc7df2ab85b3c58
Reviewed-on: https://weave-review.googlesource.com/1253
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/libweave/examples/ubuntu/build.sh b/libweave/examples/ubuntu/build.sh
index ea7499f..ae8148c 100755
--- a/libweave/examples/ubuntu/build.sh
+++ b/libweave/examples/ubuntu/build.sh
@@ -23,6 +23,6 @@
ninja -j $CORES -C out/${BUILD_CONFIG} $BUILD_TARGET || exit 1
if [[ $BUILD_TARGET == *"libweave_testrunner"* ]]; then
- out/${BUILD_CONFIG}/libweave_testrunner || exit 1
- out/${BUILD_CONFIG}/libweave_exports_testrunner || exit 1
+ out/${BUILD_CONFIG}/libweave_testrunner --gtest_break_on_failure || exit 1
+ out/${BUILD_CONFIG}/libweave_exports_testrunner --gtest_break_on_failure || exit 1
fi
diff --git a/libweave/examples/ubuntu/main.cc b/libweave/examples/ubuntu/main.cc
index b53e6c5..12a00d7 100644
--- a/libweave/examples/ubuntu/main.cc
+++ b/libweave/examples/ubuntu/main.cc
@@ -34,12 +34,7 @@
class CommandHandler {
public:
explicit CommandHandler(weave::Device* device) : device_{device} {
- device->AddCommandDefinitions(R"({
- "base": {
- "updateBaseConfiguration": {},
- "identify": {},
- "updateDeviceInfo": {}
- },
+ device->AddCommandDefinitionsFromJson(R"({
"_greeter": {
"_greet": {
"minimalRole": "user",
@@ -62,16 +57,16 @@
}
})");
- device->AddStateDefinitions(R"({
+ device->AddStateDefinitionsFromJson(R"({
"_greeter": {"_greetings_counter":"integer"},
"_ledflasher": {"_leds": {"items": "boolean"}}
})");
- device->SetState(R"({
+ device->SetStateFromJson(R"({
"_greeter": {"_greetings_counter": 0},
"_ledflasher":{"_leds": [false, false, false]}
})",
- nullptr);
+ nullptr);
device->AddCommandHandler("_greeter._greet",
base::Bind(&CommandHandler::OnGreetCommand,
diff --git a/libweave/include/weave/device.h b/libweave/include/weave/device.h
index c673fcb..eacd959 100644
--- a/libweave/include/weave/device.h
+++ b/libweave/include/weave/device.h
@@ -48,7 +48,7 @@
// Adds provided commands definitions. Can be called multiple times with
// condition that definitions do not conflict.
// Invalid value is fatal.
- virtual void AddCommandDefinitions(const std::string& json) = 0;
+ virtual void AddCommandDefinitionsFromJson(const std::string& json) = 0;
virtual void AddCommandDefinitions(const base::DictionaryValue& dict) = 0;
// Callback type for AddCommandHandler.
@@ -78,13 +78,13 @@
// Adds provided state definitions. Can be called multiple times with
// condition that definitions do not conflict.
// Invalid value is fatal.
- virtual void AddStateDefinitions(const std::string& json) = 0;
+ virtual void AddStateDefinitionsFromJson(const std::string& json) = 0;
virtual void AddStateDefinitions(const base::DictionaryValue& dict) = 0;
// Updates multiple properties of the state.
// It's recommended to call this to initialize state defined by
// AddStateDefinitions.
- virtual bool SetState(const std::string& json, ErrorPtr* error) = 0;
+ virtual bool SetStateFromJson(const std::string& json, ErrorPtr* error) = 0;
virtual bool SetState(const base::DictionaryValue& dict, ErrorPtr* error) = 0;
// Returns value of the single property.
diff --git a/libweave/include/weave/test/mock_device.h b/libweave/include/weave/test/mock_device.h
index de6f01c..98fc6c2 100644
--- a/libweave/include/weave/test/mock_device.h
+++ b/libweave/include/weave/test/mock_device.h
@@ -21,7 +21,7 @@
MOCK_CONST_METHOD0(GetSettings, const Settings&());
MOCK_METHOD1(AddSettingsChangedCallback,
void(const SettingsChangedCallback& callback));
- MOCK_METHOD1(AddCommandDefinitions, void(const std::string&));
+ MOCK_METHOD1(AddCommandDefinitionsFromJson, void(const std::string&));
MOCK_METHOD1(AddCommandDefinitions, void(const base::DictionaryValue&));
MOCK_METHOD2(AddCommandHandler,
void(const std::string&, const CommandHandlerCallback&));
@@ -29,9 +29,9 @@
bool(const base::DictionaryValue&, std::string*, ErrorPtr*));
MOCK_METHOD1(FindCommand, Command*(const std::string&));
MOCK_METHOD1(AddStateChangedCallback, void(const base::Closure& callback));
- MOCK_METHOD1(AddStateDefinitions, void(const std::string&));
+ MOCK_METHOD1(AddStateDefinitionsFromJson, void(const std::string&));
MOCK_METHOD1(AddStateDefinitions, void(const base::DictionaryValue&));
- MOCK_METHOD2(SetState, bool(const std::string&, ErrorPtr*));
+ MOCK_METHOD2(SetStateFromJson, bool(const std::string&, ErrorPtr*));
MOCK_METHOD2(SetState, bool(const base::DictionaryValue&, ErrorPtr*));
MOCK_CONST_METHOD1(MockGetStateProperty,
base::Value*(const std::string& name));
diff --git a/libweave/src/base_api_handler.cc b/libweave/src/base_api_handler.cc
index e63d8cb..8b6bf05 100644
--- a/libweave/src/base_api_handler.cc
+++ b/libweave/src/base_api_handler.cc
@@ -30,6 +30,13 @@
settings.firmware_version);
CHECK(device_->SetStateProperties(state, nullptr));
+ device->AddCommandDefinitionsFromJson(R"({
+ "base": {
+ "updateBaseConfiguration": {},
+ "updateDeviceInfo": {}
+ }
+ })");
+
device_->AddCommandHandler(
"base.updateBaseConfiguration",
base::Bind(&BaseApiHandler::UpdateBaseConfiguration,
diff --git a/libweave/src/base_api_handler_unittest.cc b/libweave/src/base_api_handler_unittest.cc
index 8d30619..8de1169 100644
--- a/libweave/src/base_api_handler_unittest.cc
+++ b/libweave/src/base_api_handler_unittest.cc
@@ -34,75 +34,25 @@
.WillRepeatedly(Return(true));
command_manager_ = std::make_shared<CommandManager>();
+ command_manager_->Startup();
+
state_manager_ = std::make_shared<StateManager>(&mock_state_change_queue_);
+ state_manager_->Startup();
EXPECT_CALL(device_, SetStateProperties(_, _))
.WillRepeatedly(
Invoke(state_manager_.get(), &StateManager::SetProperties));
+ EXPECT_CALL(device_, AddCommandDefinitionsFromJson(_))
+ .WillRepeatedly(Invoke([this](const std::string& json) {
+ EXPECT_TRUE(command_manager_->LoadCommands(json, nullptr));
+ }));
+
EXPECT_CALL(device_, AddCommandHandler(AnyOf("base.updateBaseConfiguration",
"base.updateDeviceInfo"),
_))
.WillRepeatedly(
Invoke(command_manager_.get(), &CommandManager::AddCommandHandler));
- auto state_definition = test::CreateDictionaryValue(R"({
- 'base': {
- 'firmwareVersion': 'string',
- 'localDiscoveryEnabled': 'boolean',
- 'localAnonymousAccessMaxRole': [ 'none', 'viewer', 'user' ],
- 'localPairingEnabled': 'boolean',
- 'network': {
- 'properties': {
- 'name': 'string'
- }
- }
- }
- })");
- auto state_defaults = test::CreateDictionaryValue(R"({
- 'base': {
- 'firmwareVersion': '123123',
- 'localDiscoveryEnabled': false,
- 'localAnonymousAccessMaxRole': 'none',
- 'localPairingEnabled': false
- }
- })");
- ASSERT_TRUE(
- state_manager_->LoadStateDefinition(*state_definition, nullptr));
- ASSERT_TRUE(state_manager_->LoadStateDefaults(*state_defaults, nullptr));
-
- auto base_commands = test::CreateDictionaryValue(R"({
- 'base': {
- 'updateBaseConfiguration': {
- 'parameters': {
- 'localDiscoveryEnabled': 'boolean',
- 'localAnonymousAccessMaxRole': [ 'none', 'viewer', 'user' ],
- 'localPairingEnabled': 'boolean'
- },
- 'results': {}
- },
- 'updateDeviceInfo': {
- 'parameters': {
- 'description': 'string',
- 'name': {
- 'type': 'string',
- 'minLength': 1
- },
- 'location': 'string'
- },
- 'results': {}
- }
- }
- })");
- EXPECT_TRUE(command_manager_->LoadBaseCommands(*base_commands, nullptr));
-
- auto handled_commands = test::CreateDictionaryValue(R"({
- 'base': {
- 'updateBaseConfiguration': {},
- 'updateDeviceInfo': {}
- }
- })");
- EXPECT_TRUE(command_manager_->LoadCommands(*handled_commands, nullptr));
-
std::unique_ptr<Config> config{new Config{&config_store_}};
config->Load();
dev_reg_.reset(new DeviceRegistrationInfo(command_manager_, state_manager_,
diff --git a/libweave/src/device_manager.cc b/libweave/src/device_manager.cc
index 865825f..0f81a2e 100644
--- a/libweave/src/device_manager.cc
+++ b/libweave/src/device_manager.cc
@@ -92,7 +92,7 @@
device_info_->AddGcdStateChangedCallback(callback);
}
-void DeviceManager::AddCommandDefinitions(const std::string& json) {
+void DeviceManager::AddCommandDefinitionsFromJson(const std::string& json) {
CHECK(command_manager_->LoadCommands(json, nullptr));
}
@@ -119,7 +119,7 @@
state_manager_->AddChangedCallback(callback);
}
-void DeviceManager::AddStateDefinitions(const std::string& json) {
+void DeviceManager::AddStateDefinitionsFromJson(const std::string& json) {
CHECK(state_manager_->LoadStateDefinition(json, nullptr));
}
@@ -127,7 +127,7 @@
CHECK(state_manager_->LoadStateDefinition(dict, nullptr));
}
-bool DeviceManager::SetState(const std::string& json, ErrorPtr* error) {
+bool DeviceManager::SetStateFromJson(const std::string& json, ErrorPtr* error) {
return state_manager_->LoadStateDefaults(json, error);
}
diff --git a/libweave/src/device_manager.h b/libweave/src/device_manager.h
index 516e5a4..7161dc5 100644
--- a/libweave/src/device_manager.h
+++ b/libweave/src/device_manager.h
@@ -37,7 +37,7 @@
const Settings& GetSettings() const override;
void AddSettingsChangedCallback(
const SettingsChangedCallback& callback) override;
- void AddCommandDefinitions(const std::string& json) override;
+ void AddCommandDefinitionsFromJson(const std::string& json) override;
void AddCommandDefinitions(const base::DictionaryValue& dict) override;
bool AddCommand(const base::DictionaryValue& command,
std::string* id,
@@ -46,9 +46,9 @@
void AddCommandHandler(const std::string& command_name,
const CommandHandlerCallback& callback) override;
void AddStateChangedCallback(const base::Closure& callback) override;
- void AddStateDefinitions(const std::string& json) override;
+ void AddStateDefinitionsFromJson(const std::string& json) override;
void AddStateDefinitions(const base::DictionaryValue& dict) override;
- bool SetState(const std::string& json, ErrorPtr* error) override;
+ bool SetStateFromJson(const std::string& json, ErrorPtr* error) override;
bool SetState(const base::DictionaryValue& dict, ErrorPtr* error) override;
bool SetStateProperties(const base::DictionaryValue& property_set,
ErrorPtr* error) override;
diff --git a/libweave/src/weave_unittest.cc b/libweave/src/weave_unittest.cc
index b794fd6..1b926f6 100644
--- a/libweave/src/weave_unittest.cc
+++ b/libweave/src/weave_unittest.cc
@@ -227,9 +227,9 @@
&http_client_, &network_, &dns_sd_,
&http_server_, &wifi_, &bluetooth_);
- device_->AddCommandDefinitions(kCommandDefs);
- device_->AddStateDefinitions(kStateDefs);
- device_->SetState(kStateDefaults, nullptr);
+ device_->AddCommandDefinitionsFromJson(kCommandDefs);
+ device_->AddStateDefinitionsFromJson(kStateDefs);
+ device_->SetStateFromJson(kStateDefaults, nullptr);
for (const auto& cb : http_server_changed_cb_)
cb.Run(http_server_);
@@ -285,7 +285,7 @@
device_ = weave::Device::Create(&config_store_, &task_runner_, &http_client_,
&network_, &dns_sd_, &http_server_, nullptr,
&bluetooth_);
- device_->AddCommandDefinitions(kCommandDefs);
+ device_->AddCommandDefinitionsFromJson(kCommandDefs);
for (const auto& cb : http_server_changed_cb_)
cb.Run(http_server_);