]> git.puffer.fish Git - mirror/frr.git/commitdiff
tests: pim-basic mcast scripts fixes for python3 7201/head
authorMark Stapp <mjs@voltanet.io>
Tue, 29 Sep 2020 17:14:39 +0000 (13:14 -0400)
committerMark Stapp <mjs@voltanet.io>
Tue, 29 Sep 2020 19:03:43 +0000 (15:03 -0400)
The pim-basic suite uses some private python scripts to
send and receive mcast traffic: revise them to support
both py2 and py3.

Signed-off-by: Mark Stapp <mjs@voltanet.io>
tests/topotests/pim-basic/mcast-rx.py
tests/topotests/pim-basic/mcast-tx.py

index 8a3a44ecb113ea25583381509a1e28a7121454ce..7aa4d4027ec418ee78a6edc123319f14e09af3e8 100755 (executable)
@@ -35,7 +35,8 @@ import time
 
 
 def ifname_to_ifindex(ifname):
-    output = subprocess.check_output("ip link show %s" % ifname, shell=True)
+    output = subprocess.check_output("ip link show %s" % ifname,
+                                     shell=True, universal_newlines=True)
     first_line = output.split("\n")[0]
     re_index = re.search("^(\d+):", first_line)
 
@@ -65,7 +66,8 @@ logging.addLevelName(
 )
 log = logging.getLogger(__name__)
 
-parser = argparse.ArgumentParser(description="Multicast RX utility", version="1.0.0")
+parser = argparse.ArgumentParser(description="Multicast RX utility")
+
 parser.add_argument("group", help="Multicast IP")
 parser.add_argument("ifname", help="Interface name")
 parser.add_argument("--port", help="UDP port", default=1000)
index ad6fdc10620efde909c093635cb1d1b7086e2f89..7fb980c6473f8324a9cb85a4c2f7251accc1ee1d 100755 (executable)
@@ -24,7 +24,7 @@ import logging
 import socket
 import struct
 import time
-
+import sys
 
 logging.basicConfig(
     level=logging.DEBUG, format="%(asctime)s %(levelname)5s: %(message)s"
@@ -40,7 +40,7 @@ logging.addLevelName(
 log = logging.getLogger(__name__)
 
 parser = argparse.ArgumentParser(
-    description="Multicast packet generator", version="1.0.0"
+    description="Multicast packet generator"
 )
 parser.add_argument("group", help="Multicast IP")
 parser.add_argument("ifname", help="Interface name")
@@ -57,9 +57,18 @@ sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
 # https://github.com/sivel/bonding/issues/10
 #
 # Bind our socket to ifname
-sock.setsockopt(
-    socket.SOL_SOCKET, 25, struct.pack("%ds" % len(args.ifname), args.ifname)
-)
+#
+# Note ugly python version incompatibility
+#
+if sys.version_info[0] > 2:
+    sock.setsockopt(
+        socket.SOL_SOCKET, 25, struct.pack("%ds" % len(args.ifname),
+                                           args.ifname.encode('utf-8'))
+    )
+else:
+    sock.setsockopt(
+        socket.SOL_SOCKET, 25, struct.pack("%ds" % len(args.ifname), args.ifname)
+    )
 
 # We need to make sure our sendto() finishes before we close the socket
 sock.setblocking(1)
@@ -70,11 +79,18 @@ sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, struct.pack("b", arg
 ms = args.interval / 1000.0
 
 # Send data to the multicast group
-for x in xrange(args.count):
+for x in range(args.count):
     log.info(
         "TX multicast UDP packet to %s:%d on %s" % (args.group, args.port, args.ifname)
     )
-    sent = sock.sendto("foobar %d" % x, (args.group, args.port))
+
+    #
+    # Note ugly python version incompatibility
+    #
+    if sys.version_info[0] > 2:
+        sent = sock.sendto(b"foobar %d" % x, (args.group, args.port))
+    else:
+        sent = sock.sendto("foobar %d" % x, (args.group, args.port))
 
     if args.count > 1 and ms:
         time.sleep(ms)