コード例 #1
0
ファイル: test_servers.py プロジェクト: dmshaw/dispatch
 def test_round_trip_reverse(self):
     fname = os.path.join(self._td, 'd.sock')
     ss = sample_server_cli
     self.assert_server_alive()
     with dispatch.open('', fname) as conn:
         dispatch.msg_write_type(conn, ss.ROUND_TRIP)
         dispatch.msg_write_type(conn, 2500)
         dispatch.msg_write_uint64(conn, 18446743967598447505)
         dispatch.msg_write_int64(conn, -9223372036854775807)
         dispatch.msg_write_uint32(conn, 2147477648)
         dispatch.msg_write_int32(conn, -6000)
         dispatch.msg_write_uint16(conn, 512)
         dispatch.msg_write_uint8(conn, 255)
         dispatch.msg_write_string(conn, "Hello Earth!")
         t = dispatch.msg_read_type(conn)
         self.assertEqual(t, ss.T_RESULT)
         values = []
         values.append(dispatch.msg_read_string(conn))
         values.append(dispatch.msg_read_uint8(conn))
         values.append(dispatch.msg_read_uint16(conn))
         values.append(dispatch.msg_read_int32(conn))
         values.append(dispatch.msg_read_uint32(conn))
         values.append(dispatch.msg_read_int64(conn))
         values.append(dispatch.msg_read_uint64(conn))
         values.append(dispatch.msg_read_type(conn))
         self.assertEqual(values, [
             "Hello Earth!", 255, 512, -6000, 2147477648,
             -9223372036854775807, 18446743967598447505, 2500
         ])
コード例 #2
0
ファイル: sample_server_cli.py プロジェクト: dmshaw/dispatch
def open_zero(dtype, conn):
    with open('/dev/zero', 'r+b') as fh:
        try:
            dispatch.msg_write_type(conn, T_RESULT)
            dispatch.msg_write_file(conn, fh)
        except (IOError, OSError, ValueError):
            dispatch.msg_write_type(conn, T_ERROR)
            dispatch.msg_write_uint16(conn, 1)
コード例 #3
0
ファイル: test_threaded.py プロジェクト: dmshaw/dispatch
def handle_reverse(dtype, conn):
    v1 = dispatch.msg_read_string(conn)
    v2 = dispatch.msg_read_int64(conn)
    v3 = dispatch.msg_read_uint8(conn)
    dispatch.msg_write_type(conn, MSG_REPLY)
    dispatch.msg_write_uint8(conn, v3)
    dispatch.msg_write_int64(conn, v2)
    dispatch.msg_write_string(conn, ''.join(reversed(v1)))
    return
コード例 #4
0
ファイル: sample_server_cli.py プロジェクト: dmshaw/dispatch
def comp_fact(dtype, conn):
    try:
        v = dispatch.msg_read_int32(conn)
        res = compute_fact(v)
        dispatch.msg_write_type(conn, T_RESULT)
        dispatch.msg_write_int32(conn, res)
    except (IOError, OSError, ValueError):
        dispatch.msg_write_type(conn, T_ERROR)
        dispatch.msg_write_uint16(conn, 1)
コード例 #5
0
ファイル: test_servers.py プロジェクト: dmshaw/dispatch
 def test_hello(self):
     self.assert_server_alive()
     fname = os.path.join(self._td, 'd.sock')
     with dispatch.open('', fname) as conn:
         dispatch.msg_write_type(conn, echo_server.ECHO_HELLO)
         s = dispatch.msg_read_string(conn)
         e = dispatch.msg_read_uint16(conn)
     self.assertEqual(s, "Hello, World")
     self.assertEqual(e, 0)
コード例 #6
0
ファイル: test_threaded.py プロジェクト: dmshaw/dispatch
def handle_echo(dtype, conn):
    v1 = dispatch.msg_read_string(conn)
    v2 = dispatch.msg_read_int64(conn)
    v3 = dispatch.msg_read_uint8(conn)
    dispatch.msg_write_type(conn, MSG_REPLY)
    dispatch.msg_write_string(conn, v1)
    dispatch.msg_write_int64(conn, v2)
    dispatch.msg_write_uint8(conn, v3)
    return
コード例 #7
0
ファイル: sample_server_cli.py プロジェクト: dmshaw/dispatch
def rq_fact(sockfn, value):
    with dispatch.open('', sockfn) as conn:
        dispatch.msg_write_type(conn, COMP_FACT)
        dispatch.msg_write_int32(conn, value)
        t = dispatch.msg_read_type(conn)
        if t == T_ERROR:
            e = dispatch.msg_read_uint16(conn)
            sys.exit(e)
        v = dispatch.msg_read_int32(conn)
    print v
コード例 #8
0
ファイル: sample_server_cli.py プロジェクト: dmshaw/dispatch
def open_rand(dtype, conn):
    fd = None
    try:
        fd = os.open('/dev/urandom', os.O_RDONLY)
        dispatch.msg_write_type(conn, T_RESULT)
        dispatch.msg_write_fd(conn, fd)
    except (IOError, OSError, ValueError):
        dispatch.msg_write_type(conn, T_ERROR)
        dispatch.msg_write_uint16(conn, 1)
    finally:
        if fd:
            os.close(fd)
