mroute routers in the stats segment
[vpp.git] / test / vpp_ip_route.py
index 18c27ff..00a79f4 100644 (file)
@@ -244,7 +244,7 @@ class VppIpRoute(VppObject):
     def add_vpp_config(self):
         if self.is_local or self.is_unreach or \
            self.is_prohibit or self.is_drop:
-            self._test.vapi.ip_add_del_route(
+            r = self._test.vapi.ip_add_del_route(
                 self.dest_addr,
                 self.dest_addr_len,
                 inet_pton(AF_INET6, "::"),
@@ -259,7 +259,7 @@ class VppIpRoute(VppObject):
             for path in self.paths:
                 lstack = path.encode_labels()
 
-                self._test.vapi.ip_add_del_route(
+                r = self._test.vapi.ip_add_del_route(
                     self.dest_addr,
                     self.dest_addr_len,
                     path.nh_addr,
@@ -277,6 +277,7 @@ class VppIpRoute(VppObject):
                     is_source_lookup=path.is_source_lookup,
                     is_udp_encap=path.is_udp_encap,
                     is_multipath=1 if len(self.paths) > 1 else 0)
+        self.stats_index = r.stats_index
         self._test.registry.register(self, self._test.logger)
 
     def remove_vpp_config(self):
@@ -325,6 +326,14 @@ class VppIpRoute(VppObject):
                    self.dest_addr_p,
                    self.dest_addr_len))
 
+    def get_stats_to(self):
+        c = self._test.statistics.get_counter("/net/route/to")
+        return c[0][self.stats_index]
+
+    def get_stats_via(self):
+        c = self._test.statistics.get_counter("/net/route/via")
+        return c[0][self.stats_index]
+
 
 class VppIpMRoute(VppObject):
     """
@@ -353,18 +362,19 @@ class VppIpMRoute(VppObject):
 
     def add_vpp_config(self):
         for path in self.paths:
-            self._test.vapi.ip_mroute_add_del(self.src_addr,
-                                              self.grp_addr,
-                                              self.grp_addr_len,
-                                              self.e_flags,
-                                              path.proto,
-                                              path.nh_itf,
-                                              path.nh_addr,
-                                              path.nh_i_flags,
-                                              bier_imp=path.bier_imp,
-                                              rpf_id=self.rpf_id,
-                                              table_id=self.table_id,
-                                              is_ipv6=self.is_ip6)
+            r = self._test.vapi.ip_mroute_add_del(self.src_addr,
+                                                  self.grp_addr,
+                                                  self.grp_addr_len,
+                                                  self.e_flags,
+                                                  path.proto,
+                                                  path.nh_itf,
+                                                  path.nh_addr,
+                                                  path.nh_i_flags,
+                                                  bier_imp=path.bier_imp,
+                                                  rpf_id=self.rpf_id,
+                                                  table_id=self.table_id,
+                                                  is_ipv6=self.is_ip6)
+            self.stats_index = r.stats_index
         self._test.registry.register(self, self._test.logger)
 
     def remove_vpp_config(self):
@@ -450,6 +460,10 @@ class VppIpMRoute(VppObject):
                        inet_ntop(AF_INET, self.grp_addr),
                        self.grp_addr_len))
 
+    def get_stats(self):
+        c = self._test.statistics.get_counter("/net/mroute")
+        return c[0][self.stats_index]
+
 
 class VppMFibSignal(object):
     def __init__(self, test, route, interface, packet):
@@ -581,7 +595,7 @@ class VppMplsRoute(VppObject):
         for path in self.paths:
             lstack = path.encode_labels()
 
-            self._test.vapi.mpls_route_add_del(
+            r = self._test.vapi.mpls_route_add_del(
                 self.local_label,
                 self.eos_bit,
                 path.proto,
@@ -596,6 +610,7 @@ class VppMplsRoute(VppObject):
                 next_hop_n_out_labels=len(lstack),
                 next_hop_via_label=path.nh_via_label,
                 next_hop_table_id=path.nh_table_id)
+        self.stats_index = r.stats_index
         self._test.registry.register(self, self._test.logger)
 
     def remove_vpp_config(self):
@@ -626,3 +641,11 @@ class VppMplsRoute(VppObject):
                 % (self.table_id,
                    self.local_label,
                    20+self.eos_bit))
+
+    def get_stats_to(self):
+        c = self._test.statistics.get_counter("/net/route/to")
+        return c[0][self.stats_index]
+
+    def get_stats_via(self):
+        c = self._test.statistics.get_counter("/net/route/via")
+        return c[0][self.stats_index]