summaryrefslogtreecommitdiffstats
path: root/src/plugins/igmp/test/vpp_igmp.py
diff options
context:
space:
mode:
authorDave Wallace <dwallacelf@gmail.com>2019-08-22 00:32:29 +0000
committerDave Wallace <dwallacelf@gmail.com>2019-08-23 17:31:08 -0400
commit9e25c7723d96412a139d4f1b73f9fad020f3e7a9 (patch)
tree1a39ac7b3965afbfa25ffd9f9f2437bab0c7a7f8 /src/plugins/igmp/test/vpp_igmp.py
parent46441cb9cde2044c4e3e743d69418cecc897a63a (diff)
tests: move plugin tests to src/plugins/*/test
- Relocate plugin tests for 'make test' into src/plugins/*/test so that plugin test cases are co-located with the plugin source code. Type: refactor Ticket: VPP-1754 Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: I503e6a43528e14981799b735fa65674155713f67 (cherry picked from commit a43c93f8554ad7418e31be3791b3fb71232f60ac)
Diffstat (limited to 'src/plugins/igmp/test/vpp_igmp.py')
-rw-r--r--src/plugins/igmp/test/vpp_igmp.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/plugins/igmp/test/vpp_igmp.py b/src/plugins/igmp/test/vpp_igmp.py
new file mode 100644
index 00000000000..8f78a9b909a
--- /dev/null
+++ b/src/plugins/igmp/test/vpp_igmp.py
@@ -0,0 +1,75 @@
+
+from vpp_object import VppObject
+import socket
+
+
+class IGMP_MODE:
+ ROUTER = 0
+ HOST = 1
+
+
+class IGMP_FILTER:
+ INCLUDE = 1
+ EXCLUDE = 0
+
+
+def find_igmp_state(states, itf, gaddr, saddr):
+ for s in states:
+ if s.sw_if_index == itf.sw_if_index and \
+ str(s.gaddr) == gaddr and str(s.saddr) == saddr:
+ return True
+ return False
+
+
+def wait_for_igmp_event(test, timeout, itf, gaddr, saddr, ff):
+ ev = test.vapi.wait_for_event(timeout, "igmp_event")
+ if ev.sw_if_index == itf.sw_if_index and \
+ str(ev.gaddr) == gaddr and str(ev.saddr) == saddr and \
+ ev.filter == ff:
+ return True
+ return False
+
+
+class IgmpSG():
+ def __init__(self, gaddr, saddrs):
+ self.gaddr = gaddr
+ self.gaddr_p = socket.inet_pton(socket.AF_INET, gaddr)
+ self.saddrs = saddrs
+ self.saddrs_p = []
+ self.saddrs_encoded = []
+ for s in saddrs:
+ ss = socket.inet_pton(socket.AF_INET, s)
+ self.saddrs_p.append(ss)
+ self.saddrs_encoded.append(ss)
+
+
+class IgmpRecord():
+ def __init__(self, sg, type):
+ self.sg = sg
+ self.type = type
+
+
+class VppHostState(VppObject):
+ def __init__(self, test, filter, sw_if_index, sg):
+ self._test = test
+ self.sw_if_index = sw_if_index
+ self.filter = filter
+ self.sg = sg
+
+ def add_vpp_config(self):
+ self._test.vapi.igmp_listen(
+ self.filter, self.sw_if_index,
+ self.sg.saddrs_encoded, self.sg.gaddr_p)
+
+ def remove_vpp_config(self):
+ self._test.vapi.igmp_listen(
+ self.filter,
+ self.sw_if_index,
+ [],
+ self.sg.gaddr_p)
+
+ def object_id(self):
+ return "%s:%d" % (self.sg, self.sw_if_index)
+
+ def query_vpp_config(self):
+ return self._test.vapi.igmp_dump()