コード例 #9
0
ファイル: test_servers.py プロジェクト: dmshaw/dispatch
 def test_multiple_rounds(self):
     self.assert_server_alive()
     fname = os.path.join(self._td, 'd.sock')
     for ii in range(0, 16):
         self.assert_server_alive()
         with dispatch.open('', fname) as conn:
             tostr = chr(0x41 + ii) * (ii + 1)
             dispatch.msg_write_type(conn, echo_server.ECHO_STRING)
             dispatch.msg_write_string(conn, tostr)
             fromstr = dispatch.msg_read_string(conn)
             err = dispatch.msg_read_uint16(conn)
         self.assertEqual(err, 0)
         self.assertEqual(tostr, fromstr)
コード例 #10
0
ファイル: test_threaded.py プロジェクト: dmshaw/dispatch
 def test_single_operation2(self):
     with dispatch.open('', self.SOCKF) as conn:
         dispatch.msg_write_type(conn, MSG_ECHO)
         dispatch.msg_write_string(conn, 'Hello World')
         dispatch.msg_write_int64(conn, 5050505)
         dispatch.msg_write_uint8(conn, 0xA)
         self.assertEqual(dispatch.msg_read_type(conn), MSG_REPLY)
         r1 = dispatch.msg_read_string(conn)
         r2 = dispatch.msg_read_int64(conn)
         r3 = dispatch.msg_read_uint8(conn)
         self.assertEqual(r1, 'Hello World')
         self.assertEqual(r2, 5050505)
         self.assertEqual(r3, 0xA)
コード例 #11
0
ファイル: test_servers.py プロジェクト: dmshaw/dispatch
    def test_foobar(self):
        self.assert_server_alive()
        fname = os.path.join(self._td, 'd.sock')
        conn = dispatch.open('', fname)
        with conn:
            dispatch.msg_write_type(conn, echo_server.ECHO_STRING)
            dispatch.msg_write_string(conn, "foobar")

            s = dispatch.msg_read_string(conn)
            # mimic the common error number style
            e = dispatch.msg_read_uint16(conn)
            self.assertEqual(s, 'foobar')
            self.assertEqual(e, 0)
コード例 #12
0
ファイル: test_servers.py プロジェクト: dmshaw/dispatch
 def test_eof_reads(self):
     fname = os.path.join(self._td, 'd.sock')
     ss = sample_server_cli
     self.assert_server_alive()
     with dispatch.open('', fname) as conn:
         dispatch.msg_write_type(conn, ss.COMP_FACT)
         dispatch.msg_write_int32(conn, 5)
         t = dispatch.msg_read_type(conn)
         self.assertEqual(t, ss.T_RESULT)
         v = dispatch.msg_read_int32(conn)
         self.assertEqual(v, 120)
         self.assertRaises(IOError, dispatch.msg_read_uint16, conn)
         self.assertRaises(IOError, dispatch.msg_read_uint32, conn)
         self.assertRaises(IOError, dispatch.msg_read_int32, conn)
コード例 #13
0
ファイル: test_servers.py プロジェクト: dmshaw/dispatch
 def test_open_zero_source(self):
     fname = os.path.join(self._td, 'd.sock')
     ss = sample_server_cli
     self.assert_server_alive()
     with dispatch.open('', fname) as conn:
         dispatch.msg_write_type(conn, ss.OPEN_ZERO)
         t = dispatch.msg_read_type(conn)
         self.assertEqual(t, ss.T_RESULT)
         fh = dispatch.msg_read_file(conn)
         with fh:
             buf = fh.read(8)
             self.assertEqual(len(buf), 8)
             self.assertEqual(buf, '\0' * 8)
         self.assertRaises((ValueError, OSError, IOError), fh.read, 8)
コード例 #14
0
ファイル: test_servers.py プロジェクト: dmshaw/dispatch
 def test_fact_internal(self):
     fname = os.path.join(self._td, 'd.sock')
     ss = sample_server_cli
     self.assert_server_alive()
     with dispatch.open('', fname) as conn:
         dispatch.msg_write_type(conn, ss.COMP_FACT)
         dispatch.msg_write_int32(conn, 5)
         t = dispatch.msg_read_type(conn)
         self.assertEqual(t, ss.T_RESULT)
         v = dispatch.msg_read_int32(conn)
         self.assertEqual(v, 120)
     with dispatch.open('', fname) as conn:
         dispatch.msg_write_type(conn, ss.COMP_FACT)
         dispatch.msg_write_int32(conn, 10)
         t = dispatch.msg_read_type(conn)
         self.assertEqual(t, ss.T_RESULT)
         v = dispatch.msg_read_int32(conn)
         self.assertEqual(v, 3628800)
     with dispatch.open('', fname) as conn:
         # the result will be too big
         dispatch.msg_write_type(conn, ss.COMP_FACT)
         dispatch.msg_write_int32(conn, 15)
         t = dispatch.msg_read_type(conn)
         self.assertEqual(t, ss.T_ERROR)
         v = dispatch.msg_read_uint16(conn)
         self.assertEqual(v, 1)
     with dispatch.open('', fname) as conn:
         # negative inputs are invalid
         dispatch.msg_write_type(conn, ss.COMP_FACT)
         dispatch.msg_write_int32(conn, -7)
         t = dispatch.msg_read_type(conn)
         self.assertEqual(t, ss.T_ERROR)
         v = dispatch.msg_read_uint16(conn)
         self.assertEqual(v, 1)
