api: Cleanup APIs interface.api
[vpp.git] / test / ext / vapi_cpp_test.cpp
index 14c35d5..46a2c0e 100644 (file)
 #include <vapi/vapi.hpp>
 #include <vapi/vpe.api.vapi.hpp>
 #include <vapi/interface.api.vapi.hpp>
-#include <vapi/stats.api.vapi.hpp>
 #include <fake.api.vapi.hpp>
 
 DEFINE_VAPI_MSG_IDS_VPE_API_JSON;
 DEFINE_VAPI_MSG_IDS_INTERFACE_API_JSON;
-DEFINE_VAPI_MSG_IDS_STATS_API_JSON;
 DEFINE_VAPI_MSG_IDS_FAKE_API_JSON;
 
 static char *app_name = nullptr;
@@ -37,6 +35,13 @@ static char *api_prefix = nullptr;
 static const int max_outstanding_requests = 32;
 static const int response_queue_size = 32;
 
+#define WAIT_FOR_RESPONSE(param, ret)      \
+  do                                       \
+    {                                      \
+      ret = con.wait_for_response (param); \
+    }                                      \
+  while (ret == VAPI_EAGAIN)
+
 using namespace vapi;
 
 void verify_show_version_reply (const Show_version_reply &r)
@@ -44,8 +49,11 @@ void verify_show_version_reply (const Show_version_reply &r)
   auto &p = r.get_payload ();
   printf ("show_version_reply: program: `%s', version: `%s', build directory: "
           "`%s', build date: `%s'\n",
-          p.program, p.version, p.build_directory, p.build_date);
-  ck_assert_str_eq ("vpe", (char *)p.program);
+          vl_api_from_api_string (&p.program),
+          vl_api_from_api_string (&p.version),
+          vl_api_from_api_string (&p.build_directory),
+          vl_api_from_api_string (&p.build_date));
+  ck_assert_str_eq ("vpe", (char *)vl_api_from_api_string (&p.program));
 }
 
 Connection con;
@@ -68,7 +76,7 @@ START_TEST (test_show_version_1)
   Show_version sv (con);
   vapi_error_e rv = sv.execute ();
   ck_assert_int_eq (VAPI_OK, rv);
-  rv = con.wait_for_response (sv);
+  WAIT_FOR_RESPONSE (sv, rv);
   ck_assert_int_eq (VAPI_OK, rv);
   auto &r = sv.get_response ();
   verify_show_version_reply (r);
@@ -122,7 +130,8 @@ START_TEST (test_loopbacks_1)
       memcpy (p.mac_address, mac_addresses[i], sizeof (p.mac_address));
       auto e = cl.execute ();
       ck_assert_int_eq (VAPI_OK, e);
-      vapi_error_e rv = con.wait_for_response (cl);
+      vapi_error_e rv;
+      WAIT_FOR_RESPONSE (cl, rv);
       ck_assert_int_eq (VAPI_OK, rv);
       auto &rp = cl.get_response ().get_payload ();
       ck_assert_int_eq (0, rp.retval);
@@ -142,10 +151,10 @@ START_TEST (test_loopbacks_1)
     Sw_interface_dump d (con);
     auto &p = d.get_request ().get_payload ();
     p.name_filter_valid = 0;
-    memset (p.name_filter, 0, sizeof (p.name_filter));
+    memset (p.name_filter.buf, 0, p.name_filter.length);
     auto rv = d.execute ();
     ck_assert_int_eq (VAPI_OK, rv);
-    rv = con.wait_for_response (d);
+    WAIT_FOR_RESPONSE (d, rv);
     ck_assert_int_eq (VAPI_OK, rv);
     auto &rs = d.get_result_set ();
     for (auto &r : rs)
@@ -172,7 +181,7 @@ START_TEST (test_loopbacks_1)
       dl.get_request ().get_payload ().sw_if_index = sw_if_indexes[i];
       auto rv = dl.execute ();
       ck_assert_int_eq (VAPI_OK, rv);
-      rv = con.wait_for_response (dl);
+      WAIT_FOR_RESPONSE (dl, rv);
       ck_assert_int_eq (VAPI_OK, rv);
       auto &response = dl.get_response ();
       auto rp = response.get_payload ();
