diff options
author | JackLivio <jack@livio.io> | 2020-02-17 13:05:54 -0500 |
---|---|---|
committer | JackLivio <jack@livio.io> | 2020-02-17 13:05:54 -0500 |
commit | 86dea8793023f986c7c10d7f9e5b7a932d89a49a (patch) | |
tree | bf44b0d5b6bf6b6c78dd2d0602b67f05ebe2a17c /src/components/transport_manager/test/transport_manager_default_test.cc | |
parent | 4310b2dfd5e1078df0df53138a73d49d000c9c62 (diff) | |
parent | ece258838a44a5461d718c5eeae380ad11a3769b (diff) | |
download | sdl_core-fix/3rd_party_build_issues.tar.gz |
Merge remote-tracking branch 'origin/develop' into fix/3rd_party_build_issuesfix/3rd_party_build_issues
Diffstat (limited to 'src/components/transport_manager/test/transport_manager_default_test.cc')
-rw-r--r-- | src/components/transport_manager/test/transport_manager_default_test.cc | 293 |
1 files changed, 200 insertions, 93 deletions
diff --git a/src/components/transport_manager/test/transport_manager_default_test.cc b/src/components/transport_manager/test/transport_manager_default_test.cc index 40938d0370..bedc1634cc 100644 --- a/src/components/transport_manager/test/transport_manager_default_test.cc +++ b/src/components/transport_manager/test/transport_manager_default_test.cc @@ -32,15 +32,23 @@ #include "transport_manager/transport_manager_default.h" #include "gtest/gtest.h" +#include "resumption/last_state_wrapper_impl.h" #include "resumption/mock_last_state.h" +#include "transport_manager/bt/mock_bluetooth_transport_adapter.h" +#include "transport_manager/cloud/mock_cloud_websocket_transport_adapter.h" #include "transport_manager/mock_transport_manager_settings.h" +#include "transport_manager/tcp/mock_tcp_transport_adapter.h" +#include "transport_manager/transport_adapter/mock_device.h" +#include "transport_manager/transport_adapter/mock_transport_adapter_listener.h" #include "transport_manager/transport_manager.h" +#include "transport_manager/usb/mock_usb_aoa_adapter.h" namespace test { namespace components { namespace transport_manager_test { using resumption_test::MockLastState; +using ::testing::_; using ::testing::NiceMock; using ::testing::Return; using ::testing::ReturnRef; @@ -75,117 +83,216 @@ std::vector<uint8_t> kBTUUID = {0x93, 0xA8}; } // namespace -TEST(TestTransportManagerDefault, Init_LastStateNotUsed) { - MockTransportManagerSettings transport_manager_settings; - transport_manager::TransportManagerDefault transport_manager( - transport_manager_settings); - - NiceMock<MockLastState> mock_last_state; - Json::Value custom_dictionary = Json::Value(); - - ON_CALL(mock_last_state, get_dictionary()) - .WillByDefault(ReturnRef(custom_dictionary)); - - EXPECT_CALL(transport_manager_settings, use_last_state()) - .WillRepeatedly(Return(false)); - EXPECT_CALL(transport_manager_settings, transport_manager_tcp_adapter_port()) - .WillRepeatedly(Return(12345u)); - std::string network_interface = ""; - EXPECT_CALL(transport_manager_settings, - transport_manager_tcp_adapter_network_interface()) - .WillRepeatedly(ReturnRef(network_interface)); - EXPECT_CALL(transport_manager_settings, bluetooth_uuid()) - .WillRepeatedly(Return(kBTUUID.data())); +class TestTransportManagerDefault : public ::testing::Test { + public: + TestTransportManagerDefault() + : transport_manager_settings_() + , mock_last_state_(std::make_shared<MockLastState>()) + , unique_tcp_dev_name_("unique_tcp_device_name") + , dev_id_("device_id") + , tcp_adapter_port_(1u) + , network_interface_("test_iface") + , last_state_wrapper_(std::make_shared<resumption::LastStateWrapperImpl>( + mock_last_state_)) {} - std::string dummy_parameter; - EXPECT_CALL(transport_manager_settings, aoa_filter_manufacturer()) - .WillRepeatedly(ReturnRef(dummy_parameter)); - EXPECT_CALL(transport_manager_settings, aoa_filter_model_name()) - .WillRepeatedly(ReturnRef(dummy_parameter)); - EXPECT_CALL(transport_manager_settings, aoa_filter_description()) - .WillRepeatedly(ReturnRef(dummy_parameter)); - EXPECT_CALL(transport_manager_settings, aoa_filter_version()) - .WillRepeatedly(ReturnRef(dummy_parameter)); - EXPECT_CALL(transport_manager_settings, aoa_filter_uri()) - .WillRepeatedly(ReturnRef(dummy_parameter)); - EXPECT_CALL(transport_manager_settings, aoa_filter_serial_number()) - .WillRepeatedly(ReturnRef(dummy_parameter)); - transport_manager.Init(mock_last_state); - transport_manager.Stop(); -} + void SetUp() OVERRIDE { + EXPECT_CALL(transport_manager_settings_, + transport_manager_tcp_adapter_network_interface()) + .WillRepeatedly(ReturnRef(network_interface_)); + + // Replace creation of real transport adapters by mock objects + // to be able to check related function calls + mock_bt_ta_ = new MockBluetoothTransportAdapter(); + mock_tcp_ta_ = new MockTCPTransportAdapter( + tcp_adapter_port_, last_state_wrapper_, transport_manager_settings_); + mock_usb_aoa_ta_ = + new MockUsbAoaAdapter(last_state_wrapper_, transport_manager_settings_); + mock_cloud_websocket_ta_ = new MockCloudWebsocketTransportAdapter( + last_state_wrapper_, transport_manager_settings_); + + TransportAdapterFactory ta_factory; +#ifdef BLUETOOTH_SUPPORT + ta_factory.ta_bluetooth_creator_ = + [&](resumption::LastStateWrapperPtr& last_state_wrapper, + const TransportManagerSettings& settings) { + UNUSED(last_state_wrapper); + UNUSED(settings); + return mock_bt_ta_; + }; +#endif + ta_factory.ta_tcp_creator_ = + [&](const uint16_t port, + resumption::LastStateWrapperPtr& last_state_wrapper, + const TransportManagerSettings& settings) { + UNUSED(port); + UNUSED(last_state_wrapper); + UNUSED(settings); + return mock_tcp_ta_; + }; +#if defined(USB_SUPPORT) + ta_factory.ta_usb_creator_ = + [&](resumption::LastStateWrapperPtr& last_state_wrapper, + const TransportManagerSettings& settings) { + UNUSED(last_state_wrapper); + UNUSED(settings); + return mock_usb_aoa_ta_; + }; +#endif +#if defined(CLOUD_APP_WEBSOCKET_TRANSPORT_SUPPORT) + ta_factory.ta_cloud_creator_ = + [&](resumption::LastStateWrapperPtr& last_state_wrapper, + const TransportManagerSettings& settings) { + UNUSED(last_state_wrapper); + UNUSED(settings); + return mock_cloud_websocket_ta_; + }; +#endif + transport_manager_ = std::unique_ptr<TransportManagerDefault>( + new TransportManagerDefault(transport_manager_settings_, ta_factory)); + } -TEST(TestTransportManagerDefault, Init_LastStateUsed) { - MockTransportManagerSettings transport_manager_settings; - transport_manager::TransportManagerDefault transport_manager( - transport_manager_settings); + void ExpectationsSettings_TM(const bool use_last_state); + void ExpectationsBluetooth_TA(); + void ExpectationsTCP_TA(); + void ExpectationsUSB_TA(); + void ExpectationsCloudWebsocket_TA(); - NiceMock<MockLastState> mock_last_state; - Json::Value custom_dictionary; + protected: + MockTransportManagerSettings transport_manager_settings_; + std::unique_ptr<TransportManagerDefault> transport_manager_; + std::shared_ptr<MockLastState> mock_last_state_; + Json::Value custom_dictionary_; + const std::string unique_tcp_dev_name_; + const std::string dev_id_; + const uint16_t tcp_adapter_port_; + std::string network_interface_; + std::string dummy_parameter_; + // Arrange necessary transport adapters mock objects + MockBluetoothTransportAdapter* mock_bt_ta_; + MockTCPTransportAdapter* mock_tcp_ta_; + MockUsbAoaAdapter* mock_usb_aoa_ta_; + MockCloudWebsocketTransportAdapter* mock_cloud_websocket_ta_; + std::shared_ptr<resumption::LastStateWrapperImpl> last_state_wrapper_; +}; + +void TestTransportManagerDefault::ExpectationsSettings_TM( + const bool use_last_state) { + // Arrange TM Settings expectations Json::Value tcp_device; - tcp_device[kDeviceName] = "unique_tcp_device_name"; + tcp_device[kDeviceName] = unique_tcp_dev_name_; tcp_device[kDeviceAddress] = "127.0.0.1"; - tcp_device[kDeviceApplications][0][kApplicationPort] = kApplicationPortValue; + tcp_device[kDeviceApplications][0][kApplicationPort] = "1"; Json::Value bluetooth_device; - bluetooth_device[kDeviceName] = "unique_bluetooth_device_name"; + + std::string unique_bt_dev_name("unique_bluetooth_device_name"); + bluetooth_device[kDeviceName] = unique_bt_dev_name; bluetooth_device[kDeviceAddress] = "AB:CD:EF:GH:IJ:KL"; bluetooth_device[kDeviceApplications][0][kApplicationRfcomm] = kApplicationRfcommValue; - custom_dictionary[kTransportManager][kTcpAdapter][kDevices][0] = tcp_device; - custom_dictionary[kTransportManager][kBluetoothAdapter][kDevices][0] = + custom_dictionary_[kTransportManager][kTcpAdapter][kDevices][0] = tcp_device; + custom_dictionary_[kTransportManager][kBluetoothAdapter][kDevices][0] = bluetooth_device; + ON_CALL(*mock_last_state_, dictionary()) + .WillByDefault(Return(custom_dictionary_)); + ON_CALL(*mock_last_state_, get_dictionary()) + .WillByDefault(ReturnRef(custom_dictionary_)); + EXPECT_CALL(transport_manager_settings_, use_last_state()) + .WillRepeatedly(Return(use_last_state)); + EXPECT_CALL(transport_manager_settings_, transport_manager_tcp_adapter_port()) + .WillRepeatedly(Return(tcp_adapter_port_)); + EXPECT_CALL(transport_manager_settings_, bluetooth_uuid()) + .WillRepeatedly(Return(kBTUUID.data())); + EXPECT_CALL(transport_manager_settings_, aoa_filter_manufacturer()) + .WillRepeatedly(ReturnRef(dummy_parameter_)); + EXPECT_CALL(transport_manager_settings_, aoa_filter_model_name()) + .WillRepeatedly(ReturnRef(dummy_parameter_)); + EXPECT_CALL(transport_manager_settings_, aoa_filter_description()) + .WillRepeatedly(ReturnRef(dummy_parameter_)); + EXPECT_CALL(transport_manager_settings_, aoa_filter_version()) + .WillRepeatedly(ReturnRef(dummy_parameter_)); + EXPECT_CALL(transport_manager_settings_, aoa_filter_uri()) + .WillRepeatedly(ReturnRef(dummy_parameter_)); + EXPECT_CALL(transport_manager_settings_, aoa_filter_serial_number()) + .WillRepeatedly(ReturnRef(dummy_parameter_)); +} + +void TestTransportManagerDefault::ExpectationsBluetooth_TA() { + // Expectations for Mock of bluetooth transport adapter +#ifdef BLUETOOTH_SUPPORT + EXPECT_CALL(*mock_bt_ta_, AddListener(_)); + EXPECT_CALL(*mock_bt_ta_, IsInitialised()).WillRepeatedly(Return(true)); + EXPECT_CALL(*mock_bt_ta_, Init()) + .WillRepeatedly(Return(TransportAdapter::OK)); + EXPECT_CALL(*mock_bt_ta_, Terminate()); +#endif +} + +void TestTransportManagerDefault::ExpectationsTCP_TA() { + // Expectations for Mock of TCP transport adapter + EXPECT_CALL(*mock_tcp_ta_, AddListener(_)); + EXPECT_CALL(*mock_tcp_ta_, IsInitialised()).WillRepeatedly(Return(true)); + EXPECT_CALL(*mock_tcp_ta_, Init()) + .WillRepeatedly(Return(TransportAdapter::OK)); - ON_CALL(mock_last_state, get_dictionary()) - .WillByDefault(ReturnRef(custom_dictionary)); + std::shared_ptr<MockDevice> mockdev = + std::make_shared<MockDevice>(dev_id_, unique_tcp_dev_name_); + EXPECT_CALL(*mock_tcp_ta_, FindDevice(unique_tcp_dev_name_)) + .WillRepeatedly(Return(mockdev)); + const int app_handle = 1; + EXPECT_CALL(*mock_tcp_ta_, Connect(unique_tcp_dev_name_, app_handle)) + .Times(0); + EXPECT_CALL(*mock_tcp_ta_, Terminate()); +} + +void TestTransportManagerDefault::ExpectationsUSB_TA() { + // Expectations for Mock of USB transport adapter +#if defined(USB_SUPPORT) + EXPECT_CALL(*mock_usb_aoa_ta_, AddListener(_)); + EXPECT_CALL(*mock_usb_aoa_ta_, IsInitialised()).WillRepeatedly(Return(true)); + EXPECT_CALL(*mock_usb_aoa_ta_, Init()) + .WillRepeatedly(Return(TransportAdapter::OK)); + EXPECT_CALL(*mock_usb_aoa_ta_, Terminate()); +#endif +} - EXPECT_CALL(transport_manager_settings, use_last_state()) +void TestTransportManagerDefault::ExpectationsCloudWebsocket_TA() { + // Expectations for Mock of Cloud Websocket transport adapter +#if defined(CLOUD_APP_WEBSOCKET_TRANSPORT_SUPPORT) + EXPECT_CALL(*mock_cloud_websocket_ta_, AddListener(_)); + EXPECT_CALL(*mock_cloud_websocket_ta_, IsInitialised()) .WillRepeatedly(Return(true)); - EXPECT_CALL(transport_manager_settings, transport_manager_tcp_adapter_port()) - .WillRepeatedly(Return(12345u)); - std::string network_interface = ""; - EXPECT_CALL(transport_manager_settings, - transport_manager_tcp_adapter_network_interface()) - .WillRepeatedly(ReturnRef(network_interface)); - EXPECT_CALL(transport_manager_settings, bluetooth_uuid()) - .WillRepeatedly(Return(kBTUUID.data())); - transport_manager.Init(mock_last_state); - transport_manager.Stop(); + EXPECT_CALL(*mock_cloud_websocket_ta_, Init()) + .WillRepeatedly(Return(TransportAdapter::OK)); + EXPECT_CALL(*mock_cloud_websocket_ta_, Terminate()); +#endif } -TEST(TestTransportManagerDefault, Init_LastStateUsed_InvalidPort) { - MockTransportManagerSettings transport_manager_settings; - transport_manager::TransportManagerDefault transport_manager( - transport_manager_settings); +TEST_F(TestTransportManagerDefault, Init_LastStateNotUsed) { + const bool use_last_state = false; + ExpectationsSettings_TM(use_last_state); - NiceMock<MockLastState> mock_last_state; - Json::Value custom_dictionary; - Json::Value tcp_device; - tcp_device[kDeviceName] = "unique_tcp_device_name"; - tcp_device[kDeviceAddress] = "127.0.0.1"; - tcp_device[kDeviceApplications][0][kApplicationPort] = "1"; - Json::Value bluetooth_device; - bluetooth_device[kDeviceName] = "unique_bluetooth_device_name"; - bluetooth_device[kDeviceAddress] = "AB:CD:EF:GH:IJ:KL"; - bluetooth_device[kDeviceApplications][0][kApplicationRfcomm] = - kApplicationRfcommValue; - custom_dictionary[kTransportManager][kTcpAdapter][kDevices][0] = tcp_device; - custom_dictionary[kTransportManager][kBluetoothAdapter][kDevices][0] = - bluetooth_device; + ExpectationsBluetooth_TA(); + ExpectationsTCP_TA(); + ExpectationsUSB_TA(); + ExpectationsCloudWebsocket_TA(); - ON_CALL(mock_last_state, get_dictionary()) - .WillByDefault(ReturnRef(custom_dictionary)); + // Act + transport_manager_->Init(last_state_wrapper_); + transport_manager_->Stop(); +} - EXPECT_CALL(transport_manager_settings, use_last_state()) - .WillRepeatedly(Return(true)); - EXPECT_CALL(transport_manager_settings, transport_manager_tcp_adapter_port()) - .WillRepeatedly(Return(1u)); - std::string network_interface = ""; - EXPECT_CALL(transport_manager_settings, - transport_manager_tcp_adapter_network_interface()) - .WillRepeatedly(ReturnRef(network_interface)); - EXPECT_CALL(transport_manager_settings, bluetooth_uuid()) - .WillRepeatedly(Return(kBTUUID.data())); - transport_manager.Init(mock_last_state); - transport_manager.Stop(); +TEST_F(TestTransportManagerDefault, Init_LastStateUsed) { + const bool use_last_state = true; + ExpectationsSettings_TM(use_last_state); + + ExpectationsBluetooth_TA(); + ExpectationsTCP_TA(); + ExpectationsUSB_TA(); + ExpectationsCloudWebsocket_TA(); + + // Act + transport_manager_->Init(last_state_wrapper_); + transport_manager_->Stop(); } } // namespace transport_manager_test |