GBP: add allowed ethertypes to contracts
[vpp.git] / extras / vom / vom / test_stats.cpp
1 #include <vom/om.hpp>
2 #include <vom/hw.hpp>
3 #include <vom/types.hpp>
4 #include <vom/prefix.hpp>
5 #include <vom/tap_interface.hpp>
6
7 class listener : public VOM::interface::stat_listener
8 {
9 public:
10   listener() {}
11   ~listener() {}
12   void handle_interface_stat(const VOM::interface& itf)
13   {
14     std::cout << itf.name() << " " << itf.get_stats();
15   }
16 };
17
18 /**
19  * Run VPP on another terminal before running vom_stats_test
20  */
21 int main()
22 {
23   uint8_t i = 5;
24   listener *listen = new listener();
25
26   VOM::HW::init(new VOM::HW::cmd_q());
27   VOM::OM::init();
28
29   while (VOM::HW::connect() != true)
30     ;
31
32   VOM::tap_interface itf("tap0", VOM::interface::admin_state_t::UP, VOM::route::prefix_t::ZERO);
33   VOM::OM::write("__TAP__", itf);
34
35   std::shared_ptr<VOM::tap_interface> intf = itf.singular();
36
37
38   VOM::tap_interface itf1("tap1", VOM::interface::admin_state_t::UP, VOM::route::prefix_t::ZERO);
39   VOM::OM::write("__TAP__", itf1);
40
41   std::shared_ptr<VOM::tap_interface> intf1 = itf1.singular();
42
43   VOM::tap_interface itf2("tap2", VOM::interface::admin_state_t::UP, VOM::route::prefix_t::ZERO);
44   VOM::OM::write("__TAP__", itf2);
45
46   std::shared_ptr<VOM::tap_interface> intf2 = itf2.singular();
47
48   if (VOM::handle_t::INVALID == intf->handle() || VOM::handle_t::INVALID == intf1->handle()
49       || VOM::handle_t::INVALID == intf2->handle())
50     {
51       std::cout << "Interface index is INVALID" << std::endl;
52       VOM::HW::disconnect();
53
54       return 0;
55     }
56   else
57     {
58       std::cout << "Interface #1 index is " << intf->handle().value() << std::endl;
59       std::cout << "Interface #2 index is " << intf1->handle().value() << std::endl;
60       std::cout << "Interface #3 index is " << intf2->handle().value() << std::endl;
61     }
62
63   intf->enable_stats(listen);
64   intf1->enable_stats(listen);
65   intf2->enable_stats(listen);
66
67   while (i--)
68     {
69       sleep(3);
70       std::cout << "stats # " << std::to_string(i) << std::endl;
71       VOM::HW::read_stats();
72
73       if (i == 2)
74         intf->disable_stats();
75
76     }
77
78   intf1->disable_stats();
79   intf2->disable_stats();
80
81   intf.reset();
82   intf1.reset();
83   intf2.reset();
84
85   VOM::OM::remove("__TAP__");
86
87   delete listen;
88   sleep(2);
89   VOM::HW::disconnect();
90
91   return 0;
92 }