@@ -184,10 +193,10 @@ START_TEST (test_loopbacks_1)
     Sw_interface_dump d (con);
     auto &p = d.get_request ().get_payload ();
     p.name_filter_valid = 0;
-    memset (p.name_filter, 0, sizeof (p.name_filter));
+    memset (p.name_filter.buf, 0, p.name_filter.length);
     auto rv = d.execute ();
     ck_assert_int_eq (VAPI_OK, rv);
-    rv = con.wait_for_response (d);
+    WAIT_FOR_RESPONSE (d, rv);
     ck_assert_int_eq (VAPI_OK, rv);
     auto &rs = d.get_result_set ();
     for (auto &r : rs)
@@ -302,10 +311,10 @@ START_TEST (test_loopbacks_2)
   Sw_interface_dump d (con, std::ref (swdcb));
   auto &p = d.get_request ().get_payload ();
   p.name_filter_valid = 0;
-  memset (p.name_filter, 0, sizeof (p.name_filter));
+  memset (p.name_filter.buf, 0, p.name_filter.length);
   auto rv = d.execute ();
   ck_assert_int_eq (VAPI_OK, rv);
-  rv = con.wait_for_response (d);
+  WAIT_FOR_RESPONSE (d, rv);
   ck_assert_int_eq (VAPI_OK, rv);
   ck_assert_int_ne (0, swdcb.called);
   std::array<Delete_loopback_cb, num_ifs> dcbs;
@@ -331,10 +340,10 @@ START_TEST (test_loopbacks_2)
     Sw_interface_dump d (con);
     auto &p = d.get_request ().get_payload ();
     p.name_filter_valid = 0;
-    memset (p.name_filter, 0, sizeof (p.name_filter));
+    memset (p.name_filter.buf, 0, p.name_filter.length);
     auto rv = d.execute ();
     ck_assert_int_eq (VAPI_OK, rv);
-    rv = con.wait_for_response (d);
+    WAIT_FOR_RESPONSE (d, rv);
     ck_assert_int_eq (VAPI_OK, rv);
     auto &rs = d.get_result_set ();
     for (auto &r : rs)
@@ -350,152 +359,6 @@ START_TEST (test_loopbacks_2)
 
 END_TEST;
 
