misc: deprecate VOM
[vpp.git] / extras / deprecated / vom / vom / test_stats.cpp
diff --git a/extras/deprecated/vom/vom/test_stats.cpp b/extras/deprecated/vom/vom/test_stats.cpp
new file mode 100644 (file)
index 0000000..6235dd4
--- /dev/null
@@ -0,0 +1,92 @@
+#include <vom/om.hpp>
+#include <vom/hw.hpp>
+#include <vom/types.hpp>
+#include <vom/prefix.hpp>
+#include <vom/tap_interface.hpp>
+
+class listener : public VOM::interface::stat_listener
+{
+public:
+  listener() {}
+  ~listener() {}
+  void handle_interface_stat(const VOM::interface& itf)
+  {
+    std::cout << itf.name() << " " << itf.get_stats();
+  }
+};
+
+/**
+ * Run VPP on another terminal before running vom_stats_test
+ */
+int main()
+{
+  uint8_t i = 5;
+  listener *listen = new listener();
+
+  VOM::HW::init(new VOM::HW::cmd_q());
+  VOM::OM::init();
+
+  while (VOM::HW::connect() != true)
+    ;
+
+  VOM::tap_interface itf("tap0", VOM::interface::admin_state_t::UP, VOM::route::prefix_t::ZERO);
+  VOM::OM::write("__TAP__", itf);
+
+  std::shared_ptr<VOM::tap_interface> intf = itf.singular();
+
+
+  VOM::tap_interface itf1("tap1", VOM::interface::admin_state_t::UP, VOM::route::prefix_t::ZERO);
+  VOM::OM::write("__TAP__", itf1);
+
+  std::shared_ptr<VOM::tap_interface> intf1 = itf1.singular();
+
+  VOM::tap_interface itf2("tap2", VOM::interface::admin_state_t::UP, VOM::route::prefix_t::ZERO);
+  VOM::OM::write("__TAP__", itf2);
+
+  std::shared_ptr<VOM::tap_interface> intf2 = itf2.singular();
+
+  if (VOM::handle_t::INVALID == intf->handle() || VOM::handle_t::INVALID == intf1->handle()
+      || VOM::handle_t::INVALID == intf2->handle())
+    {
+      std::cout << "Interface index is INVALID" << std::endl;
+      VOM::HW::disconnect();
+
+      return 0;
+    }
+  else
+    {
+      std::cout << "Interface #1 index is " << intf->handle().value() << std::endl;
+      std::cout << "Interface #2 index is " << intf1->handle().value() << std::endl;
+      std::cout << "Interface #3 index is " << intf2->handle().value() << std::endl;
+    }
+
+  intf->enable_stats(listen);
+  intf1->enable_stats(listen);
+  intf2->enable_stats(listen);
+
+  while (i--)
+    {
+      sleep(3);
+      std::cout << "stats # " << std::to_string(i) << std::endl;
+      VOM::HW::read_stats();
+
+      if (i == 2)
+        intf->disable_stats();
+
+    }
+
+  intf1->disable_stats();
+  intf2->disable_stats();
+
+  intf.reset();
+  intf1.reset();
+  intf2.reset();
+
+  VOM::OM::remove("__TAP__");
+
+  delete listen;
+  sleep(2);
+  VOM::HW::disconnect();
+
+  return 0;
+}