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 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)
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_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)
def echo_int(dtype, conn): i1 = dispatch.msg_read_int32(conn) dispatch.msg_write_int32(conn, i1) dispatch.msg_write_uint16(conn, 0)