From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpng3.m.smailru.net (smtpng3.m.smailru.net [94.100.177.149]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id B20C045C304 for ; Fri, 11 Dec 2020 11:43:33 +0300 (MSK) From: sergeyb@tarantool.org Date: Fri, 11 Dec 2020 11:42:19 +0300 Message-Id: In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Tarantool-patches] [PATCH 1/4] test: convert print to function and make quotes use consistent List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: tarantool-patches@dev.tarantool.org, v.shpilevoy@tarantool.org, imun@tarantool.org Cc: alexander.turenko@tarantool.org From: Sergey Bronnikov - convert print statement to function. In a Python 3 'print' becomes a function, see [1]. Patch makes 'print' in a regression tests compatible with Python 3. - according to PEP8, mixing using double quotes and quotes in a project looks inconsistent. Patch makes using quotes with strings consistent. - print multiline strings with multiple print() - use "format()" instead of "%" everywhere 1. https://docs.python.org/3/whatsnew/3.0.html#print-is-a-function Part of #5538 --- test/app-tap/httpd.py | 42 ++--- test/box-py/args.test.py | 14 +- test/box-py/bad_trigger.result | 2 - test/box-py/bad_trigger.test.py | 20 +-- test/box-py/bootstrap.result | 2 +- test/box-py/bootstrap.test.py | 16 +- test/box-py/call.result | 12 +- test/box-py/call.test.py | 92 +++++----- test/box-py/iproto.result | 10 +- test/box-py/iproto.test.py | 218 +++++++++++------------ test/box-py/print.result | 6 +- test/box-py/print.test.py | 24 +-- test/box-py/snapshot.result | 4 +- test/box-py/snapshot.test.py | 33 ++-- test/long_run-py/finalizers.result | 2 +- test/long_run-py/finalizers.test.py | 8 +- test/replication-py/cluster.result | 6 +- test/replication-py/cluster.test.py | 217 +++++++++++----------- test/replication-py/conflict.test.py | 54 +++--- test/replication-py/init_storage.test.py | 52 +++--- test/replication-py/multi.test.py | 78 ++++---- test/replication-py/swap.test.py | 46 ++--- test/xlog-py/big_lsn.test.py | 4 +- test/xlog-py/dup_key.test.py | 17 +- test/xlog-py/empty.test.py | 4 +- test/xlog-py/lsn_gap.test.py | 10 +- test/xlog-py/misc.test.py | 33 ++-- test/xlog-py/missing.test.py | 10 +- 28 files changed, 523 insertions(+), 513 deletions(-) diff --git a/test/app-tap/httpd.py b/test/app-tap/httpd.py index b4662bc1f..b57ef1e39 100755 --- a/test/app-tap/httpd.py +++ b/test/app-tap/httpd.py @@ -6,35 +6,35 @@ from gevent import spawn, sleep, socket def absent(): code = "500 Server Error" - headers = [('Content-Type', 'application/json')] + headers = [("Content-Type", "application/json")] body = ["No such method"] return code, body, headers def hello(): code = "200 OK" body = ["hello world"] - headers = [('Content-Type', 'application/json')] + headers = [("Content-Type", "application/json")] return code, body, headers def hello1(): code = "200 OK" body = [b"abc"] - headers = [('Content-Type', 'application/json')] + headers = [("Content-Type", "application/json")] return code, body, headers def headers(): code = "200 OK" body = [b"cookies"] - headers = [('Content-Type', 'application/json'), - ('Content-Type', 'application/yaml'), - ('Set-Cookie', 'likes=cheese; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly'), - ('Set-Cookie', 'bad@name=no;'), - ('Set-Cookie', 'badcookie'), - ('Set-Cookie', 'good_name=yes;'), - ('Set-Cookie', 'age = 17; NOSuchOption; EmptyOption=Value;Secure'), - ('my_header', 'value1'), - ('my_header', 'value2'), - ('very_very_very_long_headers_name1', 'true'), + headers = [("Content-Type", "application/json"), + ("Content-Type", "application/yaml"), + ("Set-Cookie", "likes=cheese; Expires=Wed, 21 Oct 2015 07:28:00 GMT; Secure; HttpOnly"), + ("Set-Cookie", "bad@name=no;"), + ("Set-Cookie", "badcookie"), + ("Set-Cookie", "good_name=yes;"), + ("Set-Cookie", "age = 17; NOSuchOption; EmptyOption=Value;Secure"), + ("my_header", "value1"), + ("my_header", "value2"), + ("very_very_very_long_headers_name1", "true"), ] return code, body, headers @@ -42,13 +42,13 @@ def long_query(): sleep(0.005) code = "200 OK" body = [b"abc"] - headers = [('Content-Type', 'application/json')] + headers = [("Content-Type", "application/json")] return code, body, headers def redirect(): code = "302 Found" body = ["redirecting"] - headers = [('Location', '/')] + headers = [("Location", "/")] return code, body, headers paths = { @@ -63,7 +63,7 @@ paths = { def read_handle(env, response): code = "404 Not Found" headers = [] - body = ['Not Found'] + body = ["Not Found"] if env["PATH_INFO"] in paths: code, body, headers = paths[env["PATH_INFO"]]() for key,value in env.iteritems(): @@ -74,7 +74,7 @@ def read_handle(env, response): def post_handle(env, response): code = "200 OK" - body = [env['wsgi.input'].read()] + body = [env["wsgi.input"].read()] headers = [] for key,value in env.iteritems(): if "HTTP_" in key: @@ -83,7 +83,7 @@ def post_handle(env, response): return body def other_handle(env, response, method, code): - headers = [('Content-Type', 'text/plain'), ("method", method)] + headers = [("Content-Type", "text/plain"), ("method", method)] body = [method] for key,value in env.iteritems(): if "HTTP_" in key: @@ -119,15 +119,15 @@ def heartbeat(): sys.exit(1) def usage(): - sys.stderr.write("Usage: %s { --inet HOST:PORT | --unix PATH }\n" % - sys.argv[0]) + message = "Usage: {} {{ --inet HOST:PORT | --unix PATH }}\n".format(sys.argv[0]) + sys.stderr.write(message) sys.exit(1) if len(sys.argv) != 3: usage() if sys.argv[1] == "--inet": - host, port = sys.argv[2].split(':') + host, port = sys.argv[2].split(":") sock_family = socket.AF_INET sock_addr = (host, int(port)) elif sys.argv[1] == "--unix": diff --git a/test/box-py/args.test.py b/test/box-py/args.test.py index c0fac9038..f1b840a85 100644 --- a/test/box-py/args.test.py +++ b/test/box-py/args.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import sys import os import re @@ -5,7 +7,7 @@ import re # Disabled on OpenBSD due to fail #XXXX. import platform -if platform.system() == 'OpenBSD': +if platform.system() == "OpenBSD": self.skip = 1 # mask BFD warnings: https://bugs.launchpad.net/tarantool/+bug/1018356 @@ -13,9 +15,9 @@ sys.stdout.push_filter("unable to read unknown load command 0x2\d+", "") server.test_option("--help") server.test_option("-h") # Replace with the same value for case when builddir inside source dir -sys.stdout.push_filter(re.escape(os.getenv("BUILDDIR")+'/src/tarantool'), "tarantool") +sys.stdout.push_filter(re.escape(os.getenv("BUILDDIR")+"/src/tarantool"), "tarantool") sys.stdout.push_filter(re.escape(os.getenv("BUILDDIR")), "${SOURCEDIR}") -sys.stdout.push_filter(re.escape(os.getenv("SOURCEDIR")+'/src/tarantool'), "tarantool") +sys.stdout.push_filter(re.escape(os.getenv("SOURCEDIR")+"/src/tarantool"), "tarantool") sys.stdout.push_filter(re.escape(os.getenv("SOURCEDIR")), "${SOURCEDIR}") sys.stdout.push_filter("invalid option.*", "invalid option") sys.stdout.push_filter("unrecognized option.*", "unrecognized option") @@ -44,11 +46,11 @@ server.test_option(script + " --help 1 2 3") server.test_option("-V " + script + " 1 2 3") # gh-3966: os.exit() hangs if called by a command from the argument list. -server.test_option("-e \"print(1) os.exit() print(2)\"") -server.test_option("-e \"print(1)\" -e \"os.exit()\" -e \"print(1)\" -e \"os.exit()\" -e \"print(1)\"") +server.test_option("-e 'print(1) os.exit() print(2)'") +server.test_option("-e 'print(1)' -e 'os.exit()' -e 'print(1)' -e 'os.exit()' -e 'print(1)'") server.test_option("-e \"print('Hello')\" " + script + " 1 2 3") -server.test_option("-e \"a = 10\" " + \ +server.test_option("-e 'a = 10' " + \ "-e print(a) " + \ script + \ " 1 2 3 --help") diff --git a/test/box-py/bad_trigger.result b/test/box-py/bad_trigger.result index 5d064b764..42cd9a7e8 100644 --- a/test/box-py/bad_trigger.result +++ b/test/box-py/bad_trigger.result @@ -1,8 +1,6 @@ - # # if on_connect() trigger raises an exception, the connection is dropped # - nosuchfunction = nil --- ... diff --git a/test/box-py/bad_trigger.test.py b/test/box-py/bad_trigger.test.py index 7d200b921..789fe8045 100644 --- a/test/box-py/bad_trigger.test.py +++ b/test/box-py/bad_trigger.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + from lib.box_connection import BoxConnection from lib.tarantool_connection import TarantoolConnection from tarantool import NetworkError @@ -6,11 +8,9 @@ from tarantool.const import IPROTO_GREETING_SIZE, IPROTO_CODE, IPROTO_ERROR, \ import socket import msgpack -print """ - # - # if on_connect() trigger raises an exception, the connection is dropped - # - """ +print(" #") +print(" # if on_connect() trigger raises an exception, the connection is dropped") +print(" #") # silence possible error of strict mode server.admin("nosuchfunction = nil") @@ -24,12 +24,12 @@ conn.connect() s = conn.socket # Read greeting -print 'greeting: ', len(s.recv(IPROTO_GREETING_SIZE)) == IPROTO_GREETING_SIZE +print("greeting: {}".format(len(s.recv(IPROTO_GREETING_SIZE)) == IPROTO_GREETING_SIZE)) # Read error packet IPROTO_FIXHEADER_SIZE = 5 fixheader = s.recv(IPROTO_FIXHEADER_SIZE) -print 'fixheader: ', len(fixheader) == IPROTO_FIXHEADER_SIZE +print("fixheader: {}".format(len(fixheader) == IPROTO_FIXHEADER_SIZE)) unpacker.feed(fixheader) packet_len = unpacker.unpack() packet = s.recv(packet_len) @@ -38,9 +38,9 @@ unpacker.feed(packet) # Parse packet header = unpacker.unpack() body = unpacker.unpack() -print 'error code', (header[IPROTO_CODE] & (REQUEST_TYPE_ERROR - 1)) -print 'error message: ', body[IPROTO_ERROR] -print 'eof:', len(s.recv(1024)) == 0 +print("error code {}".format((header[IPROTO_CODE] & (REQUEST_TYPE_ERROR - 1)))) +print("error message: {}".format(body[IPROTO_ERROR])) +print("eof: {}".format(len(s.recv(1024)) == 0)) s.close() server.admin("box.session.on_connect(nil, f1)") diff --git a/test/box-py/bootstrap.result b/test/box-py/bootstrap.result index 0876e77a6..865302698 100644 --- a/test/box-py/bootstrap.result +++ b/test/box-py/bootstrap.result @@ -165,7 +165,7 @@ box.space._user:select{} - [3, 1, 'replication', 'role', {}] - [31, 1, 'super', 'role', {}] ... -for _, v in box.space._func:pairs{} do r = {} table.insert(r, v:update({{"=", 18, ""}, {"=", 19, ""}})) return r end +for _, v in box.space._func:pairs{} do r = {} table.insert(r, v:update({{'=', 18, ''}, {'=', 19, ''}})) return r end --- - - [1, 1, 'box.schema.user.info', 1, 'LUA', '', 'function', [], 'any', 'none', 'none', false, false, true, ['LUA'], {}, '', '', ''] diff --git a/test/box-py/bootstrap.test.py b/test/box-py/bootstrap.test.py index 63c13e8a4..f7c846bf1 100644 --- a/test/box-py/bootstrap.test.py +++ b/test/box-py/bootstrap.test.py @@ -1,11 +1,11 @@ -server.admin('box.internal.bootstrap()') -server.admin('box.space._schema:select{}') -server.admin('box.space._cluster:select{}') -server.admin('box.space._space:select{}') -server.admin('box.space._index:select{}') -server.admin('box.space._user:select{}') -server.admin('for _, v in box.space._func:pairs{} do r = {} table.insert(r, v:update({{"=", 18, ""}, {"=", 19, ""}})) return r end') -server.admin('box.space._priv:select{}') +server.admin("box.internal.bootstrap()") +server.admin("box.space._schema:select{}") +server.admin("box.space._cluster:select{}") +server.admin("box.space._space:select{}") +server.admin("box.space._index:select{}") +server.admin("box.space._user:select{}") +server.admin("for _, v in box.space._func:pairs{} do r = {} table.insert(r, v:update({{'=', 18, ''}, {'=', 19, ''}})) return r end") +server.admin("box.space._priv:select{}") # Cleanup server.stop() diff --git a/test/box-py/call.result b/test/box-py/call.result index d340ed6fa..e6b7b8dc9 100644 --- a/test/box-py/call.result +++ b/test/box-py/call.result @@ -536,10 +536,10 @@ function f(...) return ... end call f({'k2': 'v2', 'k1': 'v1'}) --- - {'k2': 'v2', 'k1': 'v1'} -eval (return space:auto_increment({"transaction"}))() +eval (return space:auto_increment({'transaction'}))() --- - [1, 'transaction'] -function f(...) return space:auto_increment({"transaction"}) end +function f(...) return space:auto_increment({'transaction'}) end --- ... call f() @@ -554,11 +554,11 @@ function f(...) return space:select{} end call f() --- - [[1, 'transaction'], [2, 'transaction']] -eval (return box.begin(), space:auto_increment({"failed"}), box.rollback())() +eval (return box.begin(), space:auto_increment({'failed'}), box.rollback())() --- - None - [3, 'failed'] -function f(...) return box.begin(), space:auto_increment({"failed"}), box.rollback() end +function f(...) return box.begin(), space:auto_increment({'failed'}), box.rollback() end --- ... call f() @@ -574,10 +574,10 @@ function f(...) return space:select{} end call f() --- - [[1, 'transaction'], [2, 'transaction']] -eval (return require("fiber").sleep(0))() +eval (return require('fiber').sleep(0))() --- -function f(...) return require("fiber").sleep(0) end +function f(...) return require('fiber').sleep(0) end --- ... call f() diff --git a/test/box-py/call.test.py b/test/box-py/call.test.py index 974ba0cac..75ced1dff 100644 --- a/test/box-py/call.test.py +++ b/test/box-py/call.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os import sys @@ -6,9 +8,9 @@ def call(name, *args): admin("box.schema.user.create('test', { password = 'test' })") admin("box.schema.user.grant('test', 'execute,read,write', 'universe')") -iproto.authenticate('test', 'test') +iproto.authenticate("test", "test") # workaround for gh-770 centos 6 float representation -admin('exp_notation = 1e123') +admin("exp_notation = 1e123") admin("function f1() return 'testing', 1, false, -1, 1.123, math.abs(exp_notation - 1e123) < 0.1, nil end") admin("f1()") call("f1") @@ -19,13 +21,13 @@ call("f1") # A test case for https://github.com/tarantool/tarantool/issues/44 # IPROTO required! -call("box.error", 33333, 'Hey!') +call("box.error", 33333, "Hey!") -print """ -# A test case for Bug#103491 -# server CALL processing bug with name path longer than two -# https://bugs.launchpad.net/tarantool/+bug/1034912 -""" +print("") +print("# A test case for Bug#103491") +print("# server CALL processing bug with name path longer than two") +print("# https://bugs.launchpad.net/tarantool/+bug/1034912") +print("") admin("f = function() return 'OK' end") admin("test = {}") admin("test.f = f") @@ -35,11 +37,11 @@ call("f") call("test.f") call("test.test.f") -print """ -# Test for Bug #955226 -# Lua Numbers are passed back wrongly as strings -# -""" +print("") +print("# Test for Bug #955226") +print("# Lua Numbers are passed back wrongly as strings") +print("#") +print("") admin("function foo() return 1, 2, '1', '2' end") call("foo") @@ -48,8 +50,8 @@ call("foo") # admin("function f1(...) return {...} end") admin("function f2(...) return f1({...}) end") -call("f1", 'test_', 'test_') -call("f2", 'test_', 'test_') +call("f1", "test_", "test_") +call("f2", "test_", "test_") call("f1") call("f2") # @@ -72,8 +74,8 @@ call("f3") admin("function f3() return { { test={1,2,3} }, { test2={1,2,3} } } end") call("f3") -call("f1", 'jason') -call("f1", 'jason', 1, 'test', 2, 'stewart') +call("f1", "jason") +call("f1", "jason", 1, "test", 2, "stewart") admin("space = box.schema.space.create('tweedledum')") admin("index = space:create_index('primary', { type = 'hash' })") @@ -81,30 +83,30 @@ admin("index = space:create_index('primary', { type = 'hash' })") admin("function myreplace(...) return space:replace{...} end") admin("function myinsert(...) return space:insert{...} end") -call("myinsert", 1, 'test box delete') +call("myinsert", 1, "test box delete") call("space:delete", 1) -call("myinsert", 1, 'test box delete') +call("myinsert", 1, "test box delete") call("space:delete", 1) call("space:delete", 1) -call("myinsert", 2, 'test box delete') +call("myinsert", 2, "test box delete") call("space:delete", 1) call("space:delete", 2) call("space:delete", 2) admin("space:delete{2}") -call("myinsert", 2, 'test box delete') +call("myinsert", 2, "test box delete") call("space:get", 2) admin("space:delete{2}") call("space:get", 2) -call("myinsert", 2, 'test box.select()') +call("myinsert", 2, "test box.select()") call("space:get", 2) call("space:select", 2) admin("space:get{2}") admin("space:select{2}") admin("space:get{1}") admin("space:select{1}") -call("myreplace", 2, 'hello', 'world') -call("myreplace", 2, 'goodbye', 'universe') +call("myreplace", 2, "hello", "world") +call("myreplace", 2, "goodbye", "universe") call("space:get", 2) call("space:select", 2) admin("space:get{2}") @@ -114,9 +116,9 @@ call("space:get", 2) call("space:select", 2) call("space:delete", 2) call("space:delete", 2) -call("myinsert", 3, 'old', 2) +call("myinsert", 3, "old", 2) # test that insert produces a duplicate key error -call("myinsert", 3, 'old', 2) +call("myinsert", 3, "old", 2) admin("space:update({3}, {{'=', 1, 4}, {'=', 2, 'new'}})") admin("space:insert(space:get{3}:update{{'=', 1, 4}, {'=', 2, 'new'}}) space:delete{3}") call("space:get", 4) @@ -136,19 +138,19 @@ admin("index = space:create_index('primary', { type = 'tree' })") def lua_eval(name, *args): - print 'eval (%s)(%s)' % (name, ','.join([ str(arg) for arg in args])) - print '---' - print iproto.py_con.eval(name, args) + print("eval ({})({})".format(name, ",".join([ str(arg) for arg in args]))) + print("---") + print(iproto.py_con.eval(name, args)) def lua_call(name, *args): - print 'call %s(%s)' % (name, ','.join([ str(arg) for arg in args])) - print '---' - print iproto.py_con.call(name, args) + print("call {}({})".format(name, ",".join([ str(arg) for arg in args]))) + print("---") + print(iproto.py_con.call(name, args)) def test(expr, *args): - lua_eval('return ' + expr, *args) - admin('function f(...) return ' + expr + ' end') - lua_call('f', *args) + lua_eval("return " + expr, *args) + admin("function f(...) return " + expr + " end") + lua_call("f", *args) # Return values test("1") @@ -172,18 +174,18 @@ test("{t}") test("{t, t, t}") test("error('exception')") test("box.error(0)") -test('...') -test('...', 1, 2, 3) -test('...', None, None, None) -test('...', { 'k1': 'v1', 'k2': 'v2'}) +test("...") +test("...", 1, 2, 3) +test("...", None, None, None) +test("...", { "k1": "v1", "k2": "v2"}) # Transactions -test('space:auto_increment({"transaction"})') -test('space:select{}') -test('box.begin(), space:auto_increment({"failed"}), box.rollback()') -test('space:select{}') -test('require("fiber").sleep(0)') +test("space:auto_increment({'transaction'})") +test("space:select{}") +test("box.begin(), space:auto_increment({'failed'}), box.rollback()") +test("space:select{}") +test("require('fiber').sleep(0)") # Other -lua_eval('!invalid expression') +lua_eval("!invalid expression") admin("space:drop()") admin("box.schema.user.drop('test')") diff --git a/test/box-py/iproto.result b/test/box-py/iproto.result index 04e2e220c..0f2766871 100644 --- a/test/box-py/iproto.result +++ b/test/box-py/iproto.result @@ -1,21 +1,15 @@ box.schema.user.grant('guest', 'read,write,execute', 'universe') --- ... - # # iproto packages test # - - # Test bug #899343 (server assertion failure on incorrect packet) - # send the package with invalid length 12 # check that is server alive True - -# Test gh-206 "Segfault if sending IPROTO package without `KEY` field" - +# Test gh-206 'Segfault if sending IPROTO package without `KEY` field' IPROTO_SELECT query {'IPROTO_CODE': 1} {'IPROTO_SPACE_ID': 280} True @@ -165,10 +159,8 @@ space:drop() box.schema.user.revoke('guest', 'read,write,execute', 'universe') --- ... - # Test bugs gh-272, gh-1654 if the packet was incorrect, respond with # an error code and do not close connection - sync=0, Invalid MsgPack - packet header sync=1234, Missing mandatory field 'space id' in request sync=5678, Read access to space '_user' is denied for user 'guest' diff --git a/test/box-py/iproto.test.py b/test/box-py/iproto.test.py index cdd1a71c5..5eccd40d3 100644 --- a/test/box-py/iproto.test.py +++ b/test/box-py/iproto.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os import sys import struct @@ -11,46 +13,42 @@ from lib.tarantool_connection import TarantoolConnection admin("box.schema.user.grant('guest', 'read,write,execute', 'universe')") -print """ -# -# iproto packages test -# -""" +print("#") +print("# iproto packages test") +print("#") -# opeing new connection to tarantool/box +# opening new connection to tarantool/box conn = TarantoolConnection(server.iproto.host, server.iproto.port) conn.connect() s = conn.socket -print """ -# Test bug #899343 (server assertion failure on incorrect packet) -""" -print "# send the package with invalid length" -invalid_request = struct.pack(' 0 +print("# Test bug #899343 (server assertion failure on incorrect packet)") +print("# send the package with invalid length") +invalid_request = struct.pack(" 0) # closing connection s.close() key_names = {} -for (k,v) in globals().items(): - if type(k) == str and k.startswith('IPROTO_') and type(v) == int: +for (k,v) in list(globals().items()): + if type(k) == str and k.startswith("IPROTO_") and type(v) == int: key_names[v] = k def repr_dict(todump): d = {} - for (k, v) in todump.items(): + for (k, v) in list(todump.items()): k_name = key_names.get(k, k) d[k_name] = v return repr(d) def test(header, body): # Connect and authenticate - c = Connection('localhost', server.iproto.port) + c = Connection("localhost", server.iproto.port) c.connect() - print 'query', repr_dict(header), repr_dict(body) + print("query", repr_dict(header), repr_dict(body)) header = msgpack.dumps(header) body = msgpack.dumps(body) query = msgpack.dumps(len(header) + len(body)) + header + body @@ -59,36 +57,34 @@ def test(header, body): try: s.send(query) except OSError as e: - print ' => ', 'Failed to send request' + print(" => ", "Failed to send request") c.close() - print iproto.py_con.ping() > 0 + print(iproto.py_con.ping() > 0) -print """ -# Test gh-206 "Segfault if sending IPROTO package without `KEY` field" -""" +print("# Test gh-206 'Segfault if sending IPROTO package without `KEY` field'") -print "IPROTO_SELECT" +print("IPROTO_SELECT") test({ IPROTO_CODE : REQUEST_TYPE_SELECT }, { IPROTO_SPACE_ID: 280 }) -print "\n" +print("\n") -print "IPROTO_DELETE" +print("IPROTO_DELETE") test({ IPROTO_CODE : REQUEST_TYPE_DELETE }, { IPROTO_SPACE_ID: 280 }) -print "\n" +print("\n") -print "IPROTO_UPDATE" +print("IPROTO_UPDATE") test({ IPROTO_CODE : REQUEST_TYPE_UPDATE }, { IPROTO_SPACE_ID: 280 }) test({ IPROTO_CODE : REQUEST_TYPE_UPDATE }, { IPROTO_SPACE_ID: 280, IPROTO_KEY: (1, )}) -print "\n" +print("\n") -print "IPROTO_REPLACE" +print("IPROTO_REPLACE") test({ IPROTO_CODE : REQUEST_TYPE_REPLACE }, { IPROTO_SPACE_ID: 280 }) -print "\n" +print("\n") -print "IPROTO_CALL" +print("IPROTO_CALL") test({ IPROTO_CODE : REQUEST_TYPE_CALL }, {}) -test({ IPROTO_CODE : REQUEST_TYPE_CALL }, { IPROTO_KEY: ('procname', )}) -print "\n" +test({ IPROTO_CODE : REQUEST_TYPE_CALL }, { IPROTO_KEY: ("procname", )}) +print("\n") # gh-434 Tarantool crashes on multiple iproto requests with WAL enabled admin("box.cfg.wal_mode") @@ -96,7 +92,7 @@ admin("space = box.schema.space.create('test', { id = 567 })") admin("index = space:create_index('primary', { type = 'hash' })") admin("box.schema.user.grant('guest', 'read,write,execute', 'space', 'test')") -c = Connection('localhost', server.iproto.port) +c = Connection("localhost", server.iproto.port) c.connect() request1 = RequestInsert(c, 567, [1, "baobab"]) request2 = RequestInsert(c, 567, [2, "obbaba"]) @@ -104,11 +100,11 @@ s = c._socket try: s.send(bytes(request1) + bytes(request2)) except OSError as e: - print ' => ', 'Failed to send request' + print(" => ", "Failed to send request") response1 = Response(c, c._read_response()) response2 = Response(c, c._read_response()) -print response1.__str__() -print response2.__str__() +print(response1.__str__()) +print(response2.__str__()) request1 = RequestInsert(c, 567, [3, "occama"]) request2 = RequestSelect(c, 567, 0, [1], 0, 1, 0) @@ -116,11 +112,11 @@ s = c._socket try: s.send(bytes(request1) + bytes(request2)) except OSError as e: - print ' => ', 'Failed to send request' + print(" => ", "Failed to send request") response1 = Response(c, c._read_response()) response2 = Response(c, c._read_response()) -print response1.__str__() -print response2.__str__() +print(response1.__str__()) +print(response2.__str__()) request1 = RequestSelect(c, 567, 0, [2], 0, 1, 0) request2 = RequestInsert(c, 567, [4, "ockham"]) @@ -128,11 +124,11 @@ s = c._socket try: s.send(bytes(request1) + bytes(request2)) except OSError as e: - print ' => ', 'Failed to send request' + print(" => ", "Failed to send request") response1 = Response(c, c._read_response()) response2 = Response(c, c._read_response()) -print response1.__str__() -print response2.__str__() +print(response1.__str__()) +print(response2.__str__()) request1 = RequestSelect(c, 567, 0, [1], 0, 1, 0) request2 = RequestSelect(c, 567, 0, [2], 0, 1, 0) @@ -140,11 +136,11 @@ s = c._socket try: s.send(bytes(request1) + bytes(request2)) except OSError as e: - print ' => ', 'Failed to send request' + print(" => ", "Failed to send request") response1 = Response(c, c._read_response()) response2 = Response(c, c._read_response()) -print response1.__str__() -print response2.__str__() +print(response1.__str__()) +print(response2.__str__()) c.close() @@ -176,7 +172,7 @@ class RawSelect(Request): self._body = request_body c = iproto.py_con -space = c.space('test') +space = c.space("test") space_id = space.space_no TESTS = [ @@ -192,34 +188,34 @@ TESTS = [ for test in TESTS: it = iter(test) size = next(it) - print 'STR', size - print '--' + print("STR", size) + print("--") for fmt in it: - print '0x' + fmt.encode('hex'), '=>', - field = '*' * size + print("0x" + fmt.encode("hex"), "=>", end=" ") + field = "*" * size c._send_request(RawInsert(c, space_id, "\x91" + fmt + field)) tuple = space.select(field)[0] - print len(tuple[0])== size and 'ok' or 'fail', + print(len(tuple[0])== size and "ok" or "fail", end=" ") it2 = iter(test) next(it2) for fmt2 in it2: tuple = c._send_request(RawSelect(c, space_id, "\x91" + fmt2 + field))[0] - print len(tuple[0]) == size and 'ok' or 'fail', + print(len(tuple[0]) == size and "ok" or "fail", end=" ") tuple = space.delete(field)[0] - print len(tuple[0]) == size and 'ok' or 'fail', - print - print + print(len(tuple[0]) == size and "ok" or "fail", end="") + print() + print() -print 'Test of schema_id in iproto.' -c = Connection('localhost', server.iproto.port) +print("Test of schema_id in iproto.") +c = Connection("localhost", server.iproto.port) c.connect() s = c._socket def receive_response(): - resp_len = '' - resp_headerbody = '' + resp_len = "" + resp_headerbody = "" resp_header = {} resp_body = {} try: @@ -235,10 +231,10 @@ def receive_response(): resp_header = unpacker.unpack() resp_body = unpacker.unpack() except OSError as e: - print ' => ', 'Failed to recv response' + print(" => ", "Failed to recv response") res = {} - res['header'] = resp_header - res['body'] = resp_body + res["header"] = resp_header + res["body"] = resp_body return res def test_request(req_header, req_body): @@ -249,7 +245,7 @@ def test_request(req_header, req_body): try: s.send(query) except OSError as e: - print ' => ', 'Failed to send request' + print(" => ", "Failed to send request") return receive_response() header = { IPROTO_CODE : REQUEST_TYPE_SELECT} @@ -260,62 +256,62 @@ body = { IPROTO_SPACE_ID: space_id, IPROTO_OFFSET: 0, IPROTO_LIMIT: 1 } resp = test_request(header, body) -print 'Normal connect done w/o errors:', resp['header'][0] == 0 -print 'Got schema_id:', resp['header'][5] > 0 -schema_id = resp['header'][5] +print("Normal connect done w/o errors:", resp["header"][0] == 0) +print("Got schema_id:", resp["header"][5] > 0) +schema_id = resp["header"][5] header = { IPROTO_CODE : REQUEST_TYPE_SELECT, 5 : 0 } resp = test_request(header, body) -print 'Zero-schema_id connect done w/o errors:', resp['header'][0] == 0 -print 'Same schema_id:', resp['header'][5] == schema_id +print("Zero-schema_id connect done w/o errors:", resp["header"][0] == 0) +print("Same schema_id:", resp["header"][5] == schema_id) header = { IPROTO_CODE : REQUEST_TYPE_SELECT, 5 : schema_id } resp = test_request(header, body) -print 'Normal connect done w/o errors:', resp['header'][0] == 0 -print 'Same schema_id:', resp['header'][5] == schema_id +print("Normal connect done w/o errors:", resp["header"][0] == 0) +print("Same schema_id:", resp["header"][5] == schema_id) header = { IPROTO_CODE : REQUEST_TYPE_SELECT, 5 : schema_id + 1 } resp = test_request(header, body) -print 'Wrong schema_id leads to error:', resp['header'][0] != 0 -print 'Same schema_id:', resp['header'][5] == schema_id +print("Wrong schema_id leads to error:", resp["header"][0] != 0) +print("Same schema_id:", resp["header"][5] == schema_id) admin("space2 = box.schema.create_space('test2')") header = { IPROTO_CODE : REQUEST_TYPE_SELECT, 5 : schema_id } resp = test_request(header, body) -print 'Schema changed -> error:', resp['header'][0] != 0 -print 'Got another schema_id:', resp['header'][5] != schema_id +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' +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: +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 + if resp["header"][IPROTO_SYNC] != 2334: + print("Bad sync on response with number ", i) break - if resp['header'][IPROTO_CODE] == REQUEST_TYPE_OK: + if resp["header"][IPROTO_CODE] == REQUEST_TYPE_OK: i += 1 else: - print 'Sync ok' + print("Sync ok") else: - print 'Bad first sync' + print("Bad first sync") # # Try incorrect JOIN. SYNC must be also returned. # -body[IPROTO_SERVER_UUID] = 'unknown' +body[IPROTO_SERVER_UUID] = "unknown" resp = test_request(header, body) -if resp['header'][IPROTO_SYNC] == 2334: - print('Sync on error is ok') +if resp["header"][IPROTO_SYNC] == 2334: + print("Sync on error is ok") else: - print('Sync on error is not ok') + print("Sync on error is not ok") c.close() @@ -332,8 +328,8 @@ admin("space:insert({1})") admin("space:insert({2, 'Music'})") admin("space:insert({3, 'Length', 93})") -iproto.py_con.space('gh1280').select([]) -iproto.py_con.space('gh1280').select(list()) +iproto.py_con.space("gh1280").select([]) +iproto.py_con.space("gh1280").select(list()) admin("space:drop()") @@ -344,26 +340,24 @@ admin("box.schema.user.revoke('guest', 'read,write,execute', 'universe')") # gh-272 if the packet was incorrect, respond with an error code # gh-1654 do not close connnection on invalid request # -print """ -# Test bugs gh-272, gh-1654 if the packet was incorrect, respond with -# an error code and do not close connection -""" +print("# Test bugs gh-272, gh-1654 if the packet was incorrect, respond with") +print("# an error code and do not close connection") -c = Connection('localhost', server.iproto.port) +c = Connection("localhost", server.iproto.port) c.connect() s = c._socket header = { "hello": "world"} body = { "bug": 272 } resp = test_request(header, body) -print 'sync=%d, %s' % (resp['header'][IPROTO_SYNC], resp['body'].get(IPROTO_ERROR)) +print("sync={}, {}".format(resp["header"][IPROTO_SYNC], resp["body"].get(IPROTO_ERROR))) header = { IPROTO_CODE : REQUEST_TYPE_SELECT } header[IPROTO_SYNC] = 1234 resp = test_request(header, body) -print 'sync=%d, %s' % (resp['header'][IPROTO_SYNC], resp['body'].get(IPROTO_ERROR)) +print("sync={}, {}".format(resp["header"][IPROTO_SYNC], resp["body"].get(IPROTO_ERROR))) header[IPROTO_SYNC] = 5678 body = { IPROTO_SPACE_ID: 304, IPROTO_KEY: [], IPROTO_LIMIT: 1 } resp = test_request(header, body) -print 'sync=%d, %s' % (resp['header'][IPROTO_SYNC], resp['body'].get(IPROTO_ERROR)) +print("sync={}, {}".format(resp["header"][IPROTO_SYNC], resp["body"].get(IPROTO_ERROR))) c.close() @@ -371,7 +365,7 @@ admin("space = box.schema.space.create('test_index_base', { id = 568 })") admin("index = space:create_index('primary', { type = 'hash' })") admin("box.schema.user.grant('guest', 'read,write,execute', 'space', 'test_index_base')") -c = Connection('localhost', server.iproto.port) +c = Connection("localhost", server.iproto.port) c.connect() s = c._socket @@ -379,32 +373,32 @@ request = RequestInsert(c, 568, [1, 0, 0, 0]) try: s.send(bytes(request)) except OSError as e: - print ' => ', 'Failed to send request' + print(" => ", "Failed to send request") response = Response(c, c._read_response()) -print response.__str__() +print(response.__str__()) -request = RequestUpdate(c, 568, 0, [1], [['+', 2, 1], ['-', 3, 1]]) +request = RequestUpdate(c, 568, 0, [1], [["+", 2, 1], ["-", 3, 1]]) try: s.send(bytes(request)) except OSError as e: - print ' => ', 'Failed to send request' + print(" => ", "Failed to send request") response = Response(c, c._read_response()) -print response.__str__() +print(response.__str__()) -request = RequestUpsert(c, 568, 0, [1, 0, 0, 0], [['+', 2, 1], ['-', 3, 1]]) +request = RequestUpsert(c, 568, 0, [1, 0, 0, 0], [["+", 2, 1], ["-", 3, 1]]) try: s.send(bytes(request)) except OSError as e: - print ' => ', 'Failed to send request' + print(" => ", "Failed to send request") response = Response(c, c._read_response()) request = RequestSelect(c, 568, 0, [1], 0, 1, 0) try: s.send(bytes(request)) except OSError as e: - print ' => ', 'Failed to send request' + print(" => ", "Failed to send request") response = Response(c, c._read_response()) -print response.__str__() +print(response.__str__()) c.close() @@ -414,15 +408,15 @@ c.close() admin("function kek() return 'kek' end") admin("box.schema.user.grant('guest', 'read,write,execute', 'universe')") -c = Connection('localhost', server.iproto.port) +c = Connection("localhost", server.iproto.port) c.connect() s = c._socket header = { IPROTO_CODE: REQUEST_TYPE_CALL, IPROTO_SYNC: 100 } -body = { IPROTO_FUNCTION_NAME: 'kek' } +body = { IPROTO_FUNCTION_NAME: "kek" } resp = test_request(header, body) -print "Sync: ", resp['header'][IPROTO_SYNC] -print "Retcode: ", resp['body'][IPROTO_DATA] +print("Sync: ", resp["header"][IPROTO_SYNC]) +print("Retcode: ", resp["body"][IPROTO_DATA]) c.close() diff --git a/test/box-py/print.result b/test/box-py/print.result index b2d58d7de..7a3282d79 100644 --- a/test/box-py/print.result +++ b/test/box-py/print.result @@ -1,4 +1,4 @@ -print("Hello, world") +print('Hello, world') --- ... io = require('io') @@ -17,9 +17,9 @@ require('fiber').sleep(0.01) ... Check log line (Hello): --- -- "logfile contains "Hello"" +- 'logfile contains 'Hello'' ... Check log line (Ehllo): --- -- "logfile contains "Ehllo"" +- 'logfile contains 'Ehllo'' ... diff --git a/test/box-py/print.test.py b/test/box-py/print.test.py index 5083bdf42..015ce633a 100644 --- a/test/box-py/print.test.py +++ b/test/box-py/print.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import tarantool import sys @@ -6,7 +8,7 @@ import re log = server.get_log() -admin('print("Hello, world")') +admin("print('Hello, world')") admin("io = require('io')") admin("""local f = require('fiber').create( @@ -18,17 +20,17 @@ admin("""local f = require('fiber').create( admin("require('fiber').sleep(0.01)") print("Check log line (Hello):") -print('---') -if log.seek_once('Hello') >= 0: - print('- "logfile contains "Hello""') +print("---") +if log.seek_once("Hello") >= 0: + print("- 'logfile contains 'Hello''") else: - print('- "logfile does not contain "Hello""') -print('...') + print("- 'logfile does not contain 'Hello''") +print("...") print("Check log line (Ehllo):") -print('---') -if log.seek_once('Ehllo') >= 0: - print('- "logfile contains "Ehllo""') +print("---") +if log.seek_once("Ehllo") >= 0: + print("- 'logfile contains 'Ehllo''") else: - print('- "logfile does not contain "Ehllo""') -print('...') + print("- 'logfile does not contain 'Ehllo''") +print("...") diff --git a/test/box-py/snapshot.result b/test/box-py/snapshot.result index fbaab912f..dfd1a00a2 100644 --- a/test/box-py/snapshot.result +++ b/test/box-py/snapshot.result @@ -10,7 +10,6 @@ index = space:create_index('primary', { type = 'hash' }) # file that already exists. Verify also that any other # error that happens when saving snapshot is propagated # to the caller. - space:insert{1, 'first tuple'} --- - [1, 'first tuple'] @@ -44,9 +43,8 @@ space:delete{2} ... # # A test case for http://bugs.launchpad.net/bugs/727174 -# "tarantool_box crashes when saving snapshot on SIGUSR1" +# 'tarantool_box crashes when saving snapshot on SIGUSR1' # - # Increment the lsn number, to make sure there is no such snapshot yet # space:insert{1, 'Test tuple'} diff --git a/test/box-py/snapshot.test.py b/test/box-py/snapshot.test.py index 2bfb8f621..91ff0c5dd 100644 --- a/test/box-py/snapshot.test.py +++ b/test/box-py/snapshot.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os import sys import yaml @@ -9,13 +11,13 @@ sys.stdout.push_filter(server.vardir, "") admin("space = box.schema.space.create('tweedledum')") admin("index = space:create_index('primary', { type = 'hash' })") -print """# -# A test case for: http://bugs.launchpad.net/bugs/686411 -# Check that 'box.snapshot()' does not overwrite a snapshot -# file that already exists. Verify also that any other -# error that happens when saving snapshot is propagated -# to the caller. -""" +print("#") +print("# A test case for: http://bugs.launchpad.net/bugs/686411") +print("# Check that 'box.snapshot()' does not overwrite a snapshot") +print("# file that already exists. Verify also that any other") +print("# error that happens when saving snapshot is propagated") +print("# to the caller.") + admin("space:insert{1, 'first tuple'}") admin("box.snapshot()") # @@ -38,14 +40,13 @@ os.rmdir(snapshot) admin("space:delete{1}") admin("space:delete{2}") -print """# -# A test case for http://bugs.launchpad.net/bugs/727174 -# "tarantool_box crashes when saving snapshot on SIGUSR1" -#""" +print("#") +print("# A test case for http://bugs.launchpad.net/bugs/727174") +print("# 'tarantool_box crashes when saving snapshot on SIGUSR1'") +print("#") -print """ -# Increment the lsn number, to make sure there is no such snapshot yet -#""" +print("# Increment the lsn number, to make sure there is no such snapshot yet") +print("#") admin("space:insert{1, 'Test tuple'}") @@ -65,9 +66,9 @@ while not os.access(snapshot, os.F_OK) and iteration < MAX_ITERATIONS: iteration = iteration + 1 if iteration == 0 or iteration >= MAX_ITERATIONS: - print "Snapshot is missing." + print("Snapshot is missing.") else: - print "Snapshot exists." + print("Snapshot exists.") admin("space:drop()") diff --git a/test/long_run-py/finalizers.result b/test/long_run-py/finalizers.result index 29313694c..2d2866b35 100644 --- a/test/long_run-py/finalizers.result +++ b/test/long_run-py/finalizers.result @@ -1 +1 @@ -Expected error: +('Expected error:', ) diff --git a/test/long_run-py/finalizers.test.py b/test/long_run-py/finalizers.test.py index 96118e607..07bceb6b9 100644 --- a/test/long_run-py/finalizers.test.py +++ b/test/long_run-py/finalizers.test.py @@ -5,12 +5,12 @@ import yaml from lib.tarantool_server import TarantoolServer server = TarantoolServer(server.ini) -server.script = 'long_run-py/lua/finalizers.lua' -server.vardir = os.path.join(server.vardir, 'finalizers') +server.script = "long_run-py/lua/finalizers.lua" +server.vardir = os.path.join(server.vardir, "finalizers") server.crash_expected = True try: server.deploy() except: - print "Expected error:", sys.exc_info()[0] + print("Expected error:", sys.exc_info()[0]) else: - print "Error! exception did not occur" + print("Error! exception did not occur") diff --git a/test/replication-py/cluster.result b/test/replication-py/cluster.result index f68a6af7c..9bc8a7393 100644 --- a/test/replication-py/cluster.result +++ b/test/replication-py/cluster.result @@ -93,7 +93,7 @@ box.info.vclock[2] == nil ------------------------------------------------------------- Modify data to bump LSN and check box.info ------------------------------------------------------------- -box.space._schema:insert{"test", 48} +box.space._schema:insert{'test', 48} --- - ['test', 48] ... @@ -114,7 +114,7 @@ box.cfg{ replication_source = '' } ------------------------------------------------------------- Disconnect replica from master ------------------------------------------------------------- -box.cfg { replication_source = "" } +box.cfg { replication_source = '' } --- ... ------------------------------------------------------------- @@ -131,7 +131,7 @@ box.info.vclock[2] == 1 ------------------------------------------------------------- Modify data to bump LSN on replica ------------------------------------------------------------- -box.space._schema:insert{"tost", 49} +box.space._schema:insert{'tost', 49} --- - ['tost', 49] ... diff --git a/test/replication-py/cluster.test.py b/test/replication-py/cluster.test.py index 088ca9c34..c770a9bc9 100644 --- a/test/replication-py/cluster.test.py +++ b/test/replication-py/cluster.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os import sys import re @@ -7,19 +9,19 @@ import glob from lib.tarantool_server import TarantoolServer ## Get cluster uuid -cluster_uuid = '' +cluster_uuid = "" try: cluster_uuid = yaml.safe_load(server.admin("box.space._schema:get('cluster')", silent = True))[0][1] - uuid.UUID('{' + cluster_uuid + '}') - print 'ok - cluster uuid' + uuid.UUID("{" + cluster_uuid + "}") + print("ok - cluster uuid") except Exception as e: - print 'not ok - invalid cluster uuid', e + print("not ok - invalid cluster uuid", e) server.iproto.reconnect() # re-connect with new permissions -print '-------------------------------------------------------------' -print ' gh-696: Check global READ permissions for replication' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print(" gh-696: Check global READ permissions for replication") +print("-------------------------------------------------------------") # Generate replica cluster UUID @@ -27,56 +29,59 @@ replica_uuid = str(uuid.uuid4()) ## Universal read permission is required to perform JOIN/SUBSCRIBE rows = list(server.iproto.py_con.join(replica_uuid)) -print len(rows) == 1 and rows[0].return_message.find('Read access') >= 0 and \ - 'ok' or 'not ok', '-', 'join without read permissions on universe' +status = len(rows) == 1 and rows[0].return_message.find("Read access") >= 0 and \ + "ok" or "not ok" +print("{} - join without read permissions on universe".format(status)) rows = list(server.iproto.py_con.subscribe(cluster_uuid, replica_uuid)) -print len(rows) == 1 and rows[0].return_message.find('Read access') >= 0 and \ - 'ok' or 'not ok', '-', 'subscribe without read permissions on universe' +status = len(rows) == 1 and rows[0].return_message.find("Read access") >= 0 and \ + "ok" or "not ok" +print("{} - subscribe without read permissions on universe".format(status)) ## Write permission to space `_cluster` is required to perform JOIN server.admin("box.schema.user.grant('guest', 'read', 'universe')") server.iproto.reconnect() # re-connect with new permissions rows = list(server.iproto.py_con.join(replica_uuid)) -print len(rows) == 1 and rows[0].return_message.find('Write access') >= 0 and \ - 'ok' or 'not ok', '-', 'join without write permissions to _cluster' +status = len(rows) == 1 and rows[0].return_message.find("Write access") >= 0 and \ + "ok" or "not ok" +print("{} - join without write permissions to _cluster".format(status)) def check_join(msg): ok = True for resp in server.iproto.py_con.join(replica_uuid): if resp._return_code != 0: - print 'not ok', '-', msg, resp.return_message + print("not ok - {} {}".format(msg, resp.return_message)) ok = False server.iproto.reconnect() # the only way to stop JOIN if not ok: return - tuples = server.iproto.py_con.space('_cluster').select(replica_uuid, index = 1) + tuples = server.iproto.py_con.space("_cluster").select(replica_uuid, index = 1) if len(tuples) == 0: - print 'not ok', '-', msg, 'missing entry in _cluster' + print("not ok - {} missing entry in _cluster".format(msg)) return server_id = tuples[0][0] - print 'ok', '-', msg + print("ok - {}".format(msg)) return server_id ## JOIN with permissions server.admin("box.schema.user.grant('guest', 'write', 'space', '_cluster')") server.iproto.reconnect() # re-connect with new permissions -server_id = check_join('join with granted permissions') -server.iproto.py_con.space('_cluster').delete(server_id) +server_id = check_join("join with granted permissions") +server.iproto.py_con.space("_cluster").delete(server_id) # JOIN with granted role server.admin("box.schema.user.revoke('guest', 'read', 'universe')") server.admin("box.schema.user.revoke('guest', 'write', 'space', '_cluster')") server.admin("box.schema.user.grant('guest', 'replication')") server.iproto.reconnect() # re-connect with new permissions -server_id = check_join('join with granted role') -server.iproto.py_con.space('_cluster').delete(server_id) +server_id = check_join("join with granted role") +server.iproto.py_con.space("_cluster").delete(server_id) -print '-------------------------------------------------------------' -print 'gh-434: Assertion if replace _cluster tuple for local server' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("gh-434: Assertion if replace _cluster tuple for local server") +print("-------------------------------------------------------------") -master_uuid = server.get_param('uuid') -sys.stdout.push_filter(master_uuid, '') +master_uuid = server.get_param("uuid") +sys.stdout.push_filter(master_uuid, "") # Invalid UUID server.admin("box.space._cluster:replace{1, require('uuid').NULL:str()}") @@ -87,19 +92,19 @@ server.admin("box.space._cluster:replace{1, require('uuid').str()}") # Update of tail is OK server.admin("box.space._cluster:update(1, {{'=', 3, 'test'}})") -print '-------------------------------------------------------------' -print 'gh-1140: Assertion if replace _cluster tuple for remote server' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("gh-1140: Assertion if replace _cluster tuple for remote server") +print("-------------------------------------------------------------") # Test that insert is OK -new_uuid = '0d5bd431-7f3e-4695-a5c2-82de0a9cbc95' +new_uuid = "0d5bd431-7f3e-4695-a5c2-82de0a9cbc95" server.admin("box.space._cluster:insert{{5, '{0}'}}".format(new_uuid)) server.admin("box.info.vclock[5] == nil") # Replace with the same UUID is OK server.admin("box.space._cluster:replace{{5, '{0}'}}".format(new_uuid)) # Replace with a new UUID is not OK -new_uuid = 'a48a19a3-26c0-4f8c-a5b5-77377bab389b' +new_uuid = "a48a19a3-26c0-4f8c-a5b5-77377bab389b" server.admin("box.space._cluster:replace{{5, '{0}'}}".format(new_uuid)) # Update of tail is OK server.admin("box.space._cluster:update(5, {{'=', 3, 'test'}})") @@ -112,83 +117,83 @@ server.admin("box.info.vclock[5] == nil") server.stop() server.deploy() -print '-------------------------------------------------------------' -print 'Start a new replica and check box.info on the start' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("Start a new replica and check box.info on the start") +print("-------------------------------------------------------------") # master server master = server -master_id = master.get_param('id') +master_id = master.get_param("id") master.admin("box.schema.user.grant('guest', 'replication')") replica = TarantoolServer(server.ini) -replica.script = 'replication-py/replica.lua' +replica.script = "replication-py/replica.lua" replica.vardir = server.vardir replica.rpl_master = master replica.deploy() -replica_id = replica.get_param('id') -replica_uuid = replica.get_param('uuid') -sys.stdout.push_filter(replica_uuid, '') - -replica.admin('box.info.id == %d' % replica_id) -replica.admin('not box.info.ro') -replica.admin('box.info.lsn == 0') -replica.admin('box.info.vclock[%d] == nil' % replica_id) - -print '-------------------------------------------------------------' -print 'Modify data to bump LSN and check box.info' -print '-------------------------------------------------------------' -replica.admin('box.space._schema:insert{"test", 48}') -replica.admin('box.info.lsn == 1') -replica.admin('box.info.vclock[%d] == 1' % replica_id) - -print '-------------------------------------------------------------' -print 'Connect master to replica' -print '-------------------------------------------------------------' -replication_source = yaml.safe_load(replica.admin('box.cfg.listen', silent = True))[0] -sys.stdout.push_filter(replication_source, '') -master.admin("box.cfg{ replication_source = '%s' }" % replication_source) +replica_id = replica.get_param("id") +replica_uuid = replica.get_param("uuid") +sys.stdout.push_filter(replica_uuid, "") + +replica.admin("box.info.id == {}".format(replica_id)) +replica.admin("not box.info.ro") +replica.admin("box.info.lsn == 0") +replica.admin("box.info.vclock[{}] == nil".format(replica_id)) + +print("-------------------------------------------------------------") +print("Modify data to bump LSN and check box.info") +print("-------------------------------------------------------------") +replica.admin("box.space._schema:insert{'test', 48}") +replica.admin("box.info.lsn == 1") +replica.admin("box.info.vclock[{}] == 1".format(replica_id)) + +print("-------------------------------------------------------------") +print("Connect master to replica") +print("-------------------------------------------------------------") +replication_source = yaml.safe_load(replica.admin("box.cfg.listen", silent = True))[0] +sys.stdout.push_filter(replication_source, "") +master.admin("box.cfg{{ replication_source = '{}' }}".format(replication_source)) master.wait_lsn(replica_id, replica.get_lsn(replica_id)) -print '-------------------------------------------------------------' -print 'Disconnect replica from master' -print '-------------------------------------------------------------' -replica.admin('box.cfg { replication_source = "" }') +print("-------------------------------------------------------------") +print("Disconnect replica from master") +print("-------------------------------------------------------------") +replica.admin("box.cfg { replication_source = '' }") -print '-------------------------------------------------------------' -print 'Unregister replica' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("Unregister replica") +print("-------------------------------------------------------------") -master.admin('box.space._cluster:delete{%d} ~= nil' % replica_id) +master.admin("box.space._cluster:delete{{{}}} ~= nil".format(replica_id)) # gh-1219: LSN must not be removed from vclock on unregister -master.admin('box.info.vclock[%d] == 1' % replica_id) +master.admin("box.info.vclock[{}] == 1".format(replica_id)) -print '-------------------------------------------------------------' -print 'Modify data to bump LSN on replica' -print '-------------------------------------------------------------' -replica.admin('box.space._schema:insert{"tost", 49}') -replica.admin('box.info.lsn == 2') -replica.admin('box.info.vclock[%d] == 2' % replica_id) +print("-------------------------------------------------------------") +print("Modify data to bump LSN on replica") +print("-------------------------------------------------------------") +replica.admin("box.space._schema:insert{'tost', 49}") +replica.admin("box.info.lsn == 2") +replica.admin("box.info.vclock[{}] == 2".format(replica_id)) -print '-------------------------------------------------------------' -print 'Master must not crash then receives orphan rows from replica' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("Master must not crash then receives orphan rows from replica") +print("-------------------------------------------------------------") -replication_source = yaml.safe_load(replica.admin('box.cfg.listen', silent = True))[0] -sys.stdout.push_filter(replication_source, '') -master.admin("box.cfg{ replication = '%s' }" % replication_source) +replication_source = yaml.safe_load(replica.admin("box.cfg.listen", silent = True))[0] +sys.stdout.push_filter(replication_source, "") +master.admin("box.cfg{{ replication = '{}' }}".format(replication_source)) master.wait_lsn(replica_id, replica.get_lsn(replica_id)) -master.admin('box.info.vclock[%d] == 2' % replica_id) +master.admin("box.info.vclock[{}] == 2".format(replica_id)) master.admin("box.cfg{ replication = '' }") replica.stop() replica.cleanup() -print '-------------------------------------------------------------' -print 'Start a new replica and check that server_id, LSN is re-used' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("Start a new replica and check that server_id, LSN is re-used") +print("-------------------------------------------------------------") # # gh-1219: Proper removal of servers with non-zero LSN from _cluster @@ -196,36 +201,36 @@ print '-------------------------------------------------------------' # Snapshot is required. Otherwise a relay will skip records made by previous # replica with the re-used id. master.admin("box.snapshot()") -master.admin('box.info.vclock[%d] == 2' % replica_id) +master.admin("box.info.vclock[{}] == 2".format(replica_id)) replica = TarantoolServer(server.ini) -replica.script = 'replication-py/replica.lua' +replica.script = "replication-py/replica.lua" replica.vardir = server.vardir replica.rpl_master = master replica.deploy() replica.wait_lsn(master_id, master.get_lsn(master_id)) # Check that replica_id was re-used -replica.admin('box.info.id == %d' % replica_id) -replica.admin('not box.info.ro') +replica.admin("box.info.id == {}".format(replica_id)) +replica.admin("not box.info.ro") # All records were succesfully recovered. # Replica should have the same vclock as master. -master.admin('box.info.vclock[%d] == 2' % replica_id) -replica.admin('box.info.vclock[%d] == 2' % replica_id) +master.admin("box.info.vclock[{}] == 2".format(replica_id)) +replica.admin("box.info.vclock[{}] == 2".format(replica_id)) replica.stop() replica.cleanup() -master.admin('box.space._cluster:delete{%d} ~= nil' % replica_id) +master.admin("box.space._cluster:delete{{{}}} ~= nil".format(replica_id)) -print '-------------------------------------------------------------' -print 'JOIN replica to read-only master' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("JOIN replica to read-only master") +print("-------------------------------------------------------------") # master server master = server -master.admin('box.cfg { read_only = true }') +master.admin("box.cfg { read_only = true }") #gh-1230 Assertion vclock_has on attempt to JOIN read-only master failed = TarantoolServer(server.ini) -failed.script = 'replication-py/failed.lua' +failed.script = "replication-py/failed.lua" failed.vardir = server.vardir failed.rpl_master = master failed.name = "failed" @@ -235,16 +240,16 @@ try: except Exception as e: line = "ER_READONLY" if failed.logfile_pos.seek_once(line) >= 0: - print "'%s' exists in server log" % line + print("\'{}\' exists in server log".format(line)) -master.admin('box.cfg { read_only = false }') +master.admin("box.cfg { read_only = false }") -print '-------------------------------------------------------------' -print 'JOIN replica with different replica set UUID' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("JOIN replica with different replica set UUID") +print("-------------------------------------------------------------") failed = TarantoolServer(server.ini) -failed.script = 'replication-py/uuid_mismatch.lua' +failed.script = "replication-py/uuid_mismatch.lua" failed.vardir = server.vardir failed.rpl_master = master failed.name = "uuid_mismatch" @@ -254,15 +259,15 @@ try: except Exception as e: line = "ER_REPLICASET_UUID_MISMATCH" if failed.logfile_pos.seek_once(line) >= 0: - print "'%s' exists in server log" % line + print("\'{}\' exists in server log".format(line)) failed.cleanup() -print '-------------------------------------------------------------' -print 'Cleanup' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("Cleanup") +print("-------------------------------------------------------------") # Cleanup sys.stdout.pop_filter() master.admin("box.schema.user.revoke('guest', 'replication')") -master.admin('box.space._cluster:delete{2} ~= nil') +master.admin("box.space._cluster:delete{2} ~= nil") diff --git a/test/replication-py/conflict.test.py b/test/replication-py/conflict.test.py index 1dcd66765..5e19d0c40 100644 --- a/test/replication-py/conflict.test.py +++ b/test/replication-py/conflict.test.py @@ -1,35 +1,37 @@ +from __future__ import print_function + from lib.tarantool_server import TarantoolServer from time import sleep import yaml -def check_replication(nodes, select_args=''): +def check_replication(nodes, select_args=""): for node in nodes: - node.admin('box.space.test:select{%s}' % select_args) + node.admin("box.space.test:select{{{}}}".format(select_args)) master = server master.admin("box.schema.user.grant('guest', 'replication')") replica = TarantoolServer(server.ini) -replica.script = 'replication-py/replica.lua' +replica.script = "replication-py/replica.lua" replica.vardir = server.vardir replica.rpl_master = master replica.deploy() def parallel_run(cmd1, cmd2, compare): - print 'parallel send: %s' % cmd1 - print 'parallel send: %s' % cmd2 - master.admin.socket.sendall('%s\n' % cmd1) - replica.admin.socket.sendall('%s\n' % cmd2) + print("parallel send: {}".format(cmd1)) + print("parallel send: {}".format(cmd2)) + master.admin.socket.sendall("{}\n".format(cmd1)) + replica.admin.socket.sendall("{}\n".format(cmd2)) master.admin.socket.recv(2048) replica.admin.socket.recv(2048) # wait for status changing in tarantool master_status = yaml.safe_load(master.admin( - 'box.info().replication[2].upstream.status', silent=True + "box.info().replication[2].upstream.status", silent=True ))[0] replica_status = yaml.safe_load(replica.admin( - 'box.info().replication[1].upstream.status', silent=True + "box.info().replication[1].upstream.status", silent=True ))[0] # wait for status @@ -37,11 +39,11 @@ def parallel_run(cmd1, cmd2, compare): while True: sleep(0.01) if any(results): - print 'replication state is correct' + print("replication state is correct") break def prepare_cluster(): - print 'reset master-master replication' + print("reset master-master replication") master.stop() master.cleanup() master.start() @@ -51,13 +53,13 @@ def prepare_cluster(): replica.cleanup() replica.start() - master.admin("box.cfg{replication='%s'}" % replica.iproto.uri, silent=True) - r1_id = replica.get_param('id') - r2_id = master.get_param('id') + master.admin("box.cfg{{replication='{}'}}".format(replica.iproto.uri), silent=True) + r1_id = replica.get_param("id") + r2_id = master.get_param("id") master.admin("space = box.schema.space.create('test')", silent=True) master.admin("index = space:create_index('primary', { type = 'tree'})", silent=True) - master.admin('for k = 1, 9 do space:insert{k, k*k} end', silent=True) + master.admin("for k = 1, 9 do space:insert{k, k*k} end", silent=True) # wait lsn replica.wait_lsn(r2_id, master.get_lsn(r2_id)) @@ -69,20 +71,20 @@ parallel_run( "box.space.test:update(1, {{'#', 2, 1}})", "box.space.test:update(1, {{'#', 2, 1}})", [ - lambda x,y: x == 'stopped' or y == 'stopped', - lambda x,y: x == 'follow' and y == 'follow', + lambda x,y: x == "stopped" or y == "stopped", + lambda x,y: x == "follow" and y == "follow", ] ) -check_replication([master, replica], '1') +check_replication([master, replica], "1") # test2: insert different values with single id prepare_cluster() parallel_run( - 'box.space.test:insert{20, 1}', - 'box.space.test:insert{20, 2}', + "box.space.test:insert{20, 1}", + "box.space.test:insert{20, 2}", [ - lambda x,y: x == 'stopped' or y == 'stopped', - lambda x,y: x == 'follow' and y == 'follow', + lambda x,y: x == "stopped" or y == "stopped", + lambda x,y: x == "follow" and y == "follow", ] ) @@ -91,7 +93,7 @@ prepare_cluster() parallel_run( "box.space.test:update(2, {{'=', 2, 1}})", "box.space.test:update(2, {{'=', 2, 2}})", - [lambda x,y: x == 'follow' and y == 'follow',] + [lambda x,y: x == "follow" and y == "follow",] ) # test4: CRDT increment with update @@ -99,16 +101,16 @@ prepare_cluster() parallel_run( "box.space.test:update(1, {{'+', 2, 1}})", "box.space.test:update(1, {{'+', 2, 2}})", - [lambda x,y: x == 'follow' and y == 'follow',] + [lambda x,y: x == "follow" and y == "follow",] ) -check_replication([master, replica], '1') +check_replication([master, replica], "1") # test5: delete not existing key prepare_cluster() parallel_run( "box.space.test:delete(999)", "box.space.test:delete(999)", - [lambda x,y: x == 'follow' and y == 'follow',] + [lambda x,y: x == "follow" and y == "follow",] ) check_replication([master, replica]) diff --git a/test/replication-py/init_storage.test.py b/test/replication-py/init_storage.test.py index f8641bf65..43ebc8afb 100644 --- a/test/replication-py/init_storage.test.py +++ b/test/replication-py/init_storage.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os import glob from lib.tarantool_server import TarantoolStartError @@ -5,65 +7,65 @@ from lib.tarantool_server import TarantoolServer # master server master = server -master_id = master.get_param('id') +master_id = master.get_param("id") master.admin("box.schema.user.grant('guest', 'replication')") -print '-------------------------------------------------------------' -print 'gh-484: JOIN doesn\'t save data to snapshot with TREE index' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("gh-484: JOIN doesn't save data to snapshot with TREE index") +print("-------------------------------------------------------------") master.admin("space = box.schema.space.create('test', {id = 42})") master.admin("index = space:create_index('primary', { type = 'tree'})") -master.admin('for k = 1, 9 do space:insert{k, k*k} end') +master.admin("for k = 1, 9 do space:insert{k, k*k} end") replica = TarantoolServer(server.ini) -replica.script = 'replication-py/replica.lua' +replica.script = "replication-py/replica.lua" replica.vardir = server.vardir #os.path.join(server.vardir, 'replica') replica.rpl_master = master replica.deploy() -replica.admin('box.space.test:select()') +replica.admin("box.space.test:select()") replica.restart() -replica.admin('box.space.test:select()') +replica.admin("box.space.test:select()") replica.stop() replica.cleanup() -print '-------------------------------------------------------------' -print 'replica test 2 (must be ok)' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("replica test 2 (must be ok)") +print("-------------------------------------------------------------") master.restart() -master.admin('for k = 10, 19 do box.space[42]:insert{k, k*k*k} end') +master.admin("for k = 10, 19 do box.space[42]:insert{k, k*k*k} end") master.admin("for k = 20, 29 do box.space[42]:upsert({k}, {}) end") lsn = master.get_lsn(master_id) replica = TarantoolServer(server.ini) -replica.script = 'replication-py/replica.lua' +replica.script = "replication-py/replica.lua" replica.vardir = server.vardir #os.path.join(server.vardir, 'replica') replica.rpl_master = master replica.deploy() -replica.admin('space = box.space.test'); +replica.admin("space = box.space.test"); replica.wait_lsn(master_id, lsn) for i in range(1, 20): - replica.admin('space:get{%d}' % i) + replica.admin("space:get{{{}}}".format(i)) replica.stop() replica.cleanup() -print '-------------------------------------------------------------' -print 'reconnect on JOIN/SUBSCRIBE' -print '-------------------------------------------------------------' +print("-------------------------------------------------------------") +print("reconnect on JOIN/SUBSCRIBE") +print("-------------------------------------------------------------") server.stop() replica = TarantoolServer(server.ini) -replica.script = 'replication-py/replica.lua' +replica.script = "replication-py/replica.lua" replica.vardir = server.vardir #os.path.join(server.vardir, 'replica') replica.rpl_master = master replica.deploy(wait=False) -print 'waiting reconnect on JOIN...' +print("waiting reconnect on JOIN...") server.start() try: # Replica may fail to start due connection issues may occur, check @@ -73,14 +75,14 @@ try: replica.crash_expected = True replica.wait_until_started() except TarantoolStartError: - print 'not ok - server failed to start' + print("not ok - server failed to start") else: - print 'ok' + print("ok") replica.stop() server.stop() -print 'waiting reconnect on SUBSCRIBE...' +print("waiting reconnect on SUBSCRIBE...") replica.start(wait=False) server.start() try: @@ -91,9 +93,9 @@ try: replica.crash_expected = True replica.wait_until_started() except TarantoolStartError: - print 'not ok - server failed to start' + print("not ok - server failed to start") else: - print 'ok' + print("ok") replica.stop() replica.cleanup() diff --git a/test/replication-py/multi.test.py b/test/replication-py/multi.test.py index 233802458..a346fd560 100644 --- a/test/replication-py/multi.test.py +++ b/test/replication-py/multi.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import sys import os from lib.tarantool_server import TarantoolServer @@ -14,17 +16,17 @@ master.admin("fiber = require('fiber')") master.admin("box.schema.user.grant('guest', 'replication')") master.admin("box.schema.user.grant('guest', 'execute', 'universe')") -print '----------------------------------------------------------------------' -print 'Bootstrap replicas' -print '----------------------------------------------------------------------' +print("----------------------------------------------------------------------") +print("Bootstrap replicas") +print("----------------------------------------------------------------------") # Start replicas -master.id = master.get_param('id') +master.id = master.get_param("id") cluster = [ master ] for i in range(REPLICA_N - 1): server = TarantoolServer(server.ini) - server.script = 'replication-py/replica.lua' - server.vardir = os.path.join(server.vardir, 'replica', str(master.id + i)) + server.script = "replication-py/replica.lua" + server.vardir = os.path.join(server.vardir, "replica", str(master.id + i)) server.rpl_master = master server.deploy() # Wait replica to fully bootstrap. @@ -34,14 +36,14 @@ for i in range(REPLICA_N - 1): # Make a list of servers sources = [] for server in cluster: - sources.append(yaml.safe_load(server.admin('box.cfg.listen', silent = True))[0]) - server.id = server.get_param('id') + sources.append(yaml.safe_load(server.admin("box.cfg.listen", silent = True))[0]) + server.id = server.get_param("id") -print 'done' +print("done") -print '----------------------------------------------------------------------' -print 'Make a full mesh' -print '----------------------------------------------------------------------' +print("----------------------------------------------------------------------") +print("Make a full mesh") +print("----------------------------------------------------------------------") # Connect each server to each other to make full mesh for server in cluster: @@ -54,55 +56,55 @@ for server in cluster: while #box.info.vclock[...] ~= nil do fiber.sleep(0.01) end;""", server2.id) - print 'server', server.id, "connected" + print("server {} connected".format(server.id)) -print 'done' +print("done") -print '----------------------------------------------------------------------' -print 'Test inserts' -print '----------------------------------------------------------------------' +print("----------------------------------------------------------------------") +print("Test inserts") +print("----------------------------------------------------------------------") -print 'Create a test space' +print("Create a test space") master.admin("_ = box.schema.space.create('test')") master.admin("_ = box.space.test:create_index('primary')") master_lsn = master.get_lsn(master.id) # Wait changes to propagate to replicas for server in cluster: server.wait_lsn(master.id, master_lsn) - print 'server', server.id, 'is ok' -print + print("server {} is ok".format(server.id)) +print("") -print 'Insert records' +print("Insert records") for i in range(ROW_N): server = cluster[i % REPLICA_N] - server.admin("box.space.test:insert{%d, %s}" % (i, server.id), silent = True) -print 'inserted %d records' % ROW_N -print + server.admin("box.space.test:insert{{{}, {}}}".format(i, server.id), silent = True) +print("inserted {} records".format(ROW_N)) +print("") -print 'Synchronize' +print("Synchronize") for server1 in cluster: for server2 in cluster: server1.wait_lsn(server2.id, server2.get_lsn(server2.id)) - print 'server', server1.id, 'done' -print 'done' -print + print("server {} done".format(server1.id)) +print("done") +print("") -print 'Check data' +print("Check data") for server in cluster: cnt = yaml.safe_load(server.admin("box.space.test:len()", silent = True))[0] - print 'server', server.id, 'is', cnt == ROW_N and 'ok' or 'not ok' -print 'Done' -print + print("server {} is {}".format(server.id, cnt == ROW_N and "ok" or "not ok")) +print("Done") +print("") -print -print '----------------------------------------------------------------------' -print 'Cleanup' -print '----------------------------------------------------------------------' +print("") +print("----------------------------------------------------------------------") +print("Cleanup") +print("----------------------------------------------------------------------") for server in cluster: server.stop() - print 'server', server.id, 'done' -print + print("server {} done".format(server.id)) +print("") master.cleanup() master.deploy() diff --git a/test/replication-py/swap.test.py b/test/replication-py/swap.test.py index 98eeeea6d..b162ae241 100644 --- a/test/replication-py/swap.test.py +++ b/test/replication-py/swap.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os import tarantool from lib.tarantool_server import TarantoolServer @@ -7,26 +9,26 @@ import yaml REPEAT = 20 ID_BEGIN = 0 ID_STEP = 5 -LOGIN = 'test' -PASSWORD = 'pass123456' +LOGIN = "test" +PASSWORD = "pass123456" -engines = ['memtx', 'vinyl'] +engines = ["memtx", "vinyl"] def insert_tuples(_server, begin, end, msg = "tuple"): for engine in engines: for i in range(begin, end): - print 'box.space.%s:insert{%d, "%s %d"}' % (engine, i, msg, i) - print '-' + print('box.space.{}:insert{{{}, "{} {}"}}'.format(engine, i, msg, i)) + print("-") space = _server.iproto.py_con.space(engine) - print space.insert((i, '%s %d' % (msg, i))) + print(space.insert((i, "{} {}".format(msg, i)))) def select_tuples(_server, begin, end): for engine in engines: for i in range(begin, end): - print 'box.space.%s:select{%d}' % (engine, i) - print '-' + print("box.space.{}:select{{{}}}".format(engine, i)) + print("-") space = _server.iproto.py_con.space(engine) - print space.select(i) + print(space.select(i)) # master server master = server @@ -34,11 +36,11 @@ master = server master.stop() master.cleanup() master.deploy() -master.admin("box.schema.user.create('%s', { password = '%s'})" % (LOGIN, PASSWORD)) -master.admin("box.schema.user.grant('%s', 'read,write,execute', 'universe')" % LOGIN) +master.admin("box.schema.user.create('{}', {{ password = '{}'}})".format(LOGIN, PASSWORD)) +master.admin("box.schema.user.grant('{}', 'read,write,execute', 'universe')".format(LOGIN)) master.iproto.py_con.authenticate(LOGIN, PASSWORD) -master.uri = '%s:%s@%s' % (LOGIN, PASSWORD, master.iproto.uri) -os.putenv('MASTER', master.uri) +master.uri = "{}:{}@{}".format(LOGIN, PASSWORD, master.iproto.uri) +os.putenv("MASTER", master.uri) # replica server replica = TarantoolServer() @@ -46,12 +48,12 @@ replica.script = "replication-py/replica.lua" replica.vardir = server.vardir #os.path.join(server.vardir, 'replica') replica.deploy() replica.admin("while box.info.id == 0 do require('fiber').sleep(0.01) end") -replica.uri = '%s:%s@%s' % (LOGIN, PASSWORD, replica.iproto.uri) +replica.uri = "{}:{}@{}".format(LOGIN, PASSWORD, replica.iproto.uri) replica.admin("while box.space['_priv']:len() < 1 do require('fiber').sleep(0.01) end") replica.iproto.py_con.authenticate(LOGIN, PASSWORD) for engine in engines: - master.admin("s = box.schema.space.create('%s', { engine = '%s'})" % (engine, engine)) + master.admin("s = box.schema.space.create('{}', {{ engine = '{}'}})".format(engine, engine)) master.admin("index = s:create_index('primary', {type = 'tree'})") ### gh-343: replica.cc must not add login and password to proc title @@ -61,12 +63,12 @@ for engine in engines: #if not m or m.group(1) != host_port: # print 'invalid box.info.status', status, 'expected host:port', host_port -master_id = master.get_param('id') -replica_id = replica.get_param('id') +master_id = master.get_param("id") +replica_id = replica.get_param("id") id = ID_BEGIN for i in range(REPEAT): - print "test %d iteration" % i + print("test {} iteration".format(i)) # insert to master insert_tuples(master, id, id + ID_STEP) @@ -82,7 +84,7 @@ for i in range(REPEAT): select_tuples(replica, id, id + ID_STEP) id += ID_STEP - print "swap servers" + print("swap servers") # reconfigure replica to master replica.rpl_master = None print("switch replica to master") @@ -90,7 +92,7 @@ for i in range(REPEAT): # reconfigure master to replica master.rpl_master = replica print("switch master to replica") - master.admin("box.cfg{replication='%s'}" % replica.uri, silent=True) + master.admin("box.cfg{{replication='{}'}}".format(replica.uri), silent=True) # insert to replica insert_tuples(replica, id, id + ID_STEP) @@ -106,7 +108,7 @@ for i in range(REPEAT): select_tuples(master, id, id + ID_STEP) id += ID_STEP - print "rollback servers configuration" + print("rollback servers configuration") # reconfigure replica to master master.rpl_master = None print("switch master to master") @@ -114,7 +116,7 @@ for i in range(REPEAT): # reconfigure master to replica replica.rpl_master = master print("switch replica to replica") - replica.admin("box.cfg{replication='%s'}" % master.uri, silent=True) + replica.admin("box.cfg{{replication='{}'}}".format(master.uri), silent=True) # Cleanup. diff --git a/test/xlog-py/big_lsn.test.py b/test/xlog-py/big_lsn.test.py index c6a31d971..edc1e5620 100644 --- a/test/xlog-py/big_lsn.test.py +++ b/test/xlog-py/big_lsn.test.py @@ -19,8 +19,8 @@ old_wal = os.path.join(wal_dir, "%020d.xlog" % old_lsn) new_wal = os.path.join(wal_dir, "%020d.xlog" % new_lsn) with open(old_wal, "r+") as f: s = f.read() - s = s.replace("VClock: {1: %d}" % old_lsn, - "VClock: {1: %d}" % new_lsn) + s = s.replace("VClock: {{1: {}}}".format(old_lsn), + "VClock: {{1: {}}}".format(new_lsn)) f.seek(0) f.write(s) os.rename(old_wal, new_wal) diff --git a/test/xlog-py/dup_key.test.py b/test/xlog-py/dup_key.test.py index 7609c9555..b1442c520 100644 --- a/test/xlog-py/dup_key.test.py +++ b/test/xlog-py/dup_key.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os import yaml @@ -26,7 +28,7 @@ server.stop() # Save wal#1 if os.access(wal, os.F_OK): - print ".xlog exists" + print(".xlog exists") os.rename(wal, wal_old) # Write wal#2 @@ -37,18 +39,17 @@ server.stop() # Restore wal#1 if not os.access(wal, os.F_OK): - print ".xlog does not exist" + print(".xlog does not exist") os.rename(wal_old, wal) server.start() -line = 'Duplicate key' -print "check log line for '%s'" % line -print +line = "Duplicate key" +print("check log line for '{}'".format(line)) +print("") if server.logfile_pos.seek_once(line) >= 0: - print "'%s' exists in server log" % line -print + print("'{}' exists in server log".format(line)) +print("") server.admin("box.space.test:get{1}") server.admin("box.space.test:get{2}") server.admin("box.space.test:len()") - diff --git a/test/xlog-py/empty.test.py b/test/xlog-py/empty.test.py index d6f89e0fb..8b19bc3d7 100644 --- a/test/xlog-py/empty.test.py +++ b/test/xlog-py/empty.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os import yaml from os.path import abspath @@ -20,7 +22,7 @@ f.close() server.start() server.stop() if os.access(filename, os.F_OK): - print ".xlog exists" + print(".xlog exists") # the server has started but is crippled since it # can't override an existing file server.start() diff --git a/test/xlog-py/lsn_gap.test.py b/test/xlog-py/lsn_gap.test.py index 7a503ff07..8da6166a2 100644 --- a/test/xlog-py/lsn_gap.test.py +++ b/test/xlog-py/lsn_gap.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os import yaml # @@ -28,11 +30,11 @@ os.unlink(wal) server.start() line="ignoring a gap in LSN" -print "check log line for '%s'" % line -print +print("check log line for '{}'".format(line)) +print("") if server.logfile_pos.seek_once(line) >= 0: - print "'%s' exists in server log" % line -print + print("'{}' exists in server log".format(line)) +print("") # missing tuple from removed xlog server.admin("box.space.test:select{}") diff --git a/test/xlog-py/misc.test.py b/test/xlog-py/misc.test.py index e39ae1495..3fcda9504 100644 --- a/test/xlog-py/misc.test.py +++ b/test/xlog-py/misc.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os import yaml @@ -11,9 +13,9 @@ server.stop() data_path = os.path.join(server.vardir, server.name) -print """ -# xlog file must exist after inserts. -""" +print("") +print("# xlog file must exist after inserts.") +print("") filename = str(lsn).zfill(20) + ".xlog" wal = os.path.join(data_path, filename) @@ -21,16 +23,16 @@ server.start() server.admin("space = box.schema.space.create('tweedledum')") if os.access(wal, os.F_OK): - print ".xlog exists" + print(".xlog exists") server.admin("index = space:create_index('primary', { type = 'hash' })") server.stop() lsn += 2 -print """ -# a new xlog must be opened after regular termination. -""" +print("") +print("# a new xlog must be opened after regular termination.") +print("") filename = str(lsn).zfill(20) + ".xlog" server.start() @@ -39,18 +41,17 @@ wal = os.path.join(data_path, filename) server.admin("box.space.tweedledum:insert{3, 'third tuple'}") if os.access(wal, os.F_OK): - print "a new .xlog exists" + print("a new .xlog exists") server.stop() if os.access(wal, os.F_OK): - print ".xlog stays around after sutdown" + print(".xlog stays around after shutdown") lsn += 1 -print """ -# An xlog file with one record during recovery. -""" - +print("") +print("# An xlog file with one record during recovery.") +print("") server.start() filename = str(lsn).zfill(20) + ".xlog" wal = os.path.join(data_path, filename) @@ -63,7 +64,7 @@ if pid > 0: server.stop() if os.access(wal, os.F_OK): - print ".xlog exists after kill -9" + print(".xlog exists after kill -9") # Remove last byte from xlog f = open(wal, "a") size = f.tell() @@ -73,7 +74,7 @@ if os.access(wal, os.F_OK): server.start() if os.access(wal, os.F_OK): - print "corrupt .xlog exists after start" + print("corrupt .xlog exists after start") server.stop() lsn += 1 @@ -98,4 +99,4 @@ for f in os.listdir(data_path): server.start() lsn = int(yaml.safe_load(admin("box.info.lsn", silent=True))[0]) if lsn == orig_lsn: - print ".snap.inprogress is ignored" + print(".snap.inprogress is ignored") diff --git a/test/xlog-py/missing.test.py b/test/xlog-py/missing.test.py index df35dc6d7..2fff0df6c 100644 --- a/test/xlog-py/missing.test.py +++ b/test/xlog-py/missing.test.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import yaml import os # @@ -34,11 +36,11 @@ os.unlink(wal) # this may lead to infinite recursion at start server.start() line="ignoring a gap in LSN" -print "check log line for '%s'" % line -print +print("check log line for '{}'".format(line)) +print("") if server.logfile_pos.seek_once(line) >= 0: - print "'%s' exists in server log" % line -print + print("'{}' exists in server log".format(line)) +print("") # missing tuples from removed xlog server.admin("box.space.test:select{}") -- 2.25.1