tcp/session: add make tests 06/9806/3
authorFlorin Coras <fcoras@cisco.com>
Mon, 11 Dec 2017 17:09:05 +0000 (09:09 -0800)
committerDave Barach <openvpp@barachs.net>
Tue, 12 Dec 2017 21:35:51 +0000 (21:35 +0000)
Change-Id: Icb93ab80c5a6432d7b2b698a47e8b612c6f06fbd
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/vnet/tcp/tcp_test.c
test/test_session.py [new file with mode: 0644]
test/test_tcp.py [new file with mode: 0644]
test/vpp_papi_provider.py

index e3cdb1b..00d574a 100644 (file)
@@ -1557,9 +1557,12 @@ tcp_test_lookup (vlib_main_t * vm, unformat_input_t * input)
   tcp_main_t *tm = &tcp_main;
   transport_connection_t _tc1, *tc1 = &_tc1, _tc2, *tc2 = &_tc2, *tconn;
   tcp_connection_t *tc;
-  stream_session_t *s;
+  stream_session_t *s, *s1;
   u8 cmp = 0, is_filtered = 0;
 
+  /*
+   * Allocate fake session and connection 1
+   */
   pool_get (smm->sessions[0], s);
   memset (s, 0, sizeof (*s));
   s->session_index = s - smm->sessions[0];
@@ -1574,12 +1577,18 @@ tcp_test_lookup (vlib_main_t * vm, unformat_input_t * input)
   tc->connection.rmt_ip.ip4.as_u32 = clib_host_to_net_u32 (0x06000103);
   tc->connection.lcl_port = 35051;
   tc->connection.rmt_port = 53764;
-  tc->connection.proto = 0;
+  tc->connection.proto = TRANSPORT_PROTO_TCP;
+  tc->connection.is_ip4 = 1;
   clib_memcpy (tc1, &tc->connection, sizeof (*tc1));
+  s1 = s;
 
+  /*
+   * Allocate fake session and connection 2
+   */
   pool_get (session_manager_main.sessions[0], s);
   memset (s, 0, sizeof (*s));
   s->session_index = s - smm->sessions[0];
+
   pool_get (tm->connections[0], tc);
   memset (tc, 0, sizeof (*tc));
   tc->connection.c_index = tc - tm->connections[0];
@@ -1590,18 +1599,21 @@ tcp_test_lookup (vlib_main_t * vm, unformat_input_t * input)
   tc->connection.rmt_ip.ip4.as_u32 = clib_host_to_net_u32 (0x06000102);
   tc->connection.lcl_port = 38225;
   tc->connection.rmt_port = 53764;
-  tc->connection.proto = 0;
+  tc->connection.proto = TRANSPORT_PROTO_TCP;
+  tc->connection.is_ip4 = 1;
   clib_memcpy (tc2, &tc->connection, sizeof (*tc2));
 
   /*
    * Confirm that connection lookup works
    */
 
-  session_lookup_add_connection (tc1, tc1->s_index);
+  session_lookup_add_connection (tc1, session_handle (s1));
   tconn = session_lookup_connection_wt4 (0, &tc1->lcl_ip.ip4,
                                         &tc1->rmt_ip.ip4,
                                         tc1->lcl_port, tc1->rmt_port,
                                         tc1->proto, 0, &is_filtered);
+
+  TCP_TEST ((tconn != 0), "connection exists");
   cmp = (memcmp (&tconn->rmt_ip, &tc1->rmt_ip, sizeof (tc1->rmt_ip)) == 0);
   TCP_TEST ((cmp), "rmt ip is identical %d", cmp);
   TCP_TEST ((tconn->lcl_port == tc1->lcl_port),
@@ -1730,18 +1742,23 @@ tcp_test (vlib_main_t * vm,
        {
          res = tcp_test_lookup (vm, input);
        }
+      else if (unformat (input, "all"))
+       {
+         if ((res = tcp_test_sack (vm, input)))
+           goto done;
+         if ((res = tcp_test_fifo (vm, input)))
+           goto done;
+         if ((res = tcp_test_lookup (vm, input)))
+           goto done;
+       }
       else
        break;
     }
 
+done:
   if (res)
-    {
-      return clib_error_return (0, "TCP unit test failed");
-    }
-  else
-    {
-      return 0;
-    }
+    return clib_error_return (0, "TCP unit test failed");
+  return 0;
 }
 
 /* *INDENT-OFF* */
diff --git a/test/test_session.py b/test/test_session.py
new file mode 100644 (file)
index 0000000..7219ffd
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+
+import unittest
+
+from framework import VppTestCase, VppTestRunner
+
+
+class TestSession(VppTestCase):
+    """ Session Test Case """
+
+    @classmethod
+    def setUpClass(cls):
+        super(TestSession, cls).setUpClass()
+
+    def setUp(self):
+        super(TestSession, self).setUp()
+
+    def tearDown(self):
+        super(TestSession, self).tearDown()
+        self.vapi.session_enable_disable(is_enabled=1)
+
+    def test_session(self):
+        """ Session Unit Tests """
+        error = self.vapi.cli("test session all")
+
+        if error:
+            self.logger.critical(error)
+        self.assertEqual(error.find("Failed"), -1)
+
+if __name__ == '__main__':
+    unittest.main(testRunner=VppTestRunner)
diff --git a/test/test_tcp.py b/test/test_tcp.py
new file mode 100644 (file)
index 0000000..869ef1a
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/env python
+
+import unittest
+
+from framework import VppTestCase, VppTestRunner
+
+
+class TestTCP(VppTestCase):
+    """ TCP Test Case """
+
+    @classmethod
+    def setUpClass(cls):
+        super(TestTCP, cls).setUpClass()
+
+    def setUp(self):
+        super(TestTCP, self).setUp()
+        self.vapi.session_enable_disable(is_enabled=1)
+
+    def tearDown(self):
+        super(TestTCP, self).tearDown()
+
+    def test_tcp(self):
+        """ TCP Unit Tests """
+        error = self.vapi.cli("test tcp all")
+
+        if error:
+            self.logger.critical(error)
+        self.assertEqual(error.find("Failed"), -1)
+
+if __name__ == '__main__':
+    unittest.main(testRunner=VppTestRunner)
index c4b1601..c8954f8 100644 (file)
@@ -2806,3 +2806,8 @@ class VppPapiProvider(object):
         return self.api(self.papi.add_node_next,
                         {'node_name': node_name,
                          'next_name': next_name})
+
+    def session_enable_disable(self, is_enabled):
+        return self.api(
+            self.papi.session_enable_disable,
+            {'is_enable': is_enabled})