diff --git a/test-run b/test-run index c762d879d5661ffc8711cdea2d37448a3ffa59ad..fce3f1494a655dd8b66a498bd9bce155cee6cefe 160000 --- a/test-run +++ b/test-run @@ -1 +1 @@ -Subproject commit c762d879d5661ffc8711cdea2d37448a3ffa59ad +Subproject commit fce3f1494a655dd8b66a498bd9bce155cee6cefe diff --git a/test/big/big.lua b/test/big/big.lua index 717b7deaecff9ed41b4b5d590185fb2de10f3cf5..8607cc929f1adc869fdb50adcddb4c7e3bb46f0e 100644 --- a/test/big/big.lua +++ b/test/big/big.lua @@ -8,3 +8,13 @@ box.cfg{ } require('console').listen(os.getenv('ADMIN')) + +function compare(a,b) + return a[1] < b[1] +end + +function sorted(data) + table.sort(data, compare) + return data +end + diff --git a/test/big/sql.result b/test/big/sql.result index 77d13a60bb7385280c2f4e88527b19afab52e6d8..e4281f832f50953ab1d5b24ab46ce9ac21585ec3 100644 --- a/test/big/sql.result +++ b/test/big/sql.result @@ -1,3 +1,7 @@ +net_box = require('net.box') +--- +... +-- Prepare spaces box.schema.user.create('test', { password = 'test' }) --- ... @@ -13,87 +17,91 @@ index1 = s:create_index('primary', { type = 'tree', parts = { 1, 'str'} }) index2 = s:create_index('secondary', { type = 'tree', unique = false, parts = {2, 'str'}}) --- ... -# -# A test case for Bug#729758 -# "SELECT fails with a disjunct and small LIMIT" -# https://bugs.launchpad.net/tarantool/+bug/729758 -# -insert into t0 values ('Doe', 'Richard') +function compare(a,b) return a[1] < b[1] end +--- +... +conn = net_box:new('test:test@' .. box.cfg.listen) +--- +... +space = conn.space.tweedledum +--- +... +-- A test case for Bug#729758 +-- "SELECT fails with a disjunct and small LIMIT" +-- https://bugs.launchpad.net/tarantool/+bug/729758 +space:insert{'Doe', 'Richard'} --- - ['Doe', 'Richard'] ... -insert into t0 values ('Roe', 'Richard') +space:insert{'Roe', 'Richard'} --- - ['Roe', 'Richard'] ... -insert into t0 values ('Woe', 'Richard') +space:insert{'Woe', 'Richard'} --- - ['Woe', 'Richard'] ... -insert into t0 values ('Major', 'Tomas') +space:insert{'Major', 'Tomas'} --- - ['Major', 'Tomas'] ... -insert into t0 values ('Kytes', 'Tomas') +space:insert{'Kytes', 'Tomas'} --- - ['Kytes', 'Tomas'] ... -select * from t0 where k1='Richard' limit 2 +sorted(space.index.secondary:select('Richard')) --- -- ['Doe', 'Richard'] -- ['Roe', 'Richard'] +- - ['Doe', 'Richard'] + - ['Roe', 'Richard'] + - ['Woe', 'Richard'] ... -# -# A test case for Bug#729879 -# "Zero limit is treated the same as no limit" -# https://bugs.launchpad.net/tarantool/+bug/729879 -# -select * from t0 where k1='Richard' limit 0 +-- A test case for Bug#729879 +-- "Zero limit is treated the same as no limit" +-- https://bugs.launchpad.net/tarantool/+bug/729879 +sorted(space.index.secondary:select('Richard', { limit = 0 })) --- +- [] ... s:truncate() --- ... -# -# A test case for Bug#730593 -# "Bad data if incomplete tuple" -# https://bugs.launchpad.net/tarantool/+bug/730593 -# Verify that if there is an index on, say, field 2, -# we can't insert tuples with cardinality 1 and -# get away with it. -# -insert into t0 values ('Britney') +-- A test case for Bug#730593 +-- "Bad data if incomplete tuple" +-- https://bugs.launchpad.net/tarantool/+bug/730593 +-- Verify that if there is an index on, say, field 2, +-- we can't insert tuples with cardinality 1 and +-- get away with it. +space:insert{'Britney'} --- -- error: - errcode: ER_INDEX_ARITY - errmsg: Tuple field count 1 is less than required by a defined index (expected 2) +- error: Tuple field count 1 is less than required by a defined index (expected 2) ... -select * from t0 where k1='Anything' +sorted(space.index.secondary:select('Anything')) --- +- [] ... -insert into t0 values ('Stephanie') +space:insert{'Stephanie'} --- -- error: - errcode: ER_INDEX_ARITY - errmsg: Tuple field count 1 is less than required by a defined index (expected 2) +- error: Tuple field count 1 is less than required by a defined index (expected 2) ... -select * from t0 where k1='Anything' +sorted(space.index.secondary:select('Anything')) --- +- [] ... -insert into t0 values ('Spears', 'Britney') +space:insert{'Spears', 'Britney'} --- - ['Spears', 'Britney'] ... -select * from t0 where k0='Spears' +space:select{'Spears'} --- -- ['Spears', 'Britney'] +- - ['Spears', 'Britney'] ... -select * from t0 where k1='Anything' +sorted(space.index.secondary:select('Anything')) --- +- [] ... -select * from t0 where k1='Britney' +sorted(space.index.secondary:select('Britney')) --- -- ['Spears', 'Britney'] +- - ['Spears', 'Britney'] ... s.index[0]:select('Spears', { limit = 100, iterator = 'GE' }) --- @@ -103,32 +111,33 @@ s.index[1]:select('Britney', { limit = 100, iterator = 'GE' }) --- - - ['Spears', 'Britney'] ... -delete from t0 where k0='Spears' +space:delete('Spears') --- - ['Spears', 'Britney'] ... +-- Cleanup s:truncate() --- ... -# -# Test composite keys with trees -# +-- Test composite keys with trees +-- Redefine the second key to be composite s.index.secondary:alter{unique = true, parts = { 2, 'str', 3, 'str'}} --- ... -insert into t0 values ('key1', 'part1', 'part2') +space:insert{'key1', 'part1', 'part2'} --- - ['key1', 'part1', 'part2'] ... -replace into t0 values ('key1', 'part1', 'part2') +-- Test a duplicate insert on unique index that once resulted in a crash (bug 926080) +space:replace{'key1', 'part1', 'part2'} --- - ['key1', 'part1', 'part2'] ... -insert into t0 values ('key2', 'part1', 'part2_a') +space:insert{'key2', 'part1', 'part2_a'} --- - ['key2', 'part1', 'part2_a'] ... -insert into t0 values ('key3', 'part1', 'part2_b') +space:insert{'key3', 'part1', 'part2_b'} --- - ['key3', 'part1', 'part2_b'] ... @@ -138,23 +147,23 @@ s.index[1]:select{} - ['key2', 'part1', 'part2_a'] - ['key3', 'part1', 'part2_b'] ... -select * from t0 where k0='key1' +space:select{'key1'} --- -- ['key1', 'part1', 'part2'] +- - ['key1', 'part1', 'part2'] ... -select * from t0 where k0='key2' +space:select{'key2'} --- -- ['key2', 'part1', 'part2_a'] +- - ['key2', 'part1', 'part2_a'] ... -select * from t0 where k0='key3' +space:select{'key3'} --- -- ['key3', 'part1', 'part2_b'] +- - ['key3', 'part1', 'part2_b'] ... -select * from t0 where k1='part1' +sorted(space.index.secondary:select('part1')) --- -- ['key1', 'part1', 'part2'] -- ['key2', 'part1', 'part2_a'] -- ['key3', 'part1', 'part2_b'] +- - ['key1', 'part1', 'part2'] + - ['key2', 'part1', 'part2_a'] + - ['key3', 'part1', 'part2_b'] ... s.index[1]:select('part1', { limit = 100, iterator = 'GE' }) --- @@ -171,62 +180,63 @@ s.index[1]:select({ 'part1', 'part2_a' }, { limit = 1, iterator = 'GE' }) --- - - ['key2', 'part1', 'part2_a'] ... -select * from t0 where k0='key1' +space:select{'key1'} --- -- ['key1', 'part1', 'part2'] +- - ['key1', 'part1', 'part2'] ... -select * from t0 where k0='key2' +space:select{'key2'} --- -- ['key2', 'part1', 'part2_a'] +- - ['key2', 'part1', 'part2_a'] ... -select * from t0 where k0='key3' +space:select{'key3'} --- -- ['key3', 'part1', 'part2_b'] +- - ['key3', 'part1', 'part2_b'] ... -select * from t0 where k1='part1' +sorted(space.index.secondary:select('part1')) --- -- ['key1', 'part1', 'part2'] -- ['key2', 'part1', 'part2_a'] -- ['key3', 'part1', 'part2_b'] +- - ['key1', 'part1', 'part2'] + - ['key2', 'part1', 'part2_a'] + - ['key3', 'part1', 'part2_b'] ... -delete from t0 where k0='key1' +space:delete('key1') --- - ['key1', 'part1', 'part2'] ... -delete from t0 where k0='key2' +space:delete('key2') --- - ['key2', 'part1', 'part2_a'] ... -delete from t0 where k0='key3' +space:delete('key3') --- - ['key3', 'part1', 'part2_b'] ... s:truncate() --- ... +-- check non-unique multipart keys s.index.primary:alter{type = 'tree', parts = { 1, 'num'}} --- ... s.index.secondary:alter{unique = false} --- ... -insert into t0 values (01234567, 'part1', 'part2') +space:insert{1234567, 'part1', 'part2'} --- - [1234567, 'part1', 'part2'] ... -insert into t0 values (11234567, 'part1', 'part2') +space:insert{11234567, 'part1', 'part2'} --- - [11234567, 'part1', 'part2'] ... -insert into t0 values (21234567, 'part1', 'part2_a') +space:insert{21234567, 'part1', 'part2_a'} --- - [21234567, 'part1', 'part2_a'] ... -insert into t0 values (31234567, 'part1_a', 'part2') +space:insert{31234567, 'part1_a', 'part2'} --- - [31234567, 'part1_a', 'part2'] ... -insert into t0 values (41234567, 'part1_a', 'part2_a') +space:insert{41234567, 'part1_a', 'part2_a'} --- - [41234567, 'part1_a', 'part2_a'] ... @@ -236,7 +246,7 @@ l = {} for state, v in s:pairs() do table.insert(l, v) end --- ... -return l +l --- - - [1234567, 'part1', 'part2'] - [11234567, 'part1', 'part2'] @@ -244,63 +254,66 @@ return l - [31234567, 'part1_a', 'part2'] - [41234567, 'part1_a', 'part2_a'] ... -select * from t0 where k0=01234567 +space:select{1234567} --- -- [1234567, 'part1', 'part2'] +- - [1234567, 'part1', 'part2'] ... -select * from t0 where k0=11234567 +space:select{11234567} --- -- [11234567, 'part1', 'part2'] +- - [11234567, 'part1', 'part2'] ... -select * from t0 where k0=21234567 +space:select{21234567} --- -- [21234567, 'part1', 'part2_a'] +- - [21234567, 'part1', 'part2_a'] ... -select * from t0 where k1='part1' +sorted(space.index.secondary:select('part1')) --- -- [1234567, 'part1', 'part2'] -- [11234567, 'part1', 'part2'] -- [21234567, 'part1', 'part2_a'] +- - [1234567, 'part1', 'part2'] + - [11234567, 'part1', 'part2'] + - [21234567, 'part1', 'part2_a'] ... -select * from t0 where k1='part1_a' +sorted(space.index.secondary:select('part1_a')) --- -- [31234567, 'part1_a', 'part2'] -- [41234567, 'part1_a', 'part2_a'] +- - [31234567, 'part1_a', 'part2'] + - [41234567, 'part1_a', 'part2_a'] ... -select * from t0 where k1='part_none' +sorted(space.index.secondary:select('part_none')) --- +- [] ... -box.space[0].index[1]:select({'part1', 'part2'}) +sorted(box.space[0].index[1]:select({'part1', 'part2'})) --- - - [1234567, 'part1', 'part2'] - [11234567, 'part1', 'part2'] ... -select * from t0 where k1='part1' +sorted(space.index.secondary:select('part1')) --- -- [1234567, 'part1', 'part2'] -- [11234567, 'part1', 'part2'] -- [21234567, 'part1', 'part2_a'] +- - [1234567, 'part1', 'part2'] + - [11234567, 'part1', 'part2'] + - [21234567, 'part1', 'part2_a'] ... -select * from t0 where k1='part2' +sorted(space.index.secondary:select('part2')) --- +- [] ... -delete from t0 where k0=01234567 +-- cleanup +space:delete(1234567) --- - [1234567, 'part1', 'part2'] ... -delete from t0 where k0=11234567 +space:delete(11234567) --- - [11234567, 'part1', 'part2'] ... -delete from t0 where k0=21234567 +space:delete(21234567) --- - [21234567, 'part1', 'part2_a'] ... -delete from t0 where k0=31234567 +space:delete(31234567) --- - [31234567, 'part1_a', 'part2'] ... -delete from t0 where k0=41234567 +space:delete(41234567) --- - [41234567, 'part1_a', 'part2_a'] ... @@ -317,241 +330,251 @@ s.index.primary:alter{type = 'hash'} s.index.secondary:alter{type = 'hash', unique = true, parts = { 2, 'str' }} --- ... -insert into t0 values (1, 'hello') +space:insert{1, 'hello'} --- - [1, 'hello'] ... -insert into t0 values (2, 'brave') +space:insert{2, 'brave'} --- - [2, 'brave'] ... -insert into t0 values (3, 'new') +space:insert{3, 'new'} --- - [3, 'new'] ... -insert into t0 values (4, 'world') +space:insert{4, 'world'} --- - [4, 'world'] ... +-- Check how build_indexes() works +--# stop server default +--# start server default +net_box = require('net.box') +--- +... +conn = net_box:new('test:test@' .. box.cfg.listen) +--- +... +space = conn.space.tweedledum +--- +... s = box.space[0] --- ... -# -# Bug#929654 - secondary hash index is not built with build_indexes() -# -select * from t0 where k1='hello' +-- Bug#929654 - secondary hash index is not built with build_indexes() +sorted(space.index.secondary:select('hello')) --- -- [1, 'hello'] +- - [1, 'hello'] ... -select * from t0 where k1='brave' +sorted(space.index.secondary:select('brave')) --- -- [2, 'brave'] +- - [2, 'brave'] ... -select * from t0 where k1='new' +sorted(space.index.secondary:select('new')) --- -- [3, 'new'] +- - [3, 'new'] ... -select * from t0 where k1='world' +sorted(space.index.secondary:select('world')) --- -- [4, 'world'] +- - [4, 'world'] ... s:truncate() --- ... - -# -# A test case for: http://bugs.launchpad.net/bugs/735140 -# Partial REPLACE corrupts index. -# - +-- A test case for: http://bugs.launchpad.net/bugs/735140 +-- Partial REPLACE corrupts index. +-- clean data and restart with appropriate config s.index.primary:alter{parts = {1, 'str'}} --- ... s.index.secondary:alter{type = 'tree', unique = false} --- ... -insert into t0 values ('Spears', 'Britney') +space:insert{'Spears', 'Britney'} --- - ['Spears', 'Britney'] ... -select * from t0 where k0='Spears' +space:select{'Spears'} --- -- ['Spears', 'Britney'] +- - ['Spears', 'Britney'] ... -select * from t0 where k1='Britney' +sorted(space.index.secondary:select('Britney')) --- -- ['Spears', 'Britney'] +- - ['Spears', 'Britney'] ... -replace into t0 values ('Spears') +-- try to insert the incoplete tuple +space:replace{'Spears'} --- -- error: - errcode: ER_INDEX_ARITY - errmsg: Tuple field count 1 is less than required by a defined index (expected 2) +- error: Tuple field count 1 is less than required by a defined index (expected 2) ... -select * from t0 where k0='Spears' +-- check that nothing has been updated +space:select{'Spears'} --- -- ['Spears', 'Britney'] +- - ['Spears', 'Britney'] ... -delete from t0 where k0='Spears' +-- cleanup +space:delete('Spears') --- - ['Spears', 'Britney'] ... +-- Test retrieval of duplicates via a secondary key s.index.primary:alter{parts = { 1, 'num'}} --- ... -insert into t0 values (1, 'duplicate one') +space:insert{1, 'duplicate one'} --- - [1, 'duplicate one'] ... -insert into t0 values (2, 'duplicate one') +space:insert{2, 'duplicate one'} --- - [2, 'duplicate one'] ... -insert into t0 values (3, 'duplicate one') +space:insert{3, 'duplicate one'} --- - [3, 'duplicate one'] ... -insert into t0 values (4, 'duplicate one') +space:insert{4, 'duplicate one'} --- - [4, 'duplicate one'] ... -insert into t0 values (5, 'duplicate one') +space:insert{5, 'duplicate one'} --- - [5, 'duplicate one'] ... -insert into t0 values (6, 'duplicate two') +space:insert{6, 'duplicate two'} --- - [6, 'duplicate two'] ... -insert into t0 values (7, 'duplicate two') +space:insert{7, 'duplicate two'} --- - [7, 'duplicate two'] ... -insert into t0 values (8, 'duplicate two') +space:insert{8, 'duplicate two'} --- - [8, 'duplicate two'] ... -insert into t0 values (9, 'duplicate two') +space:insert{9, 'duplicate two'} --- - [9, 'duplicate two'] ... -insert into t0 values (10, 'duplicate two') +space:insert{10, 'duplicate two'} --- - [10, 'duplicate two'] ... -insert into t0 values (11, 'duplicate three') +space:insert{11, 'duplicate three'} --- - [11, 'duplicate three'] ... -insert into t0 values (12, 'duplicate three') +space:insert{12, 'duplicate three'} --- - [12, 'duplicate three'] ... -insert into t0 values (13, 'duplicate three') +space:insert{13, 'duplicate three'} --- - [13, 'duplicate three'] ... -insert into t0 values (14, 'duplicate three') +space:insert{14, 'duplicate three'} --- - [14, 'duplicate three'] ... -insert into t0 values (15, 'duplicate three') +space:insert{15, 'duplicate three'} --- - [15, 'duplicate three'] ... -select * from t0 where k1='duplicate one' +sorted(space.index.secondary:select('duplicate one')) --- -- [1, 'duplicate one'] -- [2, 'duplicate one'] -- [3, 'duplicate one'] -- [4, 'duplicate one'] -- [5, 'duplicate one'] +- - [1, 'duplicate one'] + - [2, 'duplicate one'] + - [3, 'duplicate one'] + - [4, 'duplicate one'] + - [5, 'duplicate one'] ... -select * from t0 where k1='duplicate two' +sorted(space.index.secondary:select('duplicate two')) --- -- [6, 'duplicate two'] -- [7, 'duplicate two'] -- [8, 'duplicate two'] -- [9, 'duplicate two'] -- [10, 'duplicate two'] +- - [6, 'duplicate two'] + - [7, 'duplicate two'] + - [8, 'duplicate two'] + - [9, 'duplicate two'] + - [10, 'duplicate two'] ... -select * from t0 where k1='duplicate three' +sorted(space.index.secondary:select('duplicate three')) --- -- [11, 'duplicate three'] -- [12, 'duplicate three'] -- [13, 'duplicate three'] -- [14, 'duplicate three'] -- [15, 'duplicate three'] +- - [11, 'duplicate three'] + - [12, 'duplicate three'] + - [13, 'duplicate three'] + - [14, 'duplicate three'] + - [15, 'duplicate three'] ... -delete from t0 where k0=1 +space:delete(1) --- - [1, 'duplicate one'] ... -delete from t0 where k0=2 +space:delete(2) --- - [2, 'duplicate one'] ... -delete from t0 where k0=3 +space:delete(3) --- - [3, 'duplicate one'] ... -delete from t0 where k0=4 +space:delete(4) --- - [4, 'duplicate one'] ... -delete from t0 where k0=5 +space:delete(5) --- - [5, 'duplicate one'] ... -delete from t0 where k0=6 +space:delete(6) --- - [6, 'duplicate two'] ... -delete from t0 where k0=7 +space:delete(7) --- - [7, 'duplicate two'] ... -delete from t0 where k0=8 +space:delete(8) --- - [8, 'duplicate two'] ... -delete from t0 where k0=9 +space:delete(9) --- - [9, 'duplicate two'] ... -delete from t0 where k0=10 +space:delete(10) --- - [10, 'duplicate two'] ... -delete from t0 where k0=11 +space:delete(11) --- - [11, 'duplicate three'] ... -delete from t0 where k0=12 +space:delete(12) --- - [12, 'duplicate three'] ... -delete from t0 where k0=13 +space:delete(13) --- - [13, 'duplicate three'] ... -delete from t0 where k0=14 +space:delete(14) --- - [14, 'duplicate three'] ... -delete from t0 where k0=15 +space:delete(15) --- - [15, 'duplicate three'] ... -insert into t0 values(1, 'Aardvark ') +-- Check min() and max() functions +space:insert{1, 'Aardvark '} --- - [1, 'Aardvark '] ... -insert into t0 values(2, 'Bilimbi') +space:insert{2, 'Bilimbi'} --- - [2, 'Bilimbi'] ... -insert into t0 values(3, 'Creature ') +space:insert{3, 'Creature '} --- - [3, 'Creature '] ... @@ -577,15 +600,15 @@ s.index[1]:max() --- - [3, 'Creature '] ... -delete from t0 where k0=1 +space:delete(1) --- - [1, 'Aardvark '] ... -delete from t0 where k0=2 +space:delete(2) --- - [2, 'Bilimbi'] ... -delete from t0 where k0=3 +space:delete(3) --- - [3, 'Creature '] ... diff --git a/test/big/sql.test.lua b/test/big/sql.test.lua new file mode 100644 index 0000000000000000000000000000000000000000..f1e998eaacf2a87a58e00389724ad14f6895d615 --- /dev/null +++ b/test/big/sql.test.lua @@ -0,0 +1,215 @@ +net_box = require('net.box') + +-- Prepare spaces +box.schema.user.create('test', { password = 'test' }) +box.schema.user.grant('test', 'execute,read,write', 'universe') +s = box.schema.space.create('tweedledum', { id = 0 }) +index1 = s:create_index('primary', { type = 'tree', parts = { 1, 'str'} }) +index2 = s:create_index('secondary', { type = 'tree', unique = false, parts = {2, 'str'}}) +function compare(a,b) return a[1] < b[1] end +conn = net_box:new('test:test@' .. box.cfg.listen) +space = conn.space.tweedledum +-- A test case for Bug#729758 +-- "SELECT fails with a disjunct and small LIMIT" +-- https://bugs.launchpad.net/tarantool/+bug/729758 + + +space:insert{'Doe', 'Richard'} +space:insert{'Roe', 'Richard'} +space:insert{'Woe', 'Richard'} +space:insert{'Major', 'Tomas'} +space:insert{'Kytes', 'Tomas'} +sorted(space.index.secondary:select('Richard')) + + +-- A test case for Bug#729879 +-- "Zero limit is treated the same as no limit" +-- https://bugs.launchpad.net/tarantool/+bug/729879 +sorted(space.index.secondary:select('Richard', { limit = 0 })) +s:truncate() + + +-- A test case for Bug#730593 +-- "Bad data if incomplete tuple" +-- https://bugs.launchpad.net/tarantool/+bug/730593 +-- Verify that if there is an index on, say, field 2, +-- we can't insert tuples with cardinality 1 and +-- get away with it. + +space:insert{'Britney'} +sorted(space.index.secondary:select('Anything')) +space:insert{'Stephanie'} +sorted(space.index.secondary:select('Anything')) +space:insert{'Spears', 'Britney'} +space:select{'Spears'} +sorted(space.index.secondary:select('Anything')) +sorted(space.index.secondary:select('Britney')) + +s.index[0]:select('Spears', { limit = 100, iterator = 'GE' }) +s.index[1]:select('Britney', { limit = 100, iterator = 'GE' }) + +space:delete('Spears') +-- Cleanup +s:truncate() + +-- Test composite keys with trees +-- Redefine the second key to be composite +s.index.secondary:alter{unique = true, parts = { 2, 'str', 3, 'str'}} + +space:insert{'key1', 'part1', 'part2'} +-- Test a duplicate insert on unique index that once resulted in a crash (bug 926080) +space:replace{'key1', 'part1', 'part2'} +space:insert{'key2', 'part1', 'part2_a'} +space:insert{'key3', 'part1', 'part2_b'} +s.index[1]:select{} +space:select{'key1'} +space:select{'key2'} +space:select{'key3'} +sorted(space.index.secondary:select('part1')) + +s.index[1]:select('part1', { limit = 100, iterator = 'GE' }) +s.index[0]:select('key2', { limit = 100, iterator = 'GE' }) +s.index[1]:select({ 'part1', 'part2_a' }, { limit = 1, iterator = 'GE' }) +space:select{'key1'} +space:select{'key2'} +space:select{'key3'} +sorted(space.index.secondary:select('part1')) + +space:delete('key1') +space:delete('key2') +space:delete('key3') +s:truncate() + +-- check non-unique multipart keys +s.index.primary:alter{type = 'tree', parts = { 1, 'num'}} +s.index.secondary:alter{unique = false} + +space:insert{1234567, 'part1', 'part2'} +space:insert{11234567, 'part1', 'part2'} +space:insert{21234567, 'part1', 'part2_a'} +space:insert{31234567, 'part1_a', 'part2'} +space:insert{41234567, 'part1_a', 'part2_a'} + +l = {} +for state, v in s:pairs() do table.insert(l, v) end +l + +space:select{1234567} +space:select{11234567} +space:select{21234567} +sorted(space.index.secondary:select('part1')) +sorted(space.index.secondary:select('part1_a')) +sorted(space.index.secondary:select('part_none')) + +sorted(box.space[0].index[1]:select({'part1', 'part2'})) + +sorted(space.index.secondary:select('part1')) +sorted(space.index.secondary:select('part2')) + +-- cleanup +space:delete(1234567) +space:delete(11234567) +space:delete(21234567) +space:delete(31234567) +space:delete(41234567) + +s:select{} +s:truncate() +s.index.primary:alter{type = 'hash'} +s.index.secondary:alter{type = 'hash', unique = true, parts = { 2, 'str' }} + +space:insert{1, 'hello'} +space:insert{2, 'brave'} +space:insert{3, 'new'} +space:insert{4, 'world'} + + +-- Check how build_indexes() works +--# stop server default +--# start server default +net_box = require('net.box') +conn = net_box:new('test:test@' .. box.cfg.listen) +space = conn.space.tweedledum + +s = box.space[0] + +-- Bug#929654 - secondary hash index is not built with build_indexes() +sorted(space.index.secondary:select('hello')) +sorted(space.index.secondary:select('brave')) +sorted(space.index.secondary:select('new')) +sorted(space.index.secondary:select('world')) +s:truncate() + +-- A test case for: http://bugs.launchpad.net/bugs/735140 +-- Partial REPLACE corrupts index. +-- clean data and restart with appropriate config +s.index.primary:alter{parts = {1, 'str'}} +s.index.secondary:alter{type = 'tree', unique = false} + +space:insert{'Spears', 'Britney'} +space:select{'Spears'} +sorted(space.index.secondary:select('Britney')) +-- try to insert the incoplete tuple +space:replace{'Spears'} +-- check that nothing has been updated +space:select{'Spears'} +-- cleanup +space:delete('Spears') + +-- Test retrieval of duplicates via a secondary key +s.index.primary:alter{parts = { 1, 'num'}} + +space:insert{1, 'duplicate one'} +space:insert{2, 'duplicate one'} +space:insert{3, 'duplicate one'} +space:insert{4, 'duplicate one'} +space:insert{5, 'duplicate one'} +space:insert{6, 'duplicate two'} +space:insert{7, 'duplicate two'} +space:insert{8, 'duplicate two'} +space:insert{9, 'duplicate two'} +space:insert{10, 'duplicate two'} +space:insert{11, 'duplicate three'} +space:insert{12, 'duplicate three'} +space:insert{13, 'duplicate three'} +space:insert{14, 'duplicate three'} +space:insert{15, 'duplicate three'} + + +sorted(space.index.secondary:select('duplicate one')) +sorted(space.index.secondary:select('duplicate two')) +sorted(space.index.secondary:select('duplicate three')) + +space:delete(1) +space:delete(2) +space:delete(3) +space:delete(4) +space:delete(5) +space:delete(6) +space:delete(7) +space:delete(8) +space:delete(9) +space:delete(10) +space:delete(11) +space:delete(12) +space:delete(13) +space:delete(14) +space:delete(15) + +-- Check min() and max() functions +space:insert{1, 'Aardvark '} +space:insert{2, 'Bilimbi'} +space:insert{3, 'Creature '} + +s.index[1]:select{} +s.index[0]:min() +s.index[0]:max() +s.index[1]:min() +s.index[1]:max() + +space:delete(1) +space:delete(2) +space:delete(3) + +box.schema.user.drop('test') +s:drop() diff --git a/test/big/sql.test.py b/test/big/sql.test.py deleted file mode 100644 index e6e0792688b1898c9304d22826f0f7a79d58a002..0000000000000000000000000000000000000000 --- a/test/big/sql.test.py +++ /dev/null @@ -1,211 +0,0 @@ -sql.sort = True - -# -# Prepare spaces -# -admin("box.schema.user.create('test', { password = 'test' })") -admin("box.schema.user.grant('test', 'execute,read,write', 'universe')") -admin("s = box.schema.space.create('tweedledum', { id = 0 })") -admin("index1 = s:create_index('primary', { type = 'tree', parts = { 1, 'str'} })") -admin("index2 = s:create_index('secondary', { type = 'tree', unique = false, parts = {2, 'str'}})") - -print """# -# A test case for Bug#729758 -# "SELECT fails with a disjunct and small LIMIT" -# https://bugs.launchpad.net/tarantool/+bug/729758 -#""" -sql.authenticate('test', 'test') -sql("insert into t0 values ('Doe', 'Richard')") -sql("insert into t0 values ('Roe', 'Richard')") -sql("insert into t0 values ('Woe', 'Richard')") -sql("insert into t0 values ('Major', 'Tomas')") -sql("insert into t0 values ('Kytes', 'Tomas')") -sql("select * from t0 where k1='Richard' limit 2") - -print """# -# A test case for Bug#729879 -# "Zero limit is treated the same as no limit" -# https://bugs.launchpad.net/tarantool/+bug/729879 -#""" -sql("select * from t0 where k1='Richard' limit 0") -admin("s:truncate()") - -print """# -# A test case for Bug#730593 -# "Bad data if incomplete tuple" -# https://bugs.launchpad.net/tarantool/+bug/730593 -# Verify that if there is an index on, say, field 2, -# we can't insert tuples with cardinality 1 and -# get away with it. -#""" -sql("insert into t0 values ('Britney')") -sql("select * from t0 where k1='Anything'") -sql("insert into t0 values ('Stephanie')") -sql("select * from t0 where k1='Anything'") -sql("insert into t0 values ('Spears', 'Britney')") -sql("select * from t0 where k0='Spears'") -sql("select * from t0 where k1='Anything'") -sql("select * from t0 where k1='Britney'") - -admin("s.index[0]:select('Spears', { limit = 100, iterator = 'GE' })") -admin("s.index[1]:select('Britney', { limit = 100, iterator = 'GE' })") - - -sql("delete from t0 where k0='Spears'") -# Cleanup -admin("s:truncate()") - -print """# -# Test composite keys with trees -#""" -# Redefine the second key to be composite -admin("s.index.secondary:alter{unique = true, parts = { 2, 'str', 3, 'str'}}") - -sql("insert into t0 values ('key1', 'part1', 'part2')") -# Test a duplicate insert on unique index that once resulted in a crash (bug #926080) -sql("replace into t0 values ('key1', 'part1', 'part2')") -sql("insert into t0 values ('key2', 'part1', 'part2_a')") -sql("insert into t0 values ('key3', 'part1', 'part2_b')") -admin("s.index[1]:select{}") -sql("select * from t0 where k0='key1'") -sql("select * from t0 where k0='key2'") -sql("select * from t0 where k0='key3'") -sql("select * from t0 where k1='part1'") -admin("s.index[1]:select('part1', { limit = 100, iterator = 'GE' })") -admin("s.index[0]:select('key2', { limit = 100, iterator = 'GE' })") -admin("s.index[1]:select({ 'part1', 'part2_a' }, { limit = 1, iterator = 'GE' })") -sql("select * from t0 where k0='key1'") -sql("select * from t0 where k0='key2'") -sql("select * from t0 where k0='key3'") -sql("select * from t0 where k1='part1'") -sql("delete from t0 where k0='key1'") -sql("delete from t0 where k0='key2'") -sql("delete from t0 where k0='key3'") -admin("s:truncate()") -# check non-unique multipart keys -admin("s.index.primary:alter{type = 'tree', parts = { 1, 'num'}}") -admin("s.index.secondary:alter{unique = false}") - -sql("insert into t0 values (01234567, 'part1', 'part2')") -sql("insert into t0 values (11234567, 'part1', 'part2')") -sql("insert into t0 values (21234567, 'part1', 'part2_a')") -sql("insert into t0 values (31234567, 'part1_a', 'part2')") -sql("insert into t0 values (41234567, 'part1_a', 'part2_a')") -admin("l = {}") -admin("for state, v in s:pairs() do table.insert(l, v) end") -admin("return l") -sql("select * from t0 where k0=01234567") -sql("select * from t0 where k0=11234567") -sql("select * from t0 where k0=21234567") -sql("select * from t0 where k1='part1'") -sql("select * from t0 where k1='part1_a'") -sql("select * from t0 where k1='part_none'") -admin("box.space[0].index[1]:select({'part1', 'part2'})") -sql("select * from t0 where k1='part1'") -sql("select * from t0 where k1='part2'") -# cleanup -sql("delete from t0 where k0=01234567") -sql("delete from t0 where k0=11234567") -sql("delete from t0 where k0=21234567") -sql("delete from t0 where k0=31234567") -sql("delete from t0 where k0=41234567") -admin("s:select{}") -admin("s:truncate()") - -admin("s.index.primary:alter{type = 'hash'}") -admin("s.index.secondary:alter{type = 'hash', unique = true, parts = { 2, 'str' }}") - -sql("insert into t0 values (1, 'hello')") -sql("insert into t0 values (2, 'brave')") -sql("insert into t0 values (3, 'new')") -sql("insert into t0 values (4, 'world')") -# Check how build_idnexes() works -server.stop() -server.start() -admin("s = box.space[0]") -print """# -# Bug#929654 - secondary hash index is not built with build_indexes() -#""" -sql("select * from t0 where k1='hello'") -sql("select * from t0 where k1='brave'") -sql("select * from t0 where k1='new'") -sql("select * from t0 where k1='world'") -# -admin("s:truncate()") - - -print """ -# -# A test case for: http://bugs.launchpad.net/bugs/735140 -# Partial REPLACE corrupts index. -# -""" -# clean data and restart with appropriate config -admin("s.index.primary:alter{parts = {1, 'str'}}") -admin("s.index.secondary:alter{type = 'tree', unique = false}") - -sql("insert into t0 values ('Spears', 'Britney')") -sql("select * from t0 where k0='Spears'") -sql("select * from t0 where k1='Britney'") -# try to insert the incoplete tuple -sql("replace into t0 values ('Spears')") -# check that nothing has been updated -sql("select * from t0 where k0='Spears'") -# cleanup -sql("delete from t0 where k0='Spears'") - -# -# Test retrieval of duplicates via a secondary key -# -admin("s.index.primary:alter{parts = { 1, 'num'}}") -sql("insert into t0 values (1, 'duplicate one')") -sql("insert into t0 values (2, 'duplicate one')") -sql("insert into t0 values (3, 'duplicate one')") -sql("insert into t0 values (4, 'duplicate one')") -sql("insert into t0 values (5, 'duplicate one')") -sql("insert into t0 values (6, 'duplicate two')") -sql("insert into t0 values (7, 'duplicate two')") -sql("insert into t0 values (8, 'duplicate two')") -sql("insert into t0 values (9, 'duplicate two')") -sql("insert into t0 values (10, 'duplicate two')") -sql("insert into t0 values (11, 'duplicate three')") -sql("insert into t0 values (12, 'duplicate three')") -sql("insert into t0 values (13, 'duplicate three')") -sql("insert into t0 values (14, 'duplicate three')") -sql("insert into t0 values (15, 'duplicate three')") -sql("select * from t0 where k1='duplicate one'") -sql("select * from t0 where k1='duplicate two'") -sql("select * from t0 where k1='duplicate three'") -sql("delete from t0 where k0=1") -sql("delete from t0 where k0=2") -sql("delete from t0 where k0=3") -sql("delete from t0 where k0=4") -sql("delete from t0 where k0=5") -sql("delete from t0 where k0=6") -sql("delete from t0 where k0=7") -sql("delete from t0 where k0=8") -sql("delete from t0 where k0=9") -sql("delete from t0 where k0=10") -sql("delete from t0 where k0=11") -sql("delete from t0 where k0=12") -sql("delete from t0 where k0=13") -sql("delete from t0 where k0=14") -sql("delete from t0 where k0=15") -# -# Check min() and max() functions -# -sql("insert into t0 values(1, 'Aardvark ')") -sql("insert into t0 values(2, 'Bilimbi')") -sql("insert into t0 values(3, 'Creature ')") -admin("s.index[1]:select{}") -admin("s.index[0]:min()") -admin("s.index[0]:max()") -admin("s.index[1]:min()") -admin("s.index[1]:max()") -sql("delete from t0 where k0=1") -sql("delete from t0 where k0=2") -sql("delete from t0 where k0=3") -admin("box.schema.user.drop('test')") -admin("s:drop()") - -sql.sort = False diff --git a/test/box/bad_trigger.test.py b/test/box/bad_trigger.test.py index b7337cdf61c6dade851eb05a9af917b45d9275e6..6fc55982725404b70f2d6cd77e7984c8d718250d 100644 --- a/test/box/bad_trigger.test.py +++ b/test/box/bad_trigger.test.py @@ -17,7 +17,7 @@ server.admin("box.session.on_connect(f1)") unpacker = msgpack.Unpacker(use_list = False) -conn = TarantoolConnection(server.sql.host, server.sql.port) +conn = TarantoolConnection(server.iproto.host, server.iproto.port) conn.connect() s = conn.socket diff --git a/test/box/call.result b/test/box/call.result index 7b6ff483172aeb252dee53b1066615195d46882d..5efbf188261396c2c86914d16710992f2b6a5292 100644 --- a/test/box/call.result +++ b/test/box/call.result @@ -20,40 +20,30 @@ f1() - true - null ... -call f1() ---- -- ['testing'] +call f1 () +- [testing] - [1] -- [False] +- [false] - [-1] - [1.123] -- [True] -- [None] -... +- [true] +- [null] + f1=nil --- ... -call f1() ---- -- error: - errcode: ER_NO_SUCH_PROC - errmsg: Procedure 'f1' is not defined -... +call f1 () +error: {code: ER_NO_SUCH_PROC, reason: Procedure 'f1' is not defined} + function f1() return f1 end --- ... -call f1() ---- -- error: - errcode: ER_PROC_LUA - errmsg: unsupported Lua type 'function' -... -call dostring('box.error(33333, "Hey!")') ---- -- error: - errcode: ER_UNKNOWN (565) - errmsg: Unknown error -... +call f1 () +error: {code: ER_PROC_LUA, reason: unsupported Lua type 'function'} + +call box.error (33333, 'Hey!') +error: {code: U, reason: Unknown error} + # A test case for Bug#103491 # server CALL processing bug with name path longer than two @@ -74,18 +64,15 @@ test.test = {} test.test.f = f --- ... -call f() ---- -- ['OK'] -... -call test.f() ---- -- ['OK'] -... -call test.test.f() ---- -- ['OK'] -... +call f () +- [OK] + +call test.f () +- [OK] + +call test.test.f () +- [OK] + # Test for Bug #955226 # Lua Numbers are passed back wrongly as strings @@ -94,98 +81,87 @@ call test.test.f() function foo() return 1, 2, '1', '2' end --- ... -call foo() ---- +call foo () - [1] - [2] - ['1'] - ['2'] -... + function f1(...) return {...} end --- ... function f2(...) return f1({...}) end --- ... -call f1('test_', 'test_') ---- -- ['test_', 'test_'] -... -call f2('test_', 'test_') ---- -- ['test_', 'test_'] -... -call f1() ---- +call f1 ('test_', 'test_') +- [test_, test_] + +call f2 ('test_', 'test_') +- [test_, test_] + +call f1 () - [] -... -call f2() ---- + +call f2 () - [] -... + function f3() return {{'hello'}, {'world'}} end --- ... -call f3() ---- -- ['hello'] -- ['world'] -... +call f3 () +- [hello] +- [world] + function f3() return {'hello', {'world'}} end --- ... -call f3() ---- -- ['hello', ['world']] -... +call f3 () +- - hello + - [world] + function f3() return 'hello', {{'world'}, {'canada'}} end --- ... -call f3() ---- -- ['hello'] -- [['world'], ['canada']] -... +call f3 () +- [hello] +- - [world] + - [canada] + function f3() return {}, '123', {{}, {}} end --- ... -call f3() ---- +call f3 () - [] - ['123'] -- [[], []] -... +- - [] + - [] + function f3() return { {{'hello'}} } end --- ... -call f3() ---- -- [['hello']] -... +call f3 () +- - [hello] + function f3() return { box.tuple.new('hello'), {'world'} } end --- ... -call f3() ---- -- ['hello'] -- ['world'] -... +call f3 () +- [hello] +- [world] + function f3() return { {'world'}, box.tuple.new('hello') } end --- ... -call f3() ---- -- ['world'] -- ['hello'] -... -call f1('jason') ---- -- ['jason'] -... -call f1('jason', 1, 'test', 2, 'stewart') ---- -- ['jason', 1, 'test', 2, 'stewart'] -... +call f3 () +- [world] +- [hello] + +call f1 ('jason',) +- [jason] + +call f1 ('jason', 1, 'test', 2, 'stewart') +- [jason, 1, test, 2, stewart] + space = box.schema.space.create('tweedledum', { id = 0 }) --- ... @@ -198,69 +174,58 @@ function myreplace(...) return space:replace{...} end function myinsert(...) return space:insert{...} end --- ... -insert into t0 values (1, 'test box delete') ---- -- [1, 'test box delete'] -... -call space:delete(1) ---- -- [1, 'test box delete'] -... -insert into t0 values (1, 'test box delete') ---- -- [1, 'test box delete'] -... -call space:delete(1) ---- -- [1, 'test box delete'] -... -call space:delete(1) ---- -... -insert into t0 values (2, 'test box delete') ---- -- [2, 'test box delete'] -... -call space:delete(1) ---- -... -call space:delete(2) ---- -- [2, 'test box delete'] -... -call space:delete(2) ---- -... +call myinsert (1, 'test box delete') +- [1, test box delete] + +call space:delete (1,) +- [1, test box delete] + +call myinsert (1, 'test box delete') +- [1, test box delete] + +call space:delete (1,) +- [1, test box delete] + +call space:delete (1,) +[] + +call myinsert (2, 'test box delete') +- [2, test box delete] + +call space:delete (1,) +[] + +call space:delete (2,) +- [2, test box delete] + +call space:delete (2,) +[] + space:delete{2} --- ... -insert into t0 values (2, 'test box delete') ---- -- [2, 'test box delete'] -... -call space:get(2) ---- -- [2, 'test box delete'] -... +call myinsert (2, 'test box delete') +- [2, test box delete] + +call space:get (2,) +- [2, test box delete] + space:delete{2} --- - [2, 'test box delete'] ... -call space:get(2) ---- -... -insert into t0 values (2, 'test box.select()') ---- -- [2, 'test box.select()'] -... -call space:get(2) ---- -- [2, 'test box.select()'] -... -call space:select(2) ---- -- [2, 'test box.select()'] -... +call space:get (2,) +[] + +call myinsert (2, 'test box.select()') +- [2, test box.select()] + +call space:get (2,) +- [2, test box.select()] + +call space:select (2,) +- [2, test box.select()] + space:get{2} --- - [2, 'test box.select()'] @@ -276,22 +241,18 @@ space:select{1} --- - [] ... -call myreplace(2, 'hello', 'world') ---- -- [2, 'hello', 'world'] -... -call myreplace(2, 'goodbye', 'universe') ---- -- [2, 'goodbye', 'universe'] -... -call space:get(2) ---- -- [2, 'goodbye', 'universe'] -... -call space:select(2) ---- -- [2, 'goodbye', 'universe'] -... +call myreplace (2, 'hello', 'world') +- [2, hello, world] + +call myreplace (2, 'goodbye', 'universe') +- [2, goodbye, universe] + +call space:get (2,) +- [2, goodbye, universe] + +call space:select (2,) +- [2, goodbye, universe] + space:get{2} --- - [2, 'goodbye', 'universe'] @@ -300,35 +261,28 @@ space:select{2} --- - - [2, 'goodbye', 'universe'] ... -call myreplace(2) ---- +call myreplace (2,) - [2] -... -call space:get(2) ---- + +call space:get (2,) - [2] -... -call space:select(2) ---- + +call space:select (2,) - [2] -... -call space:delete(2) ---- + +call space:delete (2,) - [2] -... -call space:delete(2) ---- -... -call myinsert(3, 'old', 2) ---- -- [3, 'old', 2] -... -call myinsert(3, 'old', 2) ---- -- error: - errcode: ER_TUPLE_FOUND - errmsg: Duplicate key exists in unique index 'primary' in space 'tweedledum' -... + +call space:delete (2,) +[] + +call myinsert (3, 'old', 2) +- [3, old, 2] + +call myinsert (3, 'old', 2) +error: {code: ER_TUPLE_FOUND, reason: Duplicate key exists in unique index 'primary' + in space 'tweedledum'} + space:update({3}, {{'=', 1, 4}, {'=', 2, 'new'}}) --- - error: Attempt to modify a tuple field which is part of index 'primary' in space @@ -337,14 +291,12 @@ space:update({3}, {{'=', 1, 4}, {'=', 2, 'new'}}) space:insert(space:get{3}:update{{'=', 1, 4}, {'=', 2, 'new'}}) space:delete{3} --- ... -call space:get(4) ---- -- [4, 'new', 2] -... -call space:select(4) ---- -- [4, 'new', 2] -... +call space:get (4,) +- [4, new, 2] + +call space:select (4,) +- [4, new, 2] + space:update({4}, {{'+', 3, 1}}) --- - [4, 'new', 3] @@ -353,29 +305,24 @@ space:update({4}, {{'-', 3, 1}}) --- - [4, 'new', 2] ... -call space:get(4) ---- -- [4, 'new', 2] -... -call space:select(4) ---- -- [4, 'new', 2] -... +call space:get (4,) +- [4, new, 2] + +call space:select (4,) +- [4, new, 2] + function field_x(key, field_index) return space:get(key)[field_index] end --- ... -call field_x(4, 1) ---- +call field_x (4, 1) - [4] -... -call field_x(4, 2) ---- -- ['new'] -... -call space:delete(4) ---- -- [4, 'new', 2] -... + +call field_x (4, 2) +- [new] + +call space:delete (4,) +- [4, new, 2] + space:drop() --- ... diff --git a/test/box/call.test.py b/test/box/call.test.py index 4671d0a224168e58655e7cbd48cb19d160c3788f..90b79fd8c353cbe313368fcb9d4ede95f4e18e08 100644 --- a/test/box/call.test.py +++ b/test/box/call.test.py @@ -1,22 +1,25 @@ import os import sys +def call(name, *args): + return iproto.call(name, *args) + admin("box.schema.user.create('test', { password = 'test' })") admin("box.schema.user.grant('test', 'execute,read,write', 'universe')") -sql.authenticate('test', 'test') +iproto.authenticate('test', 'test') # workaround for gh-770 centos 6 float representation 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()") -sql("call f1()") +call("f1") admin("f1=nil") -sql("call f1()") +call("f1") admin("function f1() return f1 end") -sql("call f1()") +call("f1") # A test case for https://github.com/tarantool/tarantool/issues/44 # IPROTO required! -sql("call dostring('box.error(33333, \"Hey!\")')") +call("box.error", 33333, 'Hey!') print """ # A test case for Bug#103491 @@ -28,9 +31,9 @@ admin("test = {}") admin("test.f = f") admin("test.test = {}") admin("test.test.f = f") -sql("call f()") -sql("call test.f()") -sql("call test.test.f()") +call("f") +call("test.f") +call("test.test.f") print """ # Test for Bug #955226 @@ -38,90 +41,92 @@ print """ # """ admin("function foo() return 1, 2, '1', '2' end") -sql("call foo()") +call("foo") # # check how well we can return tables # admin("function f1(...) return {...} end") admin("function f2(...) return f1({...}) end") -sql("call f1('test_', 'test_')") -sql("call f2('test_', 'test_')") -sql("call f1()") -sql("call f2()") +call("f1", 'test_', 'test_') +call("f2", 'test_', 'test_') +call("f1") +call("f2") # # check multi-tuple return # admin("function f3() return {{'hello'}, {'world'}} end") -sql("call f3()") +call("f3") admin("function f3() return {'hello', {'world'}} end") -sql("call f3()") +call("f3") admin("function f3() return 'hello', {{'world'}, {'canada'}} end") -sql("call f3()") +call("f3") admin("function f3() return {}, '123', {{}, {}} end") -sql("call f3()") +call("f3") admin("function f3() return { {{'hello'}} } end") -sql("call f3()") +call("f3") admin("function f3() return { box.tuple.new('hello'), {'world'} } end") -sql("call f3()") +call("f3") admin("function f3() return { {'world'}, box.tuple.new('hello') } end") -sql("call f3()") +call("f3") -sql("call f1('jason')") -sql("call f1('jason', 1, 'test', 2, 'stewart')") +call("f1", 'jason') +call("f1", 'jason', 1, 'test', 2, 'stewart') admin("space = box.schema.space.create('tweedledum', { id = 0 })") admin("index = space:create_index('primary', { type = 'hash' })") admin("function myreplace(...) return space:replace{...} end") admin("function myinsert(...) return space:insert{...} end") -sql("insert into t0 values (1, 'test box delete')") -sql("call space:delete(1)") -sql("insert into t0 values (1, 'test box delete')") -sql("call space:delete(1)") -sql("call space:delete(1)") -sql("insert into t0 values (2, 'test box delete')") -sql("call space:delete(1)") -sql("call space:delete(2)") -sql("call space:delete(2)") + +call("myinsert", 1, 'test box delete') +call("space:delete", 1) +call("myinsert", 1, 'test box delete') +call("space:delete", 1) +call("space:delete", 1) +call("myinsert", 2, 'test box delete') +call("space:delete", 1) +call("space:delete", 2) +call("space:delete", 2) admin("space:delete{2}") -sql("insert into t0 values (2, 'test box delete')") -sql("call space:get(2)") + +call("myinsert", 2, 'test box delete') +call("space:get", 2) admin("space:delete{2}") -sql("call space:get(2)") -sql("insert into t0 values (2, 'test box.select()')") -sql("call space:get(2)") -sql("call space:select(2)") +call("space:get", 2) +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}") -sql("call myreplace(2, 'hello', 'world')") -sql("call myreplace(2, 'goodbye', 'universe')") -sql("call space:get(2)") -sql("call space:select(2)") +call("myreplace", 2, 'hello', 'world') +call("myreplace", 2, 'goodbye', 'universe') +call("space:get", 2) +call("space:select", 2) admin("space:get{2}") admin("space:select{2}") -sql("call myreplace(2)") -sql("call space:get(2)") -sql("call space:select(2)") -sql("call space:delete(2)") -sql("call space:delete(2)") -sql("call myinsert(3, 'old', 2)") +call("myreplace", 2) +call("space:get", 2) +call("space:select", 2) +call("space:delete", 2) +call("space:delete", 2) +call("myinsert", 3, 'old', 2) # test that insert produces a duplicate key error -sql("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}") -sql("call space:get(4)") -sql("call space:select(4)") +call("space:get", 4) +call("space:select", 4) admin("space:update({4}, {{'+', 3, 1}})") admin("space:update({4}, {{'-', 3, 1}})") -sql("call space:get(4)") -sql("call space:select(4)") +call("space:get", 4) +call("space:select", 4) admin("function field_x(key, field_index) return space:get(key)[field_index] end") -sql("call field_x(4, 1)") -sql("call field_x(4, 2)") -sql("call space:delete(4)") +call("field_x", 4, 1) +call("field_x", 4, 2) +call("space:delete", 4) admin("space:drop()") admin("space = box.schema.space.create('tweedledum')") @@ -131,12 +136,12 @@ 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 sql.py_con.eval(name, args) + 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 sql.py_con.call(name, args) + print iproto.py_con.call(name, args) def test(expr, *args): lua_eval('return ' + expr, *args) @@ -182,4 +187,4 @@ admin("space:drop()") admin("box.schema.user.drop('test')") # Re-connect after removing user -sql.py_con.close() +iproto.py_con.close() diff --git a/test/box/iproto.result b/test/box/iproto.result index 7ed0c05d7ebae84bd8a3055fc56a491297c3ec02..678026f3a28c1ca26d1ee8563005da36af1dbb15 100644 --- a/test/box/iproto.result +++ b/test/box/iproto.result @@ -12,61 +12,37 @@ box.schema.user.grant('guest', 'read,write,execute', 'universe') # send the package with invalid length 12 # check that is server alive -ping ---- -- ok -... +True # Test gh-206 "Segfault if sending IPROTO package without `KEY` field" IPROTO_SELECT query {'IPROTO_CODE': 1} {'IPROTO_SPACE_ID': 280} -ping ---- -- ok -... +True IPROTO_DELETE query {'IPROTO_CODE': 5} {'IPROTO_SPACE_ID': 280} -ping ---- -- ok -... +True IPROTO_UPDATE query {'IPROTO_CODE': 4} {'IPROTO_SPACE_ID': 280} -ping ---- -- ok -... +True query {'IPROTO_CODE': 4} {'IPROTO_SPACE_ID': 280, 'IPROTO_KEY': (1,)} -ping ---- -- ok -... +True IPROTO_REPLACE query {'IPROTO_CODE': 3} {'IPROTO_SPACE_ID': 280} -ping ---- -- ok -... +True IPROTO_CALL query {'IPROTO_CODE': 6} {} -ping ---- -- ok -... +True query {'IPROTO_CODE': 6} {'IPROTO_KEY': ('procname',)} -ping ---- -- ok -... +True box.cfg.wal_mode diff --git a/test/box/iproto.test.py b/test/box/iproto.test.py index 6f3248c0abbd81a260ff0246ed01e921b8ec55d9..85545ee902877f6c04da05d8a5e921a737796132 100644 --- a/test/box/iproto.test.py +++ b/test/box/iproto.test.py @@ -18,7 +18,7 @@ print """ """ # opeing new connection to tarantool/box -conn = TarantoolConnection(server.sql.host, server.sql.port) +conn = TarantoolConnection(server.iproto.host, server.iproto.port) conn.connect() s = conn.socket @@ -29,7 +29,7 @@ print "# send the package with invalid length" invalid_request = struct.pack('<LLL', 1, 4294967290, 1) print s.send(invalid_request) print "# check that is server alive" -sql("ping") +print iproto.py_con.ping() > 0 # closing connection s.close() @@ -48,7 +48,7 @@ def repr_dict(todump): def test(header, body): # Connect and authenticate - c = Connection('localhost', server.sql.port) + c = Connection('localhost', server.iproto.port) c.connect() print 'query', repr_dict(header), repr_dict(body) header = msgpack.dumps(header) @@ -61,7 +61,7 @@ def test(header, body): except OSError as e: print ' => ', 'Failed to send request' c.close() - sql("ping") + print iproto.py_con.ping() > 0 print """ # Test gh-206 "Segfault if sending IPROTO package without `KEY` field" @@ -96,7 +96,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.sql.port) +c = Connection('localhost', server.iproto.port) c.connect() request1 = RequestInsert(c, 567, [1, "baobab"]) request2 = RequestInsert(c, 567, [2, "obbaba"]) @@ -173,7 +173,7 @@ class RawSelect(Request): msgpack.dumps(IPROTO_LIMIT) + msgpack.dumps(100); self._bytes = self.header(len(request_body)) + request_body -c = sql.py_con +c = iproto.py_con space = c.space('test') space_id = space.space_no diff --git a/test/box/sql.result b/test/box/sql.result index de8c1e7a36fbddf5031bff78a094622e79fb8e74..851af76b0403693a030a2ef60fae4550f8a69ce1 100644 --- a/test/box/sql.result +++ b/test/box/sql.result @@ -1,189 +1,207 @@ -function f() box.schema.space.create('test', { id = 0 }) end +net_box = require('net.box') --- ... -box.schema.user.create('test', { password = 'test' }) +s = box.schema.space.create('test', { id = 0 }) --- ... -box.schema.func.create('f') +box.schema.user.create('test', { password = 'test' }) --- ... -box.schema.user.grant('test', 'Write', 'space', '_space') +box.schema.user.grant('test', 'execute,read,write', 'universe') --- ... -box.schema.user.grant('test', 'Execute', 'function', 'f') +conn = net_box:new('test:test@' .. box.cfg.listen) --- ... -call f() +space = conn.space.test --- ... index = box.space.test:create_index('primary', { type = 'hash' }) --- ... -box.schema.func.drop('f') +conn:ping() --- +- true ... -ping +-- xxx: bug currently selects no rows +space:select{} --- -- ok +- error: Invalid key part count in an exact match (expected 1, got 0) ... -select * from t0 +space:insert{1, 'I am a tuple'} --- -- error: - errcode: ER_KEY_FIELD_TYPE - errmsg: Supplied key type of part 0 does not match index part type: expected NUM +- [1, 'I am a tuple'] ... -insert into t0 values (1, 'I am a tuple') +space:select{1} --- -- [1, 'I am a tuple'] +- - [1, 'I am a tuple'] ... -select * from t0 where k0 = 1 +-- currently there is no way to find out how many records +-- a space contains +space:select{0} --- -- [1, 'I am a tuple'] +- [] ... -select * from t0 where k0 = 0 +space:select{2} --- +- [] ... -select * from t0 where k0 = 2 +--# stop server default +--# start server default +net_box = require('net.box') --- ... -select * from t0 where k0 = 1 +conn = net_box:new('test:test@' .. box.cfg.listen) --- -- [1, 'I am a tuple'] +... +space = conn.space.test +--- +... +space:select{1} +--- +- - [1, 'I am a tuple'] ... box.snapshot() --- - ok ... -select * from t0 where k0 = 1 +space:select{1} --- -- [1, 'I am a tuple'] +- - [1, 'I am a tuple'] ... -select * from t0 where k0 = 1 +--# stop server default +--# start server default +net_box = require('net.box') --- -- [1, 'I am a tuple'] ... -delete from t0 where k0 = 1 +conn = net_box:new('test:test@' .. box.cfg.listen) --- -- [1, 'I am a tuple'] ... -select * from t0 where k0 = 1 +space = conn.space.test --- ... -update t0 set k1 = 'I am a new tuple' where k0=1 +space:select{1} --- +- - [1, 'I am a tuple'] ... -select * from t0 where k0=1 +space:delete{1} --- +- [1, 'I am a tuple'] ... -insert into t0 values (1, 'I am a new tuple') +space:select{1} --- -- [1, 'I am a new tuple'] +- [] ... -select * from t0 where k0 = 1 +-- xxx: update comes through, returns 0 rows affected +space:update(1, {{'=', 2, 'I am a new tuple'}}) +--- +... +-- nothing is selected, since nothing was there +space:select{1} +--- +- [] +... +space:insert{1, 'I am a new tuple'} --- - [1, 'I am a new tuple'] ... -update t0 set k1 = 'I am the newest tuple' where k0=1 +space:select{1} --- -- [1, 'I am the newest tuple'] +- - [1, 'I am a new tuple'] ... -select * from t0 where k0 = 1 +space:update(1, {{'=', 2, 'I am the newest tuple'}}) --- - [1, 'I am the newest tuple'] ... -update t0 set k1 = 'Huh', k2 = 'I am a new field! I was added via append' where k0=1 +space:select{1} --- -- [1, 'Huh', 'I am a new field! I was added via append'] +- - [1, 'I am the newest tuple'] ... -select * from t0 where k0 = 1 +-- this is correct, can append field to tuple +space:update(1, {{'=', 2, 'Huh'}, {'=', 3, 'I am a new field! I was added via append'}}) --- - [1, 'Huh', 'I am a new field! I was added via append'] ... -update t0 set k1 = 'Huh', k1000 = 'invalid field' where k0=1 +space:select{1} --- -- error: - errcode: ER_NO_SUCH_FIELD - errmsg: Field 1000 was not found in the tuple +- - [1, 'Huh', 'I am a new field! I was added via append'] ... -select * from t0 where k0 = 1 +-- this is illegal +space:update(1, {{'=', 2, 'Huh'}, {'=', 1001, 'invalid field'}}) --- -- [1, 'Huh', 'I am a new field! I was added via append'] +- error: Field 1000 was not found in the tuple ... -replace into t0 values (1, 'I am a new tuple', 'stub') +space:select{1} --- -- [1, 'I am a new tuple', 'stub'] +- - [1, 'Huh', 'I am a new field! I was added via append'] ... -update t0 set k1 = 'Huh', k2 = 'Oh-ho-ho' where k0=1 +space:replace{1, 'I am a new tuple', 'stub'} --- -- [1, 'Huh', 'Oh-ho-ho'] +- [1, 'I am a new tuple', 'stub'] ... -select * from t0 where k0 = 1 +space:update(1, {{'=', 2, 'Huh'}, {'=', 3, 'Oh-ho-ho'}}) --- - [1, 'Huh', 'Oh-ho-ho'] ... -update t0 set k1 = '', k2 = '' where k0=1 +space:select{1} --- -- [1, '', ''] +- - [1, 'Huh', 'Oh-ho-ho'] ... -select * from t0 where k0 = 1 +-- check empty strings +space:update(1, {{'=', 2, ''}, {'=', 3, ''}}) --- - [1, '', ''] ... -update t0 set k1 = 2, k2 = 3 where k0=1 +space:select{1} --- -- [1, 2, 3] +- - [1, '', ''] ... -select * from t0 where k0 = 1 +-- check type change +space:update(1, {{'=', 2, 2}, {'=', 3, 3}}) --- - [1, 2, 3] ... -insert into t0 values (0) +space:select{1} --- -- [0] +- - [1, 2, 3] ... -select * from t0 where k0=0 +-- check limits +space:insert{0} --- - [0] ... -insert into t0 values (4294967295) +space:select{0} --- -- [4294967295] +- - [0] ... -select * from t0 where k0=4294967295 +space:select{4294967295} --- -- [4294967295] +- [] ... -delete from t0 where k0=0 +-- cleanup +space:delete(0) --- - [0] ... -delete from t0 where k0=4294967295 +space:delete(4294967295) --- -- [4294967295] ... -# -# A test case for: http://bugs.launchpad.net/bugs/712456 -# Verify that when trying to access a non-existing or -# very large space id, no crash occurs. -# - -select * from t1 where k0 = 0 +-- A test case for: http://bugs.launchpad.net/bugs/712456 +-- Verify that when trying to access a non-existing or +-- very large space id, no crash occurs. +conn.space[1]:select{} --- -- error: - errcode: ER_NO_SUCH_SPACE - errmsg: Space '1' does not exist +- error: '[string "return conn.space[1]:select{} "]:1: attempt to index a nil value' ... -select * from t65537 where k0 = 0 +conn.space[65537]:select{} --- -- error: - errcode: ER_NO_SUCH_SPACE - errmsg: Space '65537' does not exist +- error: '[string "return conn.space[65537]:select{} "]:1: attempt to index a nil + value' ... -select * from t4294967295 where k0 = 0 +conn.space[4294967295]:select{} --- -- error: - errcode: ER_NO_SUCH_SPACE - errmsg: Space '4294967295' does not exist +- error: '[string "return conn.space[4294967295]:select{} "]:1: attempt to index a + nil value' ... box.space[0]:drop() --- @@ -191,11 +209,6 @@ box.space[0]:drop() box.schema.user.drop('test') --- ... -# -# A test case for: http://bugs.launchpad.net/bugs/716683 -# Admin console should not stall on unknown command. - -show status ---- -- error: '[string "show status"]:1: ''='' expected near ''status''' -... +-- A test case for: http://bugs.launchpad.net/bugs/716683 +-- Admin console should not stall on unknown command. +--admin("show status", simple=True) diff --git a/test/box/sql.test.lua b/test/box/sql.test.lua new file mode 100644 index 0000000000000000000000000000000000000000..a47d11570e7bbaf570042a46135b0c7bb9c65e4c --- /dev/null +++ b/test/box/sql.test.lua @@ -0,0 +1,91 @@ +net_box = require('net.box') + +s = box.schema.space.create('test', { id = 0 }) +box.schema.user.create('test', { password = 'test' }) +box.schema.user.grant('test', 'execute,read,write', 'universe') + +conn = net_box:new('test:test@' .. box.cfg.listen) +space = conn.space.test + +index = box.space.test:create_index('primary', { type = 'hash' }) +conn:ping() + +-- xxx: bug currently selects no rows +space:select{} +space:insert{1, 'I am a tuple'} +space:select{1} + +-- currently there is no way to find out how many records +-- a space contains +space:select{0} +space:select{2} + +--# stop server default +--# start server default +net_box = require('net.box') +conn = net_box:new('test:test@' .. box.cfg.listen) +space = conn.space.test + +space:select{1} +box.snapshot() +space:select{1} + +--# stop server default +--# start server default +net_box = require('net.box') +conn = net_box:new('test:test@' .. box.cfg.listen) +space = conn.space.test + +space:select{1} +space:delete{1} +space:select{1} +-- xxx: update comes through, returns 0 rows affected +space:update(1, {{'=', 2, 'I am a new tuple'}}) +-- nothing is selected, since nothing was there +space:select{1} +space:insert{1, 'I am a new tuple'} +space:select{1} +space:update(1, {{'=', 2, 'I am the newest tuple'}}) +space:select{1} +-- this is correct, can append field to tuple +space:update(1, {{'=', 2, 'Huh'}, {'=', 3, 'I am a new field! I was added via append'}}) +space:select{1} + +-- this is illegal +space:update(1, {{'=', 2, 'Huh'}, {'=', 1001, 'invalid field'}}) +space:select{1} +space:replace{1, 'I am a new tuple', 'stub'} +space:update(1, {{'=', 2, 'Huh'}, {'=', 3, 'Oh-ho-ho'}}) +space:select{1} + + +-- check empty strings +space:update(1, {{'=', 2, ''}, {'=', 3, ''}}) +space:select{1} + +-- check type change +space:update(1, {{'=', 2, 2}, {'=', 3, 3}}) +space:select{1} + +-- check limits +space:insert{0} +space:select{0} +space:select{4294967295} + +-- cleanup +space:delete(0) +space:delete(4294967295) + +-- A test case for: http://bugs.launchpad.net/bugs/712456 +-- Verify that when trying to access a non-existing or +-- very large space id, no crash occurs. +conn.space[1]:select{} +conn.space[65537]:select{} +conn.space[4294967295]:select{} + +box.space[0]:drop() +box.schema.user.drop('test') + +-- A test case for: http://bugs.launchpad.net/bugs/716683 +-- Admin console should not stall on unknown command. +--admin("show status", simple=True) diff --git a/test/box/sql.test.py b/test/box/sql.test.py deleted file mode 100644 index 978d192afde56d19ea37411c710197ad4ab2b2ba..0000000000000000000000000000000000000000 --- a/test/box/sql.test.py +++ /dev/null @@ -1,78 +0,0 @@ -import tarantool - -admin("function f() box.schema.space.create('test', { id = 0 }) end") -admin("box.schema.user.create('test', { password = 'test' })") -admin("box.schema.func.create('f')") -admin("box.schema.user.grant('test', 'Write', 'space', '_space')") -admin("box.schema.user.grant('test', 'Execute', 'function', 'f')") -sql.authenticate('test', 'test') -# call from sql to have the right owner -sql("call f()") -admin("index = box.space.test:create_index('primary', { type = 'hash' })") -admin("box.schema.func.drop('f')") -sql("ping") -# xxx: bug -- currently selects no rows -sql("select * from t0") -sql("insert into t0 values (1, 'I am a tuple')") -sql("select * from t0 where k0 = 1") -# currently there is no way to find out how many records -# a space contains -sql("select * from t0 where k0 = 0") -sql("select * from t0 where k0 = 2") -server.restart() -sql("select * from t0 where k0 = 1") -admin("box.snapshot()") -sql("select * from t0 where k0 = 1") -server.restart() -sql("select * from t0 where k0 = 1") -sql("delete from t0 where k0 = 1") -sql("select * from t0 where k0 = 1") -# xxx: update comes through, returns 0 rows affected -sql("update t0 set k1 = 'I am a new tuple' where k0=1") -# nothing is selected, since nothing was there -sql("select * from t0 where k0=1") -sql("insert into t0 values (1, 'I am a new tuple')") -sql("select * from t0 where k0 = 1") -sql("update t0 set k1 = 'I am the newest tuple' where k0=1") -sql("select * from t0 where k0 = 1") -# this is correct, can append field to tuple -sql("update t0 set k1 = 'Huh', k2 = 'I am a new field! I was added via append' where k0=1") -sql("select * from t0 where k0 = 1") -# this is illegal -sql("update t0 set k1 = 'Huh', k1000 = 'invalid field' where k0=1") -sql("select * from t0 where k0 = 1") -sql("replace into t0 values (1, 'I am a new tuple', 'stub')") -sql("update t0 set k1 = 'Huh', k2 = 'Oh-ho-ho' where k0=1") -sql("select * from t0 where k0 = 1") -# check empty strings -sql("update t0 set k1 = '', k2 = '' where k0=1") -sql("select * from t0 where k0 = 1") -# check type change -sql("update t0 set k1 = 2, k2 = 3 where k0=1") -sql("select * from t0 where k0 = 1") -# check limits -sql("insert into t0 values (0)") -sql("select * from t0 where k0=0") -sql("insert into t0 values (4294967295)") -sql("select * from t0 where k0=4294967295") -# cleanup -sql("delete from t0 where k0=0") -sql("delete from t0 where k0=4294967295") - -print """# -# A test case for: http://bugs.launchpad.net/bugs/712456 -# Verify that when trying to access a non-existing or -# very large space id, no crash occurs. -# -""" -sql("select * from t1 where k0 = 0") -sql("select * from t65537 where k0 = 0") -sql("select * from t4294967295 where k0 = 0") -admin("box.space[0]:drop()") -admin("box.schema.user.drop('test')") - -print """# -# A test case for: http://bugs.launchpad.net/bugs/716683 -# Admin console should not stall on unknown command. -""" -admin("show status", simple=True) diff --git a/test/parallel/call.test.py b/test/parallel/call.test.py index 7a081c4f01b160abf240957e97e82d5d19ddfe4d..41275688163aa8c0536f1e7503a9e93e9b6d48d5 100644 --- a/test/parallel/call.test.py +++ b/test/parallel/call.test.py @@ -2,6 +2,9 @@ import sys import uuid import random +def call(name, *args): + return iproto.call(name, *args) + login = 'u'+str(uuid.uuid4())[0:8] passw = 'p'+str(uuid.uuid4())[0:8] @@ -10,18 +13,18 @@ sys.stdout.push_filter('box.schema.user.grant.*', 'box.schema.user.grant()') admin("box.schema.user.create('%s', { password = '%s' })" % (login, passw)) admin("box.schema.user.grant('%s', 'execute,read,write', 'universe')" % (login)) -sql.authenticate(login, passw) +iproto.authenticate(login, passw) admin("function f1() return 'testing', 1, false, -1, 1.123, 1e123, nil end") admin("f1()") -sql("call f1()") +call("f1") admin("f1=nil") -sql("call f1()") +call("f1") admin("function f1() return f1 end") -sql("call f1()") +call("f1") # A test case for https://github.com/tarantool/tarantool/issues/44 # IPROTO required! -sql("call dostring('box.error(33333, \"Hey!\")')") +call("dostring('box.error(33333, \"Hey!\")')") print """ # A test case for Bug#103491 @@ -33,9 +36,9 @@ admin("test = {}") admin("test.f = f") admin("test.test = {}") admin("test.test.f = f") -sql("call f()") -sql("call test.f()") -sql("call test.test.f()") +call("f") +call("test.f") +call("test.test.f") print """ # Test for Bug #955226 @@ -43,89 +46,89 @@ print """ # """ admin("function foo() return 1, 2, '1', '2' end") -sql("call foo()") +call("foo") # # check how well we can return tables # admin("function f1(...) return {...} end") admin("function f2(...) return f1({...}) end") -sql("call f1('test_', 'test_')") -sql("call f2('test_', 'test_')") -sql("call f1()") -sql("call f2()") +call("f1", 'test_', 'test_') +call("f2", 'test_', 'test_') +call("f1") +call("f2") # # check multi-tuple return # admin("function f3() return {{'hello'}, {'world'}} end") -sql("call f3()") +call("f3") admin("function f3() return {'hello', {'world'}} end") -sql("call f3()") +call("f3") admin("function f3() return 'hello', {{'world'}, {'canada'}} end") -sql("call f3()") +call("f3") admin("function f3() return {}, '123', {{}, {}} end") -sql("call f3()") +call("f3") admin("function f3() return { {{'hello'}} } end") -sql("call f3()") +call("f3") admin("function f3() return { box.tuple.new('hello'), {'world'} } end") -sql("call f3()") +call("f3") admin("function f3() return { {'world'}, box.tuple.new('hello') } end") -sql("call f3()") +call("f3") -sql("call f1('jason')") -sql("call f1('jason', 1, 'test', 2, 'stewart')") +call("f1", 'jason') +call("f1", 'jason', 1, 'test', 2, 'stewart') admin("space = box.schema.create_space('tweedledum', { id = 0 })") admin("space:create_index('primary', { type = 'hash' })") admin("function myreplace(...) return space:replace{...} end") admin("function myinsert(...) return space:insert{...} end") -sql("insert into t0 values (1, 'test box delete')") -sql("call space:delete(1)") -sql("insert into t0 values (1, 'test box delete')") -sql("call space:delete(1)") -sql("call space:delete(1)") -sql("insert into t0 values (2, 'test box delete')") -sql("call space:delete(1)") -sql("call space:delete(2)") -sql("call space:delete(2)") +call("myinsert", 1, 'test box delete') +call("space:delete", 1) +call("insert into t0 values (1, 'test box delete')") +call("space:delete", 1) +call("space:delete", 1) +call("insert into t0 values (2, 'test box delete')") +call("space:delete", 1) +call("space:delete", 2) +call("space:delete", 2) admin("space:delete{2}") -sql("insert into t0 values (2, 'test box delete')") -sql("call space:get(2)") +call("insert into t0 values (2, 'test box delete')") +call("space:get", 2) admin("space:delete{2}") -sql("call space:get(2)") -sql("insert into t0 values (2, 'test box.select()')") -sql("call space:get(2)") -sql("call space:select(2)") +call("space:get", 2) +call("insert into t0 values (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}") -sql("call myreplace(2, 'hello', 'world')") -sql("call myreplace(2, 'goodbye', 'universe')") -sql("call space:get(2)") -sql("call space:select(2)") +call("myreplace", 2, 'hello', 'world') +call("myreplace", 2, 'goodbye', 'universe') +call("space:get", 2) +call("space:select", 2) admin("space:get{2}") admin("space:select{2}") -sql("call myreplace(2)") -sql("call space:get(2)") -sql("call space:select(2)") -sql("call space:delete(2)") -sql("call space:delete(2)") -sql("call myinsert(3, 'old', 2)") +call("myreplace", 2) +call("space:get", 2) +call("space:select", 2) +call("space:delete", 2) +call("space:delete",2 ) +call("myinsert", 3, 'old', 2) # test that insert produces a duplicate key error -sql("call myinsert(3, 'old', 2)") +call("myinsert", 3, 'old', 2) admin("space:update({3}, {{'=', 1, 4}, {'=', 2, 'new'}})") -sql("call space:get(4)") -sql("call space:select(4)") +call("space:get", 4) +call("space:select", 4) admin("space:update({4}, {{'+', 3, 1}})") admin("space:update({4}, {{'-', 3, 1}})") -sql("call space:get(4)") -sql("call space:select(4)") +call("space:get", 4) +call("space:select", 4) admin("function field_x(key, field_index) return space:get(key)[field_index] end") -sql("call field_x(4, 1)") -sql("call field_x(4, 2)") -sql("call space:delete(4)") +call("field_x(4, 1)", 4, 1) +call("field_x(4, 2)", 4, 1) +call("space:delete", 4) admin("space:drop()") sys.stdout.push_filter('box.schema.user.drop(.*)', 'box.schema.user.drop()') diff --git a/test/replication/cluster.test.py b/test/replication/cluster.test.py index 84872550ef8f0afbc63b1b194a486537e9f940ee..d8ec098fb8a68cdf1e7f898a7206fb8f07494d53 100644 --- a/test/replication/cluster.test.py +++ b/test/replication/cluster.test.py @@ -24,31 +24,31 @@ print '-------------------------------------------------------------' replica_uuid = str(uuid.uuid4()) ## Universal read permission is required to perform JOIN/SUBSCRIBE -rows = list(server.sql.py_con.join(replica_uuid)) +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 to universe' -rows = list(server.sql.py_con.subscribe(cluster_uuid, replica_uuid)) +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 to universe' ## Write permission to space `_cluster` is required to perform JOIN server.admin("box.schema.user.grant('guest', 'read', 'universe')") -server.sql.py_con.close() # re-connect with new permissions -rows = list(server.sql.py_con.join(replica_uuid)) +server.iproto.py_con.close() # 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' def check_join(msg): ok = True - for resp in server.sql.py_con.join(replica_uuid): + for resp in server.iproto.py_con.join(replica_uuid): if resp.completion_status != 0: print 'not ok', '-', msg, resp.return_message ok = False - server.sql.py_con.close() # JOIN brokes protocol + server.iproto.py_con.close() # JOIN brokes protocol if not ok: return - tuples = server.sql.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' return @@ -58,17 +58,17 @@ def check_join(msg): ## JOIN with permissions server.admin("box.schema.user.grant('guest', 'write', 'space', '_cluster')") -server.sql.py_con.close() # re-connect with new permissions +server.iproto.py_con.close() # re-connect with new permissions server_id = check_join('join with granted permissions') -server.sql.py_con.space('_cluster').delete(server_id) +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.sql.py_con.close() # re-connect with new permissions +server.iproto.py_con.close() # re-connect with new permissions server_id = check_join('join with granted role') -server.sql.py_con.space('_cluster').delete(server_id) +server.iproto.py_con.space('_cluster').delete(server_id) print '-------------------------------------------------------------' print 'gh-707: Master crashes on JOIN if it does not have snapshot files' @@ -79,13 +79,13 @@ for k in glob.glob(os.path.join(server.vardir, '*.snap')): os.unlink(k) # remember the number of servers in _cluster table -server_count = len(server.sql.py_con.space('_cluster').select(())) +server_count = len(server.iproto.py_con.space('_cluster').select(())) -rows = list(server.sql.py_con.join(replica_uuid)) +rows = list(server.iproto.py_con.join(replica_uuid)) print len(rows) == 1 and rows[0].return_message.find('snapshot') >= 0 and \ 'ok' or 'not ok', '-', 'join without snapshots' -print server_count == len(server.sql.py_con.space('_cluster').select(())) and\ +print server_count == len(server.iproto.py_con.space('_cluster').select(())) and\ 'ok' or 'not ok', '-', '_cluster does not changed after unsuccessful JOIN' server.admin("box.schema.user.revoke('guest', 'replication')") diff --git a/test/replication/swap.result b/test/replication/swap.result index d2ba41ab47e5deb31c6e69a3b191b0d6184cedb2..b645345197d85e99e70644a50363a5c4e8be05c3 100644 --- a/test/replication/swap.result +++ b/test/replication/swap.result @@ -17,3286 +17,2906 @@ index = s:create_index('primary', {type = 'hash'}) --- ... test 0 iteration -insert into t0 values (0, 'tuple 0') ---- -- [0, 'tuple 0'] -... -insert into t0 values (1, 'tuple 1') ---- -- [1, 'tuple 1'] -... -insert into t0 values (2, 'tuple 2') ---- -- [2, 'tuple 2'] -... -insert into t0 values (3, 'tuple 3') ---- -- [3, 'tuple 3'] -... -insert into t0 values (4, 'tuple 4') ---- -- [4, 'tuple 4'] -... -select * from t0 where k0 = 0 ---- -- [0, 'tuple 0'] -... -select * from t0 where k0 = 1 ---- -- [1, 'tuple 1'] -... -select * from t0 where k0 = 2 ---- -- [2, 'tuple 2'] -... -select * from t0 where k0 = 3 ---- -- [3, 'tuple 3'] -... -select * from t0 where k0 = 4 ---- -- [4, 'tuple 4'] -... -insert into t0 values (5, 'tuple 5') ---- -- [5, 'tuple 5'] -... -insert into t0 values (6, 'tuple 6') ---- -- [6, 'tuple 6'] -... -insert into t0 values (7, 'tuple 7') ---- -- [7, 'tuple 7'] -... -insert into t0 values (8, 'tuple 8') ---- -- [8, 'tuple 8'] -... -insert into t0 values (9, 'tuple 9') ---- -- [9, 'tuple 9'] -... -select * from t0 where k0 = 5 ---- -- [5, 'tuple 5'] -... -select * from t0 where k0 = 6 ---- -- [6, 'tuple 6'] -... -select * from t0 where k0 = 7 ---- -- [7, 'tuple 7'] -... -select * from t0 where k0 = 8 ---- -- [8, 'tuple 8'] -... -select * from t0 where k0 = 9 ---- -- [9, 'tuple 9'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (10, 'tuple 10') ---- -- [10, 'tuple 10'] -... -insert into t0 values (11, 'tuple 11') ---- -- [11, 'tuple 11'] -... -insert into t0 values (12, 'tuple 12') ---- -- [12, 'tuple 12'] -... -insert into t0 values (13, 'tuple 13') ---- -- [13, 'tuple 13'] -... -insert into t0 values (14, 'tuple 14') ---- -- [14, 'tuple 14'] -... -select * from t0 where k0 = 10 ---- -- [10, 'tuple 10'] -... -select * from t0 where k0 = 11 ---- -- [11, 'tuple 11'] -... -select * from t0 where k0 = 12 ---- -- [12, 'tuple 12'] -... -select * from t0 where k0 = 13 ---- -- [13, 'tuple 13'] -... -select * from t0 where k0 = 14 ---- -- [14, 'tuple 14'] -... -insert into t0 values (15, 'tuple 15') ---- -- [15, 'tuple 15'] -... -insert into t0 values (16, 'tuple 16') ---- -- [16, 'tuple 16'] -... -insert into t0 values (17, 'tuple 17') ---- -- [17, 'tuple 17'] -... -insert into t0 values (18, 'tuple 18') ---- -- [18, 'tuple 18'] -... -insert into t0 values (19, 'tuple 19') ---- -- [19, 'tuple 19'] -... -select * from t0 where k0 = 15 ---- -- [15, 'tuple 15'] -... -select * from t0 where k0 = 16 ---- -- [16, 'tuple 16'] -... -select * from t0 where k0 = 17 ---- -- [17, 'tuple 17'] -... -select * from t0 where k0 = 18 ---- -- [18, 'tuple 18'] -... -select * from t0 where k0 = 19 ---- -- [19, 'tuple 19'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 1 iteration -insert into t0 values (20, 'tuple 20') ---- -- [20, 'tuple 20'] -... -insert into t0 values (21, 'tuple 21') ---- -- [21, 'tuple 21'] -... -insert into t0 values (22, 'tuple 22') ---- -- [22, 'tuple 22'] -... -insert into t0 values (23, 'tuple 23') ---- -- [23, 'tuple 23'] -... -insert into t0 values (24, 'tuple 24') ---- -- [24, 'tuple 24'] -... -select * from t0 where k0 = 20 ---- -- [20, 'tuple 20'] -... -select * from t0 where k0 = 21 ---- -- [21, 'tuple 21'] -... -select * from t0 where k0 = 22 ---- -- [22, 'tuple 22'] -... -select * from t0 where k0 = 23 ---- -- [23, 'tuple 23'] -... -select * from t0 where k0 = 24 ---- -- [24, 'tuple 24'] -... -insert into t0 values (25, 'tuple 25') ---- -- [25, 'tuple 25'] -... -insert into t0 values (26, 'tuple 26') ---- -- [26, 'tuple 26'] -... -insert into t0 values (27, 'tuple 27') ---- -- [27, 'tuple 27'] -... -insert into t0 values (28, 'tuple 28') ---- -- [28, 'tuple 28'] -... -insert into t0 values (29, 'tuple 29') ---- -- [29, 'tuple 29'] -... -select * from t0 where k0 = 25 ---- -- [25, 'tuple 25'] -... -select * from t0 where k0 = 26 ---- -- [26, 'tuple 26'] -... -select * from t0 where k0 = 27 ---- -- [27, 'tuple 27'] -... -select * from t0 where k0 = 28 ---- -- [28, 'tuple 28'] -... -select * from t0 where k0 = 29 ---- -- [29, 'tuple 29'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (30, 'tuple 30') ---- -- [30, 'tuple 30'] -... -insert into t0 values (31, 'tuple 31') ---- -- [31, 'tuple 31'] -... -insert into t0 values (32, 'tuple 32') ---- -- [32, 'tuple 32'] -... -insert into t0 values (33, 'tuple 33') ---- -- [33, 'tuple 33'] -... -insert into t0 values (34, 'tuple 34') ---- -- [34, 'tuple 34'] -... -select * from t0 where k0 = 30 ---- -- [30, 'tuple 30'] -... -select * from t0 where k0 = 31 ---- -- [31, 'tuple 31'] -... -select * from t0 where k0 = 32 ---- -- [32, 'tuple 32'] -... -select * from t0 where k0 = 33 ---- -- [33, 'tuple 33'] -... -select * from t0 where k0 = 34 ---- -- [34, 'tuple 34'] -... -insert into t0 values (35, 'tuple 35') ---- -- [35, 'tuple 35'] -... -insert into t0 values (36, 'tuple 36') ---- -- [36, 'tuple 36'] -... -insert into t0 values (37, 'tuple 37') ---- -- [37, 'tuple 37'] -... -insert into t0 values (38, 'tuple 38') ---- -- [38, 'tuple 38'] -... -insert into t0 values (39, 'tuple 39') ---- -- [39, 'tuple 39'] -... -select * from t0 where k0 = 35 ---- -- [35, 'tuple 35'] -... -select * from t0 where k0 = 36 ---- -- [36, 'tuple 36'] -... -select * from t0 where k0 = 37 ---- -- [37, 'tuple 37'] -... -select * from t0 where k0 = 38 ---- -- [38, 'tuple 38'] -... -select * from t0 where k0 = 39 ---- -- [39, 'tuple 39'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 2 iteration -insert into t0 values (40, 'tuple 40') ---- -- [40, 'tuple 40'] -... -insert into t0 values (41, 'tuple 41') ---- -- [41, 'tuple 41'] -... -insert into t0 values (42, 'tuple 42') ---- -- [42, 'tuple 42'] -... -insert into t0 values (43, 'tuple 43') ---- -- [43, 'tuple 43'] -... -insert into t0 values (44, 'tuple 44') ---- -- [44, 'tuple 44'] -... -select * from t0 where k0 = 40 ---- -- [40, 'tuple 40'] -... -select * from t0 where k0 = 41 ---- -- [41, 'tuple 41'] -... -select * from t0 where k0 = 42 ---- -- [42, 'tuple 42'] -... -select * from t0 where k0 = 43 ---- -- [43, 'tuple 43'] -... -select * from t0 where k0 = 44 ---- -- [44, 'tuple 44'] -... -insert into t0 values (45, 'tuple 45') ---- -- [45, 'tuple 45'] -... -insert into t0 values (46, 'tuple 46') ---- -- [46, 'tuple 46'] -... -insert into t0 values (47, 'tuple 47') ---- -- [47, 'tuple 47'] -... -insert into t0 values (48, 'tuple 48') ---- -- [48, 'tuple 48'] -... -insert into t0 values (49, 'tuple 49') ---- -- [49, 'tuple 49'] -... -select * from t0 where k0 = 45 ---- -- [45, 'tuple 45'] -... -select * from t0 where k0 = 46 ---- -- [46, 'tuple 46'] -... -select * from t0 where k0 = 47 ---- -- [47, 'tuple 47'] -... -select * from t0 where k0 = 48 ---- -- [48, 'tuple 48'] -... -select * from t0 where k0 = 49 ---- -- [49, 'tuple 49'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (50, 'tuple 50') ---- -- [50, 'tuple 50'] -... -insert into t0 values (51, 'tuple 51') ---- -- [51, 'tuple 51'] -... -insert into t0 values (52, 'tuple 52') ---- -- [52, 'tuple 52'] -... -insert into t0 values (53, 'tuple 53') ---- -- [53, 'tuple 53'] -... -insert into t0 values (54, 'tuple 54') ---- -- [54, 'tuple 54'] -... -select * from t0 where k0 = 50 ---- -- [50, 'tuple 50'] -... -select * from t0 where k0 = 51 ---- -- [51, 'tuple 51'] -... -select * from t0 where k0 = 52 ---- -- [52, 'tuple 52'] -... -select * from t0 where k0 = 53 ---- -- [53, 'tuple 53'] -... -select * from t0 where k0 = 54 ---- -- [54, 'tuple 54'] -... -insert into t0 values (55, 'tuple 55') ---- -- [55, 'tuple 55'] -... -insert into t0 values (56, 'tuple 56') ---- -- [56, 'tuple 56'] -... -insert into t0 values (57, 'tuple 57') ---- -- [57, 'tuple 57'] -... -insert into t0 values (58, 'tuple 58') ---- -- [58, 'tuple 58'] -... -insert into t0 values (59, 'tuple 59') ---- -- [59, 'tuple 59'] -... -select * from t0 where k0 = 55 ---- -- [55, 'tuple 55'] -... -select * from t0 where k0 = 56 ---- -- [56, 'tuple 56'] -... -select * from t0 where k0 = 57 ---- -- [57, 'tuple 57'] -... -select * from t0 where k0 = 58 ---- -- [58, 'tuple 58'] -... -select * from t0 where k0 = 59 ---- -- [59, 'tuple 59'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 3 iteration -insert into t0 values (60, 'tuple 60') ---- -- [60, 'tuple 60'] -... -insert into t0 values (61, 'tuple 61') ---- -- [61, 'tuple 61'] -... -insert into t0 values (62, 'tuple 62') ---- -- [62, 'tuple 62'] -... -insert into t0 values (63, 'tuple 63') ---- -- [63, 'tuple 63'] -... -insert into t0 values (64, 'tuple 64') ---- -- [64, 'tuple 64'] -... -select * from t0 where k0 = 60 ---- -- [60, 'tuple 60'] -... -select * from t0 where k0 = 61 ---- -- [61, 'tuple 61'] -... -select * from t0 where k0 = 62 ---- -- [62, 'tuple 62'] -... -select * from t0 where k0 = 63 ---- -- [63, 'tuple 63'] -... -select * from t0 where k0 = 64 ---- -- [64, 'tuple 64'] -... -insert into t0 values (65, 'tuple 65') ---- -- [65, 'tuple 65'] -... -insert into t0 values (66, 'tuple 66') ---- -- [66, 'tuple 66'] -... -insert into t0 values (67, 'tuple 67') ---- -- [67, 'tuple 67'] -... -insert into t0 values (68, 'tuple 68') ---- -- [68, 'tuple 68'] -... -insert into t0 values (69, 'tuple 69') ---- -- [69, 'tuple 69'] -... -select * from t0 where k0 = 65 ---- -- [65, 'tuple 65'] -... -select * from t0 where k0 = 66 ---- -- [66, 'tuple 66'] -... -select * from t0 where k0 = 67 ---- -- [67, 'tuple 67'] -... -select * from t0 where k0 = 68 ---- -- [68, 'tuple 68'] -... -select * from t0 where k0 = 69 ---- -- [69, 'tuple 69'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (70, 'tuple 70') ---- -- [70, 'tuple 70'] -... -insert into t0 values (71, 'tuple 71') ---- -- [71, 'tuple 71'] -... -insert into t0 values (72, 'tuple 72') ---- -- [72, 'tuple 72'] -... -insert into t0 values (73, 'tuple 73') ---- -- [73, 'tuple 73'] -... -insert into t0 values (74, 'tuple 74') ---- -- [74, 'tuple 74'] -... -select * from t0 where k0 = 70 ---- -- [70, 'tuple 70'] -... -select * from t0 where k0 = 71 ---- -- [71, 'tuple 71'] -... -select * from t0 where k0 = 72 ---- -- [72, 'tuple 72'] -... -select * from t0 where k0 = 73 ---- -- [73, 'tuple 73'] -... -select * from t0 where k0 = 74 ---- -- [74, 'tuple 74'] -... -insert into t0 values (75, 'tuple 75') ---- -- [75, 'tuple 75'] -... -insert into t0 values (76, 'tuple 76') ---- -- [76, 'tuple 76'] -... -insert into t0 values (77, 'tuple 77') ---- -- [77, 'tuple 77'] -... -insert into t0 values (78, 'tuple 78') ---- -- [78, 'tuple 78'] -... -insert into t0 values (79, 'tuple 79') ---- -- [79, 'tuple 79'] -... -select * from t0 where k0 = 75 ---- -- [75, 'tuple 75'] -... -select * from t0 where k0 = 76 ---- -- [76, 'tuple 76'] -... -select * from t0 where k0 = 77 ---- -- [77, 'tuple 77'] -... -select * from t0 where k0 = 78 ---- -- [78, 'tuple 78'] -... -select * from t0 where k0 = 79 ---- -- [79, 'tuple 79'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 4 iteration -insert into t0 values (80, 'tuple 80') ---- -- [80, 'tuple 80'] -... -insert into t0 values (81, 'tuple 81') ---- -- [81, 'tuple 81'] -... -insert into t0 values (82, 'tuple 82') ---- -- [82, 'tuple 82'] -... -insert into t0 values (83, 'tuple 83') ---- -- [83, 'tuple 83'] -... -insert into t0 values (84, 'tuple 84') ---- -- [84, 'tuple 84'] -... -select * from t0 where k0 = 80 ---- -- [80, 'tuple 80'] -... -select * from t0 where k0 = 81 ---- -- [81, 'tuple 81'] -... -select * from t0 where k0 = 82 ---- -- [82, 'tuple 82'] -... -select * from t0 where k0 = 83 ---- -- [83, 'tuple 83'] -... -select * from t0 where k0 = 84 ---- -- [84, 'tuple 84'] -... -insert into t0 values (85, 'tuple 85') ---- -- [85, 'tuple 85'] -... -insert into t0 values (86, 'tuple 86') ---- -- [86, 'tuple 86'] -... -insert into t0 values (87, 'tuple 87') ---- -- [87, 'tuple 87'] -... -insert into t0 values (88, 'tuple 88') ---- -- [88, 'tuple 88'] -... -insert into t0 values (89, 'tuple 89') ---- -- [89, 'tuple 89'] -... -select * from t0 where k0 = 85 ---- -- [85, 'tuple 85'] -... -select * from t0 where k0 = 86 ---- -- [86, 'tuple 86'] -... -select * from t0 where k0 = 87 ---- -- [87, 'tuple 87'] -... -select * from t0 where k0 = 88 ---- -- [88, 'tuple 88'] -... -select * from t0 where k0 = 89 ---- -- [89, 'tuple 89'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (90, 'tuple 90') ---- -- [90, 'tuple 90'] -... -insert into t0 values (91, 'tuple 91') ---- -- [91, 'tuple 91'] -... -insert into t0 values (92, 'tuple 92') ---- -- [92, 'tuple 92'] -... -insert into t0 values (93, 'tuple 93') ---- -- [93, 'tuple 93'] -... -insert into t0 values (94, 'tuple 94') ---- -- [94, 'tuple 94'] -... -select * from t0 where k0 = 90 ---- -- [90, 'tuple 90'] -... -select * from t0 where k0 = 91 ---- -- [91, 'tuple 91'] -... -select * from t0 where k0 = 92 ---- -- [92, 'tuple 92'] -... -select * from t0 where k0 = 93 ---- -- [93, 'tuple 93'] -... -select * from t0 where k0 = 94 ---- -- [94, 'tuple 94'] -... -insert into t0 values (95, 'tuple 95') ---- -- [95, 'tuple 95'] -... -insert into t0 values (96, 'tuple 96') ---- -- [96, 'tuple 96'] -... -insert into t0 values (97, 'tuple 97') ---- -- [97, 'tuple 97'] -... -insert into t0 values (98, 'tuple 98') ---- -- [98, 'tuple 98'] -... -insert into t0 values (99, 'tuple 99') ---- -- [99, 'tuple 99'] -... -select * from t0 where k0 = 95 ---- -- [95, 'tuple 95'] -... -select * from t0 where k0 = 96 ---- -- [96, 'tuple 96'] -... -select * from t0 where k0 = 97 ---- -- [97, 'tuple 97'] -... -select * from t0 where k0 = 98 ---- -- [98, 'tuple 98'] -... -select * from t0 where k0 = 99 ---- -- [99, 'tuple 99'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 5 iteration -insert into t0 values (100, 'tuple 100') ---- -- [100, 'tuple 100'] -... -insert into t0 values (101, 'tuple 101') ---- -- [101, 'tuple 101'] -... -insert into t0 values (102, 'tuple 102') ---- -- [102, 'tuple 102'] -... -insert into t0 values (103, 'tuple 103') ---- -- [103, 'tuple 103'] -... -insert into t0 values (104, 'tuple 104') ---- -- [104, 'tuple 104'] -... -select * from t0 where k0 = 100 ---- -- [100, 'tuple 100'] -... -select * from t0 where k0 = 101 ---- -- [101, 'tuple 101'] -... -select * from t0 where k0 = 102 ---- -- [102, 'tuple 102'] -... -select * from t0 where k0 = 103 ---- -- [103, 'tuple 103'] -... -select * from t0 where k0 = 104 ---- -- [104, 'tuple 104'] -... -insert into t0 values (105, 'tuple 105') ---- -- [105, 'tuple 105'] -... -insert into t0 values (106, 'tuple 106') ---- -- [106, 'tuple 106'] -... -insert into t0 values (107, 'tuple 107') ---- -- [107, 'tuple 107'] -... -insert into t0 values (108, 'tuple 108') ---- -- [108, 'tuple 108'] -... -insert into t0 values (109, 'tuple 109') ---- -- [109, 'tuple 109'] -... -select * from t0 where k0 = 105 ---- -- [105, 'tuple 105'] -... -select * from t0 where k0 = 106 ---- -- [106, 'tuple 106'] -... -select * from t0 where k0 = 107 ---- -- [107, 'tuple 107'] -... -select * from t0 where k0 = 108 ---- -- [108, 'tuple 108'] -... -select * from t0 where k0 = 109 ---- -- [109, 'tuple 109'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (110, 'tuple 110') ---- -- [110, 'tuple 110'] -... -insert into t0 values (111, 'tuple 111') ---- -- [111, 'tuple 111'] -... -insert into t0 values (112, 'tuple 112') ---- -- [112, 'tuple 112'] -... -insert into t0 values (113, 'tuple 113') ---- -- [113, 'tuple 113'] -... -insert into t0 values (114, 'tuple 114') ---- -- [114, 'tuple 114'] -... -select * from t0 where k0 = 110 ---- -- [110, 'tuple 110'] -... -select * from t0 where k0 = 111 ---- -- [111, 'tuple 111'] -... -select * from t0 where k0 = 112 ---- -- [112, 'tuple 112'] -... -select * from t0 where k0 = 113 ---- -- [113, 'tuple 113'] -... -select * from t0 where k0 = 114 ---- -- [114, 'tuple 114'] -... -insert into t0 values (115, 'tuple 115') ---- -- [115, 'tuple 115'] -... -insert into t0 values (116, 'tuple 116') ---- -- [116, 'tuple 116'] -... -insert into t0 values (117, 'tuple 117') ---- -- [117, 'tuple 117'] -... -insert into t0 values (118, 'tuple 118') ---- -- [118, 'tuple 118'] -... -insert into t0 values (119, 'tuple 119') ---- -- [119, 'tuple 119'] -... -select * from t0 where k0 = 115 ---- -- [115, 'tuple 115'] -... -select * from t0 where k0 = 116 ---- -- [116, 'tuple 116'] -... -select * from t0 where k0 = 117 ---- -- [117, 'tuple 117'] -... -select * from t0 where k0 = 118 ---- -- [118, 'tuple 118'] -... -select * from t0 where k0 = 119 ---- -- [119, 'tuple 119'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 6 iteration -insert into t0 values (120, 'tuple 120') ---- -- [120, 'tuple 120'] -... -insert into t0 values (121, 'tuple 121') ---- -- [121, 'tuple 121'] -... -insert into t0 values (122, 'tuple 122') ---- -- [122, 'tuple 122'] -... -insert into t0 values (123, 'tuple 123') ---- -- [123, 'tuple 123'] -... -insert into t0 values (124, 'tuple 124') ---- -- [124, 'tuple 124'] -... -select * from t0 where k0 = 120 ---- -- [120, 'tuple 120'] -... -select * from t0 where k0 = 121 ---- -- [121, 'tuple 121'] -... -select * from t0 where k0 = 122 ---- -- [122, 'tuple 122'] -... -select * from t0 where k0 = 123 ---- -- [123, 'tuple 123'] -... -select * from t0 where k0 = 124 ---- -- [124, 'tuple 124'] -... -insert into t0 values (125, 'tuple 125') ---- -- [125, 'tuple 125'] -... -insert into t0 values (126, 'tuple 126') ---- -- [126, 'tuple 126'] -... -insert into t0 values (127, 'tuple 127') ---- -- [127, 'tuple 127'] -... -insert into t0 values (128, 'tuple 128') ---- -- [128, 'tuple 128'] -... -insert into t0 values (129, 'tuple 129') ---- -- [129, 'tuple 129'] -... -select * from t0 where k0 = 125 ---- -- [125, 'tuple 125'] -... -select * from t0 where k0 = 126 ---- -- [126, 'tuple 126'] -... -select * from t0 where k0 = 127 ---- -- [127, 'tuple 127'] -... -select * from t0 where k0 = 128 ---- -- [128, 'tuple 128'] -... -select * from t0 where k0 = 129 ---- -- [129, 'tuple 129'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (130, 'tuple 130') ---- -- [130, 'tuple 130'] -... -insert into t0 values (131, 'tuple 131') ---- -- [131, 'tuple 131'] -... -insert into t0 values (132, 'tuple 132') ---- -- [132, 'tuple 132'] -... -insert into t0 values (133, 'tuple 133') ---- -- [133, 'tuple 133'] -... -insert into t0 values (134, 'tuple 134') ---- -- [134, 'tuple 134'] -... -select * from t0 where k0 = 130 ---- -- [130, 'tuple 130'] -... -select * from t0 where k0 = 131 ---- -- [131, 'tuple 131'] -... -select * from t0 where k0 = 132 ---- -- [132, 'tuple 132'] -... -select * from t0 where k0 = 133 ---- -- [133, 'tuple 133'] -... -select * from t0 where k0 = 134 ---- -- [134, 'tuple 134'] -... -insert into t0 values (135, 'tuple 135') ---- -- [135, 'tuple 135'] -... -insert into t0 values (136, 'tuple 136') ---- -- [136, 'tuple 136'] -... -insert into t0 values (137, 'tuple 137') ---- -- [137, 'tuple 137'] -... -insert into t0 values (138, 'tuple 138') ---- -- [138, 'tuple 138'] -... -insert into t0 values (139, 'tuple 139') ---- -- [139, 'tuple 139'] -... -select * from t0 where k0 = 135 ---- -- [135, 'tuple 135'] -... -select * from t0 where k0 = 136 ---- -- [136, 'tuple 136'] -... -select * from t0 where k0 = 137 ---- -- [137, 'tuple 137'] -... -select * from t0 where k0 = 138 ---- -- [138, 'tuple 138'] -... -select * from t0 where k0 = 139 ---- -- [139, 'tuple 139'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 7 iteration -insert into t0 values (140, 'tuple 140') ---- -- [140, 'tuple 140'] -... -insert into t0 values (141, 'tuple 141') ---- -- [141, 'tuple 141'] -... -insert into t0 values (142, 'tuple 142') ---- -- [142, 'tuple 142'] -... -insert into t0 values (143, 'tuple 143') ---- -- [143, 'tuple 143'] -... -insert into t0 values (144, 'tuple 144') ---- -- [144, 'tuple 144'] -... -select * from t0 where k0 = 140 ---- -- [140, 'tuple 140'] -... -select * from t0 where k0 = 141 ---- -- [141, 'tuple 141'] -... -select * from t0 where k0 = 142 ---- -- [142, 'tuple 142'] -... -select * from t0 where k0 = 143 ---- -- [143, 'tuple 143'] -... -select * from t0 where k0 = 144 ---- -- [144, 'tuple 144'] -... -insert into t0 values (145, 'tuple 145') ---- -- [145, 'tuple 145'] -... -insert into t0 values (146, 'tuple 146') ---- -- [146, 'tuple 146'] -... -insert into t0 values (147, 'tuple 147') ---- -- [147, 'tuple 147'] -... -insert into t0 values (148, 'tuple 148') ---- -- [148, 'tuple 148'] -... -insert into t0 values (149, 'tuple 149') ---- -- [149, 'tuple 149'] -... -select * from t0 where k0 = 145 ---- -- [145, 'tuple 145'] -... -select * from t0 where k0 = 146 ---- -- [146, 'tuple 146'] -... -select * from t0 where k0 = 147 ---- -- [147, 'tuple 147'] -... -select * from t0 where k0 = 148 ---- -- [148, 'tuple 148'] -... -select * from t0 where k0 = 149 ---- -- [149, 'tuple 149'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (150, 'tuple 150') ---- -- [150, 'tuple 150'] -... -insert into t0 values (151, 'tuple 151') ---- -- [151, 'tuple 151'] -... -insert into t0 values (152, 'tuple 152') ---- -- [152, 'tuple 152'] -... -insert into t0 values (153, 'tuple 153') ---- -- [153, 'tuple 153'] -... -insert into t0 values (154, 'tuple 154') ---- -- [154, 'tuple 154'] -... -select * from t0 where k0 = 150 ---- -- [150, 'tuple 150'] -... -select * from t0 where k0 = 151 ---- -- [151, 'tuple 151'] -... -select * from t0 where k0 = 152 ---- -- [152, 'tuple 152'] -... -select * from t0 where k0 = 153 ---- -- [153, 'tuple 153'] -... -select * from t0 where k0 = 154 ---- -- [154, 'tuple 154'] -... -insert into t0 values (155, 'tuple 155') ---- -- [155, 'tuple 155'] -... -insert into t0 values (156, 'tuple 156') ---- -- [156, 'tuple 156'] -... -insert into t0 values (157, 'tuple 157') ---- -- [157, 'tuple 157'] -... -insert into t0 values (158, 'tuple 158') ---- -- [158, 'tuple 158'] -... -insert into t0 values (159, 'tuple 159') ---- -- [159, 'tuple 159'] -... -select * from t0 where k0 = 155 ---- -- [155, 'tuple 155'] -... -select * from t0 where k0 = 156 ---- -- [156, 'tuple 156'] -... -select * from t0 where k0 = 157 ---- -- [157, 'tuple 157'] -... -select * from t0 where k0 = 158 ---- -- [158, 'tuple 158'] -... -select * from t0 where k0 = 159 ---- -- [159, 'tuple 159'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 8 iteration -insert into t0 values (160, 'tuple 160') ---- -- [160, 'tuple 160'] -... -insert into t0 values (161, 'tuple 161') ---- -- [161, 'tuple 161'] -... -insert into t0 values (162, 'tuple 162') ---- -- [162, 'tuple 162'] -... -insert into t0 values (163, 'tuple 163') ---- -- [163, 'tuple 163'] -... -insert into t0 values (164, 'tuple 164') ---- -- [164, 'tuple 164'] -... -select * from t0 where k0 = 160 ---- -- [160, 'tuple 160'] -... -select * from t0 where k0 = 161 ---- -- [161, 'tuple 161'] -... -select * from t0 where k0 = 162 ---- -- [162, 'tuple 162'] -... -select * from t0 where k0 = 163 ---- -- [163, 'tuple 163'] -... -select * from t0 where k0 = 164 ---- -- [164, 'tuple 164'] -... -insert into t0 values (165, 'tuple 165') ---- -- [165, 'tuple 165'] -... -insert into t0 values (166, 'tuple 166') ---- -- [166, 'tuple 166'] -... -insert into t0 values (167, 'tuple 167') ---- -- [167, 'tuple 167'] -... -insert into t0 values (168, 'tuple 168') ---- -- [168, 'tuple 168'] -... -insert into t0 values (169, 'tuple 169') ---- -- [169, 'tuple 169'] -... -select * from t0 where k0 = 165 ---- -- [165, 'tuple 165'] -... -select * from t0 where k0 = 166 ---- -- [166, 'tuple 166'] -... -select * from t0 where k0 = 167 ---- -- [167, 'tuple 167'] -... -select * from t0 where k0 = 168 ---- -- [168, 'tuple 168'] -... -select * from t0 where k0 = 169 ---- -- [169, 'tuple 169'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (170, 'tuple 170') ---- -- [170, 'tuple 170'] -... -insert into t0 values (171, 'tuple 171') ---- -- [171, 'tuple 171'] -... -insert into t0 values (172, 'tuple 172') ---- -- [172, 'tuple 172'] -... -insert into t0 values (173, 'tuple 173') ---- -- [173, 'tuple 173'] -... -insert into t0 values (174, 'tuple 174') ---- -- [174, 'tuple 174'] -... -select * from t0 where k0 = 170 ---- -- [170, 'tuple 170'] -... -select * from t0 where k0 = 171 ---- -- [171, 'tuple 171'] -... -select * from t0 where k0 = 172 ---- -- [172, 'tuple 172'] -... -select * from t0 where k0 = 173 ---- -- [173, 'tuple 173'] -... -select * from t0 where k0 = 174 ---- -- [174, 'tuple 174'] -... -insert into t0 values (175, 'tuple 175') ---- -- [175, 'tuple 175'] -... -insert into t0 values (176, 'tuple 176') ---- -- [176, 'tuple 176'] -... -insert into t0 values (177, 'tuple 177') ---- -- [177, 'tuple 177'] -... -insert into t0 values (178, 'tuple 178') ---- -- [178, 'tuple 178'] -... -insert into t0 values (179, 'tuple 179') ---- -- [179, 'tuple 179'] -... -select * from t0 where k0 = 175 ---- -- [175, 'tuple 175'] -... -select * from t0 where k0 = 176 ---- -- [176, 'tuple 176'] -... -select * from t0 where k0 = 177 ---- -- [177, 'tuple 177'] -... -select * from t0 where k0 = 178 ---- -- [178, 'tuple 178'] -... -select * from t0 where k0 = 179 ---- -- [179, 'tuple 179'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 9 iteration -insert into t0 values (180, 'tuple 180') ---- -- [180, 'tuple 180'] -... -insert into t0 values (181, 'tuple 181') ---- -- [181, 'tuple 181'] -... -insert into t0 values (182, 'tuple 182') ---- -- [182, 'tuple 182'] -... -insert into t0 values (183, 'tuple 183') ---- -- [183, 'tuple 183'] -... -insert into t0 values (184, 'tuple 184') ---- -- [184, 'tuple 184'] -... -select * from t0 where k0 = 180 ---- -- [180, 'tuple 180'] -... -select * from t0 where k0 = 181 ---- -- [181, 'tuple 181'] -... -select * from t0 where k0 = 182 ---- -- [182, 'tuple 182'] -... -select * from t0 where k0 = 183 ---- -- [183, 'tuple 183'] -... -select * from t0 where k0 = 184 ---- -- [184, 'tuple 184'] -... -insert into t0 values (185, 'tuple 185') ---- -- [185, 'tuple 185'] -... -insert into t0 values (186, 'tuple 186') ---- -- [186, 'tuple 186'] -... -insert into t0 values (187, 'tuple 187') ---- -- [187, 'tuple 187'] -... -insert into t0 values (188, 'tuple 188') ---- -- [188, 'tuple 188'] -... -insert into t0 values (189, 'tuple 189') ---- -- [189, 'tuple 189'] -... -select * from t0 where k0 = 185 ---- -- [185, 'tuple 185'] -... -select * from t0 where k0 = 186 ---- -- [186, 'tuple 186'] -... -select * from t0 where k0 = 187 ---- -- [187, 'tuple 187'] -... -select * from t0 where k0 = 188 ---- -- [188, 'tuple 188'] -... -select * from t0 where k0 = 189 ---- -- [189, 'tuple 189'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (190, 'tuple 190') ---- -- [190, 'tuple 190'] -... -insert into t0 values (191, 'tuple 191') ---- -- [191, 'tuple 191'] -... -insert into t0 values (192, 'tuple 192') ---- -- [192, 'tuple 192'] -... -insert into t0 values (193, 'tuple 193') ---- -- [193, 'tuple 193'] -... -insert into t0 values (194, 'tuple 194') ---- -- [194, 'tuple 194'] -... -select * from t0 where k0 = 190 ---- -- [190, 'tuple 190'] -... -select * from t0 where k0 = 191 ---- -- [191, 'tuple 191'] -... -select * from t0 where k0 = 192 ---- -- [192, 'tuple 192'] -... -select * from t0 where k0 = 193 ---- -- [193, 'tuple 193'] -... -select * from t0 where k0 = 194 ---- -- [194, 'tuple 194'] -... -insert into t0 values (195, 'tuple 195') ---- -- [195, 'tuple 195'] -... -insert into t0 values (196, 'tuple 196') ---- -- [196, 'tuple 196'] -... -insert into t0 values (197, 'tuple 197') ---- -- [197, 'tuple 197'] -... -insert into t0 values (198, 'tuple 198') ---- -- [198, 'tuple 198'] -... -insert into t0 values (199, 'tuple 199') ---- -- [199, 'tuple 199'] -... -select * from t0 where k0 = 195 ---- -- [195, 'tuple 195'] -... -select * from t0 where k0 = 196 ---- -- [196, 'tuple 196'] -... -select * from t0 where k0 = 197 ---- -- [197, 'tuple 197'] -... -select * from t0 where k0 = 198 ---- -- [198, 'tuple 198'] -... -select * from t0 where k0 = 199 ---- -- [199, 'tuple 199'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 10 iteration -insert into t0 values (200, 'tuple 200') ---- -- [200, 'tuple 200'] -... -insert into t0 values (201, 'tuple 201') ---- -- [201, 'tuple 201'] -... -insert into t0 values (202, 'tuple 202') ---- -- [202, 'tuple 202'] -... -insert into t0 values (203, 'tuple 203') ---- -- [203, 'tuple 203'] -... -insert into t0 values (204, 'tuple 204') ---- -- [204, 'tuple 204'] -... -select * from t0 where k0 = 200 ---- -- [200, 'tuple 200'] -... -select * from t0 where k0 = 201 ---- -- [201, 'tuple 201'] -... -select * from t0 where k0 = 202 ---- -- [202, 'tuple 202'] -... -select * from t0 where k0 = 203 ---- -- [203, 'tuple 203'] -... -select * from t0 where k0 = 204 ---- -- [204, 'tuple 204'] -... -insert into t0 values (205, 'tuple 205') ---- -- [205, 'tuple 205'] -... -insert into t0 values (206, 'tuple 206') ---- -- [206, 'tuple 206'] -... -insert into t0 values (207, 'tuple 207') ---- -- [207, 'tuple 207'] -... -insert into t0 values (208, 'tuple 208') ---- -- [208, 'tuple 208'] -... -insert into t0 values (209, 'tuple 209') ---- -- [209, 'tuple 209'] -... -select * from t0 where k0 = 205 ---- -- [205, 'tuple 205'] -... -select * from t0 where k0 = 206 ---- -- [206, 'tuple 206'] -... -select * from t0 where k0 = 207 ---- -- [207, 'tuple 207'] -... -select * from t0 where k0 = 208 ---- -- [208, 'tuple 208'] -... -select * from t0 where k0 = 209 ---- -- [209, 'tuple 209'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (210, 'tuple 210') ---- -- [210, 'tuple 210'] -... -insert into t0 values (211, 'tuple 211') ---- -- [211, 'tuple 211'] -... -insert into t0 values (212, 'tuple 212') ---- -- [212, 'tuple 212'] -... -insert into t0 values (213, 'tuple 213') ---- -- [213, 'tuple 213'] -... -insert into t0 values (214, 'tuple 214') ---- -- [214, 'tuple 214'] -... -select * from t0 where k0 = 210 ---- -- [210, 'tuple 210'] -... -select * from t0 where k0 = 211 ---- -- [211, 'tuple 211'] -... -select * from t0 where k0 = 212 ---- -- [212, 'tuple 212'] -... -select * from t0 where k0 = 213 ---- -- [213, 'tuple 213'] -... -select * from t0 where k0 = 214 ---- -- [214, 'tuple 214'] -... -insert into t0 values (215, 'tuple 215') ---- -- [215, 'tuple 215'] -... -insert into t0 values (216, 'tuple 216') ---- -- [216, 'tuple 216'] -... -insert into t0 values (217, 'tuple 217') ---- -- [217, 'tuple 217'] -... -insert into t0 values (218, 'tuple 218') ---- -- [218, 'tuple 218'] -... -insert into t0 values (219, 'tuple 219') ---- -- [219, 'tuple 219'] -... -select * from t0 where k0 = 215 ---- -- [215, 'tuple 215'] -... -select * from t0 where k0 = 216 ---- -- [216, 'tuple 216'] -... -select * from t0 where k0 = 217 ---- -- [217, 'tuple 217'] -... -select * from t0 where k0 = 218 ---- -- [218, 'tuple 218'] -... -select * from t0 where k0 = 219 ---- -- [219, 'tuple 219'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 11 iteration -insert into t0 values (220, 'tuple 220') ---- -- [220, 'tuple 220'] -... -insert into t0 values (221, 'tuple 221') ---- -- [221, 'tuple 221'] -... -insert into t0 values (222, 'tuple 222') ---- -- [222, 'tuple 222'] -... -insert into t0 values (223, 'tuple 223') ---- -- [223, 'tuple 223'] -... -insert into t0 values (224, 'tuple 224') ---- -- [224, 'tuple 224'] -... -select * from t0 where k0 = 220 ---- -- [220, 'tuple 220'] -... -select * from t0 where k0 = 221 ---- -- [221, 'tuple 221'] -... -select * from t0 where k0 = 222 ---- -- [222, 'tuple 222'] -... -select * from t0 where k0 = 223 ---- -- [223, 'tuple 223'] -... -select * from t0 where k0 = 224 ---- -- [224, 'tuple 224'] -... -insert into t0 values (225, 'tuple 225') ---- -- [225, 'tuple 225'] -... -insert into t0 values (226, 'tuple 226') ---- -- [226, 'tuple 226'] -... -insert into t0 values (227, 'tuple 227') ---- -- [227, 'tuple 227'] -... -insert into t0 values (228, 'tuple 228') ---- -- [228, 'tuple 228'] -... -insert into t0 values (229, 'tuple 229') ---- -- [229, 'tuple 229'] -... -select * from t0 where k0 = 225 ---- -- [225, 'tuple 225'] -... -select * from t0 where k0 = 226 ---- -- [226, 'tuple 226'] -... -select * from t0 where k0 = 227 ---- -- [227, 'tuple 227'] -... -select * from t0 where k0 = 228 ---- -- [228, 'tuple 228'] -... -select * from t0 where k0 = 229 ---- -- [229, 'tuple 229'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (230, 'tuple 230') ---- -- [230, 'tuple 230'] -... -insert into t0 values (231, 'tuple 231') ---- -- [231, 'tuple 231'] -... -insert into t0 values (232, 'tuple 232') ---- -- [232, 'tuple 232'] -... -insert into t0 values (233, 'tuple 233') ---- -- [233, 'tuple 233'] -... -insert into t0 values (234, 'tuple 234') ---- -- [234, 'tuple 234'] -... -select * from t0 where k0 = 230 ---- -- [230, 'tuple 230'] -... -select * from t0 where k0 = 231 ---- -- [231, 'tuple 231'] -... -select * from t0 where k0 = 232 ---- -- [232, 'tuple 232'] -... -select * from t0 where k0 = 233 ---- -- [233, 'tuple 233'] -... -select * from t0 where k0 = 234 ---- -- [234, 'tuple 234'] -... -insert into t0 values (235, 'tuple 235') ---- -- [235, 'tuple 235'] -... -insert into t0 values (236, 'tuple 236') ---- -- [236, 'tuple 236'] -... -insert into t0 values (237, 'tuple 237') ---- -- [237, 'tuple 237'] -... -insert into t0 values (238, 'tuple 238') ---- -- [238, 'tuple 238'] -... -insert into t0 values (239, 'tuple 239') ---- -- [239, 'tuple 239'] -... -select * from t0 where k0 = 235 ---- -- [235, 'tuple 235'] -... -select * from t0 where k0 = 236 ---- -- [236, 'tuple 236'] -... -select * from t0 where k0 = 237 ---- -- [237, 'tuple 237'] -... -select * from t0 where k0 = 238 ---- -- [238, 'tuple 238'] -... -select * from t0 where k0 = 239 ---- -- [239, 'tuple 239'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 12 iteration -insert into t0 values (240, 'tuple 240') ---- -- [240, 'tuple 240'] -... -insert into t0 values (241, 'tuple 241') ---- -- [241, 'tuple 241'] -... -insert into t0 values (242, 'tuple 242') ---- -- [242, 'tuple 242'] -... -insert into t0 values (243, 'tuple 243') ---- -- [243, 'tuple 243'] -... -insert into t0 values (244, 'tuple 244') ---- -- [244, 'tuple 244'] -... -select * from t0 where k0 = 240 ---- -- [240, 'tuple 240'] -... -select * from t0 where k0 = 241 ---- -- [241, 'tuple 241'] -... -select * from t0 where k0 = 242 ---- -- [242, 'tuple 242'] -... -select * from t0 where k0 = 243 ---- -- [243, 'tuple 243'] -... -select * from t0 where k0 = 244 ---- -- [244, 'tuple 244'] -... -insert into t0 values (245, 'tuple 245') ---- -- [245, 'tuple 245'] -... -insert into t0 values (246, 'tuple 246') ---- -- [246, 'tuple 246'] -... -insert into t0 values (247, 'tuple 247') ---- -- [247, 'tuple 247'] -... -insert into t0 values (248, 'tuple 248') ---- -- [248, 'tuple 248'] -... -insert into t0 values (249, 'tuple 249') ---- -- [249, 'tuple 249'] -... -select * from t0 where k0 = 245 ---- -- [245, 'tuple 245'] -... -select * from t0 where k0 = 246 ---- -- [246, 'tuple 246'] -... -select * from t0 where k0 = 247 ---- -- [247, 'tuple 247'] -... -select * from t0 where k0 = 248 ---- -- [248, 'tuple 248'] -... -select * from t0 where k0 = 249 ---- -- [249, 'tuple 249'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (250, 'tuple 250') ---- -- [250, 'tuple 250'] -... -insert into t0 values (251, 'tuple 251') ---- -- [251, 'tuple 251'] -... -insert into t0 values (252, 'tuple 252') ---- -- [252, 'tuple 252'] -... -insert into t0 values (253, 'tuple 253') ---- -- [253, 'tuple 253'] -... -insert into t0 values (254, 'tuple 254') ---- -- [254, 'tuple 254'] -... -select * from t0 where k0 = 250 ---- -- [250, 'tuple 250'] -... -select * from t0 where k0 = 251 ---- -- [251, 'tuple 251'] -... -select * from t0 where k0 = 252 ---- -- [252, 'tuple 252'] -... -select * from t0 where k0 = 253 ---- -- [253, 'tuple 253'] -... -select * from t0 where k0 = 254 ---- -- [254, 'tuple 254'] -... -insert into t0 values (255, 'tuple 255') ---- -- [255, 'tuple 255'] -... -insert into t0 values (256, 'tuple 256') ---- -- [256, 'tuple 256'] -... -insert into t0 values (257, 'tuple 257') ---- -- [257, 'tuple 257'] -... -insert into t0 values (258, 'tuple 258') ---- -- [258, 'tuple 258'] -... -insert into t0 values (259, 'tuple 259') ---- -- [259, 'tuple 259'] -... -select * from t0 where k0 = 255 ---- -- [255, 'tuple 255'] -... -select * from t0 where k0 = 256 ---- -- [256, 'tuple 256'] -... -select * from t0 where k0 = 257 ---- -- [257, 'tuple 257'] -... -select * from t0 where k0 = 258 ---- -- [258, 'tuple 258'] -... -select * from t0 where k0 = 259 ---- -- [259, 'tuple 259'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 13 iteration -insert into t0 values (260, 'tuple 260') ---- -- [260, 'tuple 260'] -... -insert into t0 values (261, 'tuple 261') ---- -- [261, 'tuple 261'] -... -insert into t0 values (262, 'tuple 262') ---- -- [262, 'tuple 262'] -... -insert into t0 values (263, 'tuple 263') ---- -- [263, 'tuple 263'] -... -insert into t0 values (264, 'tuple 264') ---- -- [264, 'tuple 264'] -... -select * from t0 where k0 = 260 ---- -- [260, 'tuple 260'] -... -select * from t0 where k0 = 261 ---- -- [261, 'tuple 261'] -... -select * from t0 where k0 = 262 ---- -- [262, 'tuple 262'] -... -select * from t0 where k0 = 263 ---- -- [263, 'tuple 263'] -... -select * from t0 where k0 = 264 ---- -- [264, 'tuple 264'] -... -insert into t0 values (265, 'tuple 265') ---- -- [265, 'tuple 265'] -... -insert into t0 values (266, 'tuple 266') ---- -- [266, 'tuple 266'] -... -insert into t0 values (267, 'tuple 267') ---- -- [267, 'tuple 267'] -... -insert into t0 values (268, 'tuple 268') ---- -- [268, 'tuple 268'] -... -insert into t0 values (269, 'tuple 269') ---- -- [269, 'tuple 269'] -... -select * from t0 where k0 = 265 ---- -- [265, 'tuple 265'] -... -select * from t0 where k0 = 266 ---- -- [266, 'tuple 266'] -... -select * from t0 where k0 = 267 ---- -- [267, 'tuple 267'] -... -select * from t0 where k0 = 268 ---- -- [268, 'tuple 268'] -... -select * from t0 where k0 = 269 ---- -- [269, 'tuple 269'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (270, 'tuple 270') ---- -- [270, 'tuple 270'] -... -insert into t0 values (271, 'tuple 271') ---- -- [271, 'tuple 271'] -... -insert into t0 values (272, 'tuple 272') ---- -- [272, 'tuple 272'] -... -insert into t0 values (273, 'tuple 273') ---- -- [273, 'tuple 273'] -... -insert into t0 values (274, 'tuple 274') ---- -- [274, 'tuple 274'] -... -select * from t0 where k0 = 270 ---- -- [270, 'tuple 270'] -... -select * from t0 where k0 = 271 ---- -- [271, 'tuple 271'] -... -select * from t0 where k0 = 272 ---- -- [272, 'tuple 272'] -... -select * from t0 where k0 = 273 ---- -- [273, 'tuple 273'] -... -select * from t0 where k0 = 274 ---- -- [274, 'tuple 274'] -... -insert into t0 values (275, 'tuple 275') ---- -- [275, 'tuple 275'] -... -insert into t0 values (276, 'tuple 276') ---- -- [276, 'tuple 276'] -... -insert into t0 values (277, 'tuple 277') ---- -- [277, 'tuple 277'] -... -insert into t0 values (278, 'tuple 278') ---- -- [278, 'tuple 278'] -... -insert into t0 values (279, 'tuple 279') ---- -- [279, 'tuple 279'] -... -select * from t0 where k0 = 275 ---- -- [275, 'tuple 275'] -... -select * from t0 where k0 = 276 ---- -- [276, 'tuple 276'] -... -select * from t0 where k0 = 277 ---- -- [277, 'tuple 277'] -... -select * from t0 where k0 = 278 ---- -- [278, 'tuple 278'] -... -select * from t0 where k0 = 279 ---- -- [279, 'tuple 279'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 14 iteration -insert into t0 values (280, 'tuple 280') ---- -- [280, 'tuple 280'] -... -insert into t0 values (281, 'tuple 281') ---- -- [281, 'tuple 281'] -... -insert into t0 values (282, 'tuple 282') ---- -- [282, 'tuple 282'] -... -insert into t0 values (283, 'tuple 283') ---- -- [283, 'tuple 283'] -... -insert into t0 values (284, 'tuple 284') ---- -- [284, 'tuple 284'] -... -select * from t0 where k0 = 280 ---- -- [280, 'tuple 280'] -... -select * from t0 where k0 = 281 ---- -- [281, 'tuple 281'] -... -select * from t0 where k0 = 282 ---- -- [282, 'tuple 282'] -... -select * from t0 where k0 = 283 ---- -- [283, 'tuple 283'] -... -select * from t0 where k0 = 284 ---- -- [284, 'tuple 284'] -... -insert into t0 values (285, 'tuple 285') ---- -- [285, 'tuple 285'] -... -insert into t0 values (286, 'tuple 286') ---- -- [286, 'tuple 286'] -... -insert into t0 values (287, 'tuple 287') ---- -- [287, 'tuple 287'] -... -insert into t0 values (288, 'tuple 288') ---- -- [288, 'tuple 288'] -... -insert into t0 values (289, 'tuple 289') ---- -- [289, 'tuple 289'] -... -select * from t0 where k0 = 285 ---- -- [285, 'tuple 285'] -... -select * from t0 where k0 = 286 ---- -- [286, 'tuple 286'] -... -select * from t0 where k0 = 287 ---- -- [287, 'tuple 287'] -... -select * from t0 where k0 = 288 ---- -- [288, 'tuple 288'] -... -select * from t0 where k0 = 289 ---- -- [289, 'tuple 289'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (290, 'tuple 290') ---- -- [290, 'tuple 290'] -... -insert into t0 values (291, 'tuple 291') ---- -- [291, 'tuple 291'] -... -insert into t0 values (292, 'tuple 292') ---- -- [292, 'tuple 292'] -... -insert into t0 values (293, 'tuple 293') ---- -- [293, 'tuple 293'] -... -insert into t0 values (294, 'tuple 294') ---- -- [294, 'tuple 294'] -... -select * from t0 where k0 = 290 ---- -- [290, 'tuple 290'] -... -select * from t0 where k0 = 291 ---- -- [291, 'tuple 291'] -... -select * from t0 where k0 = 292 ---- -- [292, 'tuple 292'] -... -select * from t0 where k0 = 293 ---- -- [293, 'tuple 293'] -... -select * from t0 where k0 = 294 ---- -- [294, 'tuple 294'] -... -insert into t0 values (295, 'tuple 295') ---- -- [295, 'tuple 295'] -... -insert into t0 values (296, 'tuple 296') ---- -- [296, 'tuple 296'] -... -insert into t0 values (297, 'tuple 297') ---- -- [297, 'tuple 297'] -... -insert into t0 values (298, 'tuple 298') ---- -- [298, 'tuple 298'] -... -insert into t0 values (299, 'tuple 299') ---- -- [299, 'tuple 299'] -... -select * from t0 where k0 = 295 ---- -- [295, 'tuple 295'] -... -select * from t0 where k0 = 296 ---- -- [296, 'tuple 296'] -... -select * from t0 where k0 = 297 ---- -- [297, 'tuple 297'] -... -select * from t0 where k0 = 298 ---- -- [298, 'tuple 298'] -... -select * from t0 where k0 = 299 ---- -- [299, 'tuple 299'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 15 iteration -insert into t0 values (300, 'tuple 300') ---- -- [300, 'tuple 300'] -... -insert into t0 values (301, 'tuple 301') ---- -- [301, 'tuple 301'] -... -insert into t0 values (302, 'tuple 302') ---- -- [302, 'tuple 302'] -... -insert into t0 values (303, 'tuple 303') ---- -- [303, 'tuple 303'] -... -insert into t0 values (304, 'tuple 304') ---- -- [304, 'tuple 304'] -... -select * from t0 where k0 = 300 ---- -- [300, 'tuple 300'] -... -select * from t0 where k0 = 301 ---- -- [301, 'tuple 301'] -... -select * from t0 where k0 = 302 ---- -- [302, 'tuple 302'] -... -select * from t0 where k0 = 303 ---- -- [303, 'tuple 303'] -... -select * from t0 where k0 = 304 ---- -- [304, 'tuple 304'] -... -insert into t0 values (305, 'tuple 305') ---- -- [305, 'tuple 305'] -... -insert into t0 values (306, 'tuple 306') ---- -- [306, 'tuple 306'] -... -insert into t0 values (307, 'tuple 307') ---- -- [307, 'tuple 307'] -... -insert into t0 values (308, 'tuple 308') ---- -- [308, 'tuple 308'] -... -insert into t0 values (309, 'tuple 309') ---- -- [309, 'tuple 309'] -... -select * from t0 where k0 = 305 ---- -- [305, 'tuple 305'] -... -select * from t0 where k0 = 306 ---- -- [306, 'tuple 306'] -... -select * from t0 where k0 = 307 ---- -- [307, 'tuple 307'] -... -select * from t0 where k0 = 308 ---- -- [308, 'tuple 308'] -... -select * from t0 where k0 = 309 ---- -- [309, 'tuple 309'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (310, 'tuple 310') ---- -- [310, 'tuple 310'] -... -insert into t0 values (311, 'tuple 311') ---- -- [311, 'tuple 311'] -... -insert into t0 values (312, 'tuple 312') ---- -- [312, 'tuple 312'] -... -insert into t0 values (313, 'tuple 313') ---- -- [313, 'tuple 313'] -... -insert into t0 values (314, 'tuple 314') ---- -- [314, 'tuple 314'] -... -select * from t0 where k0 = 310 ---- -- [310, 'tuple 310'] -... -select * from t0 where k0 = 311 ---- -- [311, 'tuple 311'] -... -select * from t0 where k0 = 312 ---- -- [312, 'tuple 312'] -... -select * from t0 where k0 = 313 ---- -- [313, 'tuple 313'] -... -select * from t0 where k0 = 314 ---- -- [314, 'tuple 314'] -... -insert into t0 values (315, 'tuple 315') ---- -- [315, 'tuple 315'] -... -insert into t0 values (316, 'tuple 316') ---- -- [316, 'tuple 316'] -... -insert into t0 values (317, 'tuple 317') ---- -- [317, 'tuple 317'] -... -insert into t0 values (318, 'tuple 318') ---- -- [318, 'tuple 318'] -... -insert into t0 values (319, 'tuple 319') ---- -- [319, 'tuple 319'] -... -select * from t0 where k0 = 315 ---- -- [315, 'tuple 315'] -... -select * from t0 where k0 = 316 ---- -- [316, 'tuple 316'] -... -select * from t0 where k0 = 317 ---- -- [317, 'tuple 317'] -... -select * from t0 where k0 = 318 ---- -- [318, 'tuple 318'] -... -select * from t0 where k0 = 319 ---- -- [319, 'tuple 319'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 16 iteration -insert into t0 values (320, 'tuple 320') ---- -- [320, 'tuple 320'] -... -insert into t0 values (321, 'tuple 321') ---- -- [321, 'tuple 321'] -... -insert into t0 values (322, 'tuple 322') ---- -- [322, 'tuple 322'] -... -insert into t0 values (323, 'tuple 323') ---- -- [323, 'tuple 323'] -... -insert into t0 values (324, 'tuple 324') ---- -- [324, 'tuple 324'] -... -select * from t0 where k0 = 320 ---- -- [320, 'tuple 320'] -... -select * from t0 where k0 = 321 ---- -- [321, 'tuple 321'] -... -select * from t0 where k0 = 322 ---- -- [322, 'tuple 322'] -... -select * from t0 where k0 = 323 ---- -- [323, 'tuple 323'] -... -select * from t0 where k0 = 324 ---- -- [324, 'tuple 324'] -... -insert into t0 values (325, 'tuple 325') ---- -- [325, 'tuple 325'] -... -insert into t0 values (326, 'tuple 326') ---- -- [326, 'tuple 326'] -... -insert into t0 values (327, 'tuple 327') ---- -- [327, 'tuple 327'] -... -insert into t0 values (328, 'tuple 328') ---- -- [328, 'tuple 328'] -... -insert into t0 values (329, 'tuple 329') ---- -- [329, 'tuple 329'] -... -select * from t0 where k0 = 325 ---- -- [325, 'tuple 325'] -... -select * from t0 where k0 = 326 ---- -- [326, 'tuple 326'] -... -select * from t0 where k0 = 327 ---- -- [327, 'tuple 327'] -... -select * from t0 where k0 = 328 ---- -- [328, 'tuple 328'] -... -select * from t0 where k0 = 329 ---- -- [329, 'tuple 329'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (330, 'tuple 330') ---- -- [330, 'tuple 330'] -... -insert into t0 values (331, 'tuple 331') ---- -- [331, 'tuple 331'] -... -insert into t0 values (332, 'tuple 332') ---- -- [332, 'tuple 332'] -... -insert into t0 values (333, 'tuple 333') ---- -- [333, 'tuple 333'] -... -insert into t0 values (334, 'tuple 334') ---- -- [334, 'tuple 334'] -... -select * from t0 where k0 = 330 ---- -- [330, 'tuple 330'] -... -select * from t0 where k0 = 331 ---- -- [331, 'tuple 331'] -... -select * from t0 where k0 = 332 ---- -- [332, 'tuple 332'] -... -select * from t0 where k0 = 333 ---- -- [333, 'tuple 333'] -... -select * from t0 where k0 = 334 ---- -- [334, 'tuple 334'] -... -insert into t0 values (335, 'tuple 335') ---- -- [335, 'tuple 335'] -... -insert into t0 values (336, 'tuple 336') ---- -- [336, 'tuple 336'] -... -insert into t0 values (337, 'tuple 337') ---- -- [337, 'tuple 337'] -... -insert into t0 values (338, 'tuple 338') ---- -- [338, 'tuple 338'] -... -insert into t0 values (339, 'tuple 339') ---- -- [339, 'tuple 339'] -... -select * from t0 where k0 = 335 ---- -- [335, 'tuple 335'] -... -select * from t0 where k0 = 336 ---- -- [336, 'tuple 336'] -... -select * from t0 where k0 = 337 ---- -- [337, 'tuple 337'] -... -select * from t0 where k0 = 338 ---- -- [338, 'tuple 338'] -... -select * from t0 where k0 = 339 ---- -- [339, 'tuple 339'] -... -rollback servers configuration -switch master to master -box.cfg{replication_source=''} ---- -... -switch replica to replica -test 17 iteration -insert into t0 values (340, 'tuple 340') ---- -- [340, 'tuple 340'] -... -insert into t0 values (341, 'tuple 341') ---- -- [341, 'tuple 341'] -... -insert into t0 values (342, 'tuple 342') ---- -- [342, 'tuple 342'] -... -insert into t0 values (343, 'tuple 343') ---- -- [343, 'tuple 343'] -... -insert into t0 values (344, 'tuple 344') ---- -- [344, 'tuple 344'] -... -select * from t0 where k0 = 340 ---- -- [340, 'tuple 340'] -... -select * from t0 where k0 = 341 ---- -- [341, 'tuple 341'] -... -select * from t0 where k0 = 342 ---- -- [342, 'tuple 342'] -... -select * from t0 where k0 = 343 ---- -- [343, 'tuple 343'] -... -select * from t0 where k0 = 344 ---- -- [344, 'tuple 344'] -... -insert into t0 values (345, 'tuple 345') ---- -- [345, 'tuple 345'] -... -insert into t0 values (346, 'tuple 346') ---- -- [346, 'tuple 346'] -... -insert into t0 values (347, 'tuple 347') ---- -- [347, 'tuple 347'] -... -insert into t0 values (348, 'tuple 348') ---- -- [348, 'tuple 348'] -... -insert into t0 values (349, 'tuple 349') ---- -- [349, 'tuple 349'] -... -select * from t0 where k0 = 345 ---- -- [345, 'tuple 345'] -... -select * from t0 where k0 = 346 ---- -- [346, 'tuple 346'] -... -select * from t0 where k0 = 347 ---- -- [347, 'tuple 347'] -... -select * from t0 where k0 = 348 ---- -- [348, 'tuple 348'] -... -select * from t0 where k0 = 349 ---- -- [349, 'tuple 349'] -... -swap servers -switch replica to master -box.cfg{replication_source=''} ---- -... -switch master to replica -insert into t0 values (350, 'tuple 350') ---- -- [350, 'tuple 350'] -... -insert into t0 values (351, 'tuple 351') ---- -- [351, 'tuple 351'] -... -insert into t0 values (352, 'tuple 352') ---- -- [352, 'tuple 352'] -... -insert into t0 values (353, 'tuple 353') ---- -- [353, 'tuple 353'] -... -insert into t0 values (354, 'tuple 354') ---- -- [354, 'tuple 354'] -... -select * from t0 where k0 = 350 ---- -- [350, 'tuple 350'] -... -select * from t0 where k0 = 351 ---- -- [351, 'tuple 351'] -... -select * from t0 where k0 = 352 ---- -- [352, 'tuple 352'] -... -select * from t0 where k0 = 353 ---- -- [353, 'tuple 353'] -... -select * from t0 where k0 = 354 ---- -- [354, 'tuple 354'] -... -insert into t0 values (355, 'tuple 355') ---- -- [355, 'tuple 355'] -... -insert into t0 values (356, 'tuple 356') ---- -- [356, 'tuple 356'] -... -insert into t0 values (357, 'tuple 357') ---- -- [357, 'tuple 357'] -... -insert into t0 values (358, 'tuple 358') ---- -- [358, 'tuple 358'] -... -insert into t0 values (359, 'tuple 359') ---- -- [359, 'tuple 359'] -... -select * from t0 where k0 = 355 ---- -- [355, 'tuple 355'] -... -select * from t0 where k0 = 356 ---- -- [356, 'tuple 356'] -... -select * from t0 where k0 = 357 ---- -- [357, 'tuple 357'] -... -select * from t0 where k0 = 358 ---- -- [358, 'tuple 358'] -... -select * from t0 where k0 = 359 +box.space.tweedledum:insert{0, "tuple 0"} +- +None +box.space.tweedledum:insert{1, "tuple 1"} +- +None +box.space.tweedledum:insert{2, "tuple 2"} +- +None +box.space.tweedledum:insert{3, "tuple 3"} +- +None +box.space.tweedledum:insert{4, "tuple 4"} +- +None +box.space.tweedledum:select{0} +- +- [0, tuple 0] + +box.space.tweedledum:select{1} +- +- [1, tuple 1] + +box.space.tweedledum:select{2} +- +- [2, tuple 2] + +box.space.tweedledum:select{3} +- +- [3, tuple 3] + +box.space.tweedledum:select{4} +- +- [4, tuple 4] + +box.space.tweedledum:insert{5, "tuple 5"} +- +None +box.space.tweedledum:insert{6, "tuple 6"} +- +None +box.space.tweedledum:insert{7, "tuple 7"} +- +None +box.space.tweedledum:insert{8, "tuple 8"} +- +None +box.space.tweedledum:insert{9, "tuple 9"} +- +None +box.space.tweedledum:select{5} +- +- [5, tuple 5] + +box.space.tweedledum:select{6} +- +- [6, tuple 6] + +box.space.tweedledum:select{7} +- +- [7, tuple 7] + +box.space.tweedledum:select{8} +- +- [8, tuple 8] + +box.space.tweedledum:select{9} +- +- [9, tuple 9] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [359, 'tuple 359'] ... +switch master to replica +box.space.tweedledum:insert{10, "tuple 10"} +- +None +box.space.tweedledum:insert{11, "tuple 11"} +- +None +box.space.tweedledum:insert{12, "tuple 12"} +- +None +box.space.tweedledum:insert{13, "tuple 13"} +- +None +box.space.tweedledum:insert{14, "tuple 14"} +- +None +box.space.tweedledum:select{10} +- +- [10, tuple 10] + +box.space.tweedledum:select{11} +- +- [11, tuple 11] + +box.space.tweedledum:select{12} +- +- [12, tuple 12] + +box.space.tweedledum:select{13} +- +- [13, tuple 13] + +box.space.tweedledum:select{14} +- +- [14, tuple 14] + +box.space.tweedledum:insert{15, "tuple 15"} +- +None +box.space.tweedledum:insert{16, "tuple 16"} +- +None +box.space.tweedledum:insert{17, "tuple 17"} +- +None +box.space.tweedledum:insert{18, "tuple 18"} +- +None +box.space.tweedledum:insert{19, "tuple 19"} +- +None +box.space.tweedledum:select{15} +- +- [15, tuple 15] + +box.space.tweedledum:select{16} +- +- [16, tuple 16] + +box.space.tweedledum:select{17} +- +- [17, tuple 17] + +box.space.tweedledum:select{18} +- +- [18, tuple 18] + +box.space.tweedledum:select{19} +- +- [19, tuple 19] + rollback servers configuration switch master to master box.cfg{replication_source=''} --- ... switch replica to replica -test 18 iteration -insert into t0 values (360, 'tuple 360') ---- -- [360, 'tuple 360'] -... -insert into t0 values (361, 'tuple 361') ---- -- [361, 'tuple 361'] -... -insert into t0 values (362, 'tuple 362') ---- -- [362, 'tuple 362'] -... -insert into t0 values (363, 'tuple 363') ---- -- [363, 'tuple 363'] -... -insert into t0 values (364, 'tuple 364') ---- -- [364, 'tuple 364'] -... -select * from t0 where k0 = 360 ---- -- [360, 'tuple 360'] -... -select * from t0 where k0 = 361 +test 1 iteration +box.space.tweedledum:insert{20, "tuple 20"} +- +None +box.space.tweedledum:insert{21, "tuple 21"} +- +None +box.space.tweedledum:insert{22, "tuple 22"} +- +None +box.space.tweedledum:insert{23, "tuple 23"} +- +None +box.space.tweedledum:insert{24, "tuple 24"} +- +None +box.space.tweedledum:select{20} +- +- [20, tuple 20] + +box.space.tweedledum:select{21} +- +- [21, tuple 21] + +box.space.tweedledum:select{22} +- +- [22, tuple 22] + +box.space.tweedledum:select{23} +- +- [23, tuple 23] + +box.space.tweedledum:select{24} +- +- [24, tuple 24] + +box.space.tweedledum:insert{25, "tuple 25"} +- +None +box.space.tweedledum:insert{26, "tuple 26"} +- +None +box.space.tweedledum:insert{27, "tuple 27"} +- +None +box.space.tweedledum:insert{28, "tuple 28"} +- +None +box.space.tweedledum:insert{29, "tuple 29"} +- +None +box.space.tweedledum:select{25} +- +- [25, tuple 25] + +box.space.tweedledum:select{26} +- +- [26, tuple 26] + +box.space.tweedledum:select{27} +- +- [27, tuple 27] + +box.space.tweedledum:select{28} +- +- [28, tuple 28] + +box.space.tweedledum:select{29} +- +- [29, tuple 29] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [361, 'tuple 361'] ... -select * from t0 where k0 = 362 +switch master to replica +box.space.tweedledum:insert{30, "tuple 30"} +- +None +box.space.tweedledum:insert{31, "tuple 31"} +- +None +box.space.tweedledum:insert{32, "tuple 32"} +- +None +box.space.tweedledum:insert{33, "tuple 33"} +- +None +box.space.tweedledum:insert{34, "tuple 34"} +- +None +box.space.tweedledum:select{30} +- +- [30, tuple 30] + +box.space.tweedledum:select{31} +- +- [31, tuple 31] + +box.space.tweedledum:select{32} +- +- [32, tuple 32] + +box.space.tweedledum:select{33} +- +- [33, tuple 33] + +box.space.tweedledum:select{34} +- +- [34, tuple 34] + +box.space.tweedledum:insert{35, "tuple 35"} +- +None +box.space.tweedledum:insert{36, "tuple 36"} +- +None +box.space.tweedledum:insert{37, "tuple 37"} +- +None +box.space.tweedledum:insert{38, "tuple 38"} +- +None +box.space.tweedledum:insert{39, "tuple 39"} +- +None +box.space.tweedledum:select{35} +- +- [35, tuple 35] + +box.space.tweedledum:select{36} +- +- [36, tuple 36] + +box.space.tweedledum:select{37} +- +- [37, tuple 37] + +box.space.tweedledum:select{38} +- +- [38, tuple 38] + +box.space.tweedledum:select{39} +- +- [39, tuple 39] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [362, 'tuple 362'] ... -select * from t0 where k0 = 363 +switch replica to replica +test 2 iteration +box.space.tweedledum:insert{40, "tuple 40"} +- +None +box.space.tweedledum:insert{41, "tuple 41"} +- +None +box.space.tweedledum:insert{42, "tuple 42"} +- +None +box.space.tweedledum:insert{43, "tuple 43"} +- +None +box.space.tweedledum:insert{44, "tuple 44"} +- +None +box.space.tweedledum:select{40} +- +- [40, tuple 40] + +box.space.tweedledum:select{41} +- +- [41, tuple 41] + +box.space.tweedledum:select{42} +- +- [42, tuple 42] + +box.space.tweedledum:select{43} +- +- [43, tuple 43] + +box.space.tweedledum:select{44} +- +- [44, tuple 44] + +box.space.tweedledum:insert{45, "tuple 45"} +- +None +box.space.tweedledum:insert{46, "tuple 46"} +- +None +box.space.tweedledum:insert{47, "tuple 47"} +- +None +box.space.tweedledum:insert{48, "tuple 48"} +- +None +box.space.tweedledum:insert{49, "tuple 49"} +- +None +box.space.tweedledum:select{45} +- +- [45, tuple 45] + +box.space.tweedledum:select{46} +- +- [46, tuple 46] + +box.space.tweedledum:select{47} +- +- [47, tuple 47] + +box.space.tweedledum:select{48} +- +- [48, tuple 48] + +box.space.tweedledum:select{49} +- +- [49, tuple 49] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [363, 'tuple 363'] ... -select * from t0 where k0 = 364 +switch master to replica +box.space.tweedledum:insert{50, "tuple 50"} +- +None +box.space.tweedledum:insert{51, "tuple 51"} +- +None +box.space.tweedledum:insert{52, "tuple 52"} +- +None +box.space.tweedledum:insert{53, "tuple 53"} +- +None +box.space.tweedledum:insert{54, "tuple 54"} +- +None +box.space.tweedledum:select{50} +- +- [50, tuple 50] + +box.space.tweedledum:select{51} +- +- [51, tuple 51] + +box.space.tweedledum:select{52} +- +- [52, tuple 52] + +box.space.tweedledum:select{53} +- +- [53, tuple 53] + +box.space.tweedledum:select{54} +- +- [54, tuple 54] + +box.space.tweedledum:insert{55, "tuple 55"} +- +None +box.space.tweedledum:insert{56, "tuple 56"} +- +None +box.space.tweedledum:insert{57, "tuple 57"} +- +None +box.space.tweedledum:insert{58, "tuple 58"} +- +None +box.space.tweedledum:insert{59, "tuple 59"} +- +None +box.space.tweedledum:select{55} +- +- [55, tuple 55] + +box.space.tweedledum:select{56} +- +- [56, tuple 56] + +box.space.tweedledum:select{57} +- +- [57, tuple 57] + +box.space.tweedledum:select{58} +- +- [58, tuple 58] + +box.space.tweedledum:select{59} +- +- [59, tuple 59] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [364, 'tuple 364'] ... -insert into t0 values (365, 'tuple 365') +switch replica to replica +test 3 iteration +box.space.tweedledum:insert{60, "tuple 60"} +- +None +box.space.tweedledum:insert{61, "tuple 61"} +- +None +box.space.tweedledum:insert{62, "tuple 62"} +- +None +box.space.tweedledum:insert{63, "tuple 63"} +- +None +box.space.tweedledum:insert{64, "tuple 64"} +- +None +box.space.tweedledum:select{60} +- +- [60, tuple 60] + +box.space.tweedledum:select{61} +- +- [61, tuple 61] + +box.space.tweedledum:select{62} +- +- [62, tuple 62] + +box.space.tweedledum:select{63} +- +- [63, tuple 63] + +box.space.tweedledum:select{64} +- +- [64, tuple 64] + +box.space.tweedledum:insert{65, "tuple 65"} +- +None +box.space.tweedledum:insert{66, "tuple 66"} +- +None +box.space.tweedledum:insert{67, "tuple 67"} +- +None +box.space.tweedledum:insert{68, "tuple 68"} +- +None +box.space.tweedledum:insert{69, "tuple 69"} +- +None +box.space.tweedledum:select{65} +- +- [65, tuple 65] + +box.space.tweedledum:select{66} +- +- [66, tuple 66] + +box.space.tweedledum:select{67} +- +- [67, tuple 67] + +box.space.tweedledum:select{68} +- +- [68, tuple 68] + +box.space.tweedledum:select{69} +- +- [69, tuple 69] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [365, 'tuple 365'] ... -insert into t0 values (366, 'tuple 366') +switch master to replica +box.space.tweedledum:insert{70, "tuple 70"} +- +None +box.space.tweedledum:insert{71, "tuple 71"} +- +None +box.space.tweedledum:insert{72, "tuple 72"} +- +None +box.space.tweedledum:insert{73, "tuple 73"} +- +None +box.space.tweedledum:insert{74, "tuple 74"} +- +None +box.space.tweedledum:select{70} +- +- [70, tuple 70] + +box.space.tweedledum:select{71} +- +- [71, tuple 71] + +box.space.tweedledum:select{72} +- +- [72, tuple 72] + +box.space.tweedledum:select{73} +- +- [73, tuple 73] + +box.space.tweedledum:select{74} +- +- [74, tuple 74] + +box.space.tweedledum:insert{75, "tuple 75"} +- +None +box.space.tweedledum:insert{76, "tuple 76"} +- +None +box.space.tweedledum:insert{77, "tuple 77"} +- +None +box.space.tweedledum:insert{78, "tuple 78"} +- +None +box.space.tweedledum:insert{79, "tuple 79"} +- +None +box.space.tweedledum:select{75} +- +- [75, tuple 75] + +box.space.tweedledum:select{76} +- +- [76, tuple 76] + +box.space.tweedledum:select{77} +- +- [77, tuple 77] + +box.space.tweedledum:select{78} +- +- [78, tuple 78] + +box.space.tweedledum:select{79} +- +- [79, tuple 79] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [366, 'tuple 366'] ... -insert into t0 values (367, 'tuple 367') +switch replica to replica +test 4 iteration +box.space.tweedledum:insert{80, "tuple 80"} +- +None +box.space.tweedledum:insert{81, "tuple 81"} +- +None +box.space.tweedledum:insert{82, "tuple 82"} +- +None +box.space.tweedledum:insert{83, "tuple 83"} +- +None +box.space.tweedledum:insert{84, "tuple 84"} +- +None +box.space.tweedledum:select{80} +- +- [80, tuple 80] + +box.space.tweedledum:select{81} +- +- [81, tuple 81] + +box.space.tweedledum:select{82} +- +- [82, tuple 82] + +box.space.tweedledum:select{83} +- +- [83, tuple 83] + +box.space.tweedledum:select{84} +- +- [84, tuple 84] + +box.space.tweedledum:insert{85, "tuple 85"} +- +None +box.space.tweedledum:insert{86, "tuple 86"} +- +None +box.space.tweedledum:insert{87, "tuple 87"} +- +None +box.space.tweedledum:insert{88, "tuple 88"} +- +None +box.space.tweedledum:insert{89, "tuple 89"} +- +None +box.space.tweedledum:select{85} +- +- [85, tuple 85] + +box.space.tweedledum:select{86} +- +- [86, tuple 86] + +box.space.tweedledum:select{87} +- +- [87, tuple 87] + +box.space.tweedledum:select{88} +- +- [88, tuple 88] + +box.space.tweedledum:select{89} +- +- [89, tuple 89] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [367, 'tuple 367'] ... -insert into t0 values (368, 'tuple 368') +switch master to replica +box.space.tweedledum:insert{90, "tuple 90"} +- +None +box.space.tweedledum:insert{91, "tuple 91"} +- +None +box.space.tweedledum:insert{92, "tuple 92"} +- +None +box.space.tweedledum:insert{93, "tuple 93"} +- +None +box.space.tweedledum:insert{94, "tuple 94"} +- +None +box.space.tweedledum:select{90} +- +- [90, tuple 90] + +box.space.tweedledum:select{91} +- +- [91, tuple 91] + +box.space.tweedledum:select{92} +- +- [92, tuple 92] + +box.space.tweedledum:select{93} +- +- [93, tuple 93] + +box.space.tweedledum:select{94} +- +- [94, tuple 94] + +box.space.tweedledum:insert{95, "tuple 95"} +- +None +box.space.tweedledum:insert{96, "tuple 96"} +- +None +box.space.tweedledum:insert{97, "tuple 97"} +- +None +box.space.tweedledum:insert{98, "tuple 98"} +- +None +box.space.tweedledum:insert{99, "tuple 99"} +- +None +box.space.tweedledum:select{95} +- +- [95, tuple 95] + +box.space.tweedledum:select{96} +- +- [96, tuple 96] + +box.space.tweedledum:select{97} +- +- [97, tuple 97] + +box.space.tweedledum:select{98} +- +- [98, tuple 98] + +box.space.tweedledum:select{99} +- +- [99, tuple 99] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [368, 'tuple 368'] ... -insert into t0 values (369, 'tuple 369') +switch replica to replica +test 5 iteration +box.space.tweedledum:insert{100, "tuple 100"} +- +None +box.space.tweedledum:insert{101, "tuple 101"} +- +None +box.space.tweedledum:insert{102, "tuple 102"} +- +None +box.space.tweedledum:insert{103, "tuple 103"} +- +None +box.space.tweedledum:insert{104, "tuple 104"} +- +None +box.space.tweedledum:select{100} +- +- [100, tuple 100] + +box.space.tweedledum:select{101} +- +- [101, tuple 101] + +box.space.tweedledum:select{102} +- +- [102, tuple 102] + +box.space.tweedledum:select{103} +- +- [103, tuple 103] + +box.space.tweedledum:select{104} +- +- [104, tuple 104] + +box.space.tweedledum:insert{105, "tuple 105"} +- +None +box.space.tweedledum:insert{106, "tuple 106"} +- +None +box.space.tweedledum:insert{107, "tuple 107"} +- +None +box.space.tweedledum:insert{108, "tuple 108"} +- +None +box.space.tweedledum:insert{109, "tuple 109"} +- +None +box.space.tweedledum:select{105} +- +- [105, tuple 105] + +box.space.tweedledum:select{106} +- +- [106, tuple 106] + +box.space.tweedledum:select{107} +- +- [107, tuple 107] + +box.space.tweedledum:select{108} +- +- [108, tuple 108] + +box.space.tweedledum:select{109} +- +- [109, tuple 109] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [369, 'tuple 369'] ... -select * from t0 where k0 = 365 +switch master to replica +box.space.tweedledum:insert{110, "tuple 110"} +- +None +box.space.tweedledum:insert{111, "tuple 111"} +- +None +box.space.tweedledum:insert{112, "tuple 112"} +- +None +box.space.tweedledum:insert{113, "tuple 113"} +- +None +box.space.tweedledum:insert{114, "tuple 114"} +- +None +box.space.tweedledum:select{110} +- +- [110, tuple 110] + +box.space.tweedledum:select{111} +- +- [111, tuple 111] + +box.space.tweedledum:select{112} +- +- [112, tuple 112] + +box.space.tweedledum:select{113} +- +- [113, tuple 113] + +box.space.tweedledum:select{114} +- +- [114, tuple 114] + +box.space.tweedledum:insert{115, "tuple 115"} +- +None +box.space.tweedledum:insert{116, "tuple 116"} +- +None +box.space.tweedledum:insert{117, "tuple 117"} +- +None +box.space.tweedledum:insert{118, "tuple 118"} +- +None +box.space.tweedledum:insert{119, "tuple 119"} +- +None +box.space.tweedledum:select{115} +- +- [115, tuple 115] + +box.space.tweedledum:select{116} +- +- [116, tuple 116] + +box.space.tweedledum:select{117} +- +- [117, tuple 117] + +box.space.tweedledum:select{118} +- +- [118, tuple 118] + +box.space.tweedledum:select{119} +- +- [119, tuple 119] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [365, 'tuple 365'] ... -select * from t0 where k0 = 366 +switch replica to replica +test 6 iteration +box.space.tweedledum:insert{120, "tuple 120"} +- +None +box.space.tweedledum:insert{121, "tuple 121"} +- +None +box.space.tweedledum:insert{122, "tuple 122"} +- +None +box.space.tweedledum:insert{123, "tuple 123"} +- +None +box.space.tweedledum:insert{124, "tuple 124"} +- +None +box.space.tweedledum:select{120} +- +- [120, tuple 120] + +box.space.tweedledum:select{121} +- +- [121, tuple 121] + +box.space.tweedledum:select{122} +- +- [122, tuple 122] + +box.space.tweedledum:select{123} +- +- [123, tuple 123] + +box.space.tweedledum:select{124} +- +- [124, tuple 124] + +box.space.tweedledum:insert{125, "tuple 125"} +- +None +box.space.tweedledum:insert{126, "tuple 126"} +- +None +box.space.tweedledum:insert{127, "tuple 127"} +- +None +box.space.tweedledum:insert{128, "tuple 128"} +- +None +box.space.tweedledum:insert{129, "tuple 129"} +- +None +box.space.tweedledum:select{125} +- +- [125, tuple 125] + +box.space.tweedledum:select{126} +- +- [126, tuple 126] + +box.space.tweedledum:select{127} +- +- [127, tuple 127] + +box.space.tweedledum:select{128} +- +- [128, tuple 128] + +box.space.tweedledum:select{129} +- +- [129, tuple 129] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [366, 'tuple 366'] ... -select * from t0 where k0 = 367 +switch master to replica +box.space.tweedledum:insert{130, "tuple 130"} +- +None +box.space.tweedledum:insert{131, "tuple 131"} +- +None +box.space.tweedledum:insert{132, "tuple 132"} +- +None +box.space.tweedledum:insert{133, "tuple 133"} +- +None +box.space.tweedledum:insert{134, "tuple 134"} +- +None +box.space.tweedledum:select{130} +- +- [130, tuple 130] + +box.space.tweedledum:select{131} +- +- [131, tuple 131] + +box.space.tweedledum:select{132} +- +- [132, tuple 132] + +box.space.tweedledum:select{133} +- +- [133, tuple 133] + +box.space.tweedledum:select{134} +- +- [134, tuple 134] + +box.space.tweedledum:insert{135, "tuple 135"} +- +None +box.space.tweedledum:insert{136, "tuple 136"} +- +None +box.space.tweedledum:insert{137, "tuple 137"} +- +None +box.space.tweedledum:insert{138, "tuple 138"} +- +None +box.space.tweedledum:insert{139, "tuple 139"} +- +None +box.space.tweedledum:select{135} +- +- [135, tuple 135] + +box.space.tweedledum:select{136} +- +- [136, tuple 136] + +box.space.tweedledum:select{137} +- +- [137, tuple 137] + +box.space.tweedledum:select{138} +- +- [138, tuple 138] + +box.space.tweedledum:select{139} +- +- [139, tuple 139] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [367, 'tuple 367'] ... -select * from t0 where k0 = 368 +switch replica to replica +test 7 iteration +box.space.tweedledum:insert{140, "tuple 140"} +- +None +box.space.tweedledum:insert{141, "tuple 141"} +- +None +box.space.tweedledum:insert{142, "tuple 142"} +- +None +box.space.tweedledum:insert{143, "tuple 143"} +- +None +box.space.tweedledum:insert{144, "tuple 144"} +- +None +box.space.tweedledum:select{140} +- +- [140, tuple 140] + +box.space.tweedledum:select{141} +- +- [141, tuple 141] + +box.space.tweedledum:select{142} +- +- [142, tuple 142] + +box.space.tweedledum:select{143} +- +- [143, tuple 143] + +box.space.tweedledum:select{144} +- +- [144, tuple 144] + +box.space.tweedledum:insert{145, "tuple 145"} +- +None +box.space.tweedledum:insert{146, "tuple 146"} +- +None +box.space.tweedledum:insert{147, "tuple 147"} +- +None +box.space.tweedledum:insert{148, "tuple 148"} +- +None +box.space.tweedledum:insert{149, "tuple 149"} +- +None +box.space.tweedledum:select{145} +- +- [145, tuple 145] + +box.space.tweedledum:select{146} +- +- [146, tuple 146] + +box.space.tweedledum:select{147} +- +- [147, tuple 147] + +box.space.tweedledum:select{148} +- +- [148, tuple 148] + +box.space.tweedledum:select{149} +- +- [149, tuple 149] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [368, 'tuple 368'] ... -select * from t0 where k0 = 369 +switch master to replica +box.space.tweedledum:insert{150, "tuple 150"} +- +None +box.space.tweedledum:insert{151, "tuple 151"} +- +None +box.space.tweedledum:insert{152, "tuple 152"} +- +None +box.space.tweedledum:insert{153, "tuple 153"} +- +None +box.space.tweedledum:insert{154, "tuple 154"} +- +None +box.space.tweedledum:select{150} +- +- [150, tuple 150] + +box.space.tweedledum:select{151} +- +- [151, tuple 151] + +box.space.tweedledum:select{152} +- +- [152, tuple 152] + +box.space.tweedledum:select{153} +- +- [153, tuple 153] + +box.space.tweedledum:select{154} +- +- [154, tuple 154] + +box.space.tweedledum:insert{155, "tuple 155"} +- +None +box.space.tweedledum:insert{156, "tuple 156"} +- +None +box.space.tweedledum:insert{157, "tuple 157"} +- +None +box.space.tweedledum:insert{158, "tuple 158"} +- +None +box.space.tweedledum:insert{159, "tuple 159"} +- +None +box.space.tweedledum:select{155} +- +- [155, tuple 155] + +box.space.tweedledum:select{156} +- +- [156, tuple 156] + +box.space.tweedledum:select{157} +- +- [157, tuple 157] + +box.space.tweedledum:select{158} +- +- [158, tuple 158] + +box.space.tweedledum:select{159} +- +- [159, tuple 159] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [369, 'tuple 369'] ... +switch replica to replica +test 8 iteration +box.space.tweedledum:insert{160, "tuple 160"} +- +None +box.space.tweedledum:insert{161, "tuple 161"} +- +None +box.space.tweedledum:insert{162, "tuple 162"} +- +None +box.space.tweedledum:insert{163, "tuple 163"} +- +None +box.space.tweedledum:insert{164, "tuple 164"} +- +None +box.space.tweedledum:select{160} +- +- [160, tuple 160] + +box.space.tweedledum:select{161} +- +- [161, tuple 161] + +box.space.tweedledum:select{162} +- +- [162, tuple 162] + +box.space.tweedledum:select{163} +- +- [163, tuple 163] + +box.space.tweedledum:select{164} +- +- [164, tuple 164] + +box.space.tweedledum:insert{165, "tuple 165"} +- +None +box.space.tweedledum:insert{166, "tuple 166"} +- +None +box.space.tweedledum:insert{167, "tuple 167"} +- +None +box.space.tweedledum:insert{168, "tuple 168"} +- +None +box.space.tweedledum:insert{169, "tuple 169"} +- +None +box.space.tweedledum:select{165} +- +- [165, tuple 165] + +box.space.tweedledum:select{166} +- +- [166, tuple 166] + +box.space.tweedledum:select{167} +- +- [167, tuple 167] + +box.space.tweedledum:select{168} +- +- [168, tuple 168] + +box.space.tweedledum:select{169} +- +- [169, tuple 169] + swap servers switch replica to master box.cfg{replication_source=''} --- ... switch master to replica -insert into t0 values (370, 'tuple 370') +box.space.tweedledum:insert{170, "tuple 170"} +- +None +box.space.tweedledum:insert{171, "tuple 171"} +- +None +box.space.tweedledum:insert{172, "tuple 172"} +- +None +box.space.tweedledum:insert{173, "tuple 173"} +- +None +box.space.tweedledum:insert{174, "tuple 174"} +- +None +box.space.tweedledum:select{170} +- +- [170, tuple 170] + +box.space.tweedledum:select{171} +- +- [171, tuple 171] + +box.space.tweedledum:select{172} +- +- [172, tuple 172] + +box.space.tweedledum:select{173} +- +- [173, tuple 173] + +box.space.tweedledum:select{174} +- +- [174, tuple 174] + +box.space.tweedledum:insert{175, "tuple 175"} +- +None +box.space.tweedledum:insert{176, "tuple 176"} +- +None +box.space.tweedledum:insert{177, "tuple 177"} +- +None +box.space.tweedledum:insert{178, "tuple 178"} +- +None +box.space.tweedledum:insert{179, "tuple 179"} +- +None +box.space.tweedledum:select{175} +- +- [175, tuple 175] + +box.space.tweedledum:select{176} +- +- [176, tuple 176] + +box.space.tweedledum:select{177} +- +- [177, tuple 177] + +box.space.tweedledum:select{178} +- +- [178, tuple 178] + +box.space.tweedledum:select{179} +- +- [179, tuple 179] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [370, 'tuple 370'] ... -insert into t0 values (371, 'tuple 371') +switch replica to replica +test 9 iteration +box.space.tweedledum:insert{180, "tuple 180"} +- +None +box.space.tweedledum:insert{181, "tuple 181"} +- +None +box.space.tweedledum:insert{182, "tuple 182"} +- +None +box.space.tweedledum:insert{183, "tuple 183"} +- +None +box.space.tweedledum:insert{184, "tuple 184"} +- +None +box.space.tweedledum:select{180} +- +- [180, tuple 180] + +box.space.tweedledum:select{181} +- +- [181, tuple 181] + +box.space.tweedledum:select{182} +- +- [182, tuple 182] + +box.space.tweedledum:select{183} +- +- [183, tuple 183] + +box.space.tweedledum:select{184} +- +- [184, tuple 184] + +box.space.tweedledum:insert{185, "tuple 185"} +- +None +box.space.tweedledum:insert{186, "tuple 186"} +- +None +box.space.tweedledum:insert{187, "tuple 187"} +- +None +box.space.tweedledum:insert{188, "tuple 188"} +- +None +box.space.tweedledum:insert{189, "tuple 189"} +- +None +box.space.tweedledum:select{185} +- +- [185, tuple 185] + +box.space.tweedledum:select{186} +- +- [186, tuple 186] + +box.space.tweedledum:select{187} +- +- [187, tuple 187] + +box.space.tweedledum:select{188} +- +- [188, tuple 188] + +box.space.tweedledum:select{189} +- +- [189, tuple 189] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [371, 'tuple 371'] ... -insert into t0 values (372, 'tuple 372') +switch master to replica +box.space.tweedledum:insert{190, "tuple 190"} +- +None +box.space.tweedledum:insert{191, "tuple 191"} +- +None +box.space.tweedledum:insert{192, "tuple 192"} +- +None +box.space.tweedledum:insert{193, "tuple 193"} +- +None +box.space.tweedledum:insert{194, "tuple 194"} +- +None +box.space.tweedledum:select{190} +- +- [190, tuple 190] + +box.space.tweedledum:select{191} +- +- [191, tuple 191] + +box.space.tweedledum:select{192} +- +- [192, tuple 192] + +box.space.tweedledum:select{193} +- +- [193, tuple 193] + +box.space.tweedledum:select{194} +- +- [194, tuple 194] + +box.space.tweedledum:insert{195, "tuple 195"} +- +None +box.space.tweedledum:insert{196, "tuple 196"} +- +None +box.space.tweedledum:insert{197, "tuple 197"} +- +None +box.space.tweedledum:insert{198, "tuple 198"} +- +None +box.space.tweedledum:insert{199, "tuple 199"} +- +None +box.space.tweedledum:select{195} +- +- [195, tuple 195] + +box.space.tweedledum:select{196} +- +- [196, tuple 196] + +box.space.tweedledum:select{197} +- +- [197, tuple 197] + +box.space.tweedledum:select{198} +- +- [198, tuple 198] + +box.space.tweedledum:select{199} +- +- [199, tuple 199] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [372, 'tuple 372'] ... -insert into t0 values (373, 'tuple 373') +switch replica to replica +test 10 iteration +box.space.tweedledum:insert{200, "tuple 200"} +- +None +box.space.tweedledum:insert{201, "tuple 201"} +- +None +box.space.tweedledum:insert{202, "tuple 202"} +- +None +box.space.tweedledum:insert{203, "tuple 203"} +- +None +box.space.tweedledum:insert{204, "tuple 204"} +- +None +box.space.tweedledum:select{200} +- +- [200, tuple 200] + +box.space.tweedledum:select{201} +- +- [201, tuple 201] + +box.space.tweedledum:select{202} +- +- [202, tuple 202] + +box.space.tweedledum:select{203} +- +- [203, tuple 203] + +box.space.tweedledum:select{204} +- +- [204, tuple 204] + +box.space.tweedledum:insert{205, "tuple 205"} +- +None +box.space.tweedledum:insert{206, "tuple 206"} +- +None +box.space.tweedledum:insert{207, "tuple 207"} +- +None +box.space.tweedledum:insert{208, "tuple 208"} +- +None +box.space.tweedledum:insert{209, "tuple 209"} +- +None +box.space.tweedledum:select{205} +- +- [205, tuple 205] + +box.space.tweedledum:select{206} +- +- [206, tuple 206] + +box.space.tweedledum:select{207} +- +- [207, tuple 207] + +box.space.tweedledum:select{208} +- +- [208, tuple 208] + +box.space.tweedledum:select{209} +- +- [209, tuple 209] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [373, 'tuple 373'] ... -insert into t0 values (374, 'tuple 374') +switch master to replica +box.space.tweedledum:insert{210, "tuple 210"} +- +None +box.space.tweedledum:insert{211, "tuple 211"} +- +None +box.space.tweedledum:insert{212, "tuple 212"} +- +None +box.space.tweedledum:insert{213, "tuple 213"} +- +None +box.space.tweedledum:insert{214, "tuple 214"} +- +None +box.space.tweedledum:select{210} +- +- [210, tuple 210] + +box.space.tweedledum:select{211} +- +- [211, tuple 211] + +box.space.tweedledum:select{212} +- +- [212, tuple 212] + +box.space.tweedledum:select{213} +- +- [213, tuple 213] + +box.space.tweedledum:select{214} +- +- [214, tuple 214] + +box.space.tweedledum:insert{215, "tuple 215"} +- +None +box.space.tweedledum:insert{216, "tuple 216"} +- +None +box.space.tweedledum:insert{217, "tuple 217"} +- +None +box.space.tweedledum:insert{218, "tuple 218"} +- +None +box.space.tweedledum:insert{219, "tuple 219"} +- +None +box.space.tweedledum:select{215} +- +- [215, tuple 215] + +box.space.tweedledum:select{216} +- +- [216, tuple 216] + +box.space.tweedledum:select{217} +- +- [217, tuple 217] + +box.space.tweedledum:select{218} +- +- [218, tuple 218] + +box.space.tweedledum:select{219} +- +- [219, tuple 219] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [374, 'tuple 374'] ... -select * from t0 where k0 = 370 +switch replica to replica +test 11 iteration +box.space.tweedledum:insert{220, "tuple 220"} +- +None +box.space.tweedledum:insert{221, "tuple 221"} +- +None +box.space.tweedledum:insert{222, "tuple 222"} +- +None +box.space.tweedledum:insert{223, "tuple 223"} +- +None +box.space.tweedledum:insert{224, "tuple 224"} +- +None +box.space.tweedledum:select{220} +- +- [220, tuple 220] + +box.space.tweedledum:select{221} +- +- [221, tuple 221] + +box.space.tweedledum:select{222} +- +- [222, tuple 222] + +box.space.tweedledum:select{223} +- +- [223, tuple 223] + +box.space.tweedledum:select{224} +- +- [224, tuple 224] + +box.space.tweedledum:insert{225, "tuple 225"} +- +None +box.space.tweedledum:insert{226, "tuple 226"} +- +None +box.space.tweedledum:insert{227, "tuple 227"} +- +None +box.space.tweedledum:insert{228, "tuple 228"} +- +None +box.space.tweedledum:insert{229, "tuple 229"} +- +None +box.space.tweedledum:select{225} +- +- [225, tuple 225] + +box.space.tweedledum:select{226} +- +- [226, tuple 226] + +box.space.tweedledum:select{227} +- +- [227, tuple 227] + +box.space.tweedledum:select{228} +- +- [228, tuple 228] + +box.space.tweedledum:select{229} +- +- [229, tuple 229] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [370, 'tuple 370'] ... -select * from t0 where k0 = 371 +switch master to replica +box.space.tweedledum:insert{230, "tuple 230"} +- +None +box.space.tweedledum:insert{231, "tuple 231"} +- +None +box.space.tweedledum:insert{232, "tuple 232"} +- +None +box.space.tweedledum:insert{233, "tuple 233"} +- +None +box.space.tweedledum:insert{234, "tuple 234"} +- +None +box.space.tweedledum:select{230} +- +- [230, tuple 230] + +box.space.tweedledum:select{231} +- +- [231, tuple 231] + +box.space.tweedledum:select{232} +- +- [232, tuple 232] + +box.space.tweedledum:select{233} +- +- [233, tuple 233] + +box.space.tweedledum:select{234} +- +- [234, tuple 234] + +box.space.tweedledum:insert{235, "tuple 235"} +- +None +box.space.tweedledum:insert{236, "tuple 236"} +- +None +box.space.tweedledum:insert{237, "tuple 237"} +- +None +box.space.tweedledum:insert{238, "tuple 238"} +- +None +box.space.tweedledum:insert{239, "tuple 239"} +- +None +box.space.tweedledum:select{235} +- +- [235, tuple 235] + +box.space.tweedledum:select{236} +- +- [236, tuple 236] + +box.space.tweedledum:select{237} +- +- [237, tuple 237] + +box.space.tweedledum:select{238} +- +- [238, tuple 238] + +box.space.tweedledum:select{239} +- +- [239, tuple 239] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [371, 'tuple 371'] ... -select * from t0 where k0 = 372 +switch replica to replica +test 12 iteration +box.space.tweedledum:insert{240, "tuple 240"} +- +None +box.space.tweedledum:insert{241, "tuple 241"} +- +None +box.space.tweedledum:insert{242, "tuple 242"} +- +None +box.space.tweedledum:insert{243, "tuple 243"} +- +None +box.space.tweedledum:insert{244, "tuple 244"} +- +None +box.space.tweedledum:select{240} +- +- [240, tuple 240] + +box.space.tweedledum:select{241} +- +- [241, tuple 241] + +box.space.tweedledum:select{242} +- +- [242, tuple 242] + +box.space.tweedledum:select{243} +- +- [243, tuple 243] + +box.space.tweedledum:select{244} +- +- [244, tuple 244] + +box.space.tweedledum:insert{245, "tuple 245"} +- +None +box.space.tweedledum:insert{246, "tuple 246"} +- +None +box.space.tweedledum:insert{247, "tuple 247"} +- +None +box.space.tweedledum:insert{248, "tuple 248"} +- +None +box.space.tweedledum:insert{249, "tuple 249"} +- +None +box.space.tweedledum:select{245} +- +- [245, tuple 245] + +box.space.tweedledum:select{246} +- +- [246, tuple 246] + +box.space.tweedledum:select{247} +- +- [247, tuple 247] + +box.space.tweedledum:select{248} +- +- [248, tuple 248] + +box.space.tweedledum:select{249} +- +- [249, tuple 249] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [372, 'tuple 372'] ... -select * from t0 where k0 = 373 +switch master to replica +box.space.tweedledum:insert{250, "tuple 250"} +- +None +box.space.tweedledum:insert{251, "tuple 251"} +- +None +box.space.tweedledum:insert{252, "tuple 252"} +- +None +box.space.tweedledum:insert{253, "tuple 253"} +- +None +box.space.tweedledum:insert{254, "tuple 254"} +- +None +box.space.tweedledum:select{250} +- +- [250, tuple 250] + +box.space.tweedledum:select{251} +- +- [251, tuple 251] + +box.space.tweedledum:select{252} +- +- [252, tuple 252] + +box.space.tweedledum:select{253} +- +- [253, tuple 253] + +box.space.tweedledum:select{254} +- +- [254, tuple 254] + +box.space.tweedledum:insert{255, "tuple 255"} +- +None +box.space.tweedledum:insert{256, "tuple 256"} +- +None +box.space.tweedledum:insert{257, "tuple 257"} +- +None +box.space.tweedledum:insert{258, "tuple 258"} +- +None +box.space.tweedledum:insert{259, "tuple 259"} +- +None +box.space.tweedledum:select{255} +- +- [255, tuple 255] + +box.space.tweedledum:select{256} +- +- [256, tuple 256] + +box.space.tweedledum:select{257} +- +- [257, tuple 257] + +box.space.tweedledum:select{258} +- +- [258, tuple 258] + +box.space.tweedledum:select{259} +- +- [259, tuple 259] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [373, 'tuple 373'] ... -select * from t0 where k0 = 374 +switch replica to replica +test 13 iteration +box.space.tweedledum:insert{260, "tuple 260"} +- +None +box.space.tweedledum:insert{261, "tuple 261"} +- +None +box.space.tweedledum:insert{262, "tuple 262"} +- +None +box.space.tweedledum:insert{263, "tuple 263"} +- +None +box.space.tweedledum:insert{264, "tuple 264"} +- +None +box.space.tweedledum:select{260} +- +- [260, tuple 260] + +box.space.tweedledum:select{261} +- +- [261, tuple 261] + +box.space.tweedledum:select{262} +- +- [262, tuple 262] + +box.space.tweedledum:select{263} +- +- [263, tuple 263] + +box.space.tweedledum:select{264} +- +- [264, tuple 264] + +box.space.tweedledum:insert{265, "tuple 265"} +- +None +box.space.tweedledum:insert{266, "tuple 266"} +- +None +box.space.tweedledum:insert{267, "tuple 267"} +- +None +box.space.tweedledum:insert{268, "tuple 268"} +- +None +box.space.tweedledum:insert{269, "tuple 269"} +- +None +box.space.tweedledum:select{265} +- +- [265, tuple 265] + +box.space.tweedledum:select{266} +- +- [266, tuple 266] + +box.space.tweedledum:select{267} +- +- [267, tuple 267] + +box.space.tweedledum:select{268} +- +- [268, tuple 268] + +box.space.tweedledum:select{269} +- +- [269, tuple 269] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [374, 'tuple 374'] ... -insert into t0 values (375, 'tuple 375') +switch master to replica +box.space.tweedledum:insert{270, "tuple 270"} +- +None +box.space.tweedledum:insert{271, "tuple 271"} +- +None +box.space.tweedledum:insert{272, "tuple 272"} +- +None +box.space.tweedledum:insert{273, "tuple 273"} +- +None +box.space.tweedledum:insert{274, "tuple 274"} +- +None +box.space.tweedledum:select{270} +- +- [270, tuple 270] + +box.space.tweedledum:select{271} +- +- [271, tuple 271] + +box.space.tweedledum:select{272} +- +- [272, tuple 272] + +box.space.tweedledum:select{273} +- +- [273, tuple 273] + +box.space.tweedledum:select{274} +- +- [274, tuple 274] + +box.space.tweedledum:insert{275, "tuple 275"} +- +None +box.space.tweedledum:insert{276, "tuple 276"} +- +None +box.space.tweedledum:insert{277, "tuple 277"} +- +None +box.space.tweedledum:insert{278, "tuple 278"} +- +None +box.space.tweedledum:insert{279, "tuple 279"} +- +None +box.space.tweedledum:select{275} +- +- [275, tuple 275] + +box.space.tweedledum:select{276} +- +- [276, tuple 276] + +box.space.tweedledum:select{277} +- +- [277, tuple 277] + +box.space.tweedledum:select{278} +- +- [278, tuple 278] + +box.space.tweedledum:select{279} +- +- [279, tuple 279] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [375, 'tuple 375'] ... -insert into t0 values (376, 'tuple 376') +switch replica to replica +test 14 iteration +box.space.tweedledum:insert{280, "tuple 280"} +- +None +box.space.tweedledum:insert{281, "tuple 281"} +- +None +box.space.tweedledum:insert{282, "tuple 282"} +- +None +box.space.tweedledum:insert{283, "tuple 283"} +- +None +box.space.tweedledum:insert{284, "tuple 284"} +- +None +box.space.tweedledum:select{280} +- +- [280, tuple 280] + +box.space.tweedledum:select{281} +- +- [281, tuple 281] + +box.space.tweedledum:select{282} +- +- [282, tuple 282] + +box.space.tweedledum:select{283} +- +- [283, tuple 283] + +box.space.tweedledum:select{284} +- +- [284, tuple 284] + +box.space.tweedledum:insert{285, "tuple 285"} +- +None +box.space.tweedledum:insert{286, "tuple 286"} +- +None +box.space.tweedledum:insert{287, "tuple 287"} +- +None +box.space.tweedledum:insert{288, "tuple 288"} +- +None +box.space.tweedledum:insert{289, "tuple 289"} +- +None +box.space.tweedledum:select{285} +- +- [285, tuple 285] + +box.space.tweedledum:select{286} +- +- [286, tuple 286] + +box.space.tweedledum:select{287} +- +- [287, tuple 287] + +box.space.tweedledum:select{288} +- +- [288, tuple 288] + +box.space.tweedledum:select{289} +- +- [289, tuple 289] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [376, 'tuple 376'] ... -insert into t0 values (377, 'tuple 377') +switch master to replica +box.space.tweedledum:insert{290, "tuple 290"} +- +None +box.space.tweedledum:insert{291, "tuple 291"} +- +None +box.space.tweedledum:insert{292, "tuple 292"} +- +None +box.space.tweedledum:insert{293, "tuple 293"} +- +None +box.space.tweedledum:insert{294, "tuple 294"} +- +None +box.space.tweedledum:select{290} +- +- [290, tuple 290] + +box.space.tweedledum:select{291} +- +- [291, tuple 291] + +box.space.tweedledum:select{292} +- +- [292, tuple 292] + +box.space.tweedledum:select{293} +- +- [293, tuple 293] + +box.space.tweedledum:select{294} +- +- [294, tuple 294] + +box.space.tweedledum:insert{295, "tuple 295"} +- +None +box.space.tweedledum:insert{296, "tuple 296"} +- +None +box.space.tweedledum:insert{297, "tuple 297"} +- +None +box.space.tweedledum:insert{298, "tuple 298"} +- +None +box.space.tweedledum:insert{299, "tuple 299"} +- +None +box.space.tweedledum:select{295} +- +- [295, tuple 295] + +box.space.tweedledum:select{296} +- +- [296, tuple 296] + +box.space.tweedledum:select{297} +- +- [297, tuple 297] + +box.space.tweedledum:select{298} +- +- [298, tuple 298] + +box.space.tweedledum:select{299} +- +- [299, tuple 299] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [377, 'tuple 377'] ... -insert into t0 values (378, 'tuple 378') +switch replica to replica +test 15 iteration +box.space.tweedledum:insert{300, "tuple 300"} +- +None +box.space.tweedledum:insert{301, "tuple 301"} +- +None +box.space.tweedledum:insert{302, "tuple 302"} +- +None +box.space.tweedledum:insert{303, "tuple 303"} +- +None +box.space.tweedledum:insert{304, "tuple 304"} +- +None +box.space.tweedledum:select{300} +- +- [300, tuple 300] + +box.space.tweedledum:select{301} +- +- [301, tuple 301] + +box.space.tweedledum:select{302} +- +- [302, tuple 302] + +box.space.tweedledum:select{303} +- +- [303, tuple 303] + +box.space.tweedledum:select{304} +- +- [304, tuple 304] + +box.space.tweedledum:insert{305, "tuple 305"} +- +None +box.space.tweedledum:insert{306, "tuple 306"} +- +None +box.space.tweedledum:insert{307, "tuple 307"} +- +None +box.space.tweedledum:insert{308, "tuple 308"} +- +None +box.space.tweedledum:insert{309, "tuple 309"} +- +None +box.space.tweedledum:select{305} +- +- [305, tuple 305] + +box.space.tweedledum:select{306} +- +- [306, tuple 306] + +box.space.tweedledum:select{307} +- +- [307, tuple 307] + +box.space.tweedledum:select{308} +- +- [308, tuple 308] + +box.space.tweedledum:select{309} +- +- [309, tuple 309] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [378, 'tuple 378'] ... -insert into t0 values (379, 'tuple 379') +switch master to replica +box.space.tweedledum:insert{310, "tuple 310"} +- +None +box.space.tweedledum:insert{311, "tuple 311"} +- +None +box.space.tweedledum:insert{312, "tuple 312"} +- +None +box.space.tweedledum:insert{313, "tuple 313"} +- +None +box.space.tweedledum:insert{314, "tuple 314"} +- +None +box.space.tweedledum:select{310} +- +- [310, tuple 310] + +box.space.tweedledum:select{311} +- +- [311, tuple 311] + +box.space.tweedledum:select{312} +- +- [312, tuple 312] + +box.space.tweedledum:select{313} +- +- [313, tuple 313] + +box.space.tweedledum:select{314} +- +- [314, tuple 314] + +box.space.tweedledum:insert{315, "tuple 315"} +- +None +box.space.tweedledum:insert{316, "tuple 316"} +- +None +box.space.tweedledum:insert{317, "tuple 317"} +- +None +box.space.tweedledum:insert{318, "tuple 318"} +- +None +box.space.tweedledum:insert{319, "tuple 319"} +- +None +box.space.tweedledum:select{315} +- +- [315, tuple 315] + +box.space.tweedledum:select{316} +- +- [316, tuple 316] + +box.space.tweedledum:select{317} +- +- [317, tuple 317] + +box.space.tweedledum:select{318} +- +- [318, tuple 318] + +box.space.tweedledum:select{319} +- +- [319, tuple 319] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [379, 'tuple 379'] ... -select * from t0 where k0 = 375 +switch replica to replica +test 16 iteration +box.space.tweedledum:insert{320, "tuple 320"} +- +None +box.space.tweedledum:insert{321, "tuple 321"} +- +None +box.space.tweedledum:insert{322, "tuple 322"} +- +None +box.space.tweedledum:insert{323, "tuple 323"} +- +None +box.space.tweedledum:insert{324, "tuple 324"} +- +None +box.space.tweedledum:select{320} +- +- [320, tuple 320] + +box.space.tweedledum:select{321} +- +- [321, tuple 321] + +box.space.tweedledum:select{322} +- +- [322, tuple 322] + +box.space.tweedledum:select{323} +- +- [323, tuple 323] + +box.space.tweedledum:select{324} +- +- [324, tuple 324] + +box.space.tweedledum:insert{325, "tuple 325"} +- +None +box.space.tweedledum:insert{326, "tuple 326"} +- +None +box.space.tweedledum:insert{327, "tuple 327"} +- +None +box.space.tweedledum:insert{328, "tuple 328"} +- +None +box.space.tweedledum:insert{329, "tuple 329"} +- +None +box.space.tweedledum:select{325} +- +- [325, tuple 325] + +box.space.tweedledum:select{326} +- +- [326, tuple 326] + +box.space.tweedledum:select{327} +- +- [327, tuple 327] + +box.space.tweedledum:select{328} +- +- [328, tuple 328] + +box.space.tweedledum:select{329} +- +- [329, tuple 329] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [375, 'tuple 375'] ... -select * from t0 where k0 = 376 +switch master to replica +box.space.tweedledum:insert{330, "tuple 330"} +- +None +box.space.tweedledum:insert{331, "tuple 331"} +- +None +box.space.tweedledum:insert{332, "tuple 332"} +- +None +box.space.tweedledum:insert{333, "tuple 333"} +- +None +box.space.tweedledum:insert{334, "tuple 334"} +- +None +box.space.tweedledum:select{330} +- +- [330, tuple 330] + +box.space.tweedledum:select{331} +- +- [331, tuple 331] + +box.space.tweedledum:select{332} +- +- [332, tuple 332] + +box.space.tweedledum:select{333} +- +- [333, tuple 333] + +box.space.tweedledum:select{334} +- +- [334, tuple 334] + +box.space.tweedledum:insert{335, "tuple 335"} +- +None +box.space.tweedledum:insert{336, "tuple 336"} +- +None +box.space.tweedledum:insert{337, "tuple 337"} +- +None +box.space.tweedledum:insert{338, "tuple 338"} +- +None +box.space.tweedledum:insert{339, "tuple 339"} +- +None +box.space.tweedledum:select{335} +- +- [335, tuple 335] + +box.space.tweedledum:select{336} +- +- [336, tuple 336] + +box.space.tweedledum:select{337} +- +- [337, tuple 337] + +box.space.tweedledum:select{338} +- +- [338, tuple 338] + +box.space.tweedledum:select{339} +- +- [339, tuple 339] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [376, 'tuple 376'] ... -select * from t0 where k0 = 377 +switch replica to replica +test 17 iteration +box.space.tweedledum:insert{340, "tuple 340"} +- +None +box.space.tweedledum:insert{341, "tuple 341"} +- +None +box.space.tweedledum:insert{342, "tuple 342"} +- +None +box.space.tweedledum:insert{343, "tuple 343"} +- +None +box.space.tweedledum:insert{344, "tuple 344"} +- +None +box.space.tweedledum:select{340} +- +- [340, tuple 340] + +box.space.tweedledum:select{341} +- +- [341, tuple 341] + +box.space.tweedledum:select{342} +- +- [342, tuple 342] + +box.space.tweedledum:select{343} +- +- [343, tuple 343] + +box.space.tweedledum:select{344} +- +- [344, tuple 344] + +box.space.tweedledum:insert{345, "tuple 345"} +- +None +box.space.tweedledum:insert{346, "tuple 346"} +- +None +box.space.tweedledum:insert{347, "tuple 347"} +- +None +box.space.tweedledum:insert{348, "tuple 348"} +- +None +box.space.tweedledum:insert{349, "tuple 349"} +- +None +box.space.tweedledum:select{345} +- +- [345, tuple 345] + +box.space.tweedledum:select{346} +- +- [346, tuple 346] + +box.space.tweedledum:select{347} +- +- [347, tuple 347] + +box.space.tweedledum:select{348} +- +- [348, tuple 348] + +box.space.tweedledum:select{349} +- +- [349, tuple 349] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [377, 'tuple 377'] ... -select * from t0 where k0 = 378 +switch master to replica +box.space.tweedledum:insert{350, "tuple 350"} +- +None +box.space.tweedledum:insert{351, "tuple 351"} +- +None +box.space.tweedledum:insert{352, "tuple 352"} +- +None +box.space.tweedledum:insert{353, "tuple 353"} +- +None +box.space.tweedledum:insert{354, "tuple 354"} +- +None +box.space.tweedledum:select{350} +- +- [350, tuple 350] + +box.space.tweedledum:select{351} +- +- [351, tuple 351] + +box.space.tweedledum:select{352} +- +- [352, tuple 352] + +box.space.tweedledum:select{353} +- +- [353, tuple 353] + +box.space.tweedledum:select{354} +- +- [354, tuple 354] + +box.space.tweedledum:insert{355, "tuple 355"} +- +None +box.space.tweedledum:insert{356, "tuple 356"} +- +None +box.space.tweedledum:insert{357, "tuple 357"} +- +None +box.space.tweedledum:insert{358, "tuple 358"} +- +None +box.space.tweedledum:insert{359, "tuple 359"} +- +None +box.space.tweedledum:select{355} +- +- [355, tuple 355] + +box.space.tweedledum:select{356} +- +- [356, tuple 356] + +box.space.tweedledum:select{357} +- +- [357, tuple 357] + +box.space.tweedledum:select{358} +- +- [358, tuple 358] + +box.space.tweedledum:select{359} +- +- [359, tuple 359] + +rollback servers configuration +switch master to master +box.cfg{replication_source=''} --- -- [378, 'tuple 378'] ... -select * from t0 where k0 = 379 +switch replica to replica +test 18 iteration +box.space.tweedledum:insert{360, "tuple 360"} +- +None +box.space.tweedledum:insert{361, "tuple 361"} +- +None +box.space.tweedledum:insert{362, "tuple 362"} +- +None +box.space.tweedledum:insert{363, "tuple 363"} +- +None +box.space.tweedledum:insert{364, "tuple 364"} +- +None +box.space.tweedledum:select{360} +- +- [360, tuple 360] + +box.space.tweedledum:select{361} +- +- [361, tuple 361] + +box.space.tweedledum:select{362} +- +- [362, tuple 362] + +box.space.tweedledum:select{363} +- +- [363, tuple 363] + +box.space.tweedledum:select{364} +- +- [364, tuple 364] + +box.space.tweedledum:insert{365, "tuple 365"} +- +None +box.space.tweedledum:insert{366, "tuple 366"} +- +None +box.space.tweedledum:insert{367, "tuple 367"} +- +None +box.space.tweedledum:insert{368, "tuple 368"} +- +None +box.space.tweedledum:insert{369, "tuple 369"} +- +None +box.space.tweedledum:select{365} +- +- [365, tuple 365] + +box.space.tweedledum:select{366} +- +- [366, tuple 366] + +box.space.tweedledum:select{367} +- +- [367, tuple 367] + +box.space.tweedledum:select{368} +- +- [368, tuple 368] + +box.space.tweedledum:select{369} +- +- [369, tuple 369] + +swap servers +switch replica to master +box.cfg{replication_source=''} --- -- [379, 'tuple 379'] ... +switch master to replica +box.space.tweedledum:insert{370, "tuple 370"} +- +None +box.space.tweedledum:insert{371, "tuple 371"} +- +None +box.space.tweedledum:insert{372, "tuple 372"} +- +None +box.space.tweedledum:insert{373, "tuple 373"} +- +None +box.space.tweedledum:insert{374, "tuple 374"} +- +None +box.space.tweedledum:select{370} +- +- [370, tuple 370] + +box.space.tweedledum:select{371} +- +- [371, tuple 371] + +box.space.tweedledum:select{372} +- +- [372, tuple 372] + +box.space.tweedledum:select{373} +- +- [373, tuple 373] + +box.space.tweedledum:select{374} +- +- [374, tuple 374] + +box.space.tweedledum:insert{375, "tuple 375"} +- +None +box.space.tweedledum:insert{376, "tuple 376"} +- +None +box.space.tweedledum:insert{377, "tuple 377"} +- +None +box.space.tweedledum:insert{378, "tuple 378"} +- +None +box.space.tweedledum:insert{379, "tuple 379"} +- +None +box.space.tweedledum:select{375} +- +- [375, tuple 375] + +box.space.tweedledum:select{376} +- +- [376, tuple 376] + +box.space.tweedledum:select{377} +- +- [377, tuple 377] + +box.space.tweedledum:select{378} +- +- [378, tuple 378] + +box.space.tweedledum:select{379} +- +- [379, tuple 379] + rollback servers configuration switch master to master box.cfg{replication_source=''} @@ -3304,172 +2924,152 @@ box.cfg{replication_source=''} ... switch replica to replica test 19 iteration -insert into t0 values (380, 'tuple 380') ---- -- [380, 'tuple 380'] -... -insert into t0 values (381, 'tuple 381') ---- -- [381, 'tuple 381'] -... -insert into t0 values (382, 'tuple 382') ---- -- [382, 'tuple 382'] -... -insert into t0 values (383, 'tuple 383') ---- -- [383, 'tuple 383'] -... -insert into t0 values (384, 'tuple 384') ---- -- [384, 'tuple 384'] -... -select * from t0 where k0 = 380 ---- -- [380, 'tuple 380'] -... -select * from t0 where k0 = 381 ---- -- [381, 'tuple 381'] -... -select * from t0 where k0 = 382 ---- -- [382, 'tuple 382'] -... -select * from t0 where k0 = 383 ---- -- [383, 'tuple 383'] -... -select * from t0 where k0 = 384 ---- -- [384, 'tuple 384'] -... -insert into t0 values (385, 'tuple 385') ---- -- [385, 'tuple 385'] -... -insert into t0 values (386, 'tuple 386') ---- -- [386, 'tuple 386'] -... -insert into t0 values (387, 'tuple 387') ---- -- [387, 'tuple 387'] -... -insert into t0 values (388, 'tuple 388') ---- -- [388, 'tuple 388'] -... -insert into t0 values (389, 'tuple 389') ---- -- [389, 'tuple 389'] -... -select * from t0 where k0 = 385 ---- -- [385, 'tuple 385'] -... -select * from t0 where k0 = 386 ---- -- [386, 'tuple 386'] -... -select * from t0 where k0 = 387 ---- -- [387, 'tuple 387'] -... -select * from t0 where k0 = 388 ---- -- [388, 'tuple 388'] -... -select * from t0 where k0 = 389 ---- -- [389, 'tuple 389'] -... +box.space.tweedledum:insert{380, "tuple 380"} +- +None +box.space.tweedledum:insert{381, "tuple 381"} +- +None +box.space.tweedledum:insert{382, "tuple 382"} +- +None +box.space.tweedledum:insert{383, "tuple 383"} +- +None +box.space.tweedledum:insert{384, "tuple 384"} +- +None +box.space.tweedledum:select{380} +- +- [380, tuple 380] + +box.space.tweedledum:select{381} +- +- [381, tuple 381] + +box.space.tweedledum:select{382} +- +- [382, tuple 382] + +box.space.tweedledum:select{383} +- +- [383, tuple 383] + +box.space.tweedledum:select{384} +- +- [384, tuple 384] + +box.space.tweedledum:insert{385, "tuple 385"} +- +None +box.space.tweedledum:insert{386, "tuple 386"} +- +None +box.space.tweedledum:insert{387, "tuple 387"} +- +None +box.space.tweedledum:insert{388, "tuple 388"} +- +None +box.space.tweedledum:insert{389, "tuple 389"} +- +None +box.space.tweedledum:select{385} +- +- [385, tuple 385] + +box.space.tweedledum:select{386} +- +- [386, tuple 386] + +box.space.tweedledum:select{387} +- +- [387, tuple 387] + +box.space.tweedledum:select{388} +- +- [388, tuple 388] + +box.space.tweedledum:select{389} +- +- [389, tuple 389] + swap servers switch replica to master box.cfg{replication_source=''} --- ... switch master to replica -insert into t0 values (390, 'tuple 390') ---- -- [390, 'tuple 390'] -... -insert into t0 values (391, 'tuple 391') ---- -- [391, 'tuple 391'] -... -insert into t0 values (392, 'tuple 392') ---- -- [392, 'tuple 392'] -... -insert into t0 values (393, 'tuple 393') ---- -- [393, 'tuple 393'] -... -insert into t0 values (394, 'tuple 394') ---- -- [394, 'tuple 394'] -... -select * from t0 where k0 = 390 ---- -- [390, 'tuple 390'] -... -select * from t0 where k0 = 391 ---- -- [391, 'tuple 391'] -... -select * from t0 where k0 = 392 ---- -- [392, 'tuple 392'] -... -select * from t0 where k0 = 393 ---- -- [393, 'tuple 393'] -... -select * from t0 where k0 = 394 ---- -- [394, 'tuple 394'] -... -insert into t0 values (395, 'tuple 395') ---- -- [395, 'tuple 395'] -... -insert into t0 values (396, 'tuple 396') ---- -- [396, 'tuple 396'] -... -insert into t0 values (397, 'tuple 397') ---- -- [397, 'tuple 397'] -... -insert into t0 values (398, 'tuple 398') ---- -- [398, 'tuple 398'] -... -insert into t0 values (399, 'tuple 399') ---- -- [399, 'tuple 399'] -... -select * from t0 where k0 = 395 ---- -- [395, 'tuple 395'] -... -select * from t0 where k0 = 396 ---- -- [396, 'tuple 396'] -... -select * from t0 where k0 = 397 ---- -- [397, 'tuple 397'] -... -select * from t0 where k0 = 398 ---- -- [398, 'tuple 398'] -... -select * from t0 where k0 = 399 ---- -- [399, 'tuple 399'] -... +box.space.tweedledum:insert{390, "tuple 390"} +- +None +box.space.tweedledum:insert{391, "tuple 391"} +- +None +box.space.tweedledum:insert{392, "tuple 392"} +- +None +box.space.tweedledum:insert{393, "tuple 393"} +- +None +box.space.tweedledum:insert{394, "tuple 394"} +- +None +box.space.tweedledum:select{390} +- +- [390, tuple 390] + +box.space.tweedledum:select{391} +- +- [391, tuple 391] + +box.space.tweedledum:select{392} +- +- [392, tuple 392] + +box.space.tweedledum:select{393} +- +- [393, tuple 393] + +box.space.tweedledum:select{394} +- +- [394, tuple 394] + +box.space.tweedledum:insert{395, "tuple 395"} +- +None +box.space.tweedledum:insert{396, "tuple 396"} +- +None +box.space.tweedledum:insert{397, "tuple 397"} +- +None +box.space.tweedledum:insert{398, "tuple 398"} +- +None +box.space.tweedledum:insert{399, "tuple 399"} +- +None +box.space.tweedledum:select{395} +- +- [395, tuple 395] + +box.space.tweedledum:select{396} +- +- [396, tuple 396] + +box.space.tweedledum:select{397} +- +- [397, tuple 397] + +box.space.tweedledum:select{398} +- +- [398, tuple 398] + +box.space.tweedledum:select{399} +- +- [399, tuple 399] + rollback servers configuration switch master to master box.cfg{replication_source=''} diff --git a/test/replication/swap.test.py b/test/replication/swap.test.py index fafd6c06bf988446cba3500fe2e9f23ced5ff650..ea4d6c70c464c73483ff79baff454ff524553779 100644 --- a/test/replication/swap.test.py +++ b/test/replication/swap.test.py @@ -12,18 +12,24 @@ PASSWORD = 'pass123456' def insert_tuples(_server, begin, end, msg = "tuple"): for i in range(begin, end): - _server.sql("insert into t0 values (%d, '%s %d')" % (i, msg, i)) + print 'box.space.tweedledum:insert{%d, "%s %d"}' % (i, msg, i) + print '-' + space = _server.iproto.py_con.space(0) + print space.insert((i, '%s %d' % (msg, i))) def select_tuples(_server, begin, end): for i in range(begin, end): - _server.sql("select * from t0 where k0 = %d" % i) + print 'box.space.tweedledum:select{%d}' % i + print '-' + space = _server.iproto.py_con.space(0) + print space.select(i) # master server master = server master.admin("box.schema.user.create('%s', { password = '%s'})" % (LOGIN, PASSWORD)) master.admin("box.schema.user.grant('%s', 'read,write,execute', 'universe')" % LOGIN) -master.sql.py_con.authenticate(LOGIN, PASSWORD) -master.uri = '%s:%s@%s' % (LOGIN, PASSWORD, master.sql.uri) +master.iproto.py_con.authenticate(LOGIN, PASSWORD) +master.uri = '%s:%s@%s' % (LOGIN, PASSWORD, master.iproto.uri) os.putenv('MASTER', master.uri) # replica server @@ -32,16 +38,16 @@ replica.script = "replication/replica.lua" replica.vardir = os.path.join(server.vardir, 'replica') replica.deploy() replica.admin("while box.info.server.id == 0 do require('fiber').sleep(0.01) end") -replica.uri = '%s:%s@%s' % (LOGIN, PASSWORD, replica.sql.uri) +replica.uri = '%s:%s@%s' % (LOGIN, PASSWORD, replica.iproto.uri) replica.admin("while box.space['_priv']:len() < 1 do require('fiber').sleep(0.01) end") -replica.sql.py_con.authenticate(LOGIN, PASSWORD) +replica.iproto.py_con.authenticate(LOGIN, PASSWORD) master.admin("s = box.schema.space.create('tweedledum', {id = 0})") master.admin("index = s:create_index('primary', {type = 'hash'})") ### gh-343: replica.cc must not add login and password to proc title #status = replica.get_param("status") -#host_port = "%s:%s" % master.sql.uri +#host_port = "%s:%s" % master.iproto.uri #m = re.search(r'replica/(.*)/.*', status) #if not m or m.group(1) != host_port: # print 'invalid box.info.status', status, 'expected host:port', host_port