コード例 #15
0
ファイル: test_servers.py プロジェクト: dmshaw/dispatch
 def test_open_rand_source(self):
     fname = os.path.join(self._td, 'd.sock')
     ss = sample_server_cli
     self.assert_server_alive()
     with dispatch.open('', fname) as conn:
         dispatch.msg_write_type(conn, ss.OPEN_RAND)
         t = dispatch.msg_read_type(conn)
         self.assertEqual(t, ss.T_RESULT)
         fd = dispatch.msg_read_fd(conn)
         self.assertTrue(fd > 0)
         try:
             buf = os.read(fd, 8)
             self.assertEqual(len(buf), 8)
         finally:
             os.close(fd)
         self.assertRaises((OSError, IOError), os.read, fd, 8)
コード例 #16
0
ファイル: sample_server_cli.py プロジェクト: dmshaw/dispatch
def a_few_bytes(dtype, conn):
    try:
        d1 = dispatch.msg_read_bytes(conn)
        print >> sys.stderr, 'Got bytes: %r' % d1
        d2 = dispatch.msg_read_bytes(conn)
        print >> sys.stderr, 'Got bytes: %r' % d2
        d3 = dispatch.msg_read_bytes(conn)
        print >> sys.stderr, 'Got bytes: %r' % d3
        total_len = len(d1) + len(d2) + len(d3)
        dispatch.msg_write_type(conn, T_RESULT)
        dispatch.msg_write_uint32(conn, total_len)
        dispatch.msg_write_bytes(conn, d1)
        dispatch.msg_write_bytes(conn, d2)
        dispatch.msg_write_bytes(conn, d3)
    except Exception:
        dispatch.msg_write_type(conn, T_ERROR)
        dispatch.msg_write_uint16(conn, 1)
コード例 #17
0
ファイル: sample_server_cli.py プロジェクト: dmshaw/dispatch
def round_trip_reverse(dtype, conn):
    try:
        values = []
        values.append(dispatch.msg_read_type(conn))
        values.append(dispatch.msg_read_uint64(conn))
        values.append(dispatch.msg_read_int64(conn))
        values.append(dispatch.msg_read_uint32(conn))
        values.append(dispatch.msg_read_int32(conn))
        values.append(dispatch.msg_read_uint16(conn))
        values.append(dispatch.msg_read_uint8(conn))
        values.append(dispatch.msg_read_string(conn))
        print >> sys.stderr, 'values=%r' % values
        dispatch.msg_write_type(conn, T_RESULT)
        # now the data:
        dispatch.msg_write_string(conn, values.pop())
        dispatch.msg_write_uint8(conn, values.pop())
        dispatch.msg_write_uint16(conn, values.pop())
        dispatch.msg_write_int32(conn, values.pop())
        dispatch.msg_write_uint32(conn, values.pop())
        dispatch.msg_write_int64(conn, values.pop())
        dispatch.msg_write_uint64(conn, values.pop())
        dispatch.msg_write_type(conn, values.pop())
    except Exception:
        dispatch.msg_write_type(conn, T_ERROR)
        dispatch.msg_write_uint16(conn, 1)
コード例 #18
0
ファイル: test_servers.py プロジェクト: dmshaw/dispatch
 def test_bytes_type(self):
     import hashlib
     d1 = b'my\0binary\0data\0'
     d2 = hashlib.sha1('Goodbye Moon').digest()
     d3 = b'\x00\x00\x08abc'
     fname = os.path.join(self._td, 'd.sock')
     ss = sample_server_cli
     self.assert_server_alive()
     with dispatch.open('', fname) as conn:
         dispatch.msg_write_type(conn, ss.A_FEW_BYTES)
         dispatch.msg_write_bytes(conn, d1)
         dispatch.msg_write_bytes(conn, d2)
         dispatch.msg_write_bytes(conn, d3)
         t = dispatch.msg_read_type(conn)
         self.assertEqual(t, ss.T_RESULT)
         r0 = dispatch.msg_read_uint32(conn)
         self.assertEqual(r0, len(d1) + len(d2) + len(d3))
         r1 = dispatch.msg_read_bytes(conn)
         r2 = dispatch.msg_read_bytes(conn)
         r3 = dispatch.msg_read_bytes(conn)
         self.assertEqual(r1, d1)
         self.assertEqual(r2, d2)
         self.assertEqual(r3, d3)