-START_TEST (test_stats_1)
-{
-  printf ("--- Receive single stats by waiting for response ---\n");
-  Want_stats ws (con);
-  auto &payload = ws.get_request ().get_payload ();
-  payload.enable_disable = 1;
-  payload.pid = getpid ();
-  auto rv = ws.execute ();
-  ck_assert_int_eq (VAPI_OK, rv);
-  Event_registration<Vnet_interface_simple_counters> sc (con);
-  rv = con.wait_for_response (sc);
-  ck_assert_int_eq (VAPI_OK, rv);
-  auto &rs = sc.get_result_set ();
-  int count = 0;
-  for (auto &r : rs)
-    {
-      printf ("simple counters: first_sw_if_index=%u\n",
-              r.get_payload ().first_sw_if_index);
-      ++count;
-    }
-  ck_assert_int_ne (0, count);
-}
-
-END_TEST;
-
-struct Vnet_interface_simple_counters_cb
-{
-  Vnet_interface_simple_counters_cb () : called{0} {};
-  int called;
-  vapi_error_e
-  operator() (Event_registration<Vnet_interface_simple_counters> &e)
-  {
-    ++called;
-    auto &rs = e.get_result_set ();
-    int count = 0;
-    for (auto &r : rs)
-      {
-        printf ("simple counters: first_sw_if_index=%u\n",
-                r.get_payload ().first_sw_if_index);
-        ++count;
-      }
-    ck_assert_int_ne (0, count);
-    return VAPI_OK;
-  }
-};
-
-START_TEST (test_stats_2)
-{
-  printf ("--- Receive single stats by getting a callback ---\n");
-  Want_stats ws (con);
-  auto &payload = ws.get_request ().get_payload ();
-  payload.enable_disable = 1;
-  payload.pid = getpid ();
-  auto rv = ws.execute ();
-  ck_assert_int_eq (VAPI_OK, rv);
-  Vnet_interface_simple_counters_cb cb;
-  Event_registration<Vnet_interface_simple_counters> sc (con, std::ref (cb));
-  rv = con.wait_for_response (sc);
-  ck_assert_int_eq (VAPI_OK, rv);
-  ck_assert_int_ne (0, cb.called);
-}
-
-END_TEST;
-
-struct Vnet_interface_simple_counters_2_cb
-{
-  Vnet_interface_simple_counters_2_cb () : called{0}, total{0} {};
-  int called;
-  int total;
-  vapi_error_e
-  operator() (Event_registration<Vnet_interface_simple_counters> &e)
-  {
-    ++called;
-    auto &rs = e.get_result_set ();
-    int count = 0;
-    for (auto &r : rs)
-      {
-        printf ("simple counters: first_sw_if_index=%u\n",
-                r.get_payload ().first_sw_if_index);
-        ++count;
-      }
-    rs.free_all_responses ();
-    ck_assert_int_ne (0, count);
-    total += count;
-    return VAPI_OK;
-  }
-};
-
-START_TEST (test_stats_3)
-{
-  printf (
-      "--- Receive single stats by getting a callback - clear results ---\n");
-  Want_stats ws (con);
-  auto &payload = ws.get_request ().get_payload ();
-  payload.enable_disable = 1;
-  payload.pid = getpid ();
-  auto rv = ws.execute ();
-  ck_assert_int_eq (VAPI_OK, rv);
-  Vnet_interface_simple_counters_2_cb cb;
-  Event_registration<Vnet_interface_simple_counters> sc (con, std::ref (cb));
-  for (int i = 0; i < 5; ++i)
-    {
-      rv = con.wait_for_response (sc);
-    }
-  ck_assert_int_eq (VAPI_OK, rv);
-  ck_assert_int_eq (5, cb.called);
-  ck_assert_int_eq (5, cb.total);
-}
-
-END_TEST;
-
-START_TEST (test_stats_4)
-{
-  printf ("--- Receive multiple stats by waiting for response ---\n");
-  Want_stats ws (con);
-  auto &payload = ws.get_request ().get_payload ();
-  payload.enable_disable = 1;
-  payload.pid = getpid ();
-  auto rv = ws.execute ();
-  ck_assert_int_eq (VAPI_OK, rv);
-  Event_registration<Vnet_interface_simple_counters> sc (con);
-  Event_registration<Vnet_interface_combined_counters> cc (con);
-  rv = con.wait_for_response (sc);
-  ck_assert_int_eq (VAPI_OK, rv);
-  rv = con.wait_for_response (cc);
-  ck_assert_int_eq (VAPI_OK, rv);
-  int count = 0;
-  for (auto &r : sc.get_result_set ())
-    {
-      printf ("simple counters: first_sw_if_index=%u\n",
-              r.get_payload ().first_sw_if_index);
-      ++count;
-    }
-  ck_assert_int_ne (0, count);
-  count = 0;
-  for (auto &r : cc.get_result_set ())
-    {
-      printf ("combined counters: first_sw_if_index=%u\n",
-              r.get_payload ().first_sw_if_index);
-      ++count;
-    }
-  ck_assert_int_ne (0, count);
-}
-
-END_TEST;
-
 START_TEST (test_unsupported)
 {
   printf ("--- Unsupported messages ---\n");
@@ -548,10 +411,6 @@ Suite *test_suite (void)
   tcase_add_test (tc_cpp_api, test_show_version_2);
   tcase_add_test (tc_cpp_api, test_loopbacks_1);
   tcase_add_test (tc_cpp_api, test_loopbacks_2);
-  tcase_add_test (tc_cpp_api, test_stats_1);
-  tcase_add_test (tc_cpp_api, test_stats_2);
-  tcase_add_test (tc_cpp_api, test_stats_3);
-  tcase_add_test (tc_cpp_api, test_stats_4);
   tcase_add_test (tc_cpp_api, test_unsupported);
   suite_add_tcase (s, tc_cpp_api);