Example #1
0
 def test_connect_attrs(self):
     addr = "tcp:127.0.0.1:%d" % random.randint(10000, 12000)
     server_process = echo_server(addr)
     time.sleep(0.5)
     attrs = {
         "xcm.local_addr": "tcp:127.0.0.2:0",
         "tcp.keepalive_interval": 99
     }
     conn = xcm.connect(addr, attrs=attrs)
     self.assertTrue(
         conn.get_attr("xcm.local_addr").startswith("tcp:127.0.0.2"))
     self.assertEqual(conn.get_attr("tcp.keepalive_interval"), 99)
     conn.close()
     server_process.terminate()
     server_process.join()
Example #2
0
    def test_echo(self):
        for addr in TEST_ADDRS:
            server_process = echo_server(addr)
            time.sleep(0.5)

            conn = xcm.connect(addr, 0)

            conn.set_blocking(False)
            conn.finish()
            conn.set_blocking(True)

            if addr.startswith("tls") or addr.startswith("tcp"):
                conn.set_attr("tcp.keepalive_count", 99)
                self.assertEqual(conn.get_attr("tcp.keepalive_count"), 99)
            else:
                self.assertRaises(FileNotFoundError, conn.set_attr,
                                  "tcp.keepalive_count", 99)

            self.assertEqual(conn.get_attr("xcm.type"), "connection")

            with self.assertRaises(PermissionError):
                conn.set_attr("xcm.remote_addr", "ux:foo")

            if addr.startswith("tls") or addr.startswith("tcp"):
                self.assertGreater(conn.get_attr("tcp.rtt"), 0)
            if addr.startswith("tls"):
                key_id = bytes([
                    0xC0, 0x6D, 0x73, 0x1C, 0x13, 0x25, 0xB3, 0x26, 0x10, 0x51,
                    0xFE, 0xAC, 0x98, 0xDB, 0x44, 0x35, 0xDE, 0xCD, 0x80, 0x8B
                ])
                self.assertEqual(conn.get_attr("tls.peer_subject_key_id"),
                                 key_id)

            orig_msg = b'\x01\x02\x00\x03\x09\x02\x00\x04'
            conn.send(orig_msg)
            ret_msg = conn.receive()
            self.assertEqual(ret_msg, orig_msg)

            conn.close()

            server_process.terminate()
            server_process.join()
Example #3
0
    def test_connect_flags(self):
        for addr in TEST_ADDRS:
            server_process = echo_server(addr)
            time.sleep(0.5)

            conn = xcm.connect(addr, xcm.NONBLOCK)
            self.assertFalse(conn.is_blocking())

            finished = False
            while not finished:
                try:
                    conn.finish()
                    finished = True
                except BlockingIOError:
                    time.sleep(0.1)

            conn.close()

            server_process.terminate()
            server_process.join()
Example #4
0
    def test_echo(self):
        for addr in TEST_ADDRS:
            server_process = echo_server(addr)
            time.sleep(0.5)

            conn = xcm.connect(addr, 0)

            conn.set_blocking(False)
            conn.finish()
            conn.set_blocking(True)

            if addr.startswith("tls") or addr.startswith("tcp"):
                conn.set_attr("tcp.keepalive_count", 99)
                self.assertEqual(conn.get_attr("tcp.keepalive_count"), 99)
            else:
                self.assertRaises(FileNotFoundError, conn.set_attr,
                                  "tcp.keepalive_count", 99)

            self.assertEqual(conn.get_attr("xcm.type"), "connection")

            with self.assertRaises(PermissionError):
                conn.set_attr("xcm.remote_addr", "ux:foo")

            if addr.startswith("tls") or addr.startswith("tcp"):
                self.assertGreater(conn.get_attr("tcp.rtt"), 0)

            if addr.startswith("tls"):
                with open("%s/ski" % CERT_DIR, "rb") as f:
                    key_id = f.read()
                    self.assertEqual(conn.get_attr("tls.peer_subject_key_id"),
                                     key_id)

            orig_msg = b'\x01\x02\x00\x03\x09\x02\x00\x04'
            conn.send(orig_msg)
            ret_msg = conn.receive()
            self.assertEqual(ret_msg, orig_msg)

            conn.close()

            server_process.terminate()
            server_process.join()
Example #5
0
 def test_connection_enoent_legacy(self):
     with self.assertRaises(xcm.error) as cm:
         xcm.connect("tcp:nonexistentdomain:4711", 0)
     self.assertEqual(cm.exception.errno, errno.ENOENT)
Example #6
0
 def test_connection_enoent(self):
     with self.assertRaises(FileNotFoundError) as cm:
         xcm.connect("tcp:nonexistentdomain:4711")
     self.assertEqual(cm.exception.errno, errno.ENOENT)
Example #7
0
 def test_connection_refused(self):
     with self.assertRaises(ConnectionRefusedError) as cm:
         xcm.connect("ux:doesntexist")
     self.assertEqual(cm.exception.errno, errno.ECONNREFUSED)
Example #8
0
#!/usr/bin/python3

import xcm
import sys

if len(sys.argv) == 3:
    raddr = sys.argv[1]
    msg = sys.argv[2]
    n = 1
elif len(sys.argv) == 4:
    raddr = sys.argv[1]
    msg = sys.argv[2]
    n = int(sys.argv[3])
    if n < 1:
        print("Number of iterations needs to be > 0")
        sys.exit(1)
else:
    print("Usage: %s <addr> <msg> [<iterations>]" % sys.argv[0])
    sys.exit(1)

conn = xcm.connect(raddr, 0)

for i in range(0, n):
    conn.send(msg.encode('utf-8'))
    res = conn.receive()

print(res.decode('utf-8'))