void InstanceAvailabilityStatusChangedEvent::onServiceInstanceStatus( std::shared_ptr<Proxy> _proxy, service_id_t _serviceId, instance_id_t _instanceId, bool _isAvailable, void* _data) { (void)_proxy; InstanceAvailabilityStatusChangedEvent* itsSelf = static_cast<InstanceAvailabilityStatusChangedEvent*>(_data); if(_instanceId != vsomeip::ANY_INSTANCE) { Address service(_serviceId, _instanceId); CommonAPI::Address capiAddressNewService; AddressTranslator::get()->translate(service, capiAddressNewService); if(capiAddressNewService.getInterface() == itsSelf->observedInterfaceName_) { if(_isAvailable) { if (itsSelf->addInstance(capiAddressNewService, _instanceId)) { itsSelf->notifyListeners(capiAddressNewService.getAddress(), CommonAPI::AvailabilityStatus::AVAILABLE); } } else { if (itsSelf->removeInstance(capiAddressNewService, _instanceId)) { itsSelf->notifyListeners(capiAddressNewService.getAddress(), CommonAPI::AvailabilityStatus::NOT_AVAILABLE); } } } else { COMMONAPI_ERROR( itsSelf->observedInterfaceName_ + " doesn't match " + capiAddressNewService.getInterface()); } } }
TEST_F(AddressTranslatorTest, InsertAddressNotPossibleConflictConfigFile) { std::shared_ptr<CommonAPI::DBus::DBusAddressTranslator> translator = CommonAPI::DBus::DBusAddressTranslator::get(); CommonAPI::DBus::DBusAddress dbusAddressInsertRef("my.new.service.config_my.new.instance.config", "/my/new/instance/config", "my.new.service.config"); std::string commonApiAddressInsertRef = "local:my.new.service.config:my.new.instance.config"; CommonAPI::DBus::DBusAddress dbusAddressResult; CommonAPI::Address commonApiAddressResult; // try to overwrite address translator->insert(commonApiAddresses[1], dbusAddressInsertRef.getService(), dbusAddressInsertRef.getObjectPath(), dbusAddressInsertRef.getInterface()); //check that inserting was not possible translator->translate(commonApiAddresses[1], dbusAddressResult); std::cout << dbusAddressResult.getService() << " " << dbusAddressResult.getObjectPath() << " " << dbusAddressResult.getInterface() << std::endl; ASSERT_EQ(dbusAddresses[1].getService(), dbusAddressResult.getService()); ASSERT_EQ(dbusAddresses[1].getObjectPath(), dbusAddressResult.getObjectPath()); ASSERT_EQ(dbusAddresses[1].getInterface(), dbusAddressResult.getInterface()); translator->translate(CommonAPI::DBus::DBusAddress(dbusAddressInsertRef.getService(), dbusAddressInsertRef.getObjectPath(), dbusAddressInsertRef.getInterface()), commonApiAddressResult); std::cout << dbusAddressInsertRef.getService() << " " << dbusAddressInsertRef.getObjectPath() << " " << dbusAddressInsertRef.getInterface() << std::endl; std::cout << commonApiAddressResult.getDomain() << " " << commonApiAddressResult.getInterface() << " " << commonApiAddressResult.getInstance() << std::endl; ASSERT_EQ(commonApiAddressInsertRef, commonApiAddressResult.getAddress()); translator->translate(CommonAPI::DBus::DBusAddress(dbusAddresses[1].getService(), dbusAddresses[1].getObjectPath(), dbusAddresses[1].getInterface()), commonApiAddressResult); std::cout << dbusAddresses[1].getService() << " " << dbusAddresses[1].getObjectPath() << " " << dbusAddresses[1].getInterface() << std::endl; std::cout << commonApiAddressResult.getDomain() << " " << commonApiAddressResult.getInterface() << " " << commonApiAddressResult.getInstance() << std::endl; ASSERT_EQ(commonApiAddresses[1], commonApiAddressResult.getAddress()); }
TEST_F(AddressTranslatorTest, InsertAddressPossible) { std::shared_ptr<CommonAPI::DBus::DBusAddressTranslator> translator = CommonAPI::DBus::DBusAddressTranslator::get(); std::string commonApiAddressRef = "local:my.service:my.instance"; CommonAPI::DBus::DBusAddress dbusAddressInsertRef("my.new.service_my.new.instance", "/my/new/instance", "my.new.service"); CommonAPI::DBus::DBusAddress dbusAddressSecondInsertRef("my.new.second.service_my.new.second.instance", "/my/new/second/instance", "my.new.second.service"); std::string commonApiSecondInsertAddressRef = "local:my.new.second.service:my.new.second.instance"; CommonAPI::DBus::DBusAddress dbusAddressResult; CommonAPI::Address commonApiAddressResult; // insert new address translator->insert(commonApiAddressRef, dbusAddressInsertRef.getService(), dbusAddressInsertRef.getObjectPath(), dbusAddressInsertRef.getInterface()); //check inserted address translator->translate(commonApiAddressRef, dbusAddressResult); std::cout << dbusAddressResult.getService() << " " << dbusAddressResult.getObjectPath() << " " << dbusAddressResult.getInterface() << std::endl; ASSERT_EQ(dbusAddressInsertRef.getService(), dbusAddressResult.getService()); ASSERT_EQ(dbusAddressInsertRef.getObjectPath(), dbusAddressResult.getObjectPath()); ASSERT_EQ(dbusAddressInsertRef.getInterface(), dbusAddressResult.getInterface()); translator->translate(CommonAPI::DBus::DBusAddress(dbusAddressInsertRef.getService(), dbusAddressInsertRef.getObjectPath(), dbusAddressInsertRef.getInterface()), commonApiAddressResult); std::cout << dbusAddressInsertRef.getService() << " " << dbusAddressInsertRef.getObjectPath() << " " << dbusAddressInsertRef.getInterface() << std::endl; std::cout << commonApiAddressResult.getDomain() << " " << commonApiAddressResult.getInterface() << " " << commonApiAddressResult.getInstance() << std::endl; ASSERT_EQ(commonApiAddressRef, commonApiAddressResult.getAddress()); // try overwriting address translator->insert(commonApiAddressRef, dbusAddressSecondInsertRef.getService(), dbusAddressSecondInsertRef.getObjectPath(), dbusAddressSecondInsertRef.getInterface()); //check overwritten not possible translator->translate(commonApiAddressRef, dbusAddressResult); std::cout << dbusAddressResult.getService() << " " << dbusAddressResult.getObjectPath() << " " << dbusAddressResult.getInterface() << std::endl; ASSERT_EQ(dbusAddressInsertRef.getService(), dbusAddressResult.getService()); ASSERT_EQ(dbusAddressInsertRef.getObjectPath(), dbusAddressResult.getObjectPath()); ASSERT_EQ(dbusAddressInsertRef.getInterface(), dbusAddressResult.getInterface()); translator->translate(CommonAPI::DBus::DBusAddress(dbusAddressSecondInsertRef.getService(), dbusAddressSecondInsertRef.getObjectPath(), dbusAddressSecondInsertRef.getInterface()), commonApiAddressResult); std::cout << dbusAddressSecondInsertRef.getService() << " " << dbusAddressSecondInsertRef.getObjectPath() << " " << dbusAddressSecondInsertRef.getInterface() << std::endl; std::cout << commonApiAddressResult.getDomain() << " " << commonApiAddressResult.getInterface() << " " << commonApiAddressResult.getInstance() << std::endl; ASSERT_EQ(commonApiSecondInsertAddressRef, commonApiAddressResult.getAddress()); translator->translate(CommonAPI::DBus::DBusAddress(dbusAddressInsertRef.getService(), dbusAddressInsertRef.getObjectPath(), dbusAddressInsertRef.getInterface()), commonApiAddressResult); std::cout << dbusAddressInsertRef.getService() << " " << dbusAddressInsertRef.getObjectPath() << " " << dbusAddressInsertRef.getInterface() << std::endl; std::cout << commonApiAddressResult.getDomain() << " " << commonApiAddressResult.getInterface() << " " << commonApiAddressResult.getInstance() << std::endl; ASSERT_EQ(commonApiAddressRef, commonApiAddressResult.getAddress()); }
TEST_F(AddressTranslatorTest, CheckWellKnownNameInsertWorks) { std::shared_ptr<CommonAPI::DBus::DBusAddressTranslator> translator = CommonAPI::DBus::DBusAddressTranslator::get(); std::string commonApiAddressRef = "local:my.well.insert.other.interface:my.well.insert.other.instance"; CommonAPI::DBus::DBusAddress dbusAddressInsertRef("my.well.known.name", "/my/well/insert/instance", "my.well.insert.interface"); CommonAPI::DBus::DBusAddress dbusAddressResult; CommonAPI::Address commonApiAddressResult; translator->insert(commonApiAddressRef, dbusAddressInsertRef.getService(), dbusAddressInsertRef.getObjectPath(), dbusAddressInsertRef.getInterface()); translator->translate(CommonAPI::DBus::DBusAddress(dbusAddressInsertRef.getService(), dbusAddressInsertRef.getObjectPath(), dbusAddressInsertRef.getInterface()), commonApiAddressResult); std::cout << dbusAddressInsertRef.getService() << " " << dbusAddressInsertRef.getObjectPath() << " " << dbusAddressInsertRef.getInterface() << std::endl; std::cout << commonApiAddressResult.getDomain() << " " << commonApiAddressResult.getInterface() << " " << commonApiAddressResult.getInstance() << std::endl; ASSERT_EQ(commonApiAddressRef, commonApiAddressResult.getAddress()); translator->translate(commonApiAddressRef, dbusAddressResult); std::cout << dbusAddressResult.getService() << " " << dbusAddressResult.getObjectPath() << " " << dbusAddressResult.getInterface() << std::endl; ASSERT_EQ(dbusAddressInsertRef.getService(), dbusAddressResult.getService()); ASSERT_EQ(dbusAddressInsertRef.getObjectPath(), dbusAddressResult.getObjectPath()); ASSERT_EQ(dbusAddressInsertRef.getInterface(), dbusAddressResult.getInterface()); }
TEST_F(AddressTranslatorTest, ParsesCommonAPIAddresses) { std::shared_ptr<CommonAPI::DBus::DBusAddressTranslator> translator = CommonAPI::DBus::DBusAddressTranslator::get(); for(unsigned int i = 0; i < commonApiAddresses.size(); i++) { CommonAPI::Address commonApiAddress; translator->translate(CommonAPI::DBus::DBusAddress(dbusAddresses[i].getService(), dbusAddresses[i].getObjectPath(), dbusAddresses[i].getInterface()), commonApiAddress); std::cout << dbusAddresses[i].getService() << " " << dbusAddresses[i].getObjectPath() << " " << dbusAddresses[i].getInterface() << std::endl; std::cout << commonApiAddress.getDomain() << " " << commonApiAddress.getInterface() << " " << commonApiAddress.getInstance() << std::endl; ASSERT_EQ(commonApiAddresses[i], commonApiAddress.getAddress()); } }
TEST_F(AddressTranslatorTest, UniqueAddressHandlingTranslateWorks) { std::shared_ptr<CommonAPI::DBus::DBusAddressTranslator> translator = CommonAPI::DBus::DBusAddressTranslator::get(); std::string commonApiAddressRef = "local:my.unique.translate.interface:my.unique.translate.instance"; CommonAPI::DBus::DBusAddress dbusAddressInsertRef(":1.6", "/my/unique/translate/instance", "my.unique.translate.interface"); CommonAPI::DBus::DBusAddress dbusAddressResult; CommonAPI::Address commonApiAddressResult; translator->translate(CommonAPI::DBus::DBusAddress(dbusAddressInsertRef.getService(), dbusAddressInsertRef.getObjectPath(), dbusAddressInsertRef.getInterface()), commonApiAddressResult); std::cout << dbusAddressInsertRef.getService() << " " << dbusAddressInsertRef.getObjectPath() << " " << dbusAddressInsertRef.getInterface() << std::endl; std::cout << commonApiAddressResult.getDomain() << " " << commonApiAddressResult.getInterface() << " " << commonApiAddressResult.getInstance() << std::endl; ASSERT_EQ(commonApiAddressRef, commonApiAddressResult.getAddress()); translator->translate(commonApiAddressRef, dbusAddressResult); std::cout << dbusAddressResult.getService() << " " << dbusAddressResult.getObjectPath() << " " << dbusAddressResult.getInterface() << std::endl; ASSERT_EQ(dbusAddressInsertRef.getService(), dbusAddressResult.getService()); ASSERT_EQ(dbusAddressInsertRef.getObjectPath(), dbusAddressResult.getObjectPath()); ASSERT_EQ(dbusAddressInsertRef.getInterface(), dbusAddressResult.getInterface()); }