summaryrefslogtreecommitdiff
path: root/src/components/transport_manager/test/tcp_transport_adapter_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/transport_manager/test/tcp_transport_adapter_test.cc')
-rw-r--r--src/components/transport_manager/test/tcp_transport_adapter_test.cc641
1 files changed, 270 insertions, 371 deletions
diff --git a/src/components/transport_manager/test/tcp_transport_adapter_test.cc b/src/components/transport_manager/test/tcp_transport_adapter_test.cc
index c91736b9f4..d849d94d48 100644
--- a/src/components/transport_manager/test/tcp_transport_adapter_test.cc
+++ b/src/components/transport_manager/test/tcp_transport_adapter_test.cc
@@ -30,430 +30,329 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
-#include <sys/time.h>
-#include <sys/socket.h>
-#include <sys/types.h>
-#include <netinet/in.h>
-
+#include "gtest/gtest.h"
#include "transport_manager/tcp/tcp_transport_adapter.h"
-#include "transport_manager/transport_adapter/transport_adapter_listener.h"
-#include "include/mock_transport_adapter_listener.h"
+#include "transport_manager/transport_adapter/connection.h"
+#include "config_profile/profile.h"
+#include "resumption/last_state.h"
#include "protocol/raw_message.h"
-#include "utils/logger.h"
-
-namespace transport_manager {
-namespace transport_adapter {
-
-using namespace ::protocol_handler;
-
-TEST(TcpAdapterBasicTest, GetDeviceType_Return_sdltcp) {
-
- //arrange
- TransportAdapter* transport_adapter = new TcpTransportAdapter(12345);
-
- // Assert
- EXPECT_EQ(TCP, transport_adapter->GetDeviceType());
-
- delete transport_adapter;
-}
-
-TEST(TcpAdapterBasicTest, isServerOriginatedConnectSupported_Return_True) {
-
- //arrange
- TransportAdapter* transport_adapter = new TcpTransportAdapter(12345);
-
- //assert
- EXPECT_TRUE(transport_adapter->IsServerOriginatedConnectSupported());
-
- delete transport_adapter;
-}
-
-TEST(TcpAdapterBasicTest, isClientOriginatedConnectSupported_Return_True) {
-
- //arrange
- TransportAdapter* transport_adapter = new TcpTransportAdapter(12345);
-
- //assert
- EXPECT_TRUE(transport_adapter->IsClientOriginatedConnectSupported());
-
- delete transport_adapter;
-}
-
-TEST(TcpAdapterBasicTest, isSearchDevicesSupported_Return_True) {
-
- //arrange
- TransportAdapter* transport_adapter = new TcpTransportAdapter(12345);
-
- //assert
- EXPECT_TRUE(transport_adapter->IsSearchDevicesSupported());
+#include "include/transport_adapter_listener_mock.h"
+#include "include/device_mock.h"
+#include "include/connection_mock.h"
- delete transport_adapter;
-}
-
-TEST(TcpAdapterBasicTest, NotInitialised_Return_BAD_STATE) {
-
- //arrange
- TransportAdapter* transport_adapter = new TcpTransportAdapter(12345);
-
- //assert
- EXPECT_EQ(TransportAdapter::BAD_STATE, transport_adapter->SearchDevices());
-
- delete transport_adapter;
-}
-
-//TODO(KKolodiy)APPLINK-11045
-TEST(TcpAdapterBasicTest, DISABLED_NotInitialised_Return_OK_InConnect) {
-
- //arrange
- TransportAdapter* transport_adapter = new TcpTransportAdapter(12345);
-
- //assert
- EXPECT_EQ(TransportAdapter::OK,
- transport_adapter->Connect(DeviceUID("xxx"), 2));
- delete transport_adapter;
-}
-
-TEST(TcpAdapterBasicTest, NotInitialised_Return_BAD_STATE_inDisconnect) {
+namespace test {
+namespace components {
+namespace transport_manager_test {
- //arrange
- TransportAdapter* transport_adapter = new TcpTransportAdapter(12345);
-
- //assert
- EXPECT_EQ(TransportAdapter::BAD_STATE,
- transport_adapter->Disconnect(DeviceUID("xxx"), 2));
- delete transport_adapter;
-}
-
-TEST(TcpAdapterBasicTest, NotInitialised_Return_BAD_STATE_in_DisconnectDevice) {
-
- //arrange
- TransportAdapter* transport_adapter = new TcpTransportAdapter(12345);
+using ::testing::Return;
+using ::testing::_;
- //assert
- EXPECT_EQ(TransportAdapter::BAD_STATE,
- transport_adapter->DisconnectDevice(DeviceUID("xxx")));
- delete transport_adapter;
-}
+using namespace ::protocol_handler;
+using namespace ::transport_manager;
+using namespace transport_manager::transport_adapter;
-class ClientTcpSocket {
+class TestTCPTransportAdapter : public TcpTransportAdapter {
public:
- bool Connect(uint16_t server_port) {
-
- socket_ = socket(AF_INET, SOCK_STREAM, 0);
- std::cout << "socket is " << socket_ << "\n\n";
- if (socket_ < 0)
- return false;
-
- struct sockaddr_in addr;
- memset((char*) &addr, 0, sizeof(addr));
- addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
- addr.sin_port = htons(server_port);
-
- if (::connect(socket_, (struct sockaddr*) &addr, sizeof(addr)) < 0)
- return false;
- else
- return true;
+ TestTCPTransportAdapter(uint16_t port) : TcpTransportAdapter(port) {
+ ::profile::Profile::instance()->config_file_name(
+ "smartDeviceLink_test.ini");
}
+ MOCK_CONST_METHOD2(FindEstablishedConnection,
+ ConnectionSPtr(const DeviceUID& device_handle,
+ const ApplicationHandle& app_handle));
+
+ MOCK_CONST_METHOD1(FindDevice, DeviceSptr(const DeviceUID& device_handle));
+ MOCK_METHOD2(Connect,
+ TransportAdapter::Error(const DeviceUID& device_handle,
+ const ApplicationHandle& app_handle));
+ void CallStore() { Store(); }
+ bool CallRestore() { return Restore(); }
+};
- bool Send(const std::string& str) {
- size_t size = str.size();
- ssize_t written = write(socket_, str.c_str(), size);
- if (written != -1) {
- size_t count = static_cast<size_t>(written);
- return count == size;
- } else {
- return false;
- }
+class TcpAdapterTest : public ::testing::Test {
+ protected:
+ static void SetUpTestCase() {
+ ::profile::Profile::instance()->config_file_name(
+ "smartDeviceLink_test.ini");
}
-
- std::string receive(size_t size) {
- char* buf = new char[size];
- ssize_t read = recv(socket_, buf, size, MSG_WAITALL);
- if (read != -1) {
- return std::string(buf, buf + read);
- } else {
- return std::string();
- }
+ virtual void SetUp() {
+ resumption::LastState::instance()->dictionary = Json::Value();
}
- void Disconnect() {
- close(socket_);
- }
+ virtual void TearDown() { resumption::LastState::destroy(); }
- private:
- uint16_t port_;
- int socket_;
+ const uint32_t port = 12345;
+ const std::string string_port = "12345";
};
-using ::testing::_;
-using ::testing::Invoke;
-
-void Disconnect(const TransportAdapter* transport_adapter,
- const DeviceUID device_handle,
- const ApplicationHandle app_handle) {
- EXPECT_EQ(
- TransportAdapter::OK,
- const_cast<TransportAdapter*>(transport_adapter)->Disconnect(
- device_handle, app_handle));
-
- std::cout << "adapter is disconnected" << "\n";
+TEST_F(TcpAdapterTest, DISABLED_StoreDataWithOneDeviceAndOneApplication) {
+ // Prepare
+ TestTCPTransportAdapter transport_adapter(port);
+ std::string uniq_id = "unique_device_name";
+ utils::SharedPtr<TCPDeviceMock> mockdev = new TCPDeviceMock(port, uniq_id);
+ transport_adapter.AddDevice(mockdev);
+
+ std::vector<std::string> devList = transport_adapter.GetDeviceList();
+ ASSERT_EQ(1u, devList.size());
+ EXPECT_EQ(uniq_id, devList[0]);
+
+ const int app_handle = 1;
+ std::vector<int> intList = {app_handle};
+ EXPECT_CALL(*mockdev, GetApplicationList()).WillOnce(Return(intList));
+
+ ConnectionSPtr mock_connection = new ConnectionMock();
+ EXPECT_CALL(transport_adapter, FindDevice(uniq_id)).WillOnce(Return(mockdev));
+ EXPECT_CALL(transport_adapter, FindEstablishedConnection(uniq_id, app_handle))
+ .WillOnce(Return(mock_connection));
+
+ EXPECT_CALL(*mockdev, GetApplicationPort(app_handle)).WillOnce(Return(port));
+
+ transport_adapter.CallStore();
+
+ // Check that value is saved
+ Json::Value& tcp_dict = resumption::LastState::instance()
+ ->dictionary["TransportManager"]["TcpAdapter"];
+
+ ASSERT_TRUE(tcp_dict.isObject());
+ ASSERT_FALSE(tcp_dict["devices"].isNull());
+ ASSERT_FALSE(tcp_dict["devices"][0]["applications"].isNull());
+ ASSERT_FALSE(tcp_dict["devices"][0]["address"].isNull());
+ EXPECT_EQ(1u, tcp_dict["devices"][0]["applications"].size());
+ EXPECT_EQ(string_port,
+ tcp_dict["devices"][0]["applications"][0]["port"].asString());
+ EXPECT_EQ(uniq_id, tcp_dict["devices"][0]["name"].asString());
}
-class TcpAdapterTest : public ::testing::Test {
- public:
- TcpAdapterTest()
- : port_(ChoosePort()),
- transport_adapter_(new TcpTransportAdapter(port_)),
- suspended_(false),
- finished_(false) {
- pthread_mutex_init(&suspend_mutex_, 0);
- pthread_cond_init(&suspend_cond_, 0);
+TEST_F(TcpAdapterTest, DISABLED_StoreDataWithSeveralDevicesAndOneApplication) {
+ // Prepare
+ TestTCPTransportAdapter transport_adapter(port);
+ const uint32_t count_dev = 10;
+ utils::SharedPtr<TCPDeviceMock> mockdev[count_dev];
+ std::string uniq_id[count_dev];
+ for (uint32_t i = 0; i < count_dev; i++) {
+ char numb[12];
+ std::snprintf(numb, 12, "%d", i);
+ uniq_id[i] = "unique_device_name" + std::string(numb);
+ mockdev[i] = new TCPDeviceMock(port, uniq_id[i]);
+ EXPECT_CALL(*(mockdev[i]), IsSameAs(_)).WillRepeatedly(Return(false));
+ transport_adapter.AddDevice(mockdev[i]);
}
- uint16_t ChoosePort() {
- return getpid() % 1000 + 3000;
- }
+ std::vector<std::string> devList = transport_adapter.GetDeviceList();
+ ASSERT_EQ(count_dev, devList.size());
+ EXPECT_EQ(uniq_id[0], devList[0]);
- virtual void SetUp() {
- const TransportAdapter::Error error = transport_adapter_->Init();
- ASSERT_EQ(TransportAdapter::OK, error);
- transport_adapter_->AddListener(&mock_dal_);
- time_t end_time = time(NULL) + 5;
- while (!transport_adapter_->IsInitialised() && time(NULL) < end_time)
- sleep(0);
- ASSERT_TRUE(transport_adapter_->IsInitialised());
- }
+ const int app_handle = 1;
+ std::vector<int> intList = {app_handle};
- virtual void TearDown() {
- transport_adapter_->StopClientListening();
- }
+ ConnectionSPtr mock_connection = new ConnectionMock();
+ for (uint32_t i = 0; i < count_dev; i++) {
+ EXPECT_CALL(transport_adapter, FindDevice(uniq_id[i]))
+ .WillOnce(Return(mockdev[i]));
+ EXPECT_CALL(*(mockdev[i]), GetApplicationList()).WillOnce(Return(intList));
- virtual ~TcpAdapterTest() {
- pthread_mutex_lock(&suspend_mutex_);
- if (!finished_)
- suspended_ = true;
- struct timeval now;
- gettimeofday(&now, NULL);
- timespec abs_time;
- abs_time.tv_sec = now.tv_sec + 1;
- abs_time.tv_nsec = now.tv_usec * 1000;
- while (suspended_) {
- if (ETIMEDOUT
- == pthread_cond_timedwait(&suspend_cond_, &suspend_mutex_,
- &abs_time)) {
- break;
- }
- }
- pthread_mutex_unlock(&suspend_mutex_);
- delete transport_adapter_;
+ EXPECT_CALL(transport_adapter,
+ FindEstablishedConnection(uniq_id[i], app_handle))
+ .WillOnce(Return(mock_connection));
- pthread_mutex_destroy(&suspend_mutex_);
- pthread_cond_destroy(&suspend_cond_);
+ EXPECT_CALL(*(mockdev[i]), GetApplicationPort(app_handle))
+ .WillOnce(Return(port));
}
-
- void wakeUp() {
- pthread_mutex_lock(&suspend_mutex_);
- finished_ = true;
- suspended_ = false;
- pthread_cond_signal(&suspend_cond_);
- pthread_mutex_unlock(&suspend_mutex_);
+ transport_adapter.CallStore();
+
+ // Check that values are saved
+ Json::Value& tcp_dict = resumption::LastState::instance()
+ ->dictionary["TransportManager"]["TcpAdapter"];
+ ASSERT_TRUE(tcp_dict.isObject());
+ ASSERT_FALSE(tcp_dict["devices"].isNull());
+ for (uint32_t i = 0; i < count_dev; i++) {
+ ASSERT_FALSE(tcp_dict["devices"][i]["applications"].isNull());
+ ASSERT_FALSE(tcp_dict["devices"][i]["address"].isNull());
+ EXPECT_EQ(1u, tcp_dict["devices"][i]["applications"].size());
+ EXPECT_EQ(string_port,
+ tcp_dict["devices"][i]["applications"][0]["port"].asString());
+ EXPECT_EQ(uniq_id[i], tcp_dict["devices"][i]["name"].asString());
}
+}
- uint16_t port() const {
- return port_;
+TEST_F(TcpAdapterTest, DISABLED_StoreDataWithSeveralDevicesAndSeveralApplications) {
+ // Prepare
+ TestTCPTransportAdapter transport_adapter(port);
+ const uint32_t count_dev = 10;
+
+ utils::SharedPtr<TCPDeviceMock> mockdev[count_dev];
+ std::string uniq_id[count_dev];
+ for (uint32_t i = 0; i < count_dev; i++) {
+ char numb[12];
+ std::snprintf(numb, 12, "%d", i);
+ uniq_id[i] = "unique_device_name" + std::string(numb);
+ mockdev[i] = new TCPDeviceMock(port, uniq_id[i]);
+ EXPECT_CALL(*(mockdev[i]), IsSameAs(_)).WillRepeatedly(Return(false));
+ transport_adapter.AddDevice(mockdev[i]);
}
- const uint16_t port_;
- TransportAdapter* transport_adapter_;
- ::test::components::transport_manager::MockTransportAdapterListener mock_dal_;
- ClientTcpSocket client_;
-
- pthread_cond_t suspend_cond_;
- pthread_mutex_t suspend_mutex_;
- bool suspended_;
- bool finished_;
-
-};
-
-class TcpAdapterTestWithListenerAutoStart : public TcpAdapterTest {
- virtual void SetUp() {
- TcpAdapterTest::SetUp();
- transport_adapter_->StartClientListening();
+ std::vector<std::string> devList = transport_adapter.GetDeviceList();
+ ASSERT_EQ(count_dev, devList.size());
+ EXPECT_EQ(uniq_id[0], devList[0]);
+
+ const uint32_t connection_count = 3;
+ const int app_handle[connection_count] = {1, 2, 3};
+ std::vector<int> intList = {app_handle[0], app_handle[1], app_handle[2]};
+ const std::string ports[connection_count] = {"11111", "67890", "98765"};
+ const int int_port[connection_count] = {11111, 67890, 98765};
+ ConnectionSPtr mock_connection = new ConnectionMock();
+ for (uint32_t i = 0; i < count_dev; i++) {
+ EXPECT_CALL(transport_adapter, FindDevice(uniq_id[i]))
+ .WillOnce(Return(mockdev[i]));
+ EXPECT_CALL(*(mockdev[i]), GetApplicationList()).WillOnce(Return(intList));
+
+ for (uint32_t j = 0; j < connection_count; j++) {
+ EXPECT_CALL(transport_adapter,
+ FindEstablishedConnection(uniq_id[i], app_handle[j]))
+ .WillOnce(Return(mock_connection));
+ EXPECT_CALL(*(mockdev[i]), GetApplicationPort(app_handle[j]))
+ .WillOnce(Return(int_port[j]));
+ }
}
-
-};
-
-MATCHER_P(ContainsMessage, str, ""){ return strlen(str) == arg->data_size() && 0 == memcmp(str, arg->data(), arg->data_size());}
-
-// TODO{ALeshin} APPLINK-11090 - transport_adapter_->IsInitialised() doesn't return true as expected
-TEST_F(TcpAdapterTestWithListenerAutoStart, DISABLED_Connect_Return_True) {
- {
- ::testing::InSequence seq;
- EXPECT_CALL(mock_dal_, OnDeviceListUpdated(_));
- EXPECT_CALL(mock_dal_, OnConnectDone(transport_adapter_, _, _)).WillOnce(
- InvokeWithoutArgs(this, &TcpAdapterTest::wakeUp));
+ transport_adapter.CallStore();
+
+ // Check that value is saved
+ Json::Value& tcp_dict = resumption::LastState::instance()
+ ->dictionary["TransportManager"]["TcpAdapter"];
+
+ ASSERT_TRUE(tcp_dict.isObject());
+ ASSERT_FALSE(tcp_dict["devices"].isNull());
+ for (uint32_t i = 0; i < count_dev; i++) {
+ ASSERT_FALSE(tcp_dict["devices"][i]["applications"].isNull());
+ ASSERT_FALSE(tcp_dict["devices"][i]["address"].isNull());
+ for (uint32_t j = 0; j < intList.size(); j++) {
+ EXPECT_EQ(ports[j],
+ tcp_dict["devices"][i]["applications"][j]["port"].asString());
+ EXPECT_EQ(uniq_id[i], tcp_dict["devices"][i]["name"].asString());
+ }
}
- EXPECT_TRUE(client_.Connect(port()));
}
-// TODO{ALeshin} APPLINK-11090 - transport_adapter_->IsInitialised() doesn't return true as expected
-TEST_F(TcpAdapterTestWithListenerAutoStart, DISABLED_SecondConnect_Return_True) {
- {
- ::testing::InSequence seq;
- EXPECT_CALL(mock_dal_, OnDeviceListUpdated(_));
- EXPECT_CALL(mock_dal_, OnConnectDone(transport_adapter_, _, _)).WillOnce(
- InvokeWithoutArgs(this, &TcpAdapterTest::wakeUp));
- }
- EXPECT_TRUE(client_.Connect(port()));
+TEST_F(TcpAdapterTest, StoreData_ConnectionNotExist_DataNotStored) {
+ // Prepare
+ TestTCPTransportAdapter transport_adapter(port);
+ std::string uniq_id = "unique_device_name";
+ utils::SharedPtr<TCPDeviceMock> mockdev = new TCPDeviceMock(port, uniq_id);
+ transport_adapter.AddDevice(mockdev);
+
+ std::vector<std::string> devList = transport_adapter.GetDeviceList();
+ ASSERT_EQ(1u, devList.size());
+ EXPECT_EQ(uniq_id, devList[0]);
+ std::vector<int> intList = {};
+ EXPECT_CALL(*mockdev, GetApplicationList()).WillOnce(Return(intList));
+
+ EXPECT_CALL(transport_adapter, FindDevice(uniq_id)).WillOnce(Return(mockdev));
+ EXPECT_CALL(transport_adapter, FindEstablishedConnection(uniq_id, _))
+ .Times(0);
+ EXPECT_CALL(*mockdev, GetApplicationPort(_)).Times(0);
+ transport_adapter.CallStore();
+
+ // Check that value is not saved
+ Json::Value& tcp_dict =
+ resumption::LastState::instance()
+ ->dictionary["TransportManager"]["TcpAdapter"]["devices"];
+ ASSERT_TRUE(tcp_dict.isNull());
}
-// TODO{ALeshin} APPLINK-11090 - transport_adapter_->IsInitialised() doesn't return true as expected
-TEST_F(TcpAdapterTestWithListenerAutoStart, DISABLED_Receive_Return_True) {
- {
- ::testing::InSequence seq;
-
- EXPECT_CALL(mock_dal_, OnDeviceListUpdated(_));
- EXPECT_CALL(mock_dal_, OnConnectDone(transport_adapter_, _, _));
-
- EXPECT_CALL(
- mock_dal_,
- OnDataReceiveDone(transport_adapter_, _, _, ContainsMessage("abcd"))).
- WillOnce(InvokeWithoutArgs(this, &TcpAdapterTest::wakeUp));
- }
- EXPECT_TRUE(client_.Connect(port()));
- EXPECT_TRUE(client_.Send("abcd"));
+TEST_F(TcpAdapterTest, RestoreData_DataNotStored) {
+ Json::Value& tcp_adapter_dictionary =
+ resumption::LastState::instance()
+ ->dictionary["TransportManager"]["TcpAdapter"];
+ tcp_adapter_dictionary = Json::Value();
+ TestTCPTransportAdapter transport_adapter(port);
+ EXPECT_CALL(transport_adapter, Connect(_, _)).Times(0);
+ EXPECT_TRUE(transport_adapter.CallRestore());
}
-struct SendHelper {
- explicit SendHelper(TransportAdapter::Error expected_error)
- : expected_error_(expected_error),
- message_(
- new RawMessage(
- 1,
- 1,
- const_cast<unsigned char*>(reinterpret_cast<const unsigned char*>("efgh")),
- 4)) {
- }
- void sendMessage(const TransportAdapter* transport_adapter,
- const DeviceUID device_handle,
- const ApplicationHandle app_handle) {
- EXPECT_EQ(
- expected_error_,
- const_cast<TransportAdapter*>(transport_adapter)->SendData(
- device_handle, app_handle, message_));
- }
- TransportAdapter::Error expected_error_;
- RawMessagePtr message_;
-};
+TEST_F(TcpAdapterTest, DISABLED_StoreDataWithOneDevice_RestoreData) {
+ TestTCPTransportAdapter transport_adapter(port);
+ std::string uniq_id = "unique_device_name";
+ utils::SharedPtr<TCPDeviceMock> mockdev = new TCPDeviceMock(port, uniq_id);
+ transport_adapter.AddDevice(mockdev);
-// TODO{ALeshin} APPLINK-11090 - transport_adapter_->IsInitialised() doesn't return true as expected
-TEST_F(TcpAdapterTestWithListenerAutoStart, DISABLED_Send_Message) {
- SendHelper helper(TransportAdapter::OK);
- {
- ::testing::InSequence seq;
-
- EXPECT_CALL(mock_dal_, OnConnectDone(transport_adapter_, _, _)).WillOnce(
- Invoke(&helper, &SendHelper::sendMessage));
- EXPECT_CALL(mock_dal_,
- OnDataSendDone(transport_adapter_, _, _, helper.message_)).WillOnce(
- InvokeWithoutArgs(this, &TcpAdapterTest::wakeUp));
- }
-
- EXPECT_TRUE(client_.Connect(port()));
- EXPECT_EQ("efgh", client_.receive(4));
-}
+ std::vector<std::string> devList = transport_adapter.GetDeviceList();
+ ASSERT_EQ(1u, devList.size());
+ EXPECT_EQ(uniq_id, devList[0]);
-TEST_F(TcpAdapterTestWithListenerAutoStart, DISABLED_DisconnectFromClient) {
- {
- ::testing::InSequence seq;
+ const int app_handle = 1;
+ std::vector<int> intList = {app_handle};
+ EXPECT_CALL(*mockdev, GetApplicationList()).WillOnce(Return(intList));
- EXPECT_CALL(mock_dal_, OnConnectDone(transport_adapter_, _, _));
- EXPECT_CALL(mock_dal_, OnUnexpectedDisconnect(transport_adapter_, _, _, _));
- EXPECT_CALL(mock_dal_, OnDisconnectDone(transport_adapter_, _, _)).WillOnce(
- InvokeWithoutArgs(this, &TcpAdapterTest::wakeUp));
- }
- EXPECT_TRUE(client_.Connect(port()));
- client_.Disconnect();
-}
+ ConnectionSPtr mock_connection = new ConnectionMock();
+ EXPECT_CALL(transport_adapter, FindDevice(uniq_id)).WillOnce(Return(mockdev));
+ EXPECT_CALL(transport_adapter, FindEstablishedConnection(uniq_id, app_handle))
+ .WillOnce(Return(mock_connection));
-TEST_F(TcpAdapterTestWithListenerAutoStart, DISABLED_DisconnectFromServer) {
- {
- ::testing::InSequence seq;
+ EXPECT_CALL(*mockdev, GetApplicationPort(app_handle)).WillOnce(Return(port));
- EXPECT_CALL(mock_dal_, OnConnectDone(transport_adapter_, _, _)).WillOnce(
- Invoke(Disconnect));
- EXPECT_CALL(mock_dal_, OnDisconnectDone(transport_adapter_, _, _)).WillOnce(
- InvokeWithoutArgs(this, &TcpAdapterTest::wakeUp));
- }
- EXPECT_TRUE(client_.Connect(port()));
+ transport_adapter.CallStore();
-}
+ EXPECT_CALL(transport_adapter, Connect(uniq_id, app_handle))
+ .WillOnce(Return(TransportAdapter::OK));
-TEST_F(TcpAdapterTestWithListenerAutoStart, DISABLED_SendToDisconnected) {
- SendHelper* helper = new SendHelper(TransportAdapter::BAD_PARAM);
- {
- ::testing::InSequence seq;
+ EXPECT_TRUE(transport_adapter.CallRestore());
- EXPECT_CALL(mock_dal_, OnConnectDone(transport_adapter_, _, _)).WillOnce(
- Invoke(Disconnect));
- EXPECT_CALL(mock_dal_, OnDisconnectDone(transport_adapter_, _, _)).WillOnce(
- ::testing::DoAll(Invoke(helper, &SendHelper::sendMessage),
- InvokeWithoutArgs(this, &TcpAdapterTest::wakeUp)));
- }
- EXPECT_TRUE(client_.Connect(port()));
+ devList = transport_adapter.GetDeviceList();
+ ASSERT_EQ(1u, devList.size());
+ EXPECT_EQ(uniq_id, devList[0]);
}
-TEST_F(TcpAdapterTestWithListenerAutoStart, DISABLED_SendFailed) {
-// static unsigned char zzz[2000000]; //message will send without fail because socket buffer can contain it
- //this test works correctly starting with number 2539009
- static unsigned char zzz[2600000];
- SendHelper* helper = new SendHelper(TransportAdapter::OK);
- helper->message_ = new RawMessage(1, 1, zzz, sizeof(zzz));
- {
- ::testing::InSequence seq;
- EXPECT_CALL(mock_dal_, OnConnectDone(transport_adapter_, _, _)).WillOnce(
- Invoke(helper, &SendHelper::sendMessage));
- EXPECT_CALL(
- mock_dal_,
- OnDataSendFailed(transport_adapter_, _, _, helper->message_, _));
- EXPECT_CALL(mock_dal_, OnDisconnectDone(transport_adapter_, _, _)).WillOnce(
- InvokeWithoutArgs(this, &TcpAdapterTest::wakeUp));
+TEST_F(TcpAdapterTest, DISABLED_StoreDataWithSeveralDevices_RestoreData) {
+ TestTCPTransportAdapter transport_adapter(port);
+ const uint32_t count_dev = 10;
+
+ utils::SharedPtr<TCPDeviceMock> mockdev[count_dev];
+ std::string uniq_id[count_dev];
+ for (uint32_t i = 0; i < count_dev; i++) {
+ char numb[12];
+ std::snprintf(numb, 12, "%d", i);
+ uniq_id[i] = "unique_device_name" + std::string(numb);
+ mockdev[i] = new TCPDeviceMock(port, uniq_id[i]);
+ EXPECT_CALL(*(mockdev[i]), IsSameAs(_)).WillRepeatedly(Return(false));
+ transport_adapter.AddDevice(mockdev[i]);
}
- EXPECT_TRUE(client_.Connect(port()));
- client_.receive(2);
- client_.Disconnect();
-}
-// TODO{ALeshin} APPLINK-11090 - transport_adapter_->IsInitialised() doesn't return true as expected
-TEST_F(TcpAdapterTest, DISABLED_StartStop) {
+ std::vector<std::string> devList = transport_adapter.GetDeviceList();
+ ASSERT_EQ(count_dev, devList.size());
+ EXPECT_EQ(uniq_id[0], devList[0]);
- //assert
- EXPECT_EQ(TransportAdapter::BAD_STATE,
- transport_adapter_->StopClientListening());
- EXPECT_TRUE(client_.Connect(port()));
- EXPECT_EQ(TransportAdapter::OK, transport_adapter_->StartClientListening());
- EXPECT_TRUE(client_.Connect(port()));
+ const int app_handle = 1;
+ std::vector<int> intList = {app_handle};
- //act
- client_.Disconnect();
+ ConnectionSPtr mock_connection = new ConnectionMock();
+ for (uint32_t i = 0; i < count_dev; i++) {
+ EXPECT_CALL(transport_adapter, FindDevice(uniq_id[i]))
+ .WillOnce(Return(mockdev[i]));
+ EXPECT_CALL(*(mockdev[i]), GetApplicationList()).WillOnce(Return(intList));
- //assert
- EXPECT_EQ(TransportAdapter::BAD_STATE,
- transport_adapter_->StartClientListening());
- EXPECT_TRUE(client_.Connect(port()));
+ EXPECT_CALL(transport_adapter,
+ FindEstablishedConnection(uniq_id[i], app_handle))
+ .WillOnce(Return(mock_connection));
- //act
- client_.Disconnect();
+ EXPECT_CALL(*(mockdev[i]), GetApplicationPort(app_handle))
+ .WillOnce(Return(port));
+ }
+ transport_adapter.CallStore();
- //assert
- EXPECT_EQ(TransportAdapter::OK, transport_adapter_->StopClientListening());
- EXPECT_TRUE(client_.Connect(port()));
+ for (uint32_t i = 0; i < count_dev; i++) {
+ EXPECT_CALL(transport_adapter, Connect(uniq_id[i], app_handle))
+ .WillOnce(Return(TransportAdapter::OK));
+ }
- //act
- wakeUp();
-}
+ EXPECT_TRUE(transport_adapter.CallRestore());
-} // namespace
-} // namespace
+ devList = transport_adapter.GetDeviceList();
+ ASSERT_EQ(count_dev, devList.size());
+ for (uint32_t i = 0; i < count_dev; i++) {
+ EXPECT_EQ(uniq_id[i], devList[i]);
+ }
+}
+} // namespace transport_manager_test
+} // namespace components
+} // namespace test