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)
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 ])
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)
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)
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
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)
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)