From bc93568287db24847a316fea035e8931ba6410ef Mon Sep 17 00:00:00 2001 From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> Date: Fri, 21 Jul 2017 20:14:58 +0300 Subject: [PATCH] xrow: test missing SYNC in JOIN/SUBSCRIBE See #2334 --- test/box-py/iproto.result | 1 + test/box-py/iproto.test.py | 42 ++++++++++++++++++++++++++++++-------- test/box-py/replica.lua | 9 -------- 3 files changed, 34 insertions(+), 18 deletions(-) delete mode 100644 test/box-py/replica.lua diff --git a/test/box-py/iproto.result b/test/box-py/iproto.result index 9f4881592b..3d1111c6d0 100644 --- a/test/box-py/iproto.result +++ b/test/box-py/iproto.result @@ -137,6 +137,7 @@ space2 = box.schema.create_space('test2') ... Schema changed -> error: True Got another schema_id: True +Sync ok space:drop() --- ... diff --git a/test/box-py/iproto.test.py b/test/box-py/iproto.test.py index fe1e665d7f..d242a7fed8 100644 --- a/test/box-py/iproto.test.py +++ b/test/box-py/iproto.test.py @@ -215,15 +215,7 @@ c = Connection('localhost', server.iproto.port) c.connect() s = c._socket -def test_request(req_header, req_body): - query_header = msgpack.dumps(req_header) - query_body = msgpack.dumps(req_body) - packet_len = len(query_header) + len(query_body) - query = msgpack.dumps(packet_len) + query_header + query_body - try: - s.send(query) - except OSError as e: - print ' => ', 'Failed to send request' +def receive_response(): resp_len = '' resp_headerbody = '' resp_header = {} @@ -243,6 +235,17 @@ def test_request(req_header, req_body): res['body'] = resp_body return res +def test_request(req_header, req_body): + query_header = msgpack.dumps(req_header) + query_body = msgpack.dumps(req_body) + packet_len = len(query_header) + len(query_body) + query = msgpack.dumps(packet_len) + query_header + query_body + try: + s.send(query) + except OSError as e: + print ' => ', 'Failed to send request' + return receive_response() + header = { IPROTO_CODE : REQUEST_TYPE_SELECT} body = { IPROTO_SPACE_ID: space_id, IPROTO_INDEX_ID: 0, @@ -277,6 +280,27 @@ resp = test_request(header, body) print 'Schema changed -> error:', resp['header'][0] != 0 print 'Got another schema_id:', resp['header'][5] != schema_id +# +# gh-2334 Lost SYNC in JOIN response. +# +uuid = '0d5bd431-7f3e-4695-a5c2-82de0a9cbc95' +header = { IPROTO_CODE: REQUEST_TYPE_JOIN, IPROTO_SYNC: 2334 } +body = { IPROTO_SERVER_UUID: uuid } +resp = test_request(header, body) +if resp['header'][IPROTO_SYNC] == 2334: + i = 1 + while i < 3: + resp = receive_response() + if resp['header'][IPROTO_SYNC] != 2334: + print 'Bad sync on response with number ', i + break + if resp['header'][IPROTO_CODE] == REQUEST_TYPE_OK: + i += 1 + else: + print 'Sync ok' +else: + print 'Bad first sync' + c.close() admin("space:drop()") diff --git a/test/box-py/replica.lua b/test/box-py/replica.lua deleted file mode 100644 index ed0ba38cc8..0000000000 --- a/test/box-py/replica.lua +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env tarantool - -box.cfg({ - listen = os.getenv("LISTEN"), - replication = os.getenv("MASTER"), - memtx_memory = 107374182, -}) - -require('console').listen(os.getenv('ADMIN')) -- GitLab