OSDN Git Service

test_vendor: Add more unit tests for async_manager
authorMyles Watson <mylesgw@google.com>
Thu, 8 Dec 2016 22:34:20 +0000 (14:34 -0800)
committerMyles Watson <mylesgw@google.com>
Fri, 16 Dec 2016 16:34:50 +0000 (08:34 -0800)
Test: run the unit tests
 out/host/linux-x86/nativetest/test-vendor_test_host/test-vendor_test_host \
     --gtest_filter=AsyncManagerSocketTest.*

Change-Id: I8c5e05c5506a067a6148d54dc23bbb931ad612e7

vendor_libs/test_vendor_lib/test/async_manager_unittest.cc

index 90972d0..96d5d4d 100644 (file)
@@ -47,6 +47,9 @@ class AsyncManagerSocketTest : public ::testing::Test {
     serv_addr.sin_family = AF_INET;
     serv_addr.sin_addr.s_addr = INADDR_ANY;
     serv_addr.sin_port = htons(kPort);
+    int reuse_flag = 1;
+    EXPECT_FALSE(setsockopt(socket_fd_, SOL_SOCKET, SO_REUSEADDR, &reuse_flag,
+                            sizeof(reuse_flag)) < 0);
     EXPECT_FALSE(bind(socket_fd_, (sockaddr*)&serv_addr, sizeof(serv_addr)) <
                  0);
 
@@ -145,4 +148,28 @@ TEST_F(AsyncManagerSocketTest, TestOneConnection) {
   close(socket_cli_fd);
 }
 
+TEST_F(AsyncManagerSocketTest, TestRepeatedConnections) {
+  static const int num_connections = 300;
+  for (int i = 0; i < num_connections; i++) {
+    int socket_cli_fd = ConnectClient();
+    WriteFromClient(socket_cli_fd);
+    AwaitServerResponse(socket_cli_fd);
+    close(socket_cli_fd);
+  }
+}
+
+TEST_F(AsyncManagerSocketTest, TestMultipleConnections) {
+  static const int num_connections = 300;
+  int socket_cli_fd[num_connections];
+  for (int i = 0; i < num_connections; i++) {
+    socket_cli_fd[i] = ConnectClient();
+    EXPECT_TRUE(socket_cli_fd[i] > 0);
+    WriteFromClient(socket_cli_fd[i]);
+  }
+  for (int i = 0; i < num_connections; i++) {
+    AwaitServerResponse(socket_cli_fd[i]);
+    close(socket_cli_fd[i]);
+  }
+}
+
 }  // namespace test_vendor_lib