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_);