master = server master.admin("space = box.schema.create_space('test', {id = 42})") master.admin("space:create_index('primary', { type = 'hash'})") master.admin('for k = 1, 9 do space:insert{k, k*k} end') for k in glob.glob(os.path.join(master.vardir, '*.xlog')): os.unlink(k) print '-------------------------------------------------------------' print 'replica test 1 (no such space)' print '-------------------------------------------------------------' replica = TarantoolServer(server.ini) replica.cfgfile_source = 'replication/cfg/replica.cfg' replica.vardir = os.path.join(server.vardir, 'replica') replica.rpl_master = master replica.deploy() replica.admin('box.space.test') replica.stop() replica.cleanup(True) master.admin('box.snapshot()') master.restart() master.admin('for k = 10, 19 do box.space[42]:insert{k, k*k*k} end') lsn = master.get_param('lsn') print '-------------------------------------------------------------' print 'replica test 2 (must be ok)'
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)) def select_tuples(_server, begin, end, lsn): _server.wait_lsn(lsn) for i in range(begin, end): _server.sql("select * from t0 where k0 = %d" % i) # master server master = server cfgfile_bkp = server.cfgfile_source # replica server replica = TarantoolServer() replica.rpl_master = master replica.cfgfile_source = "replication/cfg/replica.cfg" replica.vardir = os.path.join(server.vardir, 'replica') replica.deploy() master.admin("box.schema.user.grant('guest', 'read,write,execute', 'universe')") replica.admin("while box.space['_priv']:len() < 1 do box.fiber.sleep(0.01) end") master.admin("s = box.schema.create_space('tweedledum', {id = 0})") master.admin("s:create_index('primary', {type = 'hash'})") id = ID_BEGIN for i in range(REPEAT): print "test %d iteration" % i # insert to master insert_tuples(master, id, id + ID_STEP) # select from replica select_tuples(replica, id, id + ID_STEP, master.get_param("lsn"))