From 6a82ae9be6afdb49fea7fac4ca468ccead06389f Mon Sep 17 00:00:00 2001 From: Dmitry Simonenko <pmwkaa@gmail.com> Date: Wed, 12 Mar 2014 20:26:21 +0400 Subject: [PATCH] update console client admin port to '3313' and remove deprecated connector_c tests --- client/tarantool/main.h | 2 +- test/connector_c/CMakeLists.txt | 13 - test/connector_c/cfg/master.cfg | 9 - test/connector_c/cfg/tarantool.cfg | 9 - test/connector_c/connector.result | 53 - test/connector_c/connector.snap | Bin 260 -> 0 bytes test/connector_c/connector.test.py | 16 - test/connector_c/connector.xlog | Bin 178496 -> 0 bytes test/connector_c/protocol.c | 151 -- test/connector_c/protocol.result | 26 - test/connector_c/protocol.test.py | 17 - test/connector_c/rpl.c | 88 - test/connector_c/snap.c | 93 -- test/connector_c/snap.result | 4 - test/connector_c/snap.test.py | 11 - test/connector_c/suite.ini.disabled | 8 - test/connector_c/tp.c | 131 -- test/connector_c/tp.result | 14 - test/connector_c/tp.test.py | 13 - test/connector_c/tt.c | 1197 ------------- test/connector_c/update.c | 992 ----------- test/connector_c/update.result | 291 ---- test/connector_c/update.test.py | 20 - test/connector_c/xlog.c | 82 - test/connector_c/xlog_rpl.result | 2401 --------------------------- test/connector_c/xlog_rpl.test.py | 33 - 26 files changed, 1 insertion(+), 5673 deletions(-) delete mode 100644 test/connector_c/CMakeLists.txt delete mode 100644 test/connector_c/cfg/master.cfg delete mode 100644 test/connector_c/cfg/tarantool.cfg delete mode 100644 test/connector_c/connector.result delete mode 100644 test/connector_c/connector.snap delete mode 100644 test/connector_c/connector.test.py delete mode 100644 test/connector_c/connector.xlog delete mode 100644 test/connector_c/protocol.c delete mode 100644 test/connector_c/protocol.result delete mode 100644 test/connector_c/protocol.test.py delete mode 100644 test/connector_c/rpl.c delete mode 100644 test/connector_c/snap.c delete mode 100644 test/connector_c/snap.result delete mode 100644 test/connector_c/snap.test.py delete mode 100644 test/connector_c/suite.ini.disabled delete mode 100644 test/connector_c/tp.c delete mode 100644 test/connector_c/tp.result delete mode 100644 test/connector_c/tp.test.py delete mode 100644 test/connector_c/tt.c delete mode 100644 test/connector_c/update.c delete mode 100644 test/connector_c/update.result delete mode 100644 test/connector_c/update.test.py delete mode 100644 test/connector_c/xlog.c delete mode 100644 test/connector_c/xlog_rpl.result delete mode 100644 test/connector_c/xlog_rpl.test.py diff --git a/client/tarantool/main.h b/client/tarantool/main.h index cd77b9d657..1195a2735b 100644 --- a/client/tarantool/main.h +++ b/client/tarantool/main.h @@ -34,7 +34,7 @@ #define TC_DEFAULT_HOST "localhost" #define TC_DEFAULT_PORT 3301 -#define TC_DEFAULT_ADMIN_PORT 33015 +#define TC_DEFAULT_ADMIN_PORT 3313 #define TC_DEFAULT_HISTORY_FILE ".tarantool_history" struct tarantool_client { diff --git a/test/connector_c/CMakeLists.txt b/test/connector_c/CMakeLists.txt deleted file mode 100644 index e3446fba10..0000000000 --- a/test/connector_c/CMakeLists.txt +++ /dev/null @@ -1,13 +0,0 @@ -file(GLOB all_sources *.c *.m *.mm) -set_source_files_compile_flags("TESTS" ${all_sources}) - -include_directories("${PROJECT_SOURCE_DIR}/test/unit") -include_directories("${PROJECT_SOURCE_DIR}/connector/c/include") - -tarantool_client("protocol" protocol.c) -tarantool_client("tt" tt.c) -tarantool_client("tp" tp.c) -tarantool_client("update" update.c) -tarantool_client("xlog" xlog.c) -tarantool_client("rpl" rpl.c) -tarantool_client("snap" snap.c) diff --git a/test/connector_c/cfg/master.cfg b/test/connector_c/cfg/master.cfg deleted file mode 100644 index 67229b1775..0000000000 --- a/test/connector_c/cfg/master.cfg +++ /dev/null @@ -1,9 +0,0 @@ - -slab_alloc_arena = 0.1 -pid_file = "box.pid" -logger="cat - >> tarantool.log" - -primary_port = 3301 -admin_port = 3313 - -rows_per_wal = 50 diff --git a/test/connector_c/cfg/tarantool.cfg b/test/connector_c/cfg/tarantool.cfg deleted file mode 100644 index 67229b1775..0000000000 --- a/test/connector_c/cfg/tarantool.cfg +++ /dev/null @@ -1,9 +0,0 @@ - -slab_alloc_arena = 0.1 -pid_file = "box.pid" -logger="cat - >> tarantool.log" - -primary_port = 3301 -admin_port = 3313 - -rows_per_wal = 50 diff --git a/test/connector_c/connector.result b/test/connector_c/connector.result deleted file mode 100644 index 193491abfe..0000000000 --- a/test/connector_c/connector.result +++ /dev/null @@ -1,53 +0,0 @@ -box.insert(box.schema.SPACE_ID, 0, 0, 'tweedledum') ---- -- [0, 0, 'tweedledum'] -... -box.insert(box.schema.INDEX_ID, 0, 0, 'primary', 'hash', 1, 1, 0, 'str') ---- -- [0, 0, 'primary', 1752392040, 1, 1, 0, 'str'] -... -> tuple1 [OK] -> tuple2 [OK] -> list [OK] -> stream buffer [OK] -> tuple set [OK] -> iterator tuple [OK] -> iterator tuple (single field) [OK] -> iterator tuple (tnt_field) [OK] -> iterator tuple (empty) [OK] -> iterator list [OK] -> marshaling ping [OK] -> marshaling insert [OK] -> marshaling delete [OK] -> marshaling call [OK] -> marshaling select [OK] -> marshaling update [OK] -> connect [OK] -> ping [OK] -> insert [OK] -> update [OK] -> select [OK] -> delete [OK] -> call [OK] -> call (no args) [OK] -> reply [OK] -> lex ws [OK] -> lex integer [OK] -> lex string [OK] -> lex punctuation [OK] -> lex ids [OK] -> lex keywords [OK] -> lex keys and tables [OK] -> lex stack [OK] -> lex bad string1 [OK] -> lex bad string2 [OK] -> sql ping [OK] -> sql insert [OK] -> sql update [OK] -> sql select [OK] -> sql select limit [OK] -> sql delete [OK] -> sql call [OK] -box.space[0]:drop() ---- -... diff --git a/test/connector_c/connector.snap b/test/connector_c/connector.snap deleted file mode 100644 index ffc209f51d042180e4cfd71166febcfb31959c0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmWIca}3}z&@(jR;(EK9d)FO9nKT9{C@tG<A}M~wQ3}WxRXeo&|9_Yah-Ly}79eIc zW;6!r?0(qa1QG`Um`)`io6$Wh08=LqP=+-lH76&ZwLHHlCk13e&RpRoAl)DUGeHi> vE^D~B8q)+0pbVoSLidg$J~NO`5P<0hxje)C#Rp8?V3!*)8p*9*E5HQ+k2E-5 diff --git a/test/connector_c/connector.test.py b/test/connector_c/connector.test.py deleted file mode 100644 index 000b486a9e..0000000000 --- a/test/connector_c/connector.test.py +++ /dev/null @@ -1,16 +0,0 @@ -import subprocess -import sys -import os - -admin("box.insert(box.schema.SPACE_ID, 0, 0, 'tweedledum')") -admin("box.insert(box.schema.INDEX_ID, 0, 0, 'primary', 'hash', 1, 1, 0, 'str')") - -p = subprocess.Popen([os.path.join(builddir, "test/connector_c/tt")], - stdout=subprocess.PIPE) -p.wait() -for line in p.stdout.readlines(): - sys.stdout.write(line) - -admin("box.space[0]:drop()") - -# vim: syntax=python diff --git a/test/connector_c/connector.xlog b/test/connector_c/connector.xlog deleted file mode 100644 index af5a837d453d449f57fd1627708fdf60d95196d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 178496 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 diff --git a/test/connector_c/protocol.c b/test/connector_c/protocol.c deleted file mode 100644 index 8d4b348963..0000000000 --- a/test/connector_c/protocol.c +++ /dev/null @@ -1,151 +0,0 @@ - -#include <stdlib.h> -#include <stdio.h> -#include <inttypes.h> - -#include "tarantool/util.h" -#include "errcode.h" - -#include <tarantool/tnt.h> -#include <tarantool/tnt_net.h> -#include <tarantool/tnt_io.h> - -/** Client handler. Reused between tests. */ -struct tnt_stream *t; - -#define header() printf("\t*** %s ***\n", __func__) -#define footer() printf("\t*** %s: done ***\n ", __func__) - -/** Test the ping command. */ -void test_ping() -{ - header(); - const char message[]= { 0x00, 0xff, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0 - }; - tnt_io_send_raw(TNT_SNET_CAST(t), (char*)message, sizeof(message), 1); - t->wrcnt++; - struct tnt_iter i; - tnt_iter_reply(&i, t); - tnt_next(&i); - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - printf("return_code: %"PRIu32"\n", r->code); /* =0 */ - tnt_iter_free(&i); - footer(); -} - -/** Test the ping command. */ -void test_replace() -{ - header(); - const char message[]= { - 0xd, 0x0, 0x0, 0x0, 0x11, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, - 0x4, 0x1, 0x0, 0x0, 0x0 }; - tnt_io_send_raw(TNT_SNET_CAST(t), (char*)message, sizeof(message), 1); - t->wrcnt++; - struct tnt_iter i; - tnt_iter_reply(&i, t); - tnt_next(&i); - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - printf("return_code: %"PRIu32"\n", r->code); /* =0 */ - tnt_iter_free(&i); - footer(); -} - -/** A test case for Bug#702397 - * https://bugs.launchpad.net/tarantool/+bug/702397 "If SELECT - * request specifies tuple count 0, no error" - */ -void test_bug702397() -{ - header(); - const char message[]= { - 0x11, 0x0, 0x0, 0x0, 0x14, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0xff, 0xff, 0xff, 0x0, 0x0, 0x0, 0x0 }; - tnt_io_send_raw(TNT_SNET_CAST(t), (char*)message, sizeof(message), 1); - t->wrcnt++; - struct tnt_iter i; - tnt_iter_reply(&i, t); - tnt_next(&i); - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - printf("return_code: %s, %s\n", - tnt_errcode_str(TNT_REPLY_ERR(r)), r->error); - tnt_iter_free(&i); - footer(); -} - -/** A test case for Bug#702399 - * https://bugs.launchpad.net/tarantool/+bug/702399 - * ERR_CODE_ILLEGAL_PARAMS is returned when there is no such key - */ -void test_bug702399() -{ - header(); - const char message[]= { - 0x11, 0x0, 0x0, 0x0, 0x1d, 0x0, 0x0, 0x0, - 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, - 0xff, 0xff, 0xff, 0xff, - 0x1, 0x0, 0x0, 0x0, 0x1, 0x0, 0x0, 0x0, - 0x4, 0x1, 0x0, 0x0, 0x0 }; - tnt_io_send_raw(TNT_SNET_CAST(t), (char*)message, sizeof(message), 1); - t->wrcnt++; - struct tnt_iter i; - tnt_iter_reply(&i, t); - tnt_next(&i); - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - printf("return_code: %s, %s\n", - tnt_errcode_str(TNT_REPLY_ERR(r)), r->error); - tnt_iter_free(&i); - footer(); -} - -/** A test case for Bug#1009992 - * https://bugs.launchpad.net/tarantool/+bug/1009992 - * ER_ILLEGAL_PARAMS is returned on bad operation id - */ -void test_bug1009992() -{ - header(); - struct tnt_header h = { - .type = 12345678, /* bad operation */ - .len = 0, - .reqid = 0 - }; - tnt_io_send_raw(TNT_SNET_CAST(t), (char*)&h, sizeof(h), 1); - t->wrcnt++; - struct tnt_iter i; - tnt_iter_reply(&i, t); - tnt_next(&i); - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - printf("return_code: %s, %s\n", - tnt_errcode_str(TNT_REPLY_ERR(r)), r->error); - tnt_iter_free(&i); - footer(); -} - -int main() -{ - t = tnt_net(NULL); - if (t == NULL) - return 1; - tnt_set(t, TNT_OPT_HOSTNAME, "localhost"); - tnt_set(t, TNT_OPT_PORT, 33013); - if (tnt_init(t) == -1) - return 1; - if (tnt_connect(t) == -1) - return 1; - - test_ping(); - test_replace(); - test_bug702397(); - test_bug702399(); - test_bug1009992(); - - tnt_stream_free(t); - return 0; -} diff --git a/test/connector_c/protocol.result b/test/connector_c/protocol.result deleted file mode 100644 index eb11e644b8..0000000000 --- a/test/connector_c/protocol.result +++ /dev/null @@ -1,26 +0,0 @@ -box.insert(box.schema.SPACE_ID, 0, 0, 'tweedledum') ---- -- [0, 0, 'tweedledum'] -... -box.insert(box.schema.INDEX_ID, 0, 0, 'primary', 'hash', 1, 1, 0, 'str') ---- -- [0, 0, 'primary', 1752392040, 1, 1, 0, 'str'] -... - *** test_ping *** -return_code: 0 - *** test_ping: done *** - *** test_replace *** -return_code: 0 - *** test_replace: done *** - *** test_bug702397 *** -return_code: ER_ILLEGAL_PARAMS, Illegal parameters, tuple count must be positive - *** test_bug702397: done *** - *** test_bug702399 *** -return_code: ER_NO_SUCH_INDEX, No index #1 is defined in space 0 - *** test_bug702399: done *** - *** test_bug1009992 *** -return_code: ER_ILLEGAL_PARAMS, Illegal parameters, unsupported command code, check the error log - *** test_bug1009992: done *** - box.space[0]:drop() ---- -... diff --git a/test/connector_c/protocol.test.py b/test/connector_c/protocol.test.py deleted file mode 100644 index 8942e65d13..0000000000 --- a/test/connector_c/protocol.test.py +++ /dev/null @@ -1,17 +0,0 @@ -# encoding: utf-8 -# -import subprocess -import sys -import os - -admin("box.insert(box.schema.SPACE_ID, 0, 0, 'tweedledum')") -admin("box.insert(box.schema.INDEX_ID, 0, 0, 'primary', 'hash', 1, 1, 0, 'str')") -p = subprocess.Popen([ os.path.join(builddir, "test/connector_c/protocol") ], - stdout=subprocess.PIPE) -p.wait() -for line in p.stdout.readlines(): - sys.stdout.write(line) - -admin("box.space[0]:drop()") - -# vim: syntax=python diff --git a/test/connector_c/rpl.c b/test/connector_c/rpl.c deleted file mode 100644 index d57112f317..0000000000 --- a/test/connector_c/rpl.c +++ /dev/null @@ -1,88 +0,0 @@ - -/* - * Copyright (C) 2011 Mail.RU - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <stdlib.h> -#include <stdint.h> -#include <inttypes.h> -#include <stdbool.h> -#include <stdio.h> -#include <string.h> - -#include <connector/c/include/tarantool/tnt.h> -#include <connector/c/include/tarantool/tnt_net.h> -#include <connector/c/include/tarantool/tnt_xlog.h> -#include <connector/c/include/tarantool/tnt_rpl.h> - -static char *opname(uint32_t type) { - switch (type) { - case TNT_OP_PING: return "Ping"; - case TNT_OP_INSERT: return "Insert"; - case TNT_OP_DELETE: return "Delete"; - case TNT_OP_UPDATE: return "Update"; - case TNT_OP_SELECT: return "Select"; - case TNT_OP_CALL: return "Call"; - } - return "Unknown"; -} - -int -main(int argc, char * argv[]) -{ - if (argc != 4) { - printf("usage %s: host port limit\n", argv[0]); - return 1; - } - struct tnt_stream s; - tnt_rpl(&s); - struct tnt_stream sn; - tnt_net(&sn); - tnt_set(&sn, TNT_OPT_HOSTNAME, argv[1]); - tnt_set(&sn, TNT_OPT_PORT, atoi(argv[2])); - tnt_set(&sn, TNT_OPT_SEND_BUF, 0); - tnt_set(&sn, TNT_OPT_RECV_BUF, 0); - tnt_rpl_attach(&s, &sn); - if (tnt_rpl_open(&s, 2) == -1) - return 1; - - struct tnt_iter i; - tnt_iter_request(&i, &s); - - int limit = atoi(argv[3]); - while (limit-- > 0 && tnt_next(&i)) { - struct tnt_stream_rpl *sr = TNT_RPL_CAST(&s); - printf("%s lsn: %"PRIu64", time: %f, len: %d\n", - opname(sr->row.op), - sr->hdr.lsn, - sr->hdr.tm, sr->hdr.len); - } - if (i.status == TNT_ITER_FAIL) - printf("parsing failed\n"); - - tnt_iter_free(&i); - tnt_stream_free(&s); - tnt_stream_free(&sn); - return 0; -} diff --git a/test/connector_c/snap.c b/test/connector_c/snap.c deleted file mode 100644 index 7c434a6b8c..0000000000 --- a/test/connector_c/snap.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * 1. Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * <COPYRIGHT HOLDER> OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -#include <stdlib.h> -#include <stdint.h> -#include <inttypes.h> -#include <stdbool.h> -#include <stdio.h> -#include <string.h> -#include <ctype.h> - -#include <connector/c/include/tarantool/tnt.h> -#include <connector/c/include/tarantool/tnt_net.h> -#include <connector/c/include/tarantool/tnt_snapshot.h> - -static void print_tuple(struct tnt_tuple *tu) { - printf("["); - struct tnt_iter ifl; - tnt_iter(&ifl, tu); - while (tnt_next(&ifl)) { - if (TNT_IFIELD_IDX(&ifl) != 0) - printf(", "); - char *data = TNT_IFIELD_DATA(&ifl); - uint32_t size = TNT_IFIELD_SIZE(&ifl); - if (!isprint(data[0]) && (size == 4 || size == 8)) { - if (size == 4) { - uint32_t i = *((uint32_t*)data); - printf("%"PRIu32, i); - } else { - uint64_t i = *((uint64_t*)data); - printf("%"PRIu64, i); - } - } else { - printf("'%-.*s'", size, data); - } - } - if (ifl.status == TNT_ITER_FAIL) - printf("<parsing error>"); - tnt_iter_free(&ifl); - printf("]\n"); -} - -int -main(int argc, char * argv[]) -{ - if (argc != 2) - return 1; - - struct tnt_stream s; - tnt_snapshot(&s); - - if (tnt_snapshot_open(&s, argv[1]) == -1) - return 1; - - struct tnt_iter i; - tnt_iter_storage(&i, &s); - - while (tnt_next(&i)) { - struct tnt_iter_storage *is = TNT_ISTORAGE(&i); - print_tuple(&is->t); - } - if (i.status == TNT_ITER_FAIL) - printf("parsing failed: %s\n", tnt_snapshot_strerror(&s)); - - tnt_iter_free(&i); - tnt_stream_free(&s); - return 0; -} diff --git a/test/connector_c/snap.result b/test/connector_c/snap.result deleted file mode 100644 index f1a932f385..0000000000 --- a/test/connector_c/snap.result +++ /dev/null @@ -1,4 +0,0 @@ -['3', '3'] -['hello', 'world'] -['1', 'world'] -['2', '2'] diff --git a/test/connector_c/snap.test.py b/test/connector_c/snap.test.py deleted file mode 100644 index 27512ed05e..0000000000 --- a/test/connector_c/snap.test.py +++ /dev/null @@ -1,11 +0,0 @@ -import subprocess -import sys -import os - -p = subprocess.Popen([os.path.join(builddir, "test/connector_c/snap"), - os.path.abspath("connector_c/connector.snap")], - stdout=subprocess.PIPE) -o,e = p.communicate() -sys.stdout.write(o) - -# vim: syntax=python diff --git a/test/connector_c/suite.ini.disabled b/test/connector_c/suite.ini.disabled deleted file mode 100644 index 468e565472..0000000000 --- a/test/connector_c/suite.ini.disabled +++ /dev/null @@ -1,8 +0,0 @@ -[default] -core = tarantool -description = tarantool/box connector C -config = cfg/tarantool.cfg -# put disabled tests here -# disabled = xlog_rpl.test -# put disabled in valgrind test here -#valgrind_disabled = diff --git a/test/connector_c/tp.c b/test/connector_c/tp.c deleted file mode 100644 index 72b8c8d910..0000000000 --- a/test/connector_c/tp.c +++ /dev/null @@ -1,131 +0,0 @@ - -#include <stdio.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/socket.h> -#include <netinet/in.h> -#include <arpa/inet.h> -#include <stdio.h> -#include <tp.h> - -static void reply_print(struct tp *rep) { - while (tp_next(rep)) { - printf("tuple fields: %d\n", tp_tuplecount(rep)); - printf("tuple size: %d\n", tp_tuplesize(rep)); - printf("["); - while (tp_nextfield(rep)) { - printf("%-.*s", tp_getfieldsize(rep), tp_getfield(rep)); - if (tp_hasnextfield(rep)) - printf(", "); - } - printf("]\n"); - } -} - -static inline int -test_check_read_reply(int fd) { - struct tp rep; - tp_init(&rep, NULL, 0, tp_realloc, NULL); - while (1) { - ssize_t to_read = tp_req(&rep); - if (to_read <= 0) - break; - ssize_t new_size = tp_ensure(&rep, to_read); - if (new_size == -1) { - // no memory (?) - return 1; - } - ssize_t res = read(fd, rep.p, to_read); - if (res == 0) { - // eof - return 1; - } else if (res < 0) { - // error - return 1; - } - tp_use(&rep, res); - } - - ssize_t server_code = tp_reply(&rep); - - if (server_code != 0) { - printf("error: %-.*s\n", tp_replyerrorlen(&rep), - tp_replyerror(&rep)); - tp_free(&rep); - return 1; - } - if (tp_replyop(&rep) == 17) { /* select */ - reply_print(&rep); - } else - if (tp_replyop(&rep) == 13) { /* insert */ - } else { - return 1; - } - tp_free(&rep); - return 0; -} - -static inline int -test_check_read(void) -{ - int fd; - struct sockaddr_in tt; - if ((fd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { - printf("Failed to create socket\n"); - return 1; - } - - memset(&tt, 0, sizeof(tt)); - tt.sin_family = AF_INET; - tt.sin_addr.s_addr = inet_addr("127.0.0.1"); - tt.sin_port = htons(33013); - if (connect(fd, (struct sockaddr *) &tt, sizeof(tt)) < 0) { - printf("Failed to connect\n"); - return 1; - } - - struct tp req; - tp_init(&req, NULL, 0, tp_realloc, NULL); - tp_insert(&req, 0, 0); - tp_tuple(&req); - tp_sz(&req, "_i32"); - tp_sz(&req, "0e72ae1a-d0be-4e49-aeb9-aebea074363c"); - tp_select(&req, 0, 0, 0, 1); - tp_tuple(&req); - tp_sz(&req, "_i32"); - int rc = write(fd, tp_buf(&req), tp_used(&req)); - if (rc != tp_used(&req)) - return 1; - - tp_free(&req); - - rc = test_check_read_reply(fd); - if (rc != 0) - return 1; - rc = test_check_read_reply(fd); - if (rc != 0) - return 1; - - close(fd); - return 0; -} - -static inline void -test_check_buffer_initialized(void) { - struct tp req; - tp_init(&req, NULL, 0, tp_realloc, NULL); - tp_select(&req, 0, 0, 0, 0); /* could fail on assert */ - tp_tuple(&req); - tp_sz(&req, "key"); - tp_free(&req); -} - -int -main(int argc, char *argv[]) -{ - (void)argc; - (void)argv; - test_check_buffer_initialized(); - test_check_read(); - return 0; -} diff --git a/test/connector_c/tp.result b/test/connector_c/tp.result deleted file mode 100644 index a5d915b32a..0000000000 --- a/test/connector_c/tp.result +++ /dev/null @@ -1,14 +0,0 @@ -box.insert(box.schema.SPACE_ID, 0, 0, 'tweedledum') ---- -- [0, 0, 'tweedledum'] -... -box.insert(box.schema.INDEX_ID, 0, 0, 'primary', 'hash', 1, 1, 0, 'str') ---- -- [0, 0, 'primary', 1752392040, 1, 1, 0, 'str'] -... -tuple fields: 2 -tuple size: 42 -[_i32, 0e72ae1a-d0be-4e49-aeb9-aebea074363c] -box.space[0]:drop() ---- -... diff --git a/test/connector_c/tp.test.py b/test/connector_c/tp.test.py deleted file mode 100644 index a3161c5f34..0000000000 --- a/test/connector_c/tp.test.py +++ /dev/null @@ -1,13 +0,0 @@ -import subprocess -import sys -import os - -admin("box.insert(box.schema.SPACE_ID, 0, 0, 'tweedledum')") -admin("box.insert(box.schema.INDEX_ID, 0, 0, 'primary', 'hash', 1, 1, 0, 'str')") - -p = subprocess.Popen([os.path.join(builddir, "test/connector_c/tp")], - stdout=subprocess.PIPE) -o,e = p.communicate() -sys.stdout.write(o) - -admin("box.space[0]:drop()") diff --git a/test/connector_c/tt.c b/test/connector_c/tt.c deleted file mode 100644 index db3b8d6c21..0000000000 --- a/test/connector_c/tt.c +++ /dev/null @@ -1,1197 +0,0 @@ - -/* - * Copyright (C) 2011 Mail.RU - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <stdlib.h> -#include <stdint.h> -#include <stdbool.h> -#include <stdio.h> -#include <string.h> -#include <limits.h> - -#include <connector/c/include/tarantool/tnt.h> -#include <connector/c/include/tarantool/tnt_net.h> -#include <connector/c/include/tarantool/tnt_io.h> -#include <connector/c/include/tarantool/tnt_queue.h> -#include <connector/c/include/tarantool/tnt_utf8.h> -#include <connector/c/include/tarantool/tnt_lex.h> -#include <connector/c/include/tarantool/tnt_sql.h> - -struct tt_test; - -typedef void (*tt_testf_t)(struct tt_test *t); - -struct tt_test { - char *name; - tt_testf_t cb; - struct tt_test *next; -}; - -struct tt_list { - struct tt_test *head, *tail; - int count; -}; - -static struct tt_test* tt_test(struct tt_list *list, char *name, tt_testf_t cb) { - struct tt_test *t = malloc(sizeof(struct tt_test)); - if (t == NULL) - return NULL; - t->name = strdup(name); - t->cb = cb; - t->next = NULL; - if (list->head == NULL) - list->head = t; - else - list->tail->next = t; - list->tail = t; - list->count++; - return t; -} - -static void tt_free(struct tt_list *list) { - struct tt_test *i = list->head; - struct tt_test *n = NULL; - while (i) { - n = i->next; - free(i->name); - free(i); - i = n; - } -} - -static void tt_run(struct tt_list *list) { - struct tt_test *i = list->head; - while (i) { - printf("> %-30s", i->name); - fflush(NULL); - i->cb(i); - printf("[OK]\n"); - i = i->next; - } -} - -static void -tt_assert(struct tt_test *t, char *file, int line, int expr, char *exprsz) { - if (expr) - return; - (void)t; - printf("[%s:%d] %s\n", file, line, exprsz); - abort(); -} - -#define TT_ASSERT(EXPR) \ - tt_assert(test, __FILE__, __LINE__, (EXPR), #EXPR) - -/* basic tuple creation */ -static void tt_tnt_tuple1(struct tt_test *test) { - struct tnt_tuple t; - tnt_tuple_init(&t); - tnt_tuple(&t, "%s%d", "foo", 123); - TT_ASSERT(t.alloc == 0); - TT_ASSERT(t.cardinality == 2); - TT_ASSERT(t.data != NULL); - TT_ASSERT(t.size != 0); - tnt_tuple_free(&t); - struct tnt_tuple *tp = tnt_tuple(NULL, "%s%d", "foo", 123); - TT_ASSERT(tp->alloc == 1); - TT_ASSERT(tp->cardinality == 2); - TT_ASSERT(tp->data != NULL); - TT_ASSERT(tp->size != 0); - tnt_tuple_free(tp); -} - -/* basic tuple field manipulation */ -static void tt_tnt_tuple2(struct tt_test *test) { - struct tnt_tuple t; - tnt_tuple_init(&t); - tnt_tuple_add(&t, "foo", 4); - TT_ASSERT(t.alloc == 0); - TT_ASSERT(t.cardinality == 1); - TT_ASSERT(t.data != NULL); - TT_ASSERT(t.size != 0); - tnt_tuple_add(&t, "bar", 4); - TT_ASSERT(t.cardinality == 2); - tnt_tuple_add(&t, "baz", 4); - TT_ASSERT(t.cardinality == 3); - tnt_tuple(&t, "%s%d", "xyz", 123); - TT_ASSERT(t.cardinality == 5); - tnt_tuple_free(&t); -} - -/* basic list operations */ -static void tt_tnt_list(struct tt_test *test) { - struct tnt_list list; - tnt_list_init(&list); - tnt_list(&list, tnt_tuple(NULL, "%s", "foo"), NULL); - TT_ASSERT(list.list != NULL); - TT_ASSERT(list.alloc == 0); - TT_ASSERT(list.count == 1); - tnt_list(&list, tnt_tuple(NULL, "%s", "foo"), NULL); - tnt_list(&list, tnt_tuple(NULL, "%s", "foo"), NULL); - TT_ASSERT(list.count == 3); - struct tnt_tuple t; - tnt_tuple_init(&t); - tnt_list_at(&list, &t); - TT_ASSERT(list.count == 4); - tnt_list_free(&list); - struct tnt_list *l = - tnt_list(NULL, - tnt_tuple(NULL, "%s", "foo"), - tnt_tuple(NULL, "%s", "bar"), - tnt_tuple(NULL, "%s", "baz"), NULL); - TT_ASSERT(l->alloc == 1); - TT_ASSERT(l->list != NULL); - TT_ASSERT(l->count == 3); - tnt_list_free(l); -} - -/* stream buffer */ -static void tt_tnt_sbuf(struct tt_test *test) { - struct tnt_stream s; - tnt_buf(&s); - TT_ASSERT(s.alloc == 0); - struct tnt_stream_buf *sb = TNT_SBUF_CAST(&s); - TT_ASSERT(sb->data == NULL); - TT_ASSERT(sb->size == 0); - TT_ASSERT(sb->rdoff == 0); - TT_ASSERT(s.wrcnt == 0); - struct tnt_tuple *kv = tnt_tuple(NULL, "%s%d", "key", 123); - tnt_insert(&s, 0, 0, kv); - TT_ASSERT(sb->data != NULL); - TT_ASSERT(sb->size != 0); - TT_ASSERT(sb->rdoff == 0); - TT_ASSERT(s.wrcnt == 1); - tnt_insert(&s, 0, 0, kv); - TT_ASSERT(s.wrcnt == 2); - tnt_tuple_free(kv); - tnt_stream_free(&s); -} - -/* tuple set */ -static void tt_tnt_tuple_set(struct tt_test *test) { - char buf[75]; - *((uint32_t*)buf) = 2; /* cardinality */ - /* 4 + 1 + 5 + 1 + 64 = 75 */ - uint32_t off = sizeof(uint32_t); - int esize = tnt_enc_size(5); - tnt_enc_write(buf + off, 5); - off += esize + 5; - esize = tnt_enc_size(64); - tnt_enc_write(buf + off, 64); - off += esize + 64; - struct tnt_tuple t; - tnt_tuple_init(&t); - TT_ASSERT(tnt_tuple_set(&t, buf, 70) == NULL); - TT_ASSERT(tnt_tuple_set(&t, buf, sizeof(buf)) != NULL); - tnt_tuple_free(&t); -} - -/* iterator tuple */ -static void tt_tnt_iter1(struct tt_test *test) { - struct tnt_tuple *t = tnt_tuple(NULL, "%s%d%s", "foo", 123, "bar"); - TT_ASSERT(t->cardinality == 3); - struct tnt_iter i; - tnt_iter(&i, t); - TT_ASSERT(tnt_next(&i) == 1); - TT_ASSERT(TNT_IFIELD_IDX(&i) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(&i) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(&i), "foo", 3) == 0); - TT_ASSERT(tnt_next(&i) == 1); - TT_ASSERT(TNT_IFIELD_SIZE(&i) == 4); - TT_ASSERT(TNT_IFIELD_IDX(&i) == 1); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(&i) == 123); - TT_ASSERT(tnt_next(&i) == 1); - TT_ASSERT(TNT_IFIELD_IDX(&i) == 2); - TT_ASSERT(TNT_IFIELD_SIZE(&i) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(&i), "bar", 3) == 0); - TT_ASSERT(tnt_next(&i) == 0); - tnt_iter_free(&i); - tnt_tuple_free(t); -} - -/* iterator tuple single field */ -static void tt_tnt_iter11(struct tt_test *test) { - struct tnt_tuple *t = tnt_tuple(NULL, "%s", "foo"); - TT_ASSERT(t->cardinality == 1); - struct tnt_iter i; - tnt_iter(&i, t); - TT_ASSERT(tnt_next(&i) == 1); - TT_ASSERT(TNT_IFIELD_IDX(&i) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(&i) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(&i), "foo", 3) == 0); - TT_ASSERT(tnt_next(&i) == 0); - tnt_iter_free(&i); - tnt_tuple_free(t); -} - -/* iterator tuple field */ -static void tt_tnt_iter2(struct tt_test *test) { - struct tnt_tuple *t = tnt_tuple(NULL, "%s%d%s", "foo", 123, "bar"); - TT_ASSERT(t->cardinality == 3); - struct tnt_iter *i = tnt_field(NULL, t, 0); - TT_ASSERT(i->alloc != 0); - TT_ASSERT(tnt_field(i, NULL, 0) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(i) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(i) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(i), "foo", 3) == 0); - TT_ASSERT(tnt_field(i, NULL, 1) != NULL); - TT_ASSERT(TNT_IFIELD_SIZE(i) == 4); - TT_ASSERT(TNT_IFIELD_IDX(i) == 1); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(i) == 123); - TT_ASSERT(tnt_field(i, NULL, 2) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(i) == 2); - TT_ASSERT(TNT_IFIELD_SIZE(i) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(i), "bar", 3) == 0); - TT_ASSERT(tnt_field(i, NULL, 3) == NULL); - tnt_iter_free(i); - tnt_tuple_free(t); -} - -/* iterator list */ -static void tt_tnt_iter3(struct tt_test *test) { - struct tnt_tuple t1, t2, t3; - tnt_tuple_init(&t1); - tnt_tuple_init(&t2); - tnt_tuple_init(&t3); - tnt_tuple(&t1, "%s", "foo"); - tnt_tuple(&t2, "%s", "bar"); - tnt_tuple(&t3, "%s", "baz"); - struct tnt_list *l = tnt_list(NULL, &t1, &t2, &t3, NULL); - TT_ASSERT(l->count == 3); - struct tnt_iter i; - tnt_iter_list(&i, l); - TT_ASSERT(tnt_next(&i) == 1); - TT_ASSERT(TNT_ILIST_TUPLE(&i) == &t1); - TT_ASSERT(tnt_next(&i) == 1); - TT_ASSERT(TNT_ILIST_TUPLE(&i) == &t2); - TT_ASSERT(tnt_next(&i) == 1); - TT_ASSERT(TNT_ILIST_TUPLE(&i) == &t3); - TT_ASSERT(tnt_next(&i) == 0); - tnt_tuple_free(&t1); - tnt_tuple_free(&t2); - tnt_tuple_free(&t3); - tnt_iter_free(&i); - tnt_list_free(l); -} - -/* iterator empty tuple */ -static void tt_tnt_iter4(struct tt_test *test) { - char buf[4]; - memset(buf, 0, sizeof(buf)); - struct tnt_tuple t; - tnt_tuple_init(&t); - tnt_tuple_set(&t, buf, sizeof(buf)); - struct tnt_iter i; - tnt_iter(&i, &t); - TT_ASSERT(tnt_next(&i) == 0); - tnt_iter_free(&i); - tnt_tuple_free(&t); -} - -/* marshal ping */ -static void tt_tnt_marshal_ping(struct tt_test *test) { - struct tnt_stream s; - tnt_buf(&s); - tnt_ping(&s); - tnt_ping(&s); - struct tnt_iter i; - tnt_iter_request(&i, &s); - TT_ASSERT(tnt_next(&i) == 1); - struct tnt_request *r = TNT_IREQUEST_PTR(&i); - TT_ASSERT(r->h.type == TNT_OP_PING); - TT_ASSERT(tnt_next(&i) == 1); - TT_ASSERT(r->h.type == TNT_OP_PING); - TT_ASSERT(tnt_next(&i) == 0); - tnt_iter_free(&i); - tnt_stream_free(&s); -} - -/* marshal insert */ -static void tt_tnt_marshal_insert(struct tt_test *test) { - struct tnt_stream s; - tnt_buf(&s); - struct tnt_tuple t; - tnt_tuple_init(&t); - tnt_tuple(&t, "%s%d", "foo", 123); - tnt_insert(&s, 0, 0, &t); - tnt_insert(&s, 0, 0, &t); - struct tnt_iter i; - tnt_iter_request(&i, &s); - TT_ASSERT(tnt_next(&i) == 1); - struct tnt_request *r = TNT_IREQUEST_PTR(&i); - TT_ASSERT(r->h.type == TNT_OP_INSERT); - struct tnt_iter *f = tnt_field(NULL, &r->r.insert.t, 0); - TT_ASSERT(tnt_field(f, NULL, 0) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(f) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(f), "foo", 3) == 0); - TT_ASSERT(tnt_field(f, NULL, 1) != NULL); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 4); - TT_ASSERT(TNT_IFIELD_IDX(f) == 1); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(f) == 123); - TT_ASSERT(tnt_next(&i) == 1); - r = TNT_IREQUEST_PTR(&i); - TT_ASSERT(r->h.type == TNT_OP_INSERT); - TT_ASSERT(tnt_field(f, NULL, 0) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(f) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(f), "foo", 3) == 0); - TT_ASSERT(tnt_field(f, NULL, 1) != NULL); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 4); - TT_ASSERT(TNT_IFIELD_IDX(f) == 1); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(f) == 123); - TT_ASSERT(tnt_next(&i) == 0); - tnt_tuple_free(&t); - tnt_iter_free(&i); - tnt_stream_free(&s); -} - -/* marshal delete */ -static void tt_tnt_marshal_delete(struct tt_test *test) { - struct tnt_stream s; - tnt_buf(&s); - struct tnt_tuple t; - tnt_tuple_init(&t); - tnt_tuple(&t, "%s", "foo"); - tnt_delete(&s, 0, 0, &t); - tnt_delete(&s, 0, 0, &t); - struct tnt_iter i; - tnt_iter_request(&i, &s); - TT_ASSERT(tnt_next(&i) == 1); - struct tnt_request *r = TNT_IREQUEST_PTR(&i); - TT_ASSERT(r->h.type == TNT_OP_DELETE); - struct tnt_iter *f = tnt_field(NULL, &r->r.del.t, 0); - TT_ASSERT(tnt_field(f, NULL, 0) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(f) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(f), "foo", 3) == 0); - TT_ASSERT(tnt_next(&i) == 1); - r = TNT_IREQUEST_PTR(&i); - TT_ASSERT(r->h.type == TNT_OP_DELETE); - TT_ASSERT(tnt_field(f, NULL, 0) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(f) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(f), "foo", 3) == 0); - TT_ASSERT(tnt_next(&i) == 0); - tnt_tuple_free(&t); - tnt_iter_free(&i); - tnt_stream_free(&s); -} - -/* marshal call */ -static void tt_tnt_marshal_call(struct tt_test *test) { - struct tnt_stream s; - tnt_buf(&s); - struct tnt_tuple t; - tnt_tuple_init(&t); - tnt_tuple(&t, "%s%d", "foo", 123); - tnt_call(&s, 0, "box.select", &t); - tnt_call(&s, 0, "box.select", &t); - struct tnt_iter i; - tnt_iter_request(&i, &s); - TT_ASSERT(tnt_next(&i) == 1); - struct tnt_request *r = TNT_IREQUEST_PTR(&i); - TT_ASSERT(r->h.type == TNT_OP_CALL); - TT_ASSERT(strcmp(r->r.call.proc, "box.select") == 0); - struct tnt_iter *f = tnt_field(NULL, &r->r.call.t, 0); - TT_ASSERT(tnt_field(f, NULL, 0) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(f) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(f), "foo", 3) == 0); - TT_ASSERT(tnt_field(f, NULL, 1) != NULL); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 4); - TT_ASSERT(TNT_IFIELD_IDX(f) == 1); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(f) == 123); - TT_ASSERT(tnt_next(&i) == 1); - r = TNT_IREQUEST_PTR(&i); - TT_ASSERT(r->h.type == TNT_OP_CALL); - TT_ASSERT(strcmp(r->r.call.proc, "box.select") == 0); - TT_ASSERT(tnt_field(f, NULL, 0) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(f) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(f), "foo", 3) == 0); - TT_ASSERT(tnt_field(f, NULL, 1) != NULL); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 4); - TT_ASSERT(TNT_IFIELD_IDX(f) == 1); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(f) == 123); - TT_ASSERT(tnt_next(&i) == 0); - tnt_tuple_free(&t); - tnt_iter_free(&i); - tnt_stream_free(&s); -} - -/* marshal select */ -static void tt_tnt_marshal_select(struct tt_test *test) { - struct tnt_stream s; - tnt_buf(&s); - struct tnt_list list; - tnt_list_init(&list); - tnt_list(&list, tnt_tuple(NULL, "%s", "foo"), - tnt_tuple(NULL, "%s%d", "bar", 444), - tnt_tuple(NULL, "%s%d%d", "baz", 1, 2), - NULL); - tnt_select(&s, 0, 0, 0, 1, &list); - struct tnt_iter i; - tnt_iter_request(&i, &s); - TT_ASSERT(tnt_next(&i) == 1); - struct tnt_request *r = TNT_IREQUEST_PTR(&i); - TT_ASSERT(r->h.type == TNT_OP_SELECT); - struct tnt_iter il; - tnt_iter_list(&il, &r->r.select.l); - TT_ASSERT(tnt_next(&il) == 1); - struct tnt_tuple *t = TNT_ILIST_TUPLE(&il); - struct tnt_iter *f = tnt_field(NULL, t, 0); - TT_ASSERT(tnt_field(f, NULL, 0) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(f) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(f), "foo", 3) == 0); - tnt_iter_free(f); - TT_ASSERT(tnt_next(&il) == 1); - t = TNT_ILIST_TUPLE(&il); - f = tnt_field(NULL, t, 0); - TT_ASSERT(tnt_field(f, NULL, 0) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(f) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(f), "bar", 3) == 0); - TT_ASSERT(tnt_field(f, NULL, 1) != NULL); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 4); - TT_ASSERT(TNT_IFIELD_IDX(f) == 1); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(f) == 444); - tnt_iter_free(f); - TT_ASSERT(tnt_next(&il) == 1); - t = TNT_ILIST_TUPLE(&il); - f = tnt_field(NULL, t, 0); - TT_ASSERT(tnt_field(f, NULL, 0) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(f) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(f), "baz", 3) == 0); - TT_ASSERT(tnt_field(f, NULL, 1) != NULL); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 4); - TT_ASSERT(TNT_IFIELD_IDX(f) == 1); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(f) == 1); - TT_ASSERT(tnt_field(f, NULL, 2) != NULL); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 4); - TT_ASSERT(TNT_IFIELD_IDX(f) == 2); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(f) == 2); - tnt_iter_free(f); - TT_ASSERT(tnt_next(&il) == 0); - tnt_iter_free(&i); - tnt_iter_free(&il); - tnt_list_free(&list); - tnt_stream_free(&s); -} - -/* marshal update */ -static void tt_tnt_marshal_update(struct tt_test *test) { - struct tnt_stream s, ops; - tnt_buf(&s); - tnt_buf(&ops); - struct tnt_tuple t; - tnt_tuple_init(&t); - tnt_tuple(&t, "%s", "foo"); - tnt_update_assign(&ops, 444, "FOO", 3); - tnt_update_arith(&ops, 2, TNT_UPDATE_ADD, 7); - TT_ASSERT(tnt_update(&s, 0, 0, &t, &ops) > 0); - struct tnt_iter i; - tnt_iter_request(&i, &s); - TT_ASSERT(tnt_next(&i) == 1); - struct tnt_request *r = TNT_IREQUEST_PTR(&i); - TT_ASSERT(r->h.type == TNT_OP_UPDATE); - TT_ASSERT(r->r.update.opc == 2); - struct tnt_iter *f = tnt_field(NULL, &r->r.update.t, 0); - TT_ASSERT(tnt_field(f, NULL, 0) != NULL); - TT_ASSERT(TNT_IFIELD_IDX(f) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(f) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(f), "foo", 3) == 0); - TT_ASSERT(r->r.update.opv[0].op == TNT_UPDATE_ASSIGN); - TT_ASSERT(r->r.update.opv[0].field == 444); - TT_ASSERT(r->r.update.opv[0].size == 3); - TT_ASSERT(memcmp(r->r.update.opv[0].data, "FOO", 3) == 0); - TT_ASSERT(r->r.update.opv[1].op == TNT_UPDATE_ADD); - TT_ASSERT(r->r.update.opv[1].field == 2); - TT_ASSERT(r->r.update.opv[1].size == 4); - TT_ASSERT(*(uint32_t*)r->r.update.opv[1].data == 7); - TT_ASSERT(tnt_next(&i) == 0); - tnt_tuple_free(&t); - tnt_stream_free(&s); - tnt_stream_free(&ops); - tnt_iter_free(&i); -} - -static struct tnt_stream net; - -/* network connection */ -static void tt_tnt_net_connect(struct tt_test *test) { - TT_ASSERT(tnt_net(&net) != NULL); - TT_ASSERT(tnt_set(&net, TNT_OPT_HOSTNAME, "localhost") == 0); - TT_ASSERT(tnt_set(&net, TNT_OPT_PORT, 33013) == 0); - TT_ASSERT(tnt_init(&net) == 0); - TT_ASSERT(tnt_connect(&net) == 0); -} - -/* ping */ -static void tt_tnt_net_ping(struct tt_test *test) { - TT_ASSERT(tnt_ping(&net) > 0); - TT_ASSERT(tnt_flush(&net) > 0); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_PING); - } - tnt_iter_free(&i); -} - -/* insert */ -static void tt_tnt_net_insert(struct tt_test *test) { - tnt_stream_reqid(&net, 777); - struct tnt_tuple kv1; - tnt_tuple_init(&kv1); - tnt_tuple(&kv1, "%d%s", 123, "foo"); - TT_ASSERT(tnt_insert(&net, 0, 0, &kv1) > 0); - struct tnt_tuple kv2; - tnt_tuple_init(&kv2); - tnt_tuple(&kv2, "%d%s", 321, "bar"); - TT_ASSERT(tnt_insert(&net, 0, 0, &kv2) > 0); - TT_ASSERT(tnt_flush(&net) > 0); - tnt_tuple_free(&kv1); - tnt_tuple_free(&kv2); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->reqid == 777); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_INSERT); - TT_ASSERT(r->count == 1); - } - tnt_iter_free(&i); -} - -/* update */ -static void tt_tnt_net_update(struct tt_test *test) { - struct tnt_stream ops; - TT_ASSERT(tnt_buf(&ops) != NULL); - tnt_update_arith(&ops, 0, TNT_UPDATE_ADD, 7); - tnt_update_assign(&ops, 1, "FOO", 3); - struct tnt_tuple *k = tnt_tuple(NULL, "%d", 123); - TT_ASSERT(tnt_update(&net, 0, 0, k, &ops) > 0); - tnt_tuple_free(k); - tnt_stream_free(&ops); - TT_ASSERT(tnt_flush(&net) > 0); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_UPDATE); - TT_ASSERT(r->count == 1); - } -} - -/* select */ -static void tt_tnt_net_select(struct tt_test *test) { - struct tnt_list *search = - tnt_list(NULL, tnt_tuple(NULL, "%d", 130), NULL); - TT_ASSERT(tnt_select(&net, 0, 0, 0, 1, search) > 0); - TT_ASSERT(tnt_flush(&net) > 0); - tnt_list_free(search); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_SELECT); - TT_ASSERT(r->count == 1); - struct tnt_iter il; - tnt_iter_list(&il, TNT_REPLY_LIST(r)); - TT_ASSERT(tnt_next(&il) == 1); - struct tnt_tuple *tp; - tp = TNT_ILIST_TUPLE(&il); - TT_ASSERT(tp->cardinality == 2); - TT_ASSERT(tp->alloc == 1); - TT_ASSERT(tp->data != NULL); - TT_ASSERT(tp->size != 0); - struct tnt_iter ifl; - tnt_iter(&ifl, tp); - TT_ASSERT(tnt_next(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_IDX(&ifl) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(&ifl) == 4); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(&ifl) == 130); - TT_ASSERT(tnt_next(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_IDX(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_SIZE(&ifl) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(&ifl), "FOO", 3) == 0); - TT_ASSERT(tnt_next(&ifl) == 0); - tnt_iter_free(&ifl); - tnt_iter_free(&il); - } -} - -/* delete */ -static void tt_tnt_net_delete(struct tt_test *test) { - struct tnt_tuple k; - tnt_tuple_init(&k); - tnt_tuple(&k, "%d", 321); - TT_ASSERT(tnt_delete(&net, 0, 0, &k) > 0); - TT_ASSERT(tnt_flush(&net) > 0); - tnt_tuple_free(&k); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_DELETE); - TT_ASSERT(r->count == 1); - } - tnt_iter_free(&i); -} - -/* call */ -static void tt_tnt_net_call(struct tt_test *test) { - struct tnt_tuple args; - tnt_tuple_init(&args); - tnt_tuple(&args, "%s%d%s%s", "0", 333, "B", "C"); - TT_ASSERT(tnt_call(&net, 0, "box.insert", &args) > 0); - TT_ASSERT(tnt_flush(&net) > 0); - tnt_tuple_free(&args); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_CALL); - TT_ASSERT(r->count == 1); - } - tnt_iter_free(&i); -} - -/* call (no args) */ -static void tt_tnt_net_call_na(struct tt_test *test) { - struct tnt_tuple args; - tnt_tuple_init(&args); - TT_ASSERT(tnt_call(&net, 0, "box.insert", &args) > 0); - TT_ASSERT(tnt_flush(&net) > 0); - tnt_tuple_free(&args); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code != 0); - TT_ASSERT(strstr(r->error, "box.pack") != NULL); - } - tnt_iter_free(&i); -} - -/* reply */ -static void tt_tnt_net_reply(struct tt_test *test) { - struct tnt_tuple kv1, kv2; - tnt_tuple_init(&kv1); - tnt_tuple(&kv1, "%d%s", 587, "foo"); - TT_ASSERT(tnt_insert(&net, 0, TNT_FLAG_RETURN, &kv1) > 0); - tnt_tuple_free(&kv1); - tnt_tuple_init(&kv2); - tnt_tuple(&kv2, "%d%s", 785, "bar"); - TT_ASSERT(tnt_insert(&net, 0, TNT_FLAG_RETURN, &kv2) > 0); - tnt_tuple_free(&kv2); - TT_ASSERT(tnt_flush(&net) > 0); - - struct tnt_stream_net *s = TNT_SNET_CAST(&net); - int current = 0; - size_t off = 0; - ssize_t size = 0; - char buffer[512]; - - while (current != 2) { - struct tnt_reply r; - tnt_reply_init(&r); - int rc = tnt_reply(&r, buffer, size, &off); - TT_ASSERT(rc != -1); - if (rc == 1) { - ssize_t res = tnt_io_recv_raw(s, buffer + size, off, 1); - TT_ASSERT(res > 0); - size += off; - continue; - } - TT_ASSERT(rc == 0); - TT_ASSERT(r.code == 0); - TT_ASSERT(r.op == TNT_OP_INSERT); - TT_ASSERT(r.count == 1); - if (current == 0) { - struct tnt_iter il; - tnt_iter_list(&il, TNT_REPLY_LIST(&r)); - TT_ASSERT(tnt_next(&il) == 1); - struct tnt_tuple *tp = TNT_ILIST_TUPLE(&il); - TT_ASSERT(tp->cardinality == 2); - TT_ASSERT(tp->alloc == 1); - TT_ASSERT(tp->data != NULL); - TT_ASSERT(tp->size != 0); - struct tnt_iter ifl; - tnt_iter(&ifl, tp); - TT_ASSERT(tnt_next(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_IDX(&ifl) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(&ifl) == 4); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(&ifl) == 587); - TT_ASSERT(tnt_next(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_IDX(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_SIZE(&ifl) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(&ifl), "foo", 3) == 0); - TT_ASSERT(tnt_next(&ifl) == 0); - tnt_iter_free(&ifl); - tnt_iter_free(&il); - off = 0; - size = 0; - } else - if (current == 1) { - struct tnt_iter il; - tnt_iter_list(&il, TNT_REPLY_LIST(&r)); - TT_ASSERT(tnt_next(&il) == 1); - struct tnt_tuple *tp = TNT_ILIST_TUPLE(&il); - TT_ASSERT(tp->cardinality == 2); - TT_ASSERT(tp->alloc == 1); - TT_ASSERT(tp->data != NULL); - TT_ASSERT(tp->size != 0); - struct tnt_iter ifl; - tnt_iter(&ifl, tp); - TT_ASSERT(tnt_next(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_IDX(&ifl) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(&ifl) == 4); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(&ifl) == 785); - TT_ASSERT(tnt_next(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_IDX(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_SIZE(&ifl) == 3); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(&ifl), "bar", 3) == 0); - TT_ASSERT(tnt_next(&ifl) == 0); - tnt_iter_free(&ifl); - tnt_iter_free(&il); - } - tnt_reply_free(&r); - current++; - } - - net.wrcnt -= 2; -} - -extern struct tnt_lex_keyword tnt_sql_keywords[]; - -/* lex ws */ -static void tt_tnt_lex_ws(struct tt_test *test) { - unsigned char sz[] = " # abcde fghjk ## hh\n # zzz\n#NOCR"; - struct tnt_lex l; - tnt_lex_init(&l, tnt_sql_keywords, sz, sizeof(sz) - 1); - struct tnt_tk *tk; - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_EOF); - tnt_lex_free(&l); -} - -/* lex integer */ -static void tt_tnt_lex_int(struct tt_test *test) { - unsigned char sz[] = "\f\r\n 123 34\n\t\r56 888L56 2147483646 2147483647 " - "-2147483648 -2147483649 72057594037927935"; - struct tnt_lex l; - tnt_lex_init(&l, tnt_sql_keywords, sz, sizeof(sz) - 1); - struct tnt_tk *tk; - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM32 && TNT_TK_I32(tk) == 123); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM32 && TNT_TK_I32(tk) == 34); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM32 && TNT_TK_I32(tk) == 56); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM64 && TNT_TK_I64(tk) == 888); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM32 && TNT_TK_I32(tk) == 56); - - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM32 && TNT_TK_I32(tk) == INT_MAX - 1); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM64 && TNT_TK_I64(tk) == INT_MAX); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM32 && TNT_TK_I32(tk) == INT_MIN); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM64 && TNT_TK_I64(tk) == INT_MIN - 1LL); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM64 && TNT_TK_I64(tk) == 72057594037927935LL); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_EOF); - tnt_lex_free(&l); -} - -/* lex punctuation */ -static void tt_tnt_lex_punct(struct tt_test *test) { - unsigned char sz[] = "123,34\n-10\t:\r(56)"; - struct tnt_lex l; - tnt_lex_init(&l, tnt_sql_keywords, sz, sizeof(sz) - 1); - struct tnt_tk *tk; - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM32 && TNT_TK_I32(tk) == 123); - TT_ASSERT(tnt_lex(&l, &tk) == ',' && TNT_TK_I32(tk) == ','); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM32 && TNT_TK_I32(tk) == 34); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM32 && TNT_TK_I32(tk) == -10); - TT_ASSERT(tnt_lex(&l, &tk) == ':' && TNT_TK_I32(tk) == ':'); - TT_ASSERT(tnt_lex(&l, &tk) == '('&& TNT_TK_I32(tk) == '('); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_NUM32 && TNT_TK_I32(tk) == 56); - TT_ASSERT(tnt_lex(&l, &tk) == ')' && TNT_TK_I32(tk) == ')'); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_EOF); - tnt_lex_free(&l); -} - -/* lex string */ -static void tt_tnt_lex_str(struct tt_test *test) { - unsigned char sz[] = " 'hello'\n\t 'world' 'вÑем привет!'"; - struct tnt_lex l; - tnt_lex_init(&l, tnt_sql_keywords, sz, sizeof(sz) - 1); - struct tnt_tk *tk; - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_STRING && - TNT_TK_S(tk)->size == 5 && - memcmp(TNT_TK_S(tk)->data, "hello", 5) == 0); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_STRING && - TNT_TK_S(tk)->size == 5 && - memcmp(TNT_TK_S(tk)->data, "world", 5) == 0); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_STRING && - TNT_TK_S(tk)->size == 22 && - memcmp(TNT_TK_S(tk)->data, "вÑем привет!", 22) == 0); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_EOF); - tnt_lex_free(&l); -} - -/* lex id's */ -static void tt_tnt_lex_ids(struct tt_test *test) { - unsigned char sz[] = " hello\nÑтот безумный безумный мир\t world "; - struct tnt_lex l; - tnt_lex_init(&l, tnt_sql_keywords, sz, sizeof(sz) - 1); - struct tnt_tk *tk; - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_ID && - TNT_TK_S(tk)->size == 5 && - memcmp(TNT_TK_S(tk)->data, "hello", 5) == 0); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_ID && - TNT_TK_S(tk)->size == 8 && - memcmp(TNT_TK_S(tk)->data, "Ñтот", 8) == 0); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_ID && - TNT_TK_S(tk)->size == 16 && - memcmp(TNT_TK_S(tk)->data, "безумный", 16) == 0); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_ID && - TNT_TK_S(tk)->size == 16 && - memcmp(TNT_TK_S(tk)->data, "безумный", 16) == 0); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_ID && - TNT_TK_S(tk)->size == 6 && - memcmp(TNT_TK_S(tk)->data, "мир", 6) == 0); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_ID && - TNT_TK_S(tk)->size == 5 && - memcmp(TNT_TK_S(tk)->data, "world", 5) == 0); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_EOF); - tnt_lex_free(&l); -} - -/* lex keys and tables */ -static void tt_tnt_lex_kt(struct tt_test *test) { - unsigned char sz[] = " k0\n\tk20 t0 k1000 t55 k001 t8"; - struct tnt_lex l; - tnt_lex_init(&l, tnt_sql_keywords, sz, sizeof(sz) - 1); - struct tnt_tk *tk; - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_KEY && TNT_TK_I32(tk) == 0); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_KEY && TNT_TK_I32(tk) == 20); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_TABLE && TNT_TK_I32(tk) == 0); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_KEY && TNT_TK_I32(tk) == 1000); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_TABLE && TNT_TK_I32(tk) == 55); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_KEY && TNT_TK_I32(tk) == 1); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_TABLE && TNT_TK_I32(tk) == 8); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_EOF); - tnt_lex_free(&l); -} - -/* lex keywords */ -static void tt_tnt_lex_kw(struct tt_test *test) { - unsigned char sz[] = " INSERT UPDATE INTO OR FROM WHERE VALUES"; - struct tnt_lex l; - tnt_lex_init(&l, tnt_sql_keywords, sz, sizeof(sz) - 1); - struct tnt_tk *tk; - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_INSERT); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_UPDATE); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_INTO); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_OR); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_FROM); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_WHERE); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_VALUES); - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_EOF); - tnt_lex_free(&l); -} - -/* lex stack */ -static void tt_tnt_lex_stack(struct tt_test *test) { - unsigned char sz[] = " 1 'hey' ,.55"; - struct tnt_lex l; - tnt_lex_init(&l, tnt_sql_keywords, sz, sizeof(sz) - 1); - struct tnt_tk *tk1, *tk2, *tk3, *tk4, *tk5, *tk6; - TT_ASSERT(tnt_lex(&l, &tk1) == TNT_TK_NUM32); - TT_ASSERT(tnt_lex(&l, &tk2) == TNT_TK_STRING); - TT_ASSERT(tnt_lex(&l, &tk3) == ','); - TT_ASSERT(tnt_lex(&l, &tk4) == '.'); - TT_ASSERT(tnt_lex(&l, &tk5) == TNT_TK_NUM32); - TT_ASSERT(tnt_lex(&l, &tk6) == TNT_TK_EOF); - tnt_lex_push(&l, tk5); - tnt_lex_push(&l, tk4); - tnt_lex_push(&l, tk3); - tnt_lex_push(&l, tk2); - tnt_lex_push(&l, tk1); - TT_ASSERT(tnt_lex(&l, &tk1) == TNT_TK_NUM32); - TT_ASSERT(tnt_lex(&l, &tk2) == TNT_TK_STRING); - TT_ASSERT(tnt_lex(&l, &tk3) == ','); - TT_ASSERT(tnt_lex(&l, &tk4) == '.'); - TT_ASSERT(tnt_lex(&l, &tk5) == TNT_TK_NUM32); - TT_ASSERT(tnt_lex(&l, &tk6) == TNT_TK_EOF); - tnt_lex_free(&l); -} - -/* lex bad string 1 */ -static void tt_tnt_lex_badstr1(struct tt_test *test) { - unsigned char sz[] = " '"; - struct tnt_lex l; - tnt_lex_init(&l, tnt_sql_keywords, sz, sizeof(sz) - 1); - struct tnt_tk *tk; - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_ERROR); - tnt_lex_free(&l); - -} - -/* lex bad string 2 */ -static void tt_tnt_lex_badstr2(struct tt_test *test) { - unsigned char sz[] = " '\n'"; - struct tnt_lex l; - tnt_lex_init(&l, tnt_sql_keywords, sz, sizeof(sz) - 1); - struct tnt_tk *tk; - TT_ASSERT(tnt_lex(&l, &tk) == TNT_TK_ERROR); - tnt_lex_free(&l); -} - -/* sql ping */ -static void tt_tnt_sql_ping(struct tt_test *test) { - char *e = NULL; - char q[] = "PING"; - TT_ASSERT(tnt_query(&net, q, sizeof(q) - 1, &e) == 0); - TT_ASSERT(tnt_flush(&net) > 0); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_PING); - } - tnt_iter_free(&i); -} - -/* sql insert */ -static void tt_tnt_sql_insert(struct tt_test *test) { - char *e = NULL; - char q[] = "insert into t0 values (222, 'baz')"; - TT_ASSERT(tnt_query(&net, q, sizeof(q) - 1, &e) == 0); - TT_ASSERT(tnt_flush(&net) > 0); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_INSERT); - TT_ASSERT(r->count == 1); - } - tnt_iter_free(&i); -} - -/* sql update */ -static void tt_tnt_sql_update(struct tt_test *test) { - char *e; - char q1[] = "update t0 set k0 = 7 where k0 = 222"; - TT_ASSERT(tnt_query(&net, q1, sizeof(q1) - 1, &e) == 0); - /* 7 + 1 = 8 */ - char q2[] = "update t0 set k0 = k0 + 1 where k0 = 7"; - TT_ASSERT(tnt_query(&net, q2, sizeof(q2) - 1, &e) == 0); - /* 8 | 2 = 10 */ - char q3[] = "update t0 set k0 = k0 | 2 where k0 = 8"; - TT_ASSERT(tnt_query(&net, q3, sizeof(q3) - 1, &e) == 0); - /* 10 & 2 = 2 */ - char q4[] = "update t0 set k0 = k0 & 2 where k0 = 10"; - TT_ASSERT(tnt_query(&net, q4, sizeof(q4) - 1, &e) == 0); - /* 2 ^ 123 = 121 */ - char q5[] = "update t0 set k0 = k0 ^ 123 where k0 = 2"; - TT_ASSERT(tnt_query(&net, q5, sizeof(q5) - 1, &e) == 0); - /* assign */ - char q6[] = "update t0 set k0 = 222, k1 = 'hello world' where k0 = 121"; - TT_ASSERT(tnt_query(&net, q6, sizeof(q6) - 1, &e) == 0); - /* splice */ - char q7[] = "update t0 set k1 = splice(k1, 0, 2, 'AB') where k0 = 222"; - TT_ASSERT(tnt_query(&net, q7, sizeof(q7) - 1, &e) == 0); - TT_ASSERT(tnt_flush(&net) > 0); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_UPDATE); - TT_ASSERT(r->count == 1); - } - tnt_iter_free(&i); -} - -/* sql select */ -static void tt_tnt_sql_select(struct tt_test *test) { - char *e = NULL; - char q[] = "select * from t0 where k0 = 222 or k0 = 222"; - TT_ASSERT(tnt_query(&net, q, sizeof(q) - 1, &e) == 0); - TT_ASSERT(tnt_flush(&net) > 0); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_SELECT); - TT_ASSERT(r->count == 2); - struct tnt_iter il; - tnt_iter_list(&il, TNT_REPLY_LIST(r)); - TT_ASSERT(tnt_next(&il) == 1); - struct tnt_tuple *tp; - tp = TNT_ILIST_TUPLE(&il); - TT_ASSERT(tp->cardinality == 2); - TT_ASSERT(tp->alloc == 1); - TT_ASSERT(tp->data != NULL); - TT_ASSERT(tp->size != 0); - struct tnt_iter ifl; - tnt_iter(&ifl, tp); - TT_ASSERT(tnt_next(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_IDX(&ifl) == 0); - TT_ASSERT(TNT_IFIELD_SIZE(&ifl) == 4); - TT_ASSERT(*(uint32_t*)TNT_IFIELD_DATA(&ifl) == 222); - TT_ASSERT(tnt_next(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_IDX(&ifl) == 1); - TT_ASSERT(TNT_IFIELD_SIZE(&ifl) == 11); - TT_ASSERT(memcmp(TNT_IFIELD_DATA(&ifl), "ABllo world", 11) == 0); - TT_ASSERT(tnt_next(&ifl) == 0); - tnt_iter_free(&ifl); - tnt_iter_free(&il); - } - tnt_iter_free(&i); -} - -/* sql select limit */ -static void tt_tnt_sql_select_limit(struct tt_test *test) { - char *e = NULL; - char q[] = "select * from t0 where k0 = 222 limit 0"; - TT_ASSERT(tnt_query(&net, q, sizeof(q) - 1, &e) == 0); - TT_ASSERT(tnt_flush(&net) > 0); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_SELECT); - TT_ASSERT(r->count == 0); - } - tnt_iter_free(&i); -} - -/* sql delete */ -static void tt_tnt_sql_delete(struct tt_test *test) { - char *e = NULL; - char q[] = "delete from t0 where k0 = 222"; - TT_ASSERT(tnt_query(&net, q, sizeof(q) - 1, &e) == 0); - TT_ASSERT(tnt_flush(&net) > 0); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_DELETE); - TT_ASSERT(r->count == 1); - } - tnt_iter_free(&i); -} - -/* sql call */ -static void tt_tnt_sql_call(struct tt_test *test) { - char *e = NULL; - char q[] = "call box.insert('0', 454, 'abc', 'cba')"; - TT_ASSERT(tnt_query(&net, q, sizeof(q) - 1, &e) == 0); - TT_ASSERT(tnt_flush(&net) > 0); - struct tnt_iter i; - tnt_iter_reply(&i, &net); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - TT_ASSERT(r->code == 0); - TT_ASSERT(r->op == TNT_OP_CALL); - TT_ASSERT(r->count == 1); - } - tnt_iter_free(&i); -} - -int -main(int argc, char * argv[]) -{ - (void)argc, (void)argv; - - struct tt_list t; - memset(&t, 0, sizeof(t)); - - /* common data manipulation */ - tt_test(&t, "tuple1", tt_tnt_tuple1); - tt_test(&t, "tuple2", tt_tnt_tuple2); - tt_test(&t, "list", tt_tnt_list); - tt_test(&t, "stream buffer", tt_tnt_sbuf); - tt_test(&t, "tuple set", tt_tnt_tuple_set); - tt_test(&t, "iterator tuple", tt_tnt_iter1); - tt_test(&t, "iterator tuple (single field)", tt_tnt_iter11); - tt_test(&t, "iterator tuple (tnt_field)", tt_tnt_iter2); - tt_test(&t, "iterator tuple (empty)", tt_tnt_iter4); - tt_test(&t, "iterator list", tt_tnt_iter3); - /* marshaling */ - tt_test(&t, "marshaling ping", tt_tnt_marshal_ping); - tt_test(&t, "marshaling insert", tt_tnt_marshal_insert); - tt_test(&t, "marshaling delete", tt_tnt_marshal_delete); - tt_test(&t, "marshaling call", tt_tnt_marshal_call); - tt_test(&t, "marshaling select", tt_tnt_marshal_select); - tt_test(&t, "marshaling update", tt_tnt_marshal_update); - /* common operations */ - tt_test(&t, "connect", tt_tnt_net_connect); - tt_test(&t, "ping", tt_tnt_net_ping); - tt_test(&t, "insert", tt_tnt_net_insert); - tt_test(&t, "update", tt_tnt_net_update); - tt_test(&t, "select", tt_tnt_net_select); - tt_test(&t, "delete", tt_tnt_net_delete); - tt_test(&t, "call", tt_tnt_net_call); - tt_test(&t, "call (no args)", tt_tnt_net_call_na); - tt_test(&t, "reply", tt_tnt_net_reply); - /* sql lexer */ - tt_test(&t, "lex ws", tt_tnt_lex_ws); - tt_test(&t, "lex integer", tt_tnt_lex_int); - tt_test(&t, "lex string", tt_tnt_lex_str); - tt_test(&t, "lex punctuation", tt_tnt_lex_punct); - tt_test(&t, "lex ids", tt_tnt_lex_ids); - tt_test(&t, "lex keywords", tt_tnt_lex_kw); - tt_test(&t, "lex keys and tables", tt_tnt_lex_kt); - tt_test(&t, "lex stack", tt_tnt_lex_stack); - tt_test(&t, "lex bad string1", tt_tnt_lex_badstr1); - tt_test(&t, "lex bad string2", tt_tnt_lex_badstr2); - /* sql stmts */ - tt_test(&t, "sql ping", tt_tnt_sql_ping); - tt_test(&t, "sql insert", tt_tnt_sql_insert); - tt_test(&t, "sql update", tt_tnt_sql_update); - tt_test(&t, "sql select", tt_tnt_sql_select); - tt_test(&t, "sql select limit", tt_tnt_sql_select_limit); - tt_test(&t, "sql delete", tt_tnt_sql_delete); - tt_test(&t, "sql call", tt_tnt_sql_call); - - tt_run(&t); - tt_free(&t); - - tnt_stream_free(&net); - return 0; -} diff --git a/test/connector_c/update.c b/test/connector_c/update.c deleted file mode 100644 index 4f357d7c1f..0000000000 --- a/test/connector_c/update.c +++ /dev/null @@ -1,992 +0,0 @@ - -/* - * Copyright (C) 2011 Mail.RU - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <stdlib.h> -#include <stdio.h> -#include <stdbool.h> -#include <string.h> -#include <limits.h> - -#include <connector/c/include/tarantool/tnt.h> -#include <connector/c/include/tarantool/tnt_net.h> -#include <connector/c/include/tarantool/tnt_io.h> - -#include "tarantool/util.h" -#include <errcode.h> -#include <unit.h> - -/*========================================================================== - * test variables - *==========================================================================*/ - -/** tarantool connector instance */ -static struct tnt_stream *tnt; - -static char *long_string = "A long time ago, in a galaxy far, far away...\n" - "It is a period of civil war. Rebel\n" - "spaceships, striking from a hidden\n" - "base, have won their first victory\n" - "against the evil Galactic Empire.\n" - "During the battle, Rebel spies managed\n" - "to steal secret plans to the Empire's\n" - "ultimate weapon, the Death Star, an\n" - "armored space station with enough\n" - "power to destroy an entire planet.\n" - "Pursued by the Empire's sinister agents,\n" - "Princess Leia races home aboard her\n" - "starship, custodian of the stolen plans\n" - "that can save her people and restore\n" - "freedom to the galaxy...."; - -/*========================================================================== - * function declaration - *==========================================================================*/ - -/*-------------------------------------------------------------------------- - * tarantool management functions - *--------------------------------------------------------------------------*/ - -/** insert tuple */ -void -insert_tuple(struct tnt_tuple *tuple); - -/** select tuple by key */ -void -select_tuple(int32_t key); - -/** update fields */ -void -update(int32_t key, struct tnt_stream *stream); - -/** add update fields operation: set int32 */ -void -update_set_i32(struct tnt_stream *stream, int32_t field, int32_t value); - -/** add update fields operation: set string */ -void -update_set_str(struct tnt_stream *stream, int32_t field, char *str); - -/** add update fields operation: splice string */ -void -update_splice_str(struct tnt_stream *stream, int32_t field, int32_t offset, int32_t length, - char *list); - -/** add update fields operation: delete field */ -void -update_delete_field(struct tnt_stream *stream, int32_t field); - -/** add update fields operation: insert before int32 */ -void -update_insert_i32(struct tnt_stream *stream, int32_t field, int32_t value); - -/** add update fields operation: insert before string */ -void -update_insert_str(struct tnt_stream *stream, int32_t field, char *str); - -/** receive reply from server */ -void -recv_command(char *command); - -/** print tuple */ -void -print_tuple(struct tnt_tuple *tuple); - -/*-------------------------------------------------------------------------- - * test suite functions - *--------------------------------------------------------------------------*/ - -/** setup test suite */ -void -test_suite_setup(); - -/** clean-up test suite */ -void -test_suite_tear_down(); - -/** print tarantool error message and exit */ -void -fail_tnt_error(char *msg, int error_code); - -/** print tarantool error message and exit */ -void -fail_tnt_perror(char *msg); - - -/*-------------------------------------------------------------------------- - * test cases functions - *--------------------------------------------------------------------------*/ - -/** update fields test case: simple set operation test */ -void -test_simple_set(); - -/** update fields test case: long set operation test */ -void -test_long_set(); - -/** update fields test case: append(set) operation test */ -void -test_append(); - -/** update fields test case: 32-bit arithmetics operations test */ -void -test_arith_i32(); - -/** update fields test case: 64-bit arithmetics operations test */ -void -test_arith_i64(); - -/** update fields test case: multi arithmetics operations test */ -void -test_multi_arith(); - -/** update fields test case: splice operations test */ -void -test_splice(); - -/** update fields test case: set and spice operations test */ -void -test_set_and_splice(); - -/** update fields test case: delete field operations test */ -void -test_delete_field(); - -/** update fields test case: insert field operations test */ -void -test_insert_field(); - -/** update fields test case: boundary arguments values test */ -void -test_boundary_args(); - - -/*========================================================================== - * function definition - *==========================================================================*/ - -int -main() -{ - /* initialize suite */ - test_suite_setup(); - /* run tests */ - test_simple_set(); - test_long_set(); - test_append(); - test_arith_i32(); - test_arith_i64(); - test_multi_arith(); - test_splice(); - test_set_and_splice(); - test_delete_field(); - test_insert_field(); - test_boundary_args(); - /* clean-up suite */ - test_suite_tear_down(); - return EXIT_SUCCESS; -} - - -/*-------------------------------------------------------------------------- - * tarantool management functions - *--------------------------------------------------------------------------*/ - -void -insert_tuple(struct tnt_tuple *tuple) -{ - if (tnt_insert(tnt, 0, TNT_FLAG_RETURN, tuple) < 0) - fail_tnt_perror("tnt_insert"); - if (tnt_flush(tnt) < 0) - fail_tnt_perror("tnt_flush"); - recv_command("insert"); -} - -void -select_tuple(int32_t key) -{ - struct tnt_list tuple_list; - tnt_list_init(&tuple_list); - struct tnt_tuple *tuple = tnt_list_at(&tuple_list, NULL); - tnt_tuple(tuple, "%d", key); - if (tnt_select(tnt, 0, 0, 0, 1, &tuple_list) < 0) - fail_tnt_perror("tnt_select"); - if (tnt_flush(tnt) < 0) - fail_tnt_perror("tnt_flush"); - recv_command("select"); - tnt_list_free(&tuple_list); -} - -void -update(int32_t key, struct tnt_stream *stream) -{ - struct tnt_tuple *k = tnt_tuple(NULL, "%d", key); - if (tnt_update(tnt, 0, TNT_FLAG_RETURN, k, stream) < 0) - fail_tnt_perror("tnt_update"); - if (tnt_flush(tnt) < 0) - fail_tnt_perror("tnt_flush"); - tnt_tuple_free(k); - recv_command("update fields"); -} - -void -update_set_i32(struct tnt_stream *stream, int32_t field, int32_t value) -{ - int result = tnt_update_assign(stream, field, (char *)&value, sizeof(value)); - if (result < 0) - fail_tnt_error("tnt_update_assign", result); -} - -void -update_set_str(struct tnt_stream *stream, int32_t field, char *str) -{ - int result = tnt_update_assign(stream, field, str, strlen(str)); - if (result < 0) - fail_tnt_error("tnt_update_assign", result); -} - -void -update_splice_str(struct tnt_stream *stream, int32_t field, int32_t offset, int32_t length, - char *list) -{ - int result = tnt_update_splice(stream, field, offset, length, list, - strlen(list)); - if (result < 0) - fail_tnt_error("tnt_update_splice", result); -} - -void -update_delete_field(struct tnt_stream *stream, int32_t field) -{ - int result = tnt_update_delete(stream, field); - if (result < 0) - fail_tnt_error("tnt_update_delete", result); -} - -void -update_insert_i32(struct tnt_stream *stream, int32_t field, int32_t value) -{ - int result = tnt_update_insert(stream, field, (char *)&value, - sizeof(value)); - if (result < 0) - fail_tnt_error("tnt_update_insert", result); -} - -void -update_insert_str(struct tnt_stream *stream, int32_t field, char *str) -{ - int result = tnt_update_insert(stream, field, str, strlen(str)); - if (result < 0) - fail_tnt_error("tnt_update_insert_before", result); -} - -void -recv_command(char *command) -{ - struct tnt_iter i; - tnt_iter_reply(&i, tnt); - while (tnt_next(&i)) { - struct tnt_reply *r = TNT_IREPLY_PTR(&i); - printf("%s: respond %s (op: %"PRIu32", reqid: %"PRIu32", code: %"PRIu32", count: %"PRIu32")\n", - command, tnt_strerror(tnt), - r->op, - r->reqid, - r->code, - r->count); - struct tnt_iter it; - tnt_iter_list(&it, TNT_REPLY_LIST(r)); - while (tnt_next(&it)) { - struct tnt_tuple *tu = TNT_ILIST_TUPLE(&it); - print_tuple(tu); - } - tnt_iter_free(&it); - } - if (i.status == TNT_ITER_FAIL) - fail_tnt_perror("tnt_next"); - tnt_iter_free(&i); -} - -void -print_tuple(struct tnt_tuple *tuple) -{ - bool is_first = true; - printf("("); - - struct tnt_iter ifl; - tnt_iter(&ifl, tuple); - while (tnt_next(&ifl)) { - char *data = TNT_IFIELD_DATA(&ifl); - uint32_t size = TNT_IFIELD_SIZE(&ifl); - if (!is_first) { - printf(", "); - } - is_first = false; - - switch(size) { - case 1: - printf("%"PRIi8" (0x%02"PRIx8")", *(int8_t *)data, *(int8_t *)data); - break; - case 2: - printf("%"PRIi16" (0x%04"PRIx16")", *(int16_t *)data, *(int16_t *)data); - break; - case 4: - printf("%"PRIi32" (0x%08"PRIx32")", *(int32_t *)data, *(int32_t *)data); - break; - case 8: - printf("%"PRIi64" (0x%016"PRIx64")", *(int64_t *)data, *(int64_t *)data); - break; - default: - printf("'%.*s'", size, data); - break; - } - } - fail_if(ifl.status == TNT_ITER_FAIL); - tnt_iter_free(&ifl); - printf(")\n"); -} - - -/*-------------------------------------------------------------------------- - * test suite functions - *--------------------------------------------------------------------------*/ - -void -test_suite_setup() -{ - tnt = tnt_net(NULL); - fail_if(tnt == NULL); - - tnt_set(tnt, TNT_OPT_HOSTNAME, "localhost"); - tnt_set(tnt, TNT_OPT_PORT, 33013); - tnt_set(tnt, TNT_OPT_SEND_BUF, 128000); - - if (tnt_init(tnt) == -1) - fail_tnt_perror("tnt_init"); - if (tnt_connect(tnt) == -1) - fail_tnt_perror("tnt_connect"); -} - -void -test_suite_tear_down() -{ - tnt_stream_free(tnt); -} - -void -fail_tnt_error(char *msg, int error_code) -{ - printf("fail: %s: %i\n", msg, error_code); - exit(EXIT_FAILURE); -} - -void -fail_tnt_perror(char *msg) -{ - printf("fail: %s: %s\n", msg, tnt_strerror(tnt)); - exit(EXIT_FAILURE); -} - - -/*-------------------------------------------------------------------------- - * test cases functions - *--------------------------------------------------------------------------*/ - -void -test_simple_set() -{ - header(); - - /* insert tuple */ - printf("# insert tuple\n"); - struct tnt_tuple *tuple = tnt_tuple(NULL, "%d%d%d%s", 1, 2, 0, ""); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - printf("# test simple set field\n"); - struct tnt_stream *stream = tnt_buf(NULL); - update_set_str(stream, 1, "new field value"); - update_set_str(stream, 2, ""); - update_set_str(stream, 3, "fLaC"); - update(1, stream); - tnt_stream_free(stream); - - printf("# set field\n"); - stream = tnt_buf(NULL); - update_set_str(stream, 1, "value?"); - update_set_str(stream, 1, "very very very very very long field value?"); - update_set_str(stream, 1, "field's new value"); - update(1, stream); - tnt_stream_free(stream); - - stream = tnt_buf(NULL); - printf("# test set primary key\n"); - update_set_i32(stream, 0, 2); - update(1, stream); - tnt_stream_free(stream); - - footer(); -} - -void -test_long_set() -{ - header(); - - printf("# insert tuple\n"); - struct tnt_tuple *tuple = tnt_tuple(NULL, "%d%s%s%s", - 1, "first", "", "third"); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - printf("# test set big value in empty field\n"); - struct tnt_stream *stream = tnt_buf(NULL); - update_set_str(stream, 2, long_string); - update(1, stream); - tnt_stream_free(stream); - - printf("# test replace long value to short\n"); - stream = tnt_buf(NULL); - update_set_str(stream, 2, "short string"); - update(1, stream); - tnt_stream_free(stream); - - footer(); -} - -void -test_append() -{ - header(); - - /* insert tuple */ - printf("# insert tuple\n"); - struct tnt_tuple *tuple = tnt_tuple(NULL, "%d%s", 1, "first"); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - /* test append field */ - struct tnt_stream *stream = tnt_buf(NULL); - printf("# test append field\n"); - update_set_str(stream, 2, "second"); - update(1, stream); - tnt_stream_free(stream); - - /* test multi append field */ - stream = tnt_buf(NULL); - printf("# test multi append\n"); - update_set_str(stream, 3, "3"); - update_set_str(stream, 3, "new field value"); - update_set_str(stream, 3, "other new field value"); - update_set_str(stream, 3, "third"); - update(1, stream); - tnt_stream_free(stream); - - /* test append many field */ - stream = tnt_buf(NULL); - printf("# test append many fields\n"); - update_set_str(stream, 4, "fourth"); - update_set_str(stream, 5, "fifth"); - update_set_str(stream, 6, "sixth"); - update_set_str(stream, 7, "seventh"); - update_set_str(stream, 8, long_string); - update(1, stream); - tnt_stream_free(stream); - - /* test append and change field */ - stream = tnt_buf(NULL); - printf("# test append and change field\n"); - update_set_str(stream, 9, long_string); - update_splice_str(stream, 9, 1, 544, "ac"); - tnt_update_arith_i32(stream, 9, TNT_UPDATE_XOR, 0x3ffffff); - tnt_update_arith_i32(stream, 9, TNT_UPDATE_ADD, 1024); - update(1, stream); - tnt_stream_free(stream); - - /* test set to not an exist field */ - stream = tnt_buf(NULL); - printf("# test set to not an exist field\n"); - update_set_str(stream, 0xDEADBEEF, "invalid!"); - update(1, stream); - tnt_stream_free(stream); - - footer(); -} - -void -test_arith_i32() -{ - header(); - - printf("# insert tuple\n"); - struct tnt_tuple *tuple = tnt_tuple(NULL, "%d%d%d%d", 1, 2, 0, 0); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - printf("# test add\n"); - struct tnt_stream *stream = tnt_buf(NULL); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 16); - update(1, stream); - tnt_stream_free(stream); - - printf("# test overflow add\n"); - stream = tnt_buf(NULL); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, INT32_MAX); - update(1, stream); - tnt_stream_free(stream); - - printf("# test underflow add\n"); - stream = tnt_buf(NULL); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, INT32_MIN); - update(1, stream); - tnt_stream_free(stream); - - printf("# test or\n"); - stream = tnt_buf(NULL); - tnt_update_arith_i32(stream, 2, TNT_UPDATE_OR, 0xbacfbacf); - tnt_update_arith_i32(stream, 3, TNT_UPDATE_OR, 0xfabcfabc); - update(1, stream); - tnt_stream_free(stream); - - printf("# test xor\n"); - stream = tnt_buf(NULL); - tnt_update_arith_i32(stream, 2, TNT_UPDATE_XOR, 0xffffffff); - tnt_update_arith_i32(stream, 3, TNT_UPDATE_XOR, 0xffffffff); - update(1, stream); - tnt_stream_free(stream); - - printf("# test and\n"); - stream = tnt_buf(NULL); - tnt_update_arith_i32(stream, 2, TNT_UPDATE_AND, 0xf0f0f0f0); - tnt_update_arith_i32(stream, 3, TNT_UPDATE_AND, 0x0f0f0f0f); - update(1, stream); - tnt_stream_free(stream); - - footer(); -} - -/** update fields test case: 64-bit arithmetics operations test */ -void -test_arith_i64() -{ - header(); - - printf("# insert tuple\n"); - struct tnt_tuple *tuple = tnt_tuple(NULL, "%d%ll%ll%ll", 1, 2, 0, 0, 0); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - printf("# test add\n"); - struct tnt_stream *stream = tnt_buf(NULL); - tnt_update_arith_i64(stream, 1, TNT_UPDATE_ADD, 16); - update(1, stream); - tnt_stream_free(stream); - - printf("# test overflow add\n"); - stream = tnt_buf(NULL); - tnt_update_arith_i64(stream, 1, TNT_UPDATE_ADD, INT64_MAX); - update(1, stream); - tnt_stream_free(stream); - - printf("# test underflow add\n"); - stream = tnt_buf(NULL); - tnt_update_arith_i64(stream, 1, TNT_UPDATE_ADD, INT64_MIN); - update(1, stream); - tnt_stream_free(stream); - - printf("# test or\n"); - stream = tnt_buf(NULL); - tnt_update_arith_i64(stream, 2, TNT_UPDATE_OR, 0xbacfbacfbacfbacf); - tnt_update_arith_i64(stream, 3, TNT_UPDATE_OR, 0xfabcfabcfabcfabc); - update(1, stream); - tnt_stream_free(stream); - - printf("# test xor\n"); - stream = tnt_buf(NULL); - tnt_update_arith_i64(stream, 2, TNT_UPDATE_XOR, 0xffffffffffffffff); - tnt_update_arith_i64(stream, 3, TNT_UPDATE_XOR, 0xffffffffffffffff); - update(1, stream); - tnt_stream_free(stream); - - printf("# test and\n"); - stream = tnt_buf(NULL); - tnt_update_arith_i64(stream, 2, TNT_UPDATE_AND, 0xf0f0f0f0f0f0f0f0); - tnt_update_arith_i64(stream, 3, TNT_UPDATE_AND, 0x0f0f0f0f0f0f0f0f); - update(1, stream); - tnt_stream_free(stream); - - printf("# test casting 32-bit operand to 64-bit\n"); - stream = tnt_buf(NULL); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 16); - update(1, stream); - tnt_stream_free(stream); - - footer(); -} - -void -test_multi_arith() -{ - header(); - - printf("# insert tuple\n"); - struct tnt_tuple *tuple = tnt_tuple(NULL, "%d%s%d%s", 1, "first", 128, "third"); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - printf("# test simple and\n"); - struct tnt_stream *stream = tnt_buf(NULL); - update_set_i32(stream, 2, 0); - update_set_str(stream, 1, "first field new value"); - tnt_update_arith_i32(stream, 2, TNT_UPDATE_XOR, 0xF00F); - update_set_str(stream, 3, "third field new value"); - tnt_update_arith_i32(stream, 2, TNT_UPDATE_OR, 0xF00F); - update(1, stream); - tnt_stream_free(stream); - - footer(); -} - -void -test_splice() -{ - header(); - - printf("# insert tuple\n"); - struct tnt_tuple *tuple = tnt_tuple(NULL, "%d%s%s%s", 1, "first", "hi, this is a test string!", "third"); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - struct tnt_stream *stream = tnt_buf(NULL); - printf("# test cut from begin\n"); - update_splice_str(stream, 2, 0, 4, ""); - update(1, stream); - tnt_stream_free(stream); - - printf("# test cut from middle\n"); - stream = tnt_buf(NULL); - update_splice_str(stream, 2, 9, -8, ""); - update(1, stream); - tnt_stream_free(stream); - - printf("# test cut from end\n"); - stream = tnt_buf(NULL); - update_splice_str(stream, 2, -1, 1, ""); - update(1, stream); - tnt_stream_free(stream); - - printf("# test insert before begin\n"); - stream = tnt_buf(NULL); - update_splice_str(stream, 2, 0, 0, "Bonjour, "); - update(1, stream); - tnt_stream_free(stream); - - printf("# test insert after end\n"); - stream = tnt_buf(NULL); - update_splice_str(stream, 2, 10000, 0, " o_O!?"); - update(1, stream); - tnt_stream_free(stream); - - printf("# test replace in begin\n"); - stream = tnt_buf(NULL); - update_splice_str(stream, 2, 0, 7, "Hello"); - update(1, stream); - tnt_stream_free(stream); - - printf("# test replace in middle\n"); - stream = tnt_buf(NULL); - update_splice_str(stream, 2, 17, -6, "field"); - update(1, stream); - tnt_stream_free(stream); - - printf("# test replace in end\n"); - stream = tnt_buf(NULL); - update_splice_str(stream, 2, -6, 4, "! Is this Sparta"); - update(1, stream); - tnt_stream_free(stream); - - footer(); -} - -void -test_set_and_splice() -{ - header(); - - printf("# insert tuple\n"); - struct tnt_tuple *tuple = tnt_tuple(NULL, "%d%s%s%s", 1, - "first", - "hi, this is a test string!", - "third"); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - printf("# test set long string and splice to short\n"); - struct tnt_stream *stream = tnt_buf(NULL); - update_set_str(stream, 2, long_string); - update_splice_str(stream, 2, 45, 500, " away away away"); - update(1, stream); - tnt_stream_free(stream); - - printf("# test set short value and splice to long\n"); - stream = tnt_buf(NULL); - update_set_str(stream, 2, "test"); - update_splice_str(stream, 2, -4, 4, long_string); - update(1, stream); - tnt_stream_free(stream); - - printf("# test splice to long and set to short\n"); - stream = tnt_buf(NULL); - update_splice_str(stream, 3, -5, 5, long_string); - update_set_str(stream, 2, "short name"); - update(1, stream); - tnt_stream_free(stream); - - footer(); -} - -void -test_delete_field() -{ - header(); - - printf("# insert tuple\n"); - struct tnt_tuple *tuple = tnt_tuple(NULL, "%d%s%s%s%d%d%d%d%d%d%d%d%d%d", - 1, - "first", - "hi, this is a test string!", - "third", - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - printf("# test simple delete fields\n"); - struct tnt_stream *stream = tnt_buf(NULL); - update_delete_field(stream, 2); - update(1, stream); - tnt_stream_free(stream); - - printf("# test useless operations with delete fields\n"); - stream = tnt_buf(NULL); - update_set_i32(stream, 1, 0); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - update_delete_field(stream, 1); - update(1, stream); - tnt_stream_free(stream); - - printf("# test multi delete fields\n"); - stream = tnt_buf(NULL); - update_delete_field(stream, 2); - update_delete_field(stream, 3); - update_delete_field(stream, 4); - update_delete_field(stream, 5); - update_delete_field(stream, 6); - update_delete_field(stream, 7); - update_delete_field(stream, 8); - update_delete_field(stream, 9); - update_delete_field(stream, 10); - update(1, stream); - tnt_stream_free(stream); - - printf("# test multi delete fields\n"); - stream = tnt_buf(NULL); - update_delete_field(stream, 1); - update_set_i32(stream, 1, 3); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - update(1, stream); - tnt_stream_free(stream); - - printf("# test append and delete\n"); - stream = tnt_buf(NULL); - update_set_str(stream, 3, "second"); - update_delete_field(stream, 3); - update_set_str(stream, 3, "third"); - update_set_str(stream, 4, "third"); - update_delete_field(stream, 4); - update_set_str(stream, 4, "third"); - update_set_str(stream, 4, "fourth"); - update_set_str(stream, 5, "fifth"); - update_set_str(stream, 6, "sixth"); - update_set_str(stream, 7, "seventh"); - update_set_str(stream, 8, "eighth"); - update_set_str(stream, 9, "ninth"); - update_delete_field(stream, 7); - update_delete_field(stream, 6); - update(1, stream); - tnt_stream_free(stream); - - printf("# test double delete\n"); - stream = tnt_buf(NULL); - update_delete_field(stream, 3); - update_delete_field(stream, 3); - update(1, stream); - tnt_stream_free(stream); - select_tuple(1); - - printf("# test delete not an exist field\n"); - stream = tnt_buf(NULL); - update_delete_field(stream, 0xDEADBEEF); - update(1, stream); - tnt_stream_free(stream); - select_tuple(1); - - footer(); -} - -void -test_insert_field() -{ - header(); - - printf("# insert tuple\n"); - struct tnt_tuple *tuple = tnt_tuple(NULL, "%d%s", 9, "eleven"); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - printf("# insert new field before primary key\n"); - struct tnt_stream *stream = tnt_buf(NULL); - update_insert_i32(stream, 0, 7); - update_insert_i32(stream, 0, 8); - update(9, stream); - tnt_stream_free(stream); - - printf("# insert a new field before last field\n"); - stream = tnt_buf(NULL); - update_insert_i32(stream, 3, 10); - update(7, stream); - tnt_stream_free(stream); - - printf("# double insert at the end\n"); - stream = tnt_buf(NULL); - update_set_i32(stream, 5, 14); - update_insert_i32(stream, 6, 12); - update_insert_i32(stream, 5, 13); - update(7, stream); - tnt_stream_free(stream); - - printf("# multi insert \n"); - stream = tnt_buf(NULL); - update_insert_i32(stream, 5, 15); - update_insert_i32(stream, 5, 14); - update_insert_i32(stream, 5, 13); - update_insert_i32(stream, 5, 12); - update(7, stream); - tnt_stream_free(stream); - - printf("# insert before next to last field\n"); - stream = tnt_buf(NULL); - update_insert_i32(stream, 8, 15); - update(7, stream); - tnt_stream_free(stream); - - printf("# insert before next to last field\n"); - stream = tnt_buf(NULL); - update_set_i32(stream, 9, 17); - update_insert_i32(stream, 9, 16); - update_set_i32(stream, 10, 19); - update_insert_i32(stream, 10, 18); - update(7, stream); - tnt_stream_free(stream); - - printf("# insert second tuple\n"); - tuple = tnt_tuple(NULL, "%d%s%d", 0, "one", 11); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - stream = tnt_buf(NULL); - printf("# multi insert\n"); - update_set_i32(stream, 1, -11); - tnt_update_arith(stream, 1, TNT_UPDATE_ADD, 1); - update_insert_i32(stream, 1, 1); - tnt_update_arith(stream, 1, TNT_UPDATE_ADD, 2); - update_insert_i32(stream, 1, 2); - update_insert_i32(stream, 1, 3); - tnt_update_arith(stream, 1, TNT_UPDATE_ADD, 3); - tnt_update_arith(stream, 1, TNT_UPDATE_ADD, 4); - tnt_update_arith(stream, 1, TNT_UPDATE_ADD, 5); - update_insert_i32(stream, 1, 4); - update_insert_i32(stream, 1, 5); - tnt_update_arith(stream, 1, TNT_UPDATE_ADD, 6); - update_insert_i32(stream, 1, 6); - update_insert_i32(stream, 1, 7); - update_insert_i32(stream, 1, 8); - update_insert_i32(stream, 1, 9); - update(0, stream); - tnt_stream_free(stream); - - printf("# insert before invalid field number\n"); - stream = tnt_buf(NULL); - update_insert_str(stream, 100000, "ooppps!"); - update(7, stream); - tnt_stream_free(stream); - - footer(); -} - -void -test_boundary_args() -{ - header(); - - const int max_update_op_cnt = 4000; - - printf("# insert tuple\n"); - struct tnt_tuple *tuple = tnt_tuple(NULL, "%d%d", 0, 1); - insert_tuple(tuple); - tnt_tuple_free(tuple); - - printf("# test: try to do update w/o operations\n"); - struct tnt_stream *stream = tnt_buf(NULL); - update(0, stream); - tnt_stream_free(stream); - - printf("# test: update w/ maximal allowed opearions count\n"); - stream = tnt_buf(NULL); - for (int i = 0; i < max_update_op_cnt; ++i) - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - update(0, stream); - tnt_stream_free(stream); - - printf("# test: update w/ grater than maximal allowed opearions count\n"); - stream = tnt_buf(NULL); - for (int i = 0; i < max_update_op_cnt + 1; ++i) - tnt_update_arith_i32(stream, 1, TNT_UPDATE_ADD, 1); - update(0, stream); - tnt_stream_free(stream); - - footer(); -} diff --git a/test/connector_c/update.result b/test/connector_c/update.result deleted file mode 100644 index e1d2b52a79..0000000000 --- a/test/connector_c/update.result +++ /dev/null @@ -1,291 +0,0 @@ -box.insert(box.schema.SPACE_ID, 0, 0, 'tweedledum') ---- -- [0, 0, 'tweedledum'] -... -box.insert(box.schema.INDEX_ID, 0, 0, 'primary', 'hash', 1, 1, 0, 'str') ---- -- [0, 0, 'primary', 1752392040, 1, 1, 0, 'str'] -... - *** test_simple_set *** -# insert tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 2 (0x00000002), 0 (0x00000000), '') -# test simple set field -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'new field value', '', 1130450022 (0x43614c66)) -# set field -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'field's new value', '', 1130450022 (0x43614c66)) -# test set primary key -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(2 (0x00000002), 'field's new value', '', 1130450022 (0x43614c66)) - *** test_simple_set: done *** - *** test_long_set *** -# insert tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', '', 'third') -# test set big value in empty field -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'A long time ago, in a galaxy far, far away... -It is a period of civil war. Rebel -spaceships, striking from a hidden -base, have won their first victory -against the evil Galactic Empire. -During the battle, Rebel spies managed -to steal secret plans to the Empire's -ultimate weapon, the Death Star, an -armored space station with enough -power to destroy an entire planet. -Pursued by the Empire's sinister agents, -Princess Leia races home aboard her -starship, custodian of the stolen plans -that can save her people and restore -freedom to the galaxy....', 'third') -# test replace long value to short -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'short string', 'third') - *** test_long_set: done *** - *** test_append *** -# insert tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first') -# test append field -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'second') -# test multi append -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'second', 'third') -# test append many fields -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'A long time ago, in a galaxy far, far away... -It is a period of civil war. Rebel -spaceships, striking from a hidden -base, have won their first victory -against the evil Galactic Empire. -During the battle, Rebel spies managed -to steal secret plans to the Empire's -ultimate weapon, the Death Star, an -armored space station with enough -power to destroy an entire planet. -Pursued by the Empire's sinister agents, -Princess Leia races home aboard her -starship, custodian of the stolen plans -that can save her people and restore -freedom to the galaxy....') -# test append and change field -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'second', 'third', 'fourth', 'fifth', 'sixth', 'seventh', 'A long time ago, in a galaxy far, far away... -It is a period of civil war. Rebel -spaceships, striking from a hidden -base, have won their first victory -against the evil Galactic Empire. -During the battle, Rebel spies managed -to steal secret plans to the Empire's -ultimate weapon, the Death Star, an -armored space station with enough -power to destroy an entire planet. -Pursued by the Empire's sinister agents, -Princess Leia races home aboard her -starship, custodian of the stolen plans -that can save her people and restore -freedom to the galaxy....', 765239998 (0x2d9ca2be)) -# test set to not an exist field -update fields: respond ok (op: 19, reqid: 0, code: 13826, count: 0) - *** test_append: done *** - *** test_arith_i32 *** -# insert tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 2 (0x00000002), 0 (0x00000000), 0 (0x00000000)) -# test add -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 18 (0x00000012), 0 (0x00000000), 0 (0x00000000)) -# test overflow add -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), -2147483631 (0x80000011), 0 (0x00000000), 0 (0x00000000)) -# test underflow add -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 17 (0x00000011), 0 (0x00000000), 0 (0x00000000)) -# test or -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 17 (0x00000011), -1160791345 (0xbacfbacf), -88278340 (0xfabcfabc)) -# test xor -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 17 (0x00000011), 1160791344 (0x45304530), 88278339 (0x05430543)) -# test and -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 17 (0x00000011), 1076903984 (0x40304030), 84083971 (0x05030503)) - *** test_arith_i32: done *** - *** test_arith_i64 *** -# insert tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 2 (0x0000000000000002), 0 (0x0000000000000000), 0 (0x0000000000000000)) -# test add -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 18 (0x0000000000000012), 0 (0x0000000000000000), 0 (0x0000000000000000)) -# test overflow add -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), -9223372036854775791 (0x8000000000000011), 0 (0x0000000000000000), 0 (0x0000000000000000)) -# test underflow add -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 17 (0x0000000000000011), 0 (0x0000000000000000), 0 (0x0000000000000000)) -# test or -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 17 (0x0000000000000011), -4985560861120677169 (0xbacfbacfbacfbacf), -379152579038479684 (0xfabcfabcfabcfabc)) -# test xor -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 17 (0x0000000000000011), 4985560861120677168 (0x4530453045304530), 379152579038479683 (0x0543054305430543)) -# test and -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 17 (0x0000000000000011), 4625267393289011248 (0x4030403040304030), 361137905646896387 (0x0503050305030503)) -# test casting 32-bit operand to 64-bit -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 33 (0x0000000000000021), 4625267393289011248 (0x4030403040304030), 361137905646896387 (0x0503050305030503)) - *** test_arith_i64: done *** - *** test_multi_arith *** -# insert tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 128 (0x00000080), 'third') -# test simple and -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first field new value', 61455 (0x0000f00f), 'third field new value') - *** test_multi_arith: done *** - *** test_splice *** -# insert tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'hi, this is a test string!', 'third') -# test cut from begin -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'this is a test string!', 'third') -# test cut from middle -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'this is a string!', 'third') -# test cut from end -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'this is a string', 'third') -# test insert before begin -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'Bonjour, this is a string', 'third') -# test insert after end -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'Bonjour, this is a string o_O!?', 'third') -# test replace in begin -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'Hello, this is a string o_O!?', 'third') -# test replace in middle -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'Hello, this is a field o_O!?', 'third') -# test replace in end -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'Hello, this is a field! Is this Sparta!?', 'third') - *** test_splice: done *** - *** test_set_and_splice *** -# insert tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'hi, this is a test string!', 'third') -# test set long string and splice to short -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'A long time ago, in a galaxy far, far away... away away away.', 'third') -# test set short value and splice to long -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'A long time ago, in a galaxy far, far away... -It is a period of civil war. Rebel -spaceships, striking from a hidden -base, have won their first victory -against the evil Galactic Empire. -During the battle, Rebel spies managed -to steal secret plans to the Empire's -ultimate weapon, the Death Star, an -armored space station with enough -power to destroy an entire planet. -Pursued by the Empire's sinister agents, -Princess Leia races home aboard her -starship, custodian of the stolen plans -that can save her people and restore -freedom to the galaxy....', 'third') -# test splice to long and set to short -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'short name', 'A long time ago, in a galaxy far, far away... -It is a period of civil war. Rebel -spaceships, striking from a hidden -base, have won their first victory -against the evil Galactic Empire. -During the battle, Rebel spies managed -to steal secret plans to the Empire's -ultimate weapon, the Death Star, an -armored space station with enough -power to destroy an entire planet. -Pursued by the Empire's sinister agents, -Princess Leia races home aboard her -starship, custodian of the stolen plans -that can save her people and restore -freedom to the galaxy....') - *** test_set_and_splice: done *** - *** test_delete_field *** -# insert tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'hi, this is a test string!', 'third', 1 (0x00000001), 2 (0x00000002), 3 (0x00000003), 4 (0x00000004), 5 (0x00000005), 6 (0x00000006), 7 (0x00000007), 8 (0x00000008), 9 (0x00000009), 10 (0x0000000a)) -# test simple delete fields -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'first', 'third', 1 (0x00000001), 2 (0x00000002), 3 (0x00000003), 4 (0x00000004), 5 (0x00000005), 6 (0x00000006), 7 (0x00000007), 8 (0x00000008), 9 (0x00000009), 10 (0x0000000a)) -# test useless operations with delete fields -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 'third', 1 (0x00000001), 2 (0x00000002), 3 (0x00000003), 4 (0x00000004), 5 (0x00000005), 6 (0x00000006), 7 (0x00000007), 8 (0x00000008), 9 (0x00000009), 10 (0x0000000a)) -# test multi delete fields -update fields: respond ok (op: 19, reqid: 0, code: 13826, count: 0) -# test multi delete fields -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 9 (0x00000009), 2 (0x00000002), 3 (0x00000003), 4 (0x00000004), 5 (0x00000005), 6 (0x00000006), 7 (0x00000007), 8 (0x00000008), 9 (0x00000009), 10 (0x0000000a)) -# test append and delete -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 9 (0x00000009), 2 (0x00000002), 'third', 'fourth', 'fifth', 'eighth', 'ninth') -# test double delete -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 9 (0x00000009), 2 (0x00000002), 'fifth', 'eighth', 'ninth') -select: respond ok (op: 17, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 9 (0x00000009), 2 (0x00000002), 'fifth', 'eighth', 'ninth') -# test delete not an exist field -update fields: respond ok (op: 19, reqid: 0, code: 13826, count: 0) -select: respond ok (op: 17, reqid: 0, code: 0, count: 1) -(1 (0x00000001), 9 (0x00000009), 2 (0x00000002), 'fifth', 'eighth', 'ninth') - *** test_delete_field: done *** - *** test_insert_field *** -# insert tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(9 (0x00000009), 'eleven') -# insert new field before primary key -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(8 (0x00000008), 7 (0x00000007), 9 (0x00000009), 'eleven') -# insert a new field before last field -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 0) -# double insert at the end -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 0) -# multi insert -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 0) -# insert before next to last field -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 0) -# insert before next to last field -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 0) -# insert second tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(0 (0x00000000), 'one', 11 (0x0000000b)) -# multi insert -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(0 (0x00000000), 9 (0x00000009), 8 (0x00000008), 7 (0x00000007), 6 (0x00000006), 11 (0x0000000b), 4 (0x00000004), 15 (0x0000000f), 2 (0x00000002), 3 (0x00000003), -10 (0xfffffff6), 11 (0x0000000b)) -# insert before invalid field number -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 0) - *** test_insert_field: done *** - *** test_boundary_args *** -# insert tuple -insert: respond ok (op: 13, reqid: 0, code: 0, count: 1) -(0 (0x00000000), 1 (0x00000001)) -# test: try to do update w/o operations -update fields: respond ok (op: 19, reqid: 0, code: 514, count: 0) -# test: update w/ maximal allowed opearions count -update fields: respond ok (op: 19, reqid: 0, code: 0, count: 1) -(0 (0x00000000), 4001 (0x00000fa1)) -# test: update w/ grater than maximal allowed opearions count -update fields: respond ok (op: 19, reqid: 0, code: 514, count: 0) - *** test_boundary_args: done *** - box.space[0]:drop() ---- -... diff --git a/test/connector_c/update.test.py b/test/connector_c/update.test.py deleted file mode 100644 index 991105195d..0000000000 --- a/test/connector_c/update.test.py +++ /dev/null @@ -1,20 +0,0 @@ -import subprocess -import sys -import os - -admin("box.insert(box.schema.SPACE_ID, 0, 0, 'tweedledum')") -admin("box.insert(box.schema.INDEX_ID, 0, 0, 'primary', 'hash', 1, 1, 0, 'str')") - -p = subprocess.Popen([ os.path.join(builddir, "test/connector_c/update") ], stdout=subprocess.PIPE) -p.wait() -for line in p.stdout.readlines(): - sys.stdout.write(line) - -# resore default suite -#server.stop() -#server.deploy(self.suite_ini["config"]) -#server.start() - -admin("box.space[0]:drop()") - -# vim: syntax=python diff --git a/test/connector_c/xlog.c b/test/connector_c/xlog.c deleted file mode 100644 index b7543509e5..0000000000 --- a/test/connector_c/xlog.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * 1. Redistributions of source code must retain the above - * copyright notice, this list of conditions and the - * following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY <COPYRIGHT HOLDER> ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL - * <COPYRIGHT HOLDER> OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF - * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF - * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ -#include <stdlib.h> -#include <stdint.h> -#include <inttypes.h> -#include <stdbool.h> -#include <stdio.h> -#include <string.h> - -#include <connector/c/include/tarantool/tnt.h> -#include <connector/c/include/tarantool/tnt_net.h> -#include <connector/c/include/tarantool/tnt_xlog.h> -#include <connector/c/include/tarantool/tnt_rpl.h> - -static char *opname(uint32_t type) { - switch (type) { - case TNT_OP_PING: return "Ping"; - case TNT_OP_INSERT: return "Insert"; - case TNT_OP_DELETE: return "Delete"; - case TNT_OP_UPDATE: return "Update"; - case TNT_OP_SELECT: return "Select"; - case TNT_OP_CALL: return "Call"; - } - return "Unknown"; -} - -int -main(int argc, char * argv[]) -{ - if (argc != 2) - return 1; - - struct tnt_stream s; - tnt_xlog(&s); - - if (tnt_xlog_open(&s, argv[1]) == -1) - return 1; - - struct tnt_iter i; - tnt_iter_request(&i, &s); - - while (tnt_next(&i)) { - struct tnt_stream_xlog *sx = TNT_SXLOG_CAST(&s); - printf("%s lsn: %"PRIu64", time: %f, len: %d\n", - opname(sx->log.current.row.op), - sx->log.current.hdr.lsn, - sx->log.current.hdr.tm, - sx->log.current.hdr.len); - } - if (i.status == TNT_ITER_FAIL) - printf("parsing failed: %s\n", tnt_xlog_strerror(&s)); - - tnt_iter_free(&i); - tnt_stream_free(&s); - return 0; -} diff --git a/test/connector_c/xlog_rpl.result b/test/connector_c/xlog_rpl.result deleted file mode 100644 index 890faaeabe..0000000000 --- a/test/connector_c/xlog_rpl.result +++ /dev/null @@ -1,2401 +0,0 @@ -Insert lsn: 2, time: 1338903440.187947, len: 68 -Insert lsn: 3, time: 1338903440.190419, len: 68 -Insert lsn: 4, time: 1338903440.190539, len: 68 -Insert lsn: 5, time: 1338903440.190582, len: 68 -Insert lsn: 6, time: 1338903440.190608, len: 68 -Insert lsn: 7, time: 1338903440.190633, len: 68 -Insert lsn: 8, time: 1338903440.190657, len: 68 -Insert lsn: 9, time: 1338903440.190681, len: 68 -Insert lsn: 10, time: 1338903440.190712, len: 68 -Insert lsn: 11, time: 1338903440.190736, len: 68 -Insert lsn: 12, time: 1338903440.190762, len: 69 -Insert lsn: 13, time: 1338903440.190785, len: 69 -Insert lsn: 14, time: 1338903440.190810, len: 69 -Insert lsn: 15, time: 1338903440.190834, len: 69 -Insert lsn: 16, time: 1338903440.190858, len: 69 -Insert lsn: 17, time: 1338903440.190883, len: 69 -Insert lsn: 18, time: 1338903440.190908, len: 69 -Insert lsn: 19, time: 1338903440.190942, len: 69 -Insert lsn: 20, time: 1338903440.190967, len: 69 -Insert lsn: 21, time: 1338903440.190992, len: 69 -Insert lsn: 22, time: 1338903440.191015, len: 69 -Insert lsn: 23, time: 1338903440.191040, len: 69 -Insert lsn: 24, time: 1338903440.191064, len: 69 -Insert lsn: 25, time: 1338903440.191088, len: 69 -Insert lsn: 26, time: 1338903440.191112, len: 69 -Insert lsn: 27, time: 1338903440.191138, len: 69 -Insert lsn: 28, time: 1338903440.191163, len: 69 -Insert lsn: 29, time: 1338903440.191188, len: 69 -Insert lsn: 30, time: 1338903440.191213, len: 69 -Insert lsn: 31, time: 1338903440.191238, len: 69 -Insert lsn: 32, time: 1338903440.191262, len: 69 -Insert lsn: 33, time: 1338903440.191284, len: 69 -Insert lsn: 34, time: 1338903440.191319, len: 69 -Insert lsn: 35, time: 1338903440.191344, len: 69 -Insert lsn: 36, time: 1338903440.191369, len: 69 -Insert lsn: 37, time: 1338903440.191393, len: 69 -Insert lsn: 38, time: 1338903440.191417, len: 69 -Insert lsn: 39, time: 1338903440.191441, len: 69 -Insert lsn: 40, time: 1338903440.191479, len: 69 -Insert lsn: 41, time: 1338903440.191503, len: 69 -Insert lsn: 42, time: 1338903440.191526, len: 69 -Insert lsn: 43, time: 1338903440.191603, len: 69 -Insert lsn: 44, time: 1338903440.191632, len: 69 -Insert lsn: 45, time: 1338903440.191655, len: 69 -Insert lsn: 46, time: 1338903440.191681, len: 69 -Insert lsn: 47, time: 1338903440.191704, len: 69 -Insert lsn: 48, time: 1338903440.191727, len: 69 -Insert lsn: 49, time: 1338903440.191750, len: 69 -Insert lsn: 50, time: 1338903440.191774, len: 69 -Insert lsn: 51, time: 1338903440.191797, len: 69 -Insert lsn: 52, time: 1338903440.191820, len: 69 -Insert lsn: 53, time: 1338903440.191844, len: 69 -Insert lsn: 54, time: 1338903440.191874, len: 69 -Insert lsn: 55, time: 1338903440.191897, len: 69 -Insert lsn: 56, time: 1338903440.191921, len: 69 -Insert lsn: 57, time: 1338903440.191944, len: 69 -Insert lsn: 58, time: 1338903440.191967, len: 69 -Insert lsn: 59, time: 1338903440.191992, len: 69 -Insert lsn: 60, time: 1338903440.192016, len: 69 -Insert lsn: 61, time: 1338903440.192039, len: 69 -Insert lsn: 62, time: 1338903440.192063, len: 69 -Insert lsn: 63, time: 1338903440.192086, len: 69 -Insert lsn: 64, time: 1338903440.192111, len: 69 -Insert lsn: 65, time: 1338903440.192134, len: 69 -Insert lsn: 66, time: 1338903440.192164, len: 69 -Insert lsn: 67, time: 1338903440.192188, len: 69 -Insert lsn: 68, time: 1338903440.192212, len: 69 -Insert lsn: 69, time: 1338903440.192235, len: 69 -Insert lsn: 70, time: 1338903440.192278, len: 69 -Insert lsn: 71, time: 1338903440.192302, len: 69 -Insert lsn: 72, time: 1338903440.192327, len: 69 -Insert lsn: 73, time: 1338903440.192351, len: 69 -Insert lsn: 74, time: 1338903440.192376, len: 69 -Insert lsn: 75, time: 1338903440.192401, len: 69 -Insert lsn: 76, time: 1338903440.192424, len: 69 -Insert lsn: 77, time: 1338903440.192449, len: 69 -Insert lsn: 78, time: 1338903440.192473, len: 69 -Insert lsn: 79, time: 1338903440.192497, len: 69 -Insert lsn: 80, time: 1338903440.192521, len: 69 -Insert lsn: 81, time: 1338903440.192545, len: 69 -Insert lsn: 82, time: 1338903440.192569, len: 69 -Insert lsn: 83, time: 1338903440.192593, len: 69 -Insert lsn: 84, time: 1338903440.192642, len: 69 -Insert lsn: 85, time: 1338903440.192670, len: 69 -Insert lsn: 86, time: 1338903440.192701, len: 69 -Insert lsn: 87, time: 1338903440.192726, len: 69 -Insert lsn: 88, time: 1338903440.192749, len: 69 -Insert lsn: 89, time: 1338903440.192773, len: 69 -Insert lsn: 90, time: 1338903440.192798, len: 69 -Insert lsn: 91, time: 1338903440.192822, len: 69 -Insert lsn: 92, time: 1338903440.192846, len: 69 -Insert lsn: 93, time: 1338903440.192871, len: 69 -Insert lsn: 94, time: 1338903440.192896, len: 69 -Insert lsn: 95, time: 1338903440.192921, len: 69 -Insert lsn: 96, time: 1338903440.192946, len: 69 -Insert lsn: 97, time: 1338903440.192970, len: 69 -Insert lsn: 98, time: 1338903440.192993, len: 69 -Insert lsn: 99, time: 1338903440.193017, len: 69 -Insert lsn: 100, time: 1338903440.193042, len: 69 -Insert lsn: 101, time: 1338903440.193065, len: 69 -Insert lsn: 102, time: 1338903440.193547, len: 100 -Insert lsn: 103, time: 1338903440.207494, len: 100 -Insert lsn: 104, time: 1338903440.207539, len: 100 -Insert lsn: 105, time: 1338903440.207564, len: 100 -Insert lsn: 106, time: 1338903440.207613, len: 100 -Insert lsn: 107, time: 1338903440.207639, len: 100 -Insert lsn: 108, time: 1338903440.207665, len: 100 -Insert lsn: 109, time: 1338903440.207690, len: 100 -Insert lsn: 110, time: 1338903440.207717, len: 100 -Insert lsn: 111, time: 1338903440.207745, len: 100 -Insert lsn: 112, time: 1338903440.207770, len: 101 -Insert lsn: 113, time: 1338903440.207795, len: 101 -Insert lsn: 114, time: 1338903440.207819, len: 101 -Insert lsn: 115, time: 1338903440.207844, len: 101 -Insert lsn: 116, time: 1338903440.207870, len: 101 -Insert lsn: 117, time: 1338903440.207895, len: 101 -Insert lsn: 118, time: 1338903440.207918, len: 101 -Insert lsn: 119, time: 1338903440.207976, len: 101 -Insert lsn: 120, time: 1338903440.208004, len: 101 -Insert lsn: 121, time: 1338903440.208029, len: 101 -Insert lsn: 122, time: 1338903440.208054, len: 101 -Insert lsn: 123, time: 1338903440.208078, len: 101 -Insert lsn: 124, time: 1338903440.208119, len: 101 -Insert lsn: 125, time: 1338903440.208144, len: 101 -Insert lsn: 126, time: 1338903440.208168, len: 101 -Insert lsn: 127, time: 1338903440.208193, len: 101 -Insert lsn: 128, time: 1338903440.208218, len: 101 -Insert lsn: 129, time: 1338903440.208291, len: 101 -Insert lsn: 130, time: 1338903440.208318, len: 101 -Insert lsn: 131, time: 1338903440.208343, len: 101 -Insert lsn: 132, time: 1338903440.208370, len: 101 -Insert lsn: 133, time: 1338903440.208396, len: 101 -Insert lsn: 134, time: 1338903440.208422, len: 101 -Insert lsn: 135, time: 1338903440.208447, len: 101 -Insert lsn: 136, time: 1338903440.208473, len: 101 -Insert lsn: 137, time: 1338903440.208499, len: 101 -Insert lsn: 138, time: 1338903440.208561, len: 101 -Insert lsn: 139, time: 1338903440.208586, len: 101 -Insert lsn: 140, time: 1338903440.208610, len: 101 -Insert lsn: 141, time: 1338903440.208634, len: 101 -Insert lsn: 142, time: 1338903440.208664, len: 101 -Insert lsn: 143, time: 1338903440.208688, len: 101 -Insert lsn: 144, time: 1338903440.208712, len: 101 -Insert lsn: 145, time: 1338903440.208735, len: 101 -Insert lsn: 146, time: 1338903440.208760, len: 101 -Insert lsn: 147, time: 1338903440.208783, len: 101 -Insert lsn: 148, time: 1338903440.208807, len: 101 -Insert lsn: 149, time: 1338903440.208831, len: 101 -Insert lsn: 150, time: 1338903440.208875, len: 101 -Insert lsn: 151, time: 1338903440.208900, len: 101 -Insert lsn: 152, time: 1338903440.208924, len: 101 -Insert lsn: 153, time: 1338903440.208947, len: 101 -Insert lsn: 154, time: 1338903440.208971, len: 101 -Insert lsn: 155, time: 1338903440.208994, len: 101 -Insert lsn: 156, time: 1338903440.209018, len: 101 -Insert lsn: 157, time: 1338903440.209043, len: 101 -Insert lsn: 158, time: 1338903440.209066, len: 101 -Insert lsn: 159, time: 1338903440.209090, len: 101 -Insert lsn: 160, time: 1338903440.209126, len: 101 -Insert lsn: 161, time: 1338903440.209151, len: 101 -Insert lsn: 162, time: 1338903440.209175, len: 101 -Insert lsn: 163, time: 1338903440.209199, len: 101 -Insert lsn: 164, time: 1338903440.209223, len: 101 -Insert lsn: 165, time: 1338903440.209247, len: 101 -Insert lsn: 166, time: 1338903440.209296, len: 101 -Insert lsn: 167, time: 1338903440.209320, len: 101 -Insert lsn: 168, time: 1338903440.209344, len: 101 -Insert lsn: 169, time: 1338903440.209367, len: 101 -Insert lsn: 170, time: 1338903440.209390, len: 101 -Insert lsn: 171, time: 1338903440.209414, len: 101 -Insert lsn: 172, time: 1338903440.209438, len: 101 -Insert lsn: 173, time: 1338903440.209461, len: 101 -Insert lsn: 174, time: 1338903440.209485, len: 101 -Insert lsn: 175, time: 1338903440.209509, len: 101 -Insert lsn: 176, time: 1338903440.209533, len: 101 -Insert lsn: 177, time: 1338903440.209564, len: 101 -Insert lsn: 178, time: 1338903440.209589, len: 101 -Insert lsn: 179, time: 1338903440.209613, len: 101 -Insert lsn: 180, time: 1338903440.209637, len: 101 -Insert lsn: 181, time: 1338903440.209678, len: 101 -Insert lsn: 182, time: 1338903440.209703, len: 101 -Insert lsn: 183, time: 1338903440.209745, len: 101 -Insert lsn: 184, time: 1338903440.209770, len: 101 -Insert lsn: 185, time: 1338903440.209794, len: 101 -Insert lsn: 186, time: 1338903440.209819, len: 101 -Insert lsn: 187, time: 1338903440.209842, len: 101 -Insert lsn: 188, time: 1338903440.209866, len: 101 -Insert lsn: 189, time: 1338903440.209889, len: 101 -Insert lsn: 190, time: 1338903440.209913, len: 101 -Insert lsn: 191, time: 1338903440.209937, len: 101 -Insert lsn: 192, time: 1338903440.209961, len: 101 -Insert lsn: 193, time: 1338903440.209985, len: 101 -Insert lsn: 194, time: 1338903440.210010, len: 101 -Insert lsn: 195, time: 1338903440.210041, len: 101 -Insert lsn: 196, time: 1338903440.210065, len: 101 -Insert lsn: 197, time: 1338903440.210088, len: 101 -Insert lsn: 198, time: 1338903440.210112, len: 101 -Insert lsn: 199, time: 1338903440.210135, len: 101 -Insert lsn: 200, time: 1338903440.210160, len: 101 -Insert lsn: 201, time: 1338903440.210183, len: 101 -Insert lsn: 202, time: 1338903440.210887, len: 166 -Insert lsn: 203, time: 1338903440.213901, len: 166 -Insert lsn: 204, time: 1338903440.213959, len: 166 -Insert lsn: 205, time: 1338903440.213986, len: 166 -Insert lsn: 206, time: 1338903440.214033, len: 166 -Insert lsn: 207, time: 1338903440.214060, len: 166 -Insert lsn: 208, time: 1338903440.214119, len: 166 -Insert lsn: 209, time: 1338903440.214145, len: 166 -Insert lsn: 210, time: 1338903440.214170, len: 166 -Insert lsn: 211, time: 1338903440.214196, len: 166 -Insert lsn: 212, time: 1338903440.214221, len: 167 -Insert lsn: 213, time: 1338903440.214246, len: 167 -Insert lsn: 214, time: 1338903440.214271, len: 167 -Insert lsn: 215, time: 1338903440.214297, len: 167 -Insert lsn: 216, time: 1338903440.214322, len: 167 -Insert lsn: 217, time: 1338903440.214347, len: 167 -Insert lsn: 218, time: 1338903440.214373, len: 167 -Insert lsn: 219, time: 1338903440.214398, len: 167 -Insert lsn: 220, time: 1338903440.214430, len: 167 -Insert lsn: 221, time: 1338903440.214456, len: 167 -Insert lsn: 222, time: 1338903440.214482, len: 167 -Insert lsn: 223, time: 1338903440.214507, len: 167 -Insert lsn: 224, time: 1338903440.214531, len: 167 -Insert lsn: 225, time: 1338903440.214556, len: 167 -Insert lsn: 226, time: 1338903440.214580, len: 167 -Insert lsn: 227, time: 1338903440.214604, len: 167 -Insert lsn: 228, time: 1338903440.214628, len: 167 -Insert lsn: 229, time: 1338903440.214673, len: 167 -Insert lsn: 230, time: 1338903440.214703, len: 167 -Insert lsn: 231, time: 1338903440.214729, len: 167 -Insert lsn: 232, time: 1338903440.214753, len: 167 -Insert lsn: 233, time: 1338903440.214778, len: 167 -Insert lsn: 234, time: 1338903440.214828, len: 167 -Insert lsn: 235, time: 1338903440.214853, len: 167 -Insert lsn: 236, time: 1338903440.214878, len: 167 -Insert lsn: 237, time: 1338903440.214927, len: 167 -Insert lsn: 238, time: 1338903440.214953, len: 167 -Insert lsn: 239, time: 1338903440.214980, len: 167 -Insert lsn: 240, time: 1338903440.215005, len: 167 -Insert lsn: 241, time: 1338903440.215030, len: 167 -Insert lsn: 242, time: 1338903440.215055, len: 167 -Insert lsn: 243, time: 1338903440.215080, len: 167 -Insert lsn: 244, time: 1338903440.215105, len: 167 -Insert lsn: 245, time: 1338903440.215131, len: 167 -Insert lsn: 246, time: 1338903440.215157, len: 167 -Insert lsn: 247, time: 1338903440.215190, len: 167 -Insert lsn: 248, time: 1338903440.215215, len: 167 -Insert lsn: 249, time: 1338903440.215277, len: 167 -Insert lsn: 250, time: 1338903440.215327, len: 167 -Insert lsn: 251, time: 1338903440.215356, len: 167 -Insert lsn: 252, time: 1338903440.215382, len: 167 -Insert lsn: 253, time: 1338903440.215407, len: 167 -Insert lsn: 254, time: 1338903440.215432, len: 167 -Insert lsn: 255, time: 1338903440.215459, len: 167 -Insert lsn: 256, time: 1338903440.215486, len: 167 -Insert lsn: 257, time: 1338903440.215513, len: 167 -Insert lsn: 258, time: 1338903440.215539, len: 167 -Insert lsn: 259, time: 1338903440.215563, len: 167 -Insert lsn: 260, time: 1338903440.215590, len: 167 -Insert lsn: 261, time: 1338903440.215623, len: 167 -Insert lsn: 262, time: 1338903440.215649, len: 167 -Insert lsn: 263, time: 1338903440.215675, len: 167 -Insert lsn: 264, time: 1338903440.215699, len: 167 -Insert lsn: 265, time: 1338903440.215723, len: 167 -Insert lsn: 266, time: 1338903440.215748, len: 167 -Insert lsn: 267, time: 1338903440.215773, len: 167 -Insert lsn: 268, time: 1338903440.215797, len: 167 -Insert lsn: 269, time: 1338903440.215822, len: 167 -Insert lsn: 270, time: 1338903440.215866, len: 167 -Insert lsn: 271, time: 1338903440.215894, len: 167 -Insert lsn: 272, time: 1338903440.215918, len: 167 -Insert lsn: 273, time: 1338903440.215942, len: 167 -Insert lsn: 274, time: 1338903440.215968, len: 167 -Insert lsn: 275, time: 1338903440.216054, len: 167 -Insert lsn: 276, time: 1338903440.216105, len: 167 -Insert lsn: 277, time: 1338903440.216130, len: 167 -Insert lsn: 278, time: 1338903440.216155, len: 167 -Insert lsn: 279, time: 1338903440.216181, len: 167 -Insert lsn: 280, time: 1338903440.216207, len: 167 -Insert lsn: 281, time: 1338903440.216231, len: 167 -Insert lsn: 282, time: 1338903440.216256, len: 167 -Insert lsn: 283, time: 1338903440.216281, len: 167 -Insert lsn: 284, time: 1338903440.216306, len: 167 -Insert lsn: 285, time: 1338903440.216332, len: 167 -Insert lsn: 286, time: 1338903440.216357, len: 167 -Insert lsn: 287, time: 1338903440.216382, len: 167 -Insert lsn: 288, time: 1338903440.216407, len: 167 -Insert lsn: 289, time: 1338903440.216444, len: 167 -Insert lsn: 290, time: 1338903440.216470, len: 167 -Insert lsn: 291, time: 1338903440.216519, len: 167 -Insert lsn: 292, time: 1338903440.216549, len: 167 -Insert lsn: 293, time: 1338903440.216576, len: 167 -Insert lsn: 294, time: 1338903440.216602, len: 167 -Insert lsn: 295, time: 1338903440.216627, len: 167 -Insert lsn: 296, time: 1338903440.216652, len: 167 -Insert lsn: 297, time: 1338903440.216677, len: 167 -Insert lsn: 298, time: 1338903440.216701, len: 167 -Insert lsn: 299, time: 1338903440.216725, len: 167 -Insert lsn: 300, time: 1338903440.216749, len: 167 -Insert lsn: 301, time: 1338903440.216774, len: 167 -Insert lsn: 302, time: 1338903440.217291, len: 68 -Insert lsn: 303, time: 1338903440.217376, len: 68 -Insert lsn: 304, time: 1338903440.217406, len: 68 -Insert lsn: 305, time: 1338903440.217431, len: 68 -Insert lsn: 306, time: 1338903440.217458, len: 68 -Insert lsn: 307, time: 1338903440.217483, len: 68 -Insert lsn: 308, time: 1338903440.217508, len: 68 -Insert lsn: 309, time: 1338903440.217533, len: 68 -Insert lsn: 310, time: 1338903440.217565, len: 68 -Insert lsn: 311, time: 1338903440.217591, len: 68 -Insert lsn: 312, time: 1338903440.217618, len: 69 -Insert lsn: 313, time: 1338903440.217644, len: 69 -Insert lsn: 314, time: 1338903440.217670, len: 69 -Insert lsn: 315, time: 1338903440.217697, len: 69 -Insert lsn: 316, time: 1338903440.217722, len: 69 -Insert lsn: 317, time: 1338903440.217749, len: 69 -Insert lsn: 318, time: 1338903440.217776, len: 69 -Insert lsn: 319, time: 1338903440.217801, len: 69 -Insert lsn: 320, time: 1338903440.217865, len: 69 -Insert lsn: 321, time: 1338903440.217896, len: 69 -Insert lsn: 322, time: 1338903440.217923, len: 69 -Insert lsn: 323, time: 1338903440.217949, len: 69 -Insert lsn: 324, time: 1338903440.217974, len: 69 -Insert lsn: 325, time: 1338903440.218000, len: 69 -Insert lsn: 326, time: 1338903440.218045, len: 69 -Insert lsn: 327, time: 1338903440.218071, len: 69 -Insert lsn: 328, time: 1338903440.218097, len: 69 -Insert lsn: 329, time: 1338903440.218124, len: 69 -Insert lsn: 330, time: 1338903440.218150, len: 69 -Insert lsn: 331, time: 1338903440.218176, len: 69 -Insert lsn: 332, time: 1338903440.218203, len: 69 -Insert lsn: 333, time: 1338903440.218246, len: 69 -Insert lsn: 334, time: 1338903440.218277, len: 69 -Insert lsn: 335, time: 1338903440.218303, len: 69 -Insert lsn: 336, time: 1338903440.218329, len: 69 -Insert lsn: 337, time: 1338903440.218354, len: 69 -Insert lsn: 338, time: 1338903440.218380, len: 69 -Insert lsn: 339, time: 1338903440.218406, len: 69 -Insert lsn: 340, time: 1338903440.218431, len: 69 -Insert lsn: 341, time: 1338903440.218456, len: 69 -Insert lsn: 342, time: 1338903440.218491, len: 69 -Insert lsn: 343, time: 1338903440.218516, len: 69 -Insert lsn: 344, time: 1338903440.218542, len: 69 -Insert lsn: 345, time: 1338903440.218567, len: 69 -Insert lsn: 346, time: 1338903440.218592, len: 69 -Insert lsn: 347, time: 1338903440.218617, len: 69 -Insert lsn: 348, time: 1338903440.218643, len: 69 -Insert lsn: 349, time: 1338903440.218669, len: 69 -Insert lsn: 350, time: 1338903440.218695, len: 69 -Insert lsn: 351, time: 1338903440.218721, len: 69 -Insert lsn: 352, time: 1338903440.218748, len: 69 -Insert lsn: 353, time: 1338903440.218773, len: 69 -Insert lsn: 354, time: 1338903440.218798, len: 69 -Insert lsn: 355, time: 1338903440.218824, len: 69 -Insert lsn: 356, time: 1338903440.218851, len: 69 -Insert lsn: 357, time: 1338903440.218877, len: 69 -Insert lsn: 358, time: 1338903440.218915, len: 69 -Insert lsn: 359, time: 1338903440.218943, len: 69 -Insert lsn: 360, time: 1338903440.218969, len: 69 -Insert lsn: 361, time: 1338903440.219052, len: 69 -Insert lsn: 362, time: 1338903440.219089, len: 69 -Insert lsn: 363, time: 1338903440.219114, len: 69 -Insert lsn: 364, time: 1338903440.219139, len: 69 -Insert lsn: 365, time: 1338903440.219164, len: 69 -Insert lsn: 366, time: 1338903440.219190, len: 69 -Insert lsn: 367, time: 1338903440.219216, len: 69 -Insert lsn: 368, time: 1338903440.219241, len: 69 -Insert lsn: 369, time: 1338903440.219266, len: 69 -Insert lsn: 370, time: 1338903440.219291, len: 69 -Insert lsn: 371, time: 1338903440.219316, len: 69 -Insert lsn: 372, time: 1338903440.219342, len: 69 -Insert lsn: 373, time: 1338903440.219367, len: 69 -Insert lsn: 374, time: 1338903440.219391, len: 69 -Insert lsn: 375, time: 1338903440.219422, len: 69 -Insert lsn: 376, time: 1338903440.219448, len: 69 -Insert lsn: 377, time: 1338903440.219478, len: 69 -Insert lsn: 378, time: 1338903440.219503, len: 69 -Insert lsn: 379, time: 1338903440.219528, len: 69 -Insert lsn: 380, time: 1338903440.219552, len: 69 -Insert lsn: 381, time: 1338903440.219577, len: 69 -Insert lsn: 382, time: 1338903440.219601, len: 69 -Insert lsn: 383, time: 1338903440.219625, len: 69 -Insert lsn: 384, time: 1338903440.219650, len: 69 -Insert lsn: 385, time: 1338903440.219675, len: 69 -Insert lsn: 386, time: 1338903440.219700, len: 69 -Insert lsn: 387, time: 1338903440.219725, len: 69 -Insert lsn: 388, time: 1338903440.219749, len: 69 -Insert lsn: 389, time: 1338903440.219774, len: 69 -Insert lsn: 390, time: 1338903440.219798, len: 69 -Insert lsn: 391, time: 1338903440.219823, len: 69 -Insert lsn: 392, time: 1338903440.219847, len: 69 -Insert lsn: 393, time: 1338903440.219882, len: 69 -Insert lsn: 394, time: 1338903440.219907, len: 69 -Insert lsn: 395, time: 1338903440.219932, len: 69 -Insert lsn: 396, time: 1338903440.219957, len: 69 -Insert lsn: 397, time: 1338903440.219981, len: 69 -Insert lsn: 398, time: 1338903440.220006, len: 69 -Insert lsn: 399, time: 1338903440.220031, len: 69 -Insert lsn: 400, time: 1338903440.220055, len: 69 -Insert lsn: 401, time: 1338903440.220099, len: 69 -Insert lsn: 402, time: 1338903440.220698, len: 100 -Insert lsn: 403, time: 1338903440.220780, len: 100 -Insert lsn: 404, time: 1338903440.220809, len: 100 -Insert lsn: 405, time: 1338903440.220836, len: 100 -Insert lsn: 406, time: 1338903440.220861, len: 100 -Insert lsn: 407, time: 1338903440.220887, len: 100 -Insert lsn: 408, time: 1338903440.220913, len: 100 -Insert lsn: 409, time: 1338903440.220939, len: 100 -Insert lsn: 410, time: 1338903440.220966, len: 100 -Insert lsn: 411, time: 1338903440.220993, len: 100 -Insert lsn: 412, time: 1338903440.221020, len: 101 -Insert lsn: 413, time: 1338903440.221047, len: 101 -Insert lsn: 414, time: 1338903440.221074, len: 101 -Insert lsn: 415, time: 1338903440.221101, len: 101 -Insert lsn: 416, time: 1338903440.221127, len: 101 -Insert lsn: 417, time: 1338903440.221155, len: 101 -Insert lsn: 418, time: 1338903440.221181, len: 101 -Insert lsn: 419, time: 1338903440.221207, len: 101 -Insert lsn: 420, time: 1338903440.221233, len: 101 -Insert lsn: 421, time: 1338903440.221260, len: 101 -Insert lsn: 422, time: 1338903440.221287, len: 101 -Insert lsn: 423, time: 1338903440.221313, len: 101 -Insert lsn: 424, time: 1338903440.221339, len: 101 -Insert lsn: 425, time: 1338903440.221366, len: 101 -Insert lsn: 426, time: 1338903440.221393, len: 101 -Insert lsn: 427, time: 1338903440.221418, len: 101 -Insert lsn: 428, time: 1338903440.221443, len: 101 -Insert lsn: 429, time: 1338903440.221468, len: 101 -Insert lsn: 430, time: 1338903440.221493, len: 101 -Insert lsn: 431, time: 1338903440.221518, len: 101 -Insert lsn: 432, time: 1338903440.221605, len: 101 -Insert lsn: 433, time: 1338903440.221638, len: 101 -Insert lsn: 434, time: 1338903440.221663, len: 101 -Insert lsn: 435, time: 1338903440.221688, len: 101 -Insert lsn: 436, time: 1338903440.221714, len: 101 -Insert lsn: 437, time: 1338903440.221739, len: 101 -Insert lsn: 438, time: 1338903440.221764, len: 101 -Insert lsn: 439, time: 1338903440.221788, len: 101 -Insert lsn: 440, time: 1338903440.221814, len: 101 -Insert lsn: 441, time: 1338903440.221840, len: 101 -Insert lsn: 442, time: 1338903440.221865, len: 101 -Insert lsn: 443, time: 1338903440.221889, len: 101 -Insert lsn: 444, time: 1338903440.221914, len: 101 -Insert lsn: 445, time: 1338903440.221939, len: 101 -Insert lsn: 446, time: 1338903440.221964, len: 101 -Insert lsn: 447, time: 1338903440.221988, len: 101 -Insert lsn: 448, time: 1338903440.222013, len: 101 -Insert lsn: 449, time: 1338903440.222038, len: 101 -Insert lsn: 450, time: 1338903440.222062, len: 101 -Insert lsn: 451, time: 1338903440.222087, len: 101 -Insert lsn: 452, time: 1338903440.222111, len: 101 -Insert lsn: 453, time: 1338903440.222136, len: 101 -Insert lsn: 454, time: 1338903440.222160, len: 101 -Insert lsn: 455, time: 1338903440.222184, len: 101 -Insert lsn: 456, time: 1338903440.222211, len: 101 -Insert lsn: 457, time: 1338903440.222237, len: 101 -Insert lsn: 458, time: 1338903440.222264, len: 101 -Insert lsn: 459, time: 1338903440.222289, len: 101 -Insert lsn: 460, time: 1338903440.222314, len: 101 -Insert lsn: 461, time: 1338903440.222339, len: 101 -Insert lsn: 462, time: 1338903440.222366, len: 101 -Insert lsn: 463, time: 1338903440.222422, len: 101 -Insert lsn: 464, time: 1338903440.222450, len: 101 -Insert lsn: 465, time: 1338903440.222475, len: 101 -Insert lsn: 466, time: 1338903440.222500, len: 101 -Insert lsn: 467, time: 1338903440.222526, len: 101 -Insert lsn: 468, time: 1338903440.222562, len: 101 -Insert lsn: 469, time: 1338903440.222588, len: 101 -Insert lsn: 470, time: 1338903440.222614, len: 101 -Insert lsn: 471, time: 1338903440.222639, len: 101 -Insert lsn: 472, time: 1338903440.222664, len: 101 -Insert lsn: 473, time: 1338903440.222691, len: 101 -Insert lsn: 474, time: 1338903440.222717, len: 101 -Insert lsn: 475, time: 1338903440.222742, len: 101 -Insert lsn: 476, time: 1338903440.222767, len: 101 -Insert lsn: 477, time: 1338903440.222800, len: 101 -Insert lsn: 478, time: 1338903440.222826, len: 101 -Insert lsn: 479, time: 1338903440.222851, len: 101 -Insert lsn: 480, time: 1338903440.222876, len: 101 -Insert lsn: 481, time: 1338903440.222901, len: 101 -Insert lsn: 482, time: 1338903440.222926, len: 101 -Insert lsn: 483, time: 1338903440.222951, len: 101 -Insert lsn: 484, time: 1338903440.222976, len: 101 -Insert lsn: 485, time: 1338903440.223000, len: 101 -Insert lsn: 486, time: 1338903440.223025, len: 101 -Insert lsn: 487, time: 1338903440.223049, len: 101 -Insert lsn: 488, time: 1338903440.223074, len: 101 -Insert lsn: 489, time: 1338903440.223100, len: 101 -Insert lsn: 490, time: 1338903440.223125, len: 101 -Insert lsn: 491, time: 1338903440.223149, len: 101 -Insert lsn: 492, time: 1338903440.223174, len: 101 -Insert lsn: 493, time: 1338903440.223199, len: 101 -Insert lsn: 494, time: 1338903440.223256, len: 101 -Insert lsn: 495, time: 1338903440.223284, len: 101 -Insert lsn: 496, time: 1338903440.223311, len: 101 -Insert lsn: 497, time: 1338903440.223336, len: 101 -Insert lsn: 498, time: 1338903440.223361, len: 101 -Insert lsn: 499, time: 1338903440.223386, len: 101 -Insert lsn: 500, time: 1338903440.223410, len: 101 -Insert lsn: 501, time: 1338903440.223435, len: 101 -Insert lsn: 502, time: 1338903440.224114, len: 166 -Insert lsn: 503, time: 1338903440.224227, len: 166 -Insert lsn: 504, time: 1338903440.224259, len: 166 -Insert lsn: 505, time: 1338903440.224284, len: 166 -Insert lsn: 506, time: 1338903440.224311, len: 166 -Insert lsn: 507, time: 1338903440.224339, len: 166 -Insert lsn: 508, time: 1338903440.224365, len: 166 -Insert lsn: 509, time: 1338903440.224391, len: 166 -Insert lsn: 510, time: 1338903440.224418, len: 166 -Insert lsn: 511, time: 1338903440.224444, len: 166 -Insert lsn: 512, time: 1338903440.224471, len: 167 -Insert lsn: 513, time: 1338903440.224497, len: 167 -Insert lsn: 514, time: 1338903440.224523, len: 167 -Insert lsn: 515, time: 1338903440.224550, len: 167 -Insert lsn: 516, time: 1338903440.224576, len: 167 -Insert lsn: 517, time: 1338903440.224639, len: 167 -Insert lsn: 518, time: 1338903440.224671, len: 167 -Insert lsn: 519, time: 1338903440.224698, len: 167 -Insert lsn: 520, time: 1338903440.224725, len: 167 -Insert lsn: 521, time: 1338903440.224753, len: 167 -Insert lsn: 522, time: 1338903440.224780, len: 167 -Insert lsn: 523, time: 1338903440.224806, len: 167 -Insert lsn: 524, time: 1338903440.224833, len: 167 -Insert lsn: 525, time: 1338903440.224860, len: 167 -Insert lsn: 526, time: 1338903440.224888, len: 167 -Insert lsn: 527, time: 1338903440.224938, len: 167 -Insert lsn: 528, time: 1338903440.224967, len: 167 -Insert lsn: 529, time: 1338903440.224994, len: 167 -Insert lsn: 530, time: 1338903440.225020, len: 167 -Insert lsn: 531, time: 1338903440.225047, len: 167 -Insert lsn: 532, time: 1338903440.225073, len: 167 -Insert lsn: 533, time: 1338903440.225100, len: 167 -Insert lsn: 534, time: 1338903440.225126, len: 167 -Insert lsn: 535, time: 1338903440.225152, len: 167 -Insert lsn: 536, time: 1338903440.225180, len: 167 -Insert lsn: 537, time: 1338903440.225206, len: 167 -Insert lsn: 538, time: 1338903440.225260, len: 167 -Insert lsn: 539, time: 1338903440.225290, len: 167 -Insert lsn: 540, time: 1338903440.225316, len: 167 -Insert lsn: 541, time: 1338903440.225343, len: 167 -Insert lsn: 542, time: 1338903440.225369, len: 167 -Insert lsn: 543, time: 1338903440.225395, len: 167 -Insert lsn: 544, time: 1338903440.225421, len: 167 -Insert lsn: 545, time: 1338903440.225448, len: 167 -Insert lsn: 546, time: 1338903440.225474, len: 167 -Insert lsn: 547, time: 1338903440.225500, len: 167 -Insert lsn: 548, time: 1338903440.225527, len: 167 -Insert lsn: 549, time: 1338903440.225554, len: 167 -Insert lsn: 550, time: 1338903440.225580, len: 167 -Insert lsn: 551, time: 1338903440.225605, len: 167 -Insert lsn: 552, time: 1338903440.225631, len: 167 -Insert lsn: 553, time: 1338903440.225658, len: 167 -Insert lsn: 554, time: 1338903440.225685, len: 167 -Insert lsn: 555, time: 1338903440.225711, len: 167 -Insert lsn: 556, time: 1338903440.225738, len: 167 -Insert lsn: 557, time: 1338903440.225765, len: 167 -Insert lsn: 558, time: 1338903440.225792, len: 167 -Insert lsn: 559, time: 1338903440.225836, len: 167 -Insert lsn: 560, time: 1338903440.225865, len: 167 -Insert lsn: 561, time: 1338903440.225892, len: 167 -Insert lsn: 562, time: 1338903440.225919, len: 167 -Insert lsn: 563, time: 1338903440.225945, len: 167 -Insert lsn: 564, time: 1338903440.225971, len: 167 -Insert lsn: 565, time: 1338903440.225997, len: 167 -Insert lsn: 566, time: 1338903440.226024, len: 167 -Insert lsn: 567, time: 1338903440.226051, len: 167 -Insert lsn: 568, time: 1338903440.226080, len: 167 -Insert lsn: 569, time: 1338903440.226107, len: 167 -Insert lsn: 570, time: 1338903440.226134, len: 167 -Insert lsn: 571, time: 1338903440.226162, len: 167 -Insert lsn: 572, time: 1338903440.226190, len: 167 -Insert lsn: 573, time: 1338903440.226217, len: 167 -Insert lsn: 574, time: 1338903440.226244, len: 167 -Insert lsn: 575, time: 1338903440.226271, len: 167 -Insert lsn: 576, time: 1338903440.226296, len: 167 -Insert lsn: 577, time: 1338903440.226322, len: 167 -Insert lsn: 578, time: 1338903440.226348, len: 167 -Insert lsn: 579, time: 1338903440.226392, len: 167 -Insert lsn: 580, time: 1338903440.226420, len: 167 -Insert lsn: 581, time: 1338903440.226446, len: 167 -Insert lsn: 582, time: 1338903440.226471, len: 167 -Insert lsn: 583, time: 1338903440.226496, len: 167 -Insert lsn: 584, time: 1338903440.226521, len: 167 -Insert lsn: 585, time: 1338903440.226546, len: 167 -Insert lsn: 586, time: 1338903440.226571, len: 167 -Insert lsn: 587, time: 1338903440.226596, len: 167 -Insert lsn: 588, time: 1338903440.226622, len: 167 -Insert lsn: 589, time: 1338903440.226648, len: 167 -Insert lsn: 590, time: 1338903440.226674, len: 167 -Insert lsn: 591, time: 1338903440.226699, len: 167 -Insert lsn: 592, time: 1338903440.226724, len: 167 -Insert lsn: 593, time: 1338903440.226749, len: 167 -Insert lsn: 594, time: 1338903440.226774, len: 167 -Insert lsn: 595, time: 1338903440.226799, len: 167 -Insert lsn: 596, time: 1338903440.226825, len: 167 -Insert lsn: 597, time: 1338903440.226850, len: 167 -Insert lsn: 598, time: 1338903440.226882, len: 167 -Insert lsn: 599, time: 1338903440.226907, len: 167 -Insert lsn: 600, time: 1338903440.226949, len: 167 -Insert lsn: 601, time: 1338903440.226978, len: 167 -Update lsn: 602, time: 1338903440.227788, len: 77 -Update lsn: 603, time: 1338903440.227901, len: 77 -Update lsn: 604, time: 1338903440.227932, len: 77 -Update lsn: 605, time: 1338903440.227961, len: 77 -Update lsn: 606, time: 1338903440.227988, len: 77 -Update lsn: 607, time: 1338903440.228014, len: 77 -Update lsn: 608, time: 1338903440.228041, len: 77 -Update lsn: 609, time: 1338903440.228069, len: 77 -Update lsn: 610, time: 1338903440.228096, len: 77 -Update lsn: 611, time: 1338903440.228123, len: 77 -Update lsn: 612, time: 1338903440.228150, len: 78 -Update lsn: 613, time: 1338903440.228177, len: 78 -Update lsn: 614, time: 1338903440.228204, len: 78 -Update lsn: 615, time: 1338903440.228250, len: 78 -Update lsn: 616, time: 1338903440.228283, len: 78 -Update lsn: 617, time: 1338903440.228311, len: 78 -Update lsn: 618, time: 1338903440.228338, len: 78 -Update lsn: 619, time: 1338903440.228365, len: 78 -Update lsn: 620, time: 1338903440.228393, len: 78 -Update lsn: 621, time: 1338903440.228421, len: 78 -Update lsn: 622, time: 1338903440.228448, len: 78 -Update lsn: 623, time: 1338903440.228475, len: 78 -Update lsn: 624, time: 1338903440.228502, len: 78 -Update lsn: 625, time: 1338903440.228530, len: 78 -Update lsn: 626, time: 1338903440.228556, len: 78 -Update lsn: 627, time: 1338903440.228583, len: 78 -Update lsn: 628, time: 1338903440.228611, len: 78 -Update lsn: 629, time: 1338903440.228639, len: 78 -Update lsn: 630, time: 1338903440.228668, len: 78 -Update lsn: 631, time: 1338903440.228695, len: 78 -Update lsn: 632, time: 1338903440.228723, len: 78 -Update lsn: 633, time: 1338903440.228751, len: 78 -Update lsn: 634, time: 1338903440.228778, len: 78 -Update lsn: 635, time: 1338903440.228838, len: 78 -Update lsn: 636, time: 1338903440.228867, len: 78 -Update lsn: 637, time: 1338903440.228892, len: 78 -Update lsn: 638, time: 1338903440.228918, len: 78 -Update lsn: 639, time: 1338903440.228944, len: 78 -Update lsn: 640, time: 1338903440.228969, len: 78 -Update lsn: 641, time: 1338903440.228995, len: 78 -Update lsn: 642, time: 1338903440.229021, len: 78 -Update lsn: 643, time: 1338903440.229047, len: 78 -Update lsn: 644, time: 1338903440.229073, len: 78 -Update lsn: 645, time: 1338903440.229099, len: 78 -Update lsn: 646, time: 1338903440.229125, len: 78 -Update lsn: 647, time: 1338903440.229150, len: 78 -Update lsn: 648, time: 1338903440.229176, len: 78 -Update lsn: 649, time: 1338903440.229201, len: 78 -Update lsn: 650, time: 1338903440.229228, len: 78 -Update lsn: 651, time: 1338903440.229254, len: 78 -Update lsn: 652, time: 1338903440.229281, len: 78 -Update lsn: 653, time: 1338903440.229307, len: 78 -Update lsn: 654, time: 1338903440.229333, len: 78 -Update lsn: 655, time: 1338903440.229360, len: 78 -Update lsn: 656, time: 1338903440.229386, len: 78 -Update lsn: 657, time: 1338903440.229412, len: 78 -Update lsn: 658, time: 1338903440.229439, len: 78 -Update lsn: 659, time: 1338903440.229465, len: 78 -Update lsn: 660, time: 1338903440.229491, len: 78 -Update lsn: 661, time: 1338903440.229517, len: 78 -Update lsn: 662, time: 1338903440.229544, len: 78 -Update lsn: 663, time: 1338903440.229584, len: 78 -Update lsn: 664, time: 1338903440.229612, len: 78 -Update lsn: 665, time: 1338903440.229639, len: 78 -Update lsn: 666, time: 1338903440.229666, len: 78 -Update lsn: 667, time: 1338903440.229694, len: 78 -Update lsn: 668, time: 1338903440.229723, len: 78 -Update lsn: 669, time: 1338903440.229752, len: 78 -Update lsn: 670, time: 1338903440.229779, len: 78 -Update lsn: 671, time: 1338903440.229808, len: 78 -Update lsn: 672, time: 1338903440.229862, len: 78 -Update lsn: 673, time: 1338903440.229892, len: 78 -Update lsn: 674, time: 1338903440.229933, len: 78 -Update lsn: 675, time: 1338903440.229961, len: 78 -Update lsn: 676, time: 1338903440.229988, len: 78 -Update lsn: 677, time: 1338903440.230015, len: 78 -Update lsn: 678, time: 1338903440.230042, len: 78 -Update lsn: 679, time: 1338903440.230069, len: 78 -Update lsn: 680, time: 1338903440.230096, len: 78 -Update lsn: 681, time: 1338903440.230124, len: 78 -Update lsn: 682, time: 1338903440.230153, len: 78 -Update lsn: 683, time: 1338903440.230180, len: 78 -Update lsn: 684, time: 1338903440.230210, len: 78 -Update lsn: 685, time: 1338903440.230248, len: 78 -Update lsn: 686, time: 1338903440.230274, len: 78 -Update lsn: 687, time: 1338903440.230300, len: 78 -Update lsn: 688, time: 1338903440.230326, len: 78 -Update lsn: 689, time: 1338903440.230352, len: 78 -Update lsn: 690, time: 1338903440.230380, len: 78 -Update lsn: 691, time: 1338903440.230408, len: 78 -Update lsn: 692, time: 1338903440.230434, len: 78 -Update lsn: 693, time: 1338903440.230462, len: 78 -Update lsn: 694, time: 1338903440.230488, len: 78 -Update lsn: 695, time: 1338903440.230515, len: 78 -Update lsn: 696, time: 1338903440.230541, len: 78 -Update lsn: 697, time: 1338903440.230567, len: 78 -Update lsn: 698, time: 1338903440.230593, len: 78 -Update lsn: 699, time: 1338903440.230619, len: 78 -Update lsn: 700, time: 1338903440.230645, len: 78 -Update lsn: 701, time: 1338903440.230670, len: 78 -Update lsn: 702, time: 1338903440.231167, len: 109 -Update lsn: 703, time: 1338903440.231248, len: 109 -Update lsn: 704, time: 1338903440.231279, len: 109 -Update lsn: 705, time: 1338903440.231308, len: 109 -Update lsn: 706, time: 1338903440.231335, len: 109 -Update lsn: 707, time: 1338903440.231362, len: 109 -Update lsn: 708, time: 1338903440.231420, len: 109 -Update lsn: 709, time: 1338903440.231452, len: 109 -Update lsn: 710, time: 1338903440.231482, len: 109 -Update lsn: 711, time: 1338903440.231512, len: 109 -Update lsn: 712, time: 1338903440.231540, len: 110 -Update lsn: 713, time: 1338903440.231589, len: 110 -Update lsn: 714, time: 1338903440.231620, len: 110 -Update lsn: 715, time: 1338903440.231647, len: 110 -Update lsn: 716, time: 1338903440.231674, len: 110 -Update lsn: 717, time: 1338903440.231703, len: 110 -Update lsn: 718, time: 1338903440.231731, len: 110 -Update lsn: 719, time: 1338903440.231761, len: 110 -Update lsn: 720, time: 1338903440.231789, len: 110 -Update lsn: 721, time: 1338903440.231818, len: 110 -Update lsn: 722, time: 1338903440.231847, len: 110 -Update lsn: 723, time: 1338903440.231874, len: 110 -Update lsn: 724, time: 1338903440.231900, len: 110 -Update lsn: 725, time: 1338903440.231927, len: 110 -Update lsn: 726, time: 1338903440.231954, len: 110 -Update lsn: 727, time: 1338903440.231981, len: 110 -Update lsn: 728, time: 1338903440.232007, len: 110 -Update lsn: 729, time: 1338903440.232034, len: 110 -Update lsn: 730, time: 1338903440.232061, len: 110 -Update lsn: 731, time: 1338903440.232088, len: 110 -Update lsn: 732, time: 1338903440.232114, len: 110 -Update lsn: 733, time: 1338903440.232140, len: 110 -Update lsn: 734, time: 1338903440.232166, len: 110 -Update lsn: 735, time: 1338903440.232192, len: 110 -Update lsn: 736, time: 1338903440.232217, len: 110 -Update lsn: 737, time: 1338903440.232270, len: 110 -Update lsn: 738, time: 1338903440.232300, len: 110 -Update lsn: 739, time: 1338903440.232326, len: 110 -Update lsn: 740, time: 1338903440.232352, len: 110 -Update lsn: 741, time: 1338903440.232377, len: 110 -Update lsn: 742, time: 1338903440.232403, len: 110 -Update lsn: 743, time: 1338903440.232429, len: 110 -Update lsn: 744, time: 1338903440.232456, len: 110 -Update lsn: 745, time: 1338903440.232483, len: 110 -Update lsn: 746, time: 1338903440.232509, len: 110 -Update lsn: 747, time: 1338903440.232537, len: 110 -Update lsn: 748, time: 1338903440.232564, len: 110 -Update lsn: 749, time: 1338903440.232590, len: 110 -Update lsn: 750, time: 1338903440.232617, len: 110 -Update lsn: 751, time: 1338903440.232643, len: 110 -Update lsn: 752, time: 1338903440.232670, len: 110 -Update lsn: 753, time: 1338903440.232697, len: 110 -Update lsn: 754, time: 1338903440.232724, len: 110 -Update lsn: 755, time: 1338903440.232750, len: 110 -Update lsn: 756, time: 1338903440.232777, len: 110 -Update lsn: 757, time: 1338903440.232803, len: 110 -Update lsn: 758, time: 1338903440.232829, len: 110 -Update lsn: 759, time: 1338903440.232856, len: 110 -Update lsn: 760, time: 1338903440.232883, len: 110 -Update lsn: 761, time: 1338903440.232909, len: 110 -Update lsn: 762, time: 1338903440.232936, len: 110 -Update lsn: 763, time: 1338903440.232962, len: 110 -Update lsn: 764, time: 1338903440.232989, len: 110 -Update lsn: 765, time: 1338903440.233016, len: 110 -Update lsn: 766, time: 1338903440.233063, len: 110 -Update lsn: 767, time: 1338903440.233091, len: 110 -Update lsn: 768, time: 1338903440.233117, len: 110 -Update lsn: 769, time: 1338903440.233144, len: 110 -Update lsn: 770, time: 1338903440.233170, len: 110 -Update lsn: 771, time: 1338903440.233196, len: 110 -Update lsn: 772, time: 1338903440.233221, len: 110 -Update lsn: 773, time: 1338903440.233247, len: 110 -Update lsn: 774, time: 1338903440.233274, len: 110 -Update lsn: 775, time: 1338903440.233300, len: 110 -Update lsn: 776, time: 1338903440.233327, len: 110 -Update lsn: 777, time: 1338903440.233354, len: 110 -Update lsn: 778, time: 1338903440.233381, len: 110 -Update lsn: 779, time: 1338903440.233407, len: 110 -Update lsn: 780, time: 1338903440.233434, len: 110 -Update lsn: 781, time: 1338903440.233461, len: 110 -Update lsn: 782, time: 1338903440.233488, len: 110 -Update lsn: 783, time: 1338903440.233515, len: 110 -Update lsn: 784, time: 1338903440.233542, len: 110 -Update lsn: 785, time: 1338903440.233568, len: 110 -Update lsn: 786, time: 1338903440.233595, len: 110 -Update lsn: 787, time: 1338903440.233622, len: 110 -Update lsn: 788, time: 1338903440.233649, len: 110 -Update lsn: 789, time: 1338903440.233677, len: 110 -Update lsn: 790, time: 1338903440.233704, len: 110 -Update lsn: 791, time: 1338903440.233730, len: 110 -Update lsn: 792, time: 1338903440.233757, len: 110 -Update lsn: 793, time: 1338903440.233784, len: 110 -Update lsn: 794, time: 1338903440.233827, len: 110 -Update lsn: 795, time: 1338903440.233855, len: 110 -Update lsn: 796, time: 1338903440.233882, len: 110 -Update lsn: 797, time: 1338903440.233909, len: 110 -Update lsn: 798, time: 1338903440.233936, len: 110 -Update lsn: 799, time: 1338903440.233963, len: 110 -Update lsn: 800, time: 1338903440.233989, len: 110 -Update lsn: 801, time: 1338903440.234015, len: 110 -Update lsn: 802, time: 1338903440.234573, len: 175 -Update lsn: 803, time: 1338903440.234678, len: 175 -Update lsn: 804, time: 1338903440.234710, len: 175 -Update lsn: 805, time: 1338903440.234738, len: 175 -Update lsn: 806, time: 1338903440.234767, len: 175 -Update lsn: 807, time: 1338903440.234796, len: 175 -Update lsn: 808, time: 1338903440.234823, len: 175 -Update lsn: 809, time: 1338903440.234851, len: 175 -Update lsn: 810, time: 1338903440.234878, len: 175 -Update lsn: 811, time: 1338903440.234923, len: 175 -Update lsn: 812, time: 1338903440.234954, len: 176 -Update lsn: 813, time: 1338903440.234984, len: 176 -Update lsn: 814, time: 1338903440.235012, len: 176 -Update lsn: 815, time: 1338903440.235040, len: 176 -Update lsn: 816, time: 1338903440.235068, len: 176 -Update lsn: 817, time: 1338903440.235132, len: 176 -Update lsn: 818, time: 1338903440.235167, len: 176 -Update lsn: 819, time: 1338903440.235196, len: 176 -Update lsn: 820, time: 1338903440.235224, len: 176 -Update lsn: 821, time: 1338903440.235254, len: 176 -Update lsn: 822, time: 1338903440.235282, len: 176 -Update lsn: 823, time: 1338903440.235310, len: 176 -Update lsn: 824, time: 1338903440.235339, len: 176 -Update lsn: 825, time: 1338903440.235368, len: 176 -Update lsn: 826, time: 1338903440.235395, len: 176 -Update lsn: 827, time: 1338903440.235422, len: 176 -Update lsn: 828, time: 1338903440.235449, len: 176 -Update lsn: 829, time: 1338903440.235476, len: 176 -Update lsn: 830, time: 1338903440.235503, len: 176 -Update lsn: 831, time: 1338903440.235530, len: 176 -Update lsn: 832, time: 1338903440.235556, len: 176 -Update lsn: 833, time: 1338903440.235583, len: 176 -Update lsn: 834, time: 1338903440.235609, len: 176 -Update lsn: 835, time: 1338903440.235635, len: 176 -Update lsn: 836, time: 1338903440.235682, len: 176 -Update lsn: 837, time: 1338903440.235711, len: 176 -Update lsn: 838, time: 1338903440.235738, len: 176 -Update lsn: 839, time: 1338903440.235764, len: 176 -Update lsn: 840, time: 1338903440.235790, len: 176 -Update lsn: 841, time: 1338903440.235817, len: 176 -Update lsn: 842, time: 1338903440.235843, len: 176 -Update lsn: 843, time: 1338903440.235869, len: 176 -Update lsn: 844, time: 1338903440.235896, len: 176 -Update lsn: 845, time: 1338903440.235923, len: 176 -Update lsn: 846, time: 1338903440.235949, len: 176 -Update lsn: 847, time: 1338903440.235977, len: 176 -Update lsn: 848, time: 1338903440.236004, len: 176 -Update lsn: 849, time: 1338903440.236031, len: 176 -Update lsn: 850, time: 1338903440.236057, len: 176 -Update lsn: 851, time: 1338903440.236084, len: 176 -Update lsn: 852, time: 1338903440.236110, len: 176 -Update lsn: 853, time: 1338903440.236136, len: 176 -Update lsn: 854, time: 1338903440.236163, len: 176 -Update lsn: 855, time: 1338903440.236189, len: 176 -Update lsn: 856, time: 1338903440.236233, len: 176 -Update lsn: 857, time: 1338903440.236262, len: 176 -Update lsn: 858, time: 1338903440.236289, len: 176 -Update lsn: 859, time: 1338903440.236315, len: 176 -Update lsn: 860, time: 1338903440.236341, len: 176 -Update lsn: 861, time: 1338903440.236368, len: 176 -Update lsn: 862, time: 1338903440.236394, len: 176 -Update lsn: 863, time: 1338903440.236421, len: 176 -Update lsn: 864, time: 1338903440.236448, len: 176 -Update lsn: 865, time: 1338903440.236475, len: 176 -Update lsn: 866, time: 1338903440.236501, len: 176 -Update lsn: 867, time: 1338903440.236527, len: 176 -Update lsn: 868, time: 1338903440.236554, len: 176 -Update lsn: 869, time: 1338903440.236581, len: 176 -Update lsn: 870, time: 1338903440.236608, len: 176 -Update lsn: 871, time: 1338903440.236634, len: 176 -Update lsn: 872, time: 1338903440.236660, len: 176 -Update lsn: 873, time: 1338903440.236687, len: 176 -Update lsn: 874, time: 1338903440.236713, len: 176 -Update lsn: 875, time: 1338903440.236739, len: 176 -Update lsn: 876, time: 1338903440.236782, len: 176 -Update lsn: 877, time: 1338903440.236810, len: 176 -Update lsn: 878, time: 1338903440.236837, len: 176 -Update lsn: 879, time: 1338903440.236864, len: 176 -Update lsn: 880, time: 1338903440.236892, len: 176 -Update lsn: 881, time: 1338903440.236919, len: 176 -Update lsn: 882, time: 1338903440.236945, len: 176 -Update lsn: 883, time: 1338903440.236972, len: 176 -Update lsn: 884, time: 1338903440.236998, len: 176 -Update lsn: 885, time: 1338903440.237024, len: 176 -Update lsn: 886, time: 1338903440.237050, len: 176 -Update lsn: 887, time: 1338903440.237077, len: 176 -Update lsn: 888, time: 1338903440.237103, len: 176 -Update lsn: 889, time: 1338903440.237131, len: 176 -Update lsn: 890, time: 1338903440.237158, len: 176 -Update lsn: 891, time: 1338903440.237184, len: 176 -Update lsn: 892, time: 1338903440.237211, len: 176 -Update lsn: 893, time: 1338903440.237236, len: 176 -Update lsn: 894, time: 1338903440.237262, len: 176 -Update lsn: 895, time: 1338903440.237289, len: 176 -Update lsn: 896, time: 1338903440.237339, len: 176 -Update lsn: 897, time: 1338903440.237368, len: 176 -Update lsn: 898, time: 1338903440.237395, len: 176 -Update lsn: 899, time: 1338903440.237421, len: 176 -Update lsn: 900, time: 1338903440.237448, len: 176 -Update lsn: 901, time: 1338903440.237475, len: 176 -Update lsn: 902, time: 1338903440.238040, len: 77 -Update lsn: 903, time: 1338903440.238124, len: 77 -Update lsn: 904, time: 1338903440.238156, len: 77 -Update lsn: 905, time: 1338903440.238183, len: 77 -Update lsn: 906, time: 1338903440.238212, len: 77 -Update lsn: 907, time: 1338903440.238899, len: 77 -Update lsn: 908, time: 1338903440.238960, len: 77 -Update lsn: 909, time: 1338903440.238989, len: 77 -Update lsn: 910, time: 1338903440.239016, len: 77 -Update lsn: 911, time: 1338903440.239043, len: 77 -Update lsn: 912, time: 1338903440.239070, len: 78 -Update lsn: 913, time: 1338903440.239097, len: 78 -Update lsn: 914, time: 1338903440.239125, len: 78 -Update lsn: 915, time: 1338903440.239153, len: 78 -Update lsn: 916, time: 1338903440.239180, len: 78 -Update lsn: 917, time: 1338903440.239207, len: 78 -Update lsn: 918, time: 1338903440.239234, len: 78 -Update lsn: 919, time: 1338903440.239261, len: 78 -Update lsn: 920, time: 1338903440.239290, len: 78 -Update lsn: 921, time: 1338903440.240279, len: 78 -Update lsn: 922, time: 1338903440.240328, len: 78 -Update lsn: 923, time: 1338903440.240355, len: 78 -Update lsn: 924, time: 1338903440.240382, len: 78 -Update lsn: 925, time: 1338903440.240409, len: 78 -Update lsn: 926, time: 1338903440.240436, len: 78 -Update lsn: 927, time: 1338903440.240494, len: 78 -Update lsn: 928, time: 1338903440.240522, len: 78 -Update lsn: 929, time: 1338903440.240548, len: 78 -Update lsn: 930, time: 1338903440.240575, len: 78 -Update lsn: 931, time: 1338903440.240604, len: 78 -Update lsn: 932, time: 1338903440.240632, len: 78 -Update lsn: 933, time: 1338903440.240660, len: 78 -Update lsn: 934, time: 1338903440.240687, len: 78 -Update lsn: 935, time: 1338903440.240714, len: 78 -Update lsn: 936, time: 1338903440.240742, len: 78 -Update lsn: 937, time: 1338903440.240770, len: 78 -Update lsn: 938, time: 1338903440.240797, len: 78 -Update lsn: 939, time: 1338903440.240823, len: 78 -Update lsn: 940, time: 1338903440.240851, len: 78 -Update lsn: 941, time: 1338903440.240879, len: 78 -Update lsn: 942, time: 1338903440.240906, len: 78 -Update lsn: 943, time: 1338903440.240934, len: 78 -Update lsn: 944, time: 1338903440.240961, len: 78 -Update lsn: 945, time: 1338903440.240988, len: 78 -Update lsn: 946, time: 1338903440.241016, len: 78 -Update lsn: 947, time: 1338903440.241044, len: 78 -Update lsn: 948, time: 1338903440.241071, len: 78 -Update lsn: 949, time: 1338903440.241097, len: 78 -Update lsn: 950, time: 1338903440.241124, len: 78 -Update lsn: 951, time: 1338903440.241152, len: 78 -Update lsn: 952, time: 1338903440.241179, len: 78 -Update lsn: 953, time: 1338903440.241206, len: 78 -Update lsn: 954, time: 1338903440.241233, len: 78 -Update lsn: 955, time: 1338903440.241260, len: 78 -Update lsn: 956, time: 1338903440.241287, len: 78 -Update lsn: 957, time: 1338903440.241314, len: 78 -Update lsn: 958, time: 1338903440.241341, len: 78 -Update lsn: 959, time: 1338903440.241369, len: 78 -Update lsn: 960, time: 1338903440.241396, len: 78 -Update lsn: 961, time: 1338903440.241424, len: 78 -Update lsn: 962, time: 1338903440.241451, len: 78 -Update lsn: 963, time: 1338903440.241478, len: 78 -Update lsn: 964, time: 1338903440.241524, len: 78 -Update lsn: 965, time: 1338903440.241552, len: 78 -Update lsn: 966, time: 1338903440.241604, len: 78 -Update lsn: 967, time: 1338903440.241632, len: 78 -Update lsn: 968, time: 1338903440.241661, len: 78 -Update lsn: 969, time: 1338903440.241688, len: 78 -Update lsn: 970, time: 1338903440.241715, len: 78 -Update lsn: 971, time: 1338903440.241741, len: 78 -Update lsn: 972, time: 1338903440.241769, len: 78 -Update lsn: 973, time: 1338903440.241796, len: 78 -Update lsn: 974, time: 1338903440.241823, len: 78 -Update lsn: 975, time: 1338903440.241851, len: 78 -Update lsn: 976, time: 1338903440.241879, len: 78 -Update lsn: 977, time: 1338903440.241909, len: 78 -Update lsn: 978, time: 1338903440.241935, len: 78 -Update lsn: 979, time: 1338903440.241962, len: 78 -Update lsn: 980, time: 1338903440.241990, len: 78 -Update lsn: 981, time: 1338903440.242017, len: 78 -Update lsn: 982, time: 1338903440.242044, len: 78 -Update lsn: 983, time: 1338903440.242071, len: 78 -Update lsn: 984, time: 1338903440.242099, len: 78 -Update lsn: 985, time: 1338903440.242126, len: 78 -Update lsn: 986, time: 1338903440.242154, len: 78 -Update lsn: 987, time: 1338903440.242181, len: 78 -Update lsn: 988, time: 1338903440.242208, len: 78 -Update lsn: 989, time: 1338903440.242236, len: 78 -Update lsn: 990, time: 1338903440.242263, len: 78 -Update lsn: 991, time: 1338903440.242290, len: 78 -Update lsn: 992, time: 1338903440.242317, len: 78 -Update lsn: 993, time: 1338903440.242343, len: 78 -Update lsn: 994, time: 1338903440.242370, len: 78 -Update lsn: 995, time: 1338903440.242398, len: 78 -Update lsn: 996, time: 1338903440.242425, len: 78 -Update lsn: 997, time: 1338903440.242452, len: 78 -Update lsn: 998, time: 1338903440.242479, len: 78 -Update lsn: 999, time: 1338903440.242506, len: 78 -Update lsn: 1000, time: 1338903440.242534, len: 78 -Update lsn: 1001, time: 1338903440.242582, len: 78 -Update lsn: 1002, time: 1338903440.243265, len: 109 -Update lsn: 1003, time: 1338903440.243367, len: 109 -Update lsn: 1004, time: 1338903440.243399, len: 109 -Update lsn: 1005, time: 1338903440.243427, len: 109 -Update lsn: 1006, time: 1338903440.243455, len: 109 -Update lsn: 1007, time: 1338903440.243484, len: 109 -Update lsn: 1008, time: 1338903440.243512, len: 109 -Update lsn: 1009, time: 1338903440.243540, len: 109 -Update lsn: 1010, time: 1338903440.243569, len: 109 -Update lsn: 1011, time: 1338903440.243598, len: 109 -Update lsn: 1012, time: 1338903440.243626, len: 110 -Update lsn: 1013, time: 1338903440.243654, len: 110 -Update lsn: 1014, time: 1338903440.243681, len: 110 -Update lsn: 1015, time: 1338903440.243710, len: 110 -Update lsn: 1016, time: 1338903440.243738, len: 110 -Update lsn: 1017, time: 1338903440.243767, len: 110 -Update lsn: 1018, time: 1338903440.243796, len: 110 -Update lsn: 1019, time: 1338903440.243826, len: 110 -Update lsn: 1020, time: 1338903440.243855, len: 110 -Update lsn: 1021, time: 1338903440.243883, len: 110 -Update lsn: 1022, time: 1338903440.243913, len: 110 -Update lsn: 1023, time: 1338903440.243941, len: 110 -Update lsn: 1024, time: 1338903440.243968, len: 110 -Update lsn: 1025, time: 1338903440.243996, len: 110 -Update lsn: 1026, time: 1338903440.244023, len: 110 -Update lsn: 1027, time: 1338903440.244049, len: 110 -Update lsn: 1028, time: 1338903440.244076, len: 110 -Update lsn: 1029, time: 1338903440.244103, len: 110 -Update lsn: 1030, time: 1338903440.244164, len: 110 -Update lsn: 1031, time: 1338903440.244193, len: 110 -Update lsn: 1032, time: 1338903440.244220, len: 110 -Update lsn: 1033, time: 1338903440.244246, len: 110 -Update lsn: 1034, time: 1338903440.244272, len: 110 -Update lsn: 1035, time: 1338903440.244299, len: 110 -Update lsn: 1036, time: 1338903440.244325, len: 110 -Update lsn: 1037, time: 1338903440.244351, len: 110 -Update lsn: 1038, time: 1338903440.244378, len: 110 -Update lsn: 1039, time: 1338903440.244404, len: 110 -Update lsn: 1040, time: 1338903440.244431, len: 110 -Update lsn: 1041, time: 1338903440.244457, len: 110 -Update lsn: 1042, time: 1338903440.244483, len: 110 -Update lsn: 1043, time: 1338903440.244509, len: 110 -Update lsn: 1044, time: 1338903440.244535, len: 110 -Update lsn: 1045, time: 1338903440.244561, len: 110 -Update lsn: 1046, time: 1338903440.244587, len: 110 -Update lsn: 1047, time: 1338903440.244613, len: 110 -Update lsn: 1048, time: 1338903440.244640, len: 110 -Update lsn: 1049, time: 1338903440.244666, len: 110 -Update lsn: 1050, time: 1338903440.244692, len: 110 -Update lsn: 1051, time: 1338903440.244718, len: 110 -Update lsn: 1052, time: 1338903440.244744, len: 110 -Update lsn: 1053, time: 1338903440.244771, len: 110 -Update lsn: 1054, time: 1338903440.244798, len: 110 -Update lsn: 1055, time: 1338903440.244827, len: 110 -Update lsn: 1056, time: 1338903440.244854, len: 110 -Update lsn: 1057, time: 1338903440.244881, len: 110 -Update lsn: 1058, time: 1338903440.244936, len: 110 -Update lsn: 1059, time: 1338903440.244995, len: 110 -Update lsn: 1060, time: 1338903440.245028, len: 110 -Update lsn: 1061, time: 1338903440.245057, len: 110 -Update lsn: 1062, time: 1338903440.245086, len: 110 -Update lsn: 1063, time: 1338903440.245115, len: 110 -Update lsn: 1064, time: 1338903440.245142, len: 110 -Update lsn: 1065, time: 1338903440.245169, len: 110 -Update lsn: 1066, time: 1338903440.245196, len: 110 -Update lsn: 1067, time: 1338903440.245222, len: 110 -Update lsn: 1068, time: 1338903440.245248, len: 110 -Update lsn: 1069, time: 1338903440.245275, len: 110 -Update lsn: 1070, time: 1338903440.245302, len: 110 -Update lsn: 1071, time: 1338903440.245329, len: 110 -Update lsn: 1072, time: 1338903440.245355, len: 110 -Update lsn: 1073, time: 1338903440.245382, len: 110 -Update lsn: 1074, time: 1338903440.245408, len: 110 -Update lsn: 1075, time: 1338903440.245435, len: 110 -Update lsn: 1076, time: 1338903440.245462, len: 110 -Update lsn: 1077, time: 1338903440.245491, len: 110 -Update lsn: 1078, time: 1338903440.245518, len: 110 -Update lsn: 1079, time: 1338903440.245545, len: 110 -Update lsn: 1080, time: 1338903440.245572, len: 110 -Update lsn: 1081, time: 1338903440.245600, len: 110 -Update lsn: 1082, time: 1338903440.245628, len: 110 -Update lsn: 1083, time: 1338903440.245656, len: 110 -Update lsn: 1084, time: 1338903440.245683, len: 110 -Update lsn: 1085, time: 1338903440.245709, len: 110 -Update lsn: 1086, time: 1338903440.245736, len: 110 -Update lsn: 1087, time: 1338903440.245763, len: 110 -Update lsn: 1088, time: 1338903440.245815, len: 110 -Update lsn: 1089, time: 1338903440.245847, len: 110 -Update lsn: 1090, time: 1338903440.245874, len: 110 -Update lsn: 1091, time: 1338903440.245900, len: 110 -Update lsn: 1092, time: 1338903440.245928, len: 110 -Update lsn: 1093, time: 1338903440.245955, len: 110 -Update lsn: 1094, time: 1338903440.245983, len: 110 -Update lsn: 1095, time: 1338903440.246011, len: 110 -Update lsn: 1096, time: 1338903440.246040, len: 110 -Update lsn: 1097, time: 1338903440.246068, len: 110 -Update lsn: 1098, time: 1338903440.246097, len: 110 -Update lsn: 1099, time: 1338903440.246124, len: 110 -Update lsn: 1100, time: 1338903440.246151, len: 110 -Update lsn: 1101, time: 1338903440.246177, len: 110 -Update lsn: 1102, time: 1338903440.246866, len: 175 -Update lsn: 1103, time: 1338903440.246967, len: 175 -Update lsn: 1104, time: 1338903440.247000, len: 175 -Update lsn: 1105, time: 1338903440.247028, len: 175 -Update lsn: 1106, time: 1338903440.247058, len: 175 -Update lsn: 1107, time: 1338903440.247086, len: 175 -Update lsn: 1108, time: 1338903440.247115, len: 175 -Update lsn: 1109, time: 1338903440.247144, len: 175 -Update lsn: 1110, time: 1338903440.247173, len: 175 -Update lsn: 1111, time: 1338903440.247202, len: 175 -Update lsn: 1112, time: 1338903440.247263, len: 176 -Update lsn: 1113, time: 1338903440.247297, len: 176 -Update lsn: 1114, time: 1338903440.247326, len: 176 -Update lsn: 1115, time: 1338903440.247355, len: 176 -Update lsn: 1116, time: 1338903440.247384, len: 176 -Update lsn: 1117, time: 1338903440.247415, len: 176 -Update lsn: 1118, time: 1338903440.247444, len: 176 -Update lsn: 1119, time: 1338903440.247473, len: 176 -Update lsn: 1120, time: 1338903440.247503, len: 176 -Update lsn: 1121, time: 1338903440.247531, len: 176 -Update lsn: 1122, time: 1338903440.247559, len: 176 -Update lsn: 1123, time: 1338903440.247586, len: 176 -Update lsn: 1124, time: 1338903440.247614, len: 176 -Update lsn: 1125, time: 1338903440.247641, len: 176 -Update lsn: 1126, time: 1338903440.247668, len: 176 -Update lsn: 1127, time: 1338903440.247695, len: 176 -Update lsn: 1128, time: 1338903440.247722, len: 176 -Update lsn: 1129, time: 1338903440.247749, len: 176 -Update lsn: 1130, time: 1338903440.247775, len: 176 -Update lsn: 1131, time: 1338903440.247801, len: 176 -Update lsn: 1132, time: 1338903440.247851, len: 176 -Update lsn: 1133, time: 1338903440.247880, len: 176 -Update lsn: 1134, time: 1338903440.247906, len: 176 -Update lsn: 1135, time: 1338903440.247932, len: 176 -Update lsn: 1136, time: 1338903440.247960, len: 176 -Update lsn: 1137, time: 1338903440.247986, len: 176 -Update lsn: 1138, time: 1338903440.248012, len: 176 -Update lsn: 1139, time: 1338903440.248039, len: 176 -Update lsn: 1140, time: 1338903440.248065, len: 176 -Update lsn: 1141, time: 1338903440.248092, len: 176 -Update lsn: 1142, time: 1338903440.248118, len: 176 -Update lsn: 1143, time: 1338903440.248146, len: 176 -Update lsn: 1144, time: 1338903440.248173, len: 176 -Update lsn: 1145, time: 1338903440.248201, len: 176 -Update lsn: 1146, time: 1338903440.248250, len: 176 -Update lsn: 1147, time: 1338903440.248282, len: 176 -Update lsn: 1148, time: 1338903440.248311, len: 176 -Update lsn: 1149, time: 1338903440.248339, len: 176 -Update lsn: 1150, time: 1338903440.248367, len: 176 -Update lsn: 1151, time: 1338903440.248394, len: 176 -Update lsn: 1152, time: 1338903440.248443, len: 176 -Update lsn: 1153, time: 1338903440.248471, len: 176 -Update lsn: 1154, time: 1338903440.248498, len: 176 -Update lsn: 1155, time: 1338903440.248525, len: 176 -Update lsn: 1156, time: 1338903440.248553, len: 176 -Update lsn: 1157, time: 1338903440.248579, len: 176 -Update lsn: 1158, time: 1338903440.248606, len: 176 -Update lsn: 1159, time: 1338903440.248633, len: 176 -Update lsn: 1160, time: 1338903440.248659, len: 176 -Update lsn: 1161, time: 1338903440.248686, len: 176 -Update lsn: 1162, time: 1338903440.248713, len: 176 -Update lsn: 1163, time: 1338903440.248740, len: 176 -Update lsn: 1164, time: 1338903440.248767, len: 176 -Update lsn: 1165, time: 1338903440.248794, len: 176 -Update lsn: 1166, time: 1338903440.248821, len: 176 -Update lsn: 1167, time: 1338903440.248849, len: 176 -Update lsn: 1168, time: 1338903440.248876, len: 176 -Update lsn: 1169, time: 1338903440.248904, len: 176 -Update lsn: 1170, time: 1338903440.248932, len: 176 -Update lsn: 1171, time: 1338903440.248982, len: 176 -Update lsn: 1172, time: 1338903440.249012, len: 176 -Update lsn: 1173, time: 1338903440.249038, len: 176 -Update lsn: 1174, time: 1338903440.249064, len: 176 -Update lsn: 1175, time: 1338903440.249091, len: 176 -Update lsn: 1176, time: 1338903440.249120, len: 176 -Update lsn: 1177, time: 1338903440.249149, len: 176 -Update lsn: 1178, time: 1338903440.249179, len: 176 -Update lsn: 1179, time: 1338903440.249208, len: 176 -Update lsn: 1180, time: 1338903440.249237, len: 176 -Update lsn: 1181, time: 1338903440.249265, len: 176 -Update lsn: 1182, time: 1338903440.249292, len: 176 -Update lsn: 1183, time: 1338903440.249320, len: 176 -Update lsn: 1184, time: 1338903440.249347, len: 176 -Update lsn: 1185, time: 1338903440.249375, len: 176 -Update lsn: 1186, time: 1338903440.249404, len: 176 -Update lsn: 1187, time: 1338903440.249431, len: 176 -Update lsn: 1188, time: 1338903440.249460, len: 176 -Update lsn: 1189, time: 1338903440.249490, len: 176 -Update lsn: 1190, time: 1338903440.249517, len: 176 -Update lsn: 1191, time: 1338903440.249563, len: 176 -Update lsn: 1192, time: 1338903440.249593, len: 176 -Update lsn: 1193, time: 1338903440.249621, len: 176 -Update lsn: 1194, time: 1338903440.249648, len: 176 -Update lsn: 1195, time: 1338903440.249676, len: 176 -Update lsn: 1196, time: 1338903440.249705, len: 176 -Update lsn: 1197, time: 1338903440.249733, len: 176 -Update lsn: 1198, time: 1338903440.249761, len: 176 -Update lsn: 1199, time: 1338903440.249789, len: 176 -Update lsn: 1200, time: 1338903440.249816, len: 176 -Update lsn: 1201, time: 1338903440.249846, len: 176 - -Insert lsn: 2, time: 1338903440.187947, len: 68 -Insert lsn: 3, time: 1338903440.190419, len: 68 -Insert lsn: 4, time: 1338903440.190539, len: 68 -Insert lsn: 5, time: 1338903440.190582, len: 68 -Insert lsn: 6, time: 1338903440.190608, len: 68 -Insert lsn: 7, time: 1338903440.190633, len: 68 -Insert lsn: 8, time: 1338903440.190657, len: 68 -Insert lsn: 9, time: 1338903440.190681, len: 68 -Insert lsn: 10, time: 1338903440.190712, len: 68 -Insert lsn: 11, time: 1338903440.190736, len: 68 -Insert lsn: 12, time: 1338903440.190762, len: 69 -Insert lsn: 13, time: 1338903440.190785, len: 69 -Insert lsn: 14, time: 1338903440.190810, len: 69 -Insert lsn: 15, time: 1338903440.190834, len: 69 -Insert lsn: 16, time: 1338903440.190858, len: 69 -Insert lsn: 17, time: 1338903440.190883, len: 69 -Insert lsn: 18, time: 1338903440.190908, len: 69 -Insert lsn: 19, time: 1338903440.190942, len: 69 -Insert lsn: 20, time: 1338903440.190967, len: 69 -Insert lsn: 21, time: 1338903440.190992, len: 69 -Insert lsn: 22, time: 1338903440.191015, len: 69 -Insert lsn: 23, time: 1338903440.191040, len: 69 -Insert lsn: 24, time: 1338903440.191064, len: 69 -Insert lsn: 25, time: 1338903440.191088, len: 69 -Insert lsn: 26, time: 1338903440.191112, len: 69 -Insert lsn: 27, time: 1338903440.191138, len: 69 -Insert lsn: 28, time: 1338903440.191163, len: 69 -Insert lsn: 29, time: 1338903440.191188, len: 69 -Insert lsn: 30, time: 1338903440.191213, len: 69 -Insert lsn: 31, time: 1338903440.191238, len: 69 -Insert lsn: 32, time: 1338903440.191262, len: 69 -Insert lsn: 33, time: 1338903440.191284, len: 69 -Insert lsn: 34, time: 1338903440.191319, len: 69 -Insert lsn: 35, time: 1338903440.191344, len: 69 -Insert lsn: 36, time: 1338903440.191369, len: 69 -Insert lsn: 37, time: 1338903440.191393, len: 69 -Insert lsn: 38, time: 1338903440.191417, len: 69 -Insert lsn: 39, time: 1338903440.191441, len: 69 -Insert lsn: 40, time: 1338903440.191479, len: 69 -Insert lsn: 41, time: 1338903440.191503, len: 69 -Insert lsn: 42, time: 1338903440.191526, len: 69 -Insert lsn: 43, time: 1338903440.191603, len: 69 -Insert lsn: 44, time: 1338903440.191632, len: 69 -Insert lsn: 45, time: 1338903440.191655, len: 69 -Insert lsn: 46, time: 1338903440.191681, len: 69 -Insert lsn: 47, time: 1338903440.191704, len: 69 -Insert lsn: 48, time: 1338903440.191727, len: 69 -Insert lsn: 49, time: 1338903440.191750, len: 69 -Insert lsn: 50, time: 1338903440.191774, len: 69 -Insert lsn: 51, time: 1338903440.191797, len: 69 -Insert lsn: 52, time: 1338903440.191820, len: 69 -Insert lsn: 53, time: 1338903440.191844, len: 69 -Insert lsn: 54, time: 1338903440.191874, len: 69 -Insert lsn: 55, time: 1338903440.191897, len: 69 -Insert lsn: 56, time: 1338903440.191921, len: 69 -Insert lsn: 57, time: 1338903440.191944, len: 69 -Insert lsn: 58, time: 1338903440.191967, len: 69 -Insert lsn: 59, time: 1338903440.191992, len: 69 -Insert lsn: 60, time: 1338903440.192016, len: 69 -Insert lsn: 61, time: 1338903440.192039, len: 69 -Insert lsn: 62, time: 1338903440.192063, len: 69 -Insert lsn: 63, time: 1338903440.192086, len: 69 -Insert lsn: 64, time: 1338903440.192111, len: 69 -Insert lsn: 65, time: 1338903440.192134, len: 69 -Insert lsn: 66, time: 1338903440.192164, len: 69 -Insert lsn: 67, time: 1338903440.192188, len: 69 -Insert lsn: 68, time: 1338903440.192212, len: 69 -Insert lsn: 69, time: 1338903440.192235, len: 69 -Insert lsn: 70, time: 1338903440.192278, len: 69 -Insert lsn: 71, time: 1338903440.192302, len: 69 -Insert lsn: 72, time: 1338903440.192327, len: 69 -Insert lsn: 73, time: 1338903440.192351, len: 69 -Insert lsn: 74, time: 1338903440.192376, len: 69 -Insert lsn: 75, time: 1338903440.192401, len: 69 -Insert lsn: 76, time: 1338903440.192424, len: 69 -Insert lsn: 77, time: 1338903440.192449, len: 69 -Insert lsn: 78, time: 1338903440.192473, len: 69 -Insert lsn: 79, time: 1338903440.192497, len: 69 -Insert lsn: 80, time: 1338903440.192521, len: 69 -Insert lsn: 81, time: 1338903440.192545, len: 69 -Insert lsn: 82, time: 1338903440.192569, len: 69 -Insert lsn: 83, time: 1338903440.192593, len: 69 -Insert lsn: 84, time: 1338903440.192642, len: 69 -Insert lsn: 85, time: 1338903440.192670, len: 69 -Insert lsn: 86, time: 1338903440.192701, len: 69 -Insert lsn: 87, time: 1338903440.192726, len: 69 -Insert lsn: 88, time: 1338903440.192749, len: 69 -Insert lsn: 89, time: 1338903440.192773, len: 69 -Insert lsn: 90, time: 1338903440.192798, len: 69 -Insert lsn: 91, time: 1338903440.192822, len: 69 -Insert lsn: 92, time: 1338903440.192846, len: 69 -Insert lsn: 93, time: 1338903440.192871, len: 69 -Insert lsn: 94, time: 1338903440.192896, len: 69 -Insert lsn: 95, time: 1338903440.192921, len: 69 -Insert lsn: 96, time: 1338903440.192946, len: 69 -Insert lsn: 97, time: 1338903440.192970, len: 69 -Insert lsn: 98, time: 1338903440.192993, len: 69 -Insert lsn: 99, time: 1338903440.193017, len: 69 -Insert lsn: 100, time: 1338903440.193042, len: 69 -Insert lsn: 101, time: 1338903440.193065, len: 69 -Insert lsn: 102, time: 1338903440.193547, len: 100 -Insert lsn: 103, time: 1338903440.207494, len: 100 -Insert lsn: 104, time: 1338903440.207539, len: 100 -Insert lsn: 105, time: 1338903440.207564, len: 100 -Insert lsn: 106, time: 1338903440.207613, len: 100 -Insert lsn: 107, time: 1338903440.207639, len: 100 -Insert lsn: 108, time: 1338903440.207665, len: 100 -Insert lsn: 109, time: 1338903440.207690, len: 100 -Insert lsn: 110, time: 1338903440.207717, len: 100 -Insert lsn: 111, time: 1338903440.207745, len: 100 -Insert lsn: 112, time: 1338903440.207770, len: 101 -Insert lsn: 113, time: 1338903440.207795, len: 101 -Insert lsn: 114, time: 1338903440.207819, len: 101 -Insert lsn: 115, time: 1338903440.207844, len: 101 -Insert lsn: 116, time: 1338903440.207870, len: 101 -Insert lsn: 117, time: 1338903440.207895, len: 101 -Insert lsn: 118, time: 1338903440.207918, len: 101 -Insert lsn: 119, time: 1338903440.207976, len: 101 -Insert lsn: 120, time: 1338903440.208004, len: 101 -Insert lsn: 121, time: 1338903440.208029, len: 101 -Insert lsn: 122, time: 1338903440.208054, len: 101 -Insert lsn: 123, time: 1338903440.208078, len: 101 -Insert lsn: 124, time: 1338903440.208119, len: 101 -Insert lsn: 125, time: 1338903440.208144, len: 101 -Insert lsn: 126, time: 1338903440.208168, len: 101 -Insert lsn: 127, time: 1338903440.208193, len: 101 -Insert lsn: 128, time: 1338903440.208218, len: 101 -Insert lsn: 129, time: 1338903440.208291, len: 101 -Insert lsn: 130, time: 1338903440.208318, len: 101 -Insert lsn: 131, time: 1338903440.208343, len: 101 -Insert lsn: 132, time: 1338903440.208370, len: 101 -Insert lsn: 133, time: 1338903440.208396, len: 101 -Insert lsn: 134, time: 1338903440.208422, len: 101 -Insert lsn: 135, time: 1338903440.208447, len: 101 -Insert lsn: 136, time: 1338903440.208473, len: 101 -Insert lsn: 137, time: 1338903440.208499, len: 101 -Insert lsn: 138, time: 1338903440.208561, len: 101 -Insert lsn: 139, time: 1338903440.208586, len: 101 -Insert lsn: 140, time: 1338903440.208610, len: 101 -Insert lsn: 141, time: 1338903440.208634, len: 101 -Insert lsn: 142, time: 1338903440.208664, len: 101 -Insert lsn: 143, time: 1338903440.208688, len: 101 -Insert lsn: 144, time: 1338903440.208712, len: 101 -Insert lsn: 145, time: 1338903440.208735, len: 101 -Insert lsn: 146, time: 1338903440.208760, len: 101 -Insert lsn: 147, time: 1338903440.208783, len: 101 -Insert lsn: 148, time: 1338903440.208807, len: 101 -Insert lsn: 149, time: 1338903440.208831, len: 101 -Insert lsn: 150, time: 1338903440.208875, len: 101 -Insert lsn: 151, time: 1338903440.208900, len: 101 -Insert lsn: 152, time: 1338903440.208924, len: 101 -Insert lsn: 153, time: 1338903440.208947, len: 101 -Insert lsn: 154, time: 1338903440.208971, len: 101 -Insert lsn: 155, time: 1338903440.208994, len: 101 -Insert lsn: 156, time: 1338903440.209018, len: 101 -Insert lsn: 157, time: 1338903440.209043, len: 101 -Insert lsn: 158, time: 1338903440.209066, len: 101 -Insert lsn: 159, time: 1338903440.209090, len: 101 -Insert lsn: 160, time: 1338903440.209126, len: 101 -Insert lsn: 161, time: 1338903440.209151, len: 101 -Insert lsn: 162, time: 1338903440.209175, len: 101 -Insert lsn: 163, time: 1338903440.209199, len: 101 -Insert lsn: 164, time: 1338903440.209223, len: 101 -Insert lsn: 165, time: 1338903440.209247, len: 101 -Insert lsn: 166, time: 1338903440.209296, len: 101 -Insert lsn: 167, time: 1338903440.209320, len: 101 -Insert lsn: 168, time: 1338903440.209344, len: 101 -Insert lsn: 169, time: 1338903440.209367, len: 101 -Insert lsn: 170, time: 1338903440.209390, len: 101 -Insert lsn: 171, time: 1338903440.209414, len: 101 -Insert lsn: 172, time: 1338903440.209438, len: 101 -Insert lsn: 173, time: 1338903440.209461, len: 101 -Insert lsn: 174, time: 1338903440.209485, len: 101 -Insert lsn: 175, time: 1338903440.209509, len: 101 -Insert lsn: 176, time: 1338903440.209533, len: 101 -Insert lsn: 177, time: 1338903440.209564, len: 101 -Insert lsn: 178, time: 1338903440.209589, len: 101 -Insert lsn: 179, time: 1338903440.209613, len: 101 -Insert lsn: 180, time: 1338903440.209637, len: 101 -Insert lsn: 181, time: 1338903440.209678, len: 101 -Insert lsn: 182, time: 1338903440.209703, len: 101 -Insert lsn: 183, time: 1338903440.209745, len: 101 -Insert lsn: 184, time: 1338903440.209770, len: 101 -Insert lsn: 185, time: 1338903440.209794, len: 101 -Insert lsn: 186, time: 1338903440.209819, len: 101 -Insert lsn: 187, time: 1338903440.209842, len: 101 -Insert lsn: 188, time: 1338903440.209866, len: 101 -Insert lsn: 189, time: 1338903440.209889, len: 101 -Insert lsn: 190, time: 1338903440.209913, len: 101 -Insert lsn: 191, time: 1338903440.209937, len: 101 -Insert lsn: 192, time: 1338903440.209961, len: 101 -Insert lsn: 193, time: 1338903440.209985, len: 101 -Insert lsn: 194, time: 1338903440.210010, len: 101 -Insert lsn: 195, time: 1338903440.210041, len: 101 -Insert lsn: 196, time: 1338903440.210065, len: 101 -Insert lsn: 197, time: 1338903440.210088, len: 101 -Insert lsn: 198, time: 1338903440.210112, len: 101 -Insert lsn: 199, time: 1338903440.210135, len: 101 -Insert lsn: 200, time: 1338903440.210160, len: 101 -Insert lsn: 201, time: 1338903440.210183, len: 101 -Insert lsn: 202, time: 1338903440.210887, len: 166 -Insert lsn: 203, time: 1338903440.213901, len: 166 -Insert lsn: 204, time: 1338903440.213959, len: 166 -Insert lsn: 205, time: 1338903440.213986, len: 166 -Insert lsn: 206, time: 1338903440.214033, len: 166 -Insert lsn: 207, time: 1338903440.214060, len: 166 -Insert lsn: 208, time: 1338903440.214119, len: 166 -Insert lsn: 209, time: 1338903440.214145, len: 166 -Insert lsn: 210, time: 1338903440.214170, len: 166 -Insert lsn: 211, time: 1338903440.214196, len: 166 -Insert lsn: 212, time: 1338903440.214221, len: 167 -Insert lsn: 213, time: 1338903440.214246, len: 167 -Insert lsn: 214, time: 1338903440.214271, len: 167 -Insert lsn: 215, time: 1338903440.214297, len: 167 -Insert lsn: 216, time: 1338903440.214322, len: 167 -Insert lsn: 217, time: 1338903440.214347, len: 167 -Insert lsn: 218, time: 1338903440.214373, len: 167 -Insert lsn: 219, time: 1338903440.214398, len: 167 -Insert lsn: 220, time: 1338903440.214430, len: 167 -Insert lsn: 221, time: 1338903440.214456, len: 167 -Insert lsn: 222, time: 1338903440.214482, len: 167 -Insert lsn: 223, time: 1338903440.214507, len: 167 -Insert lsn: 224, time: 1338903440.214531, len: 167 -Insert lsn: 225, time: 1338903440.214556, len: 167 -Insert lsn: 226, time: 1338903440.214580, len: 167 -Insert lsn: 227, time: 1338903440.214604, len: 167 -Insert lsn: 228, time: 1338903440.214628, len: 167 -Insert lsn: 229, time: 1338903440.214673, len: 167 -Insert lsn: 230, time: 1338903440.214703, len: 167 -Insert lsn: 231, time: 1338903440.214729, len: 167 -Insert lsn: 232, time: 1338903440.214753, len: 167 -Insert lsn: 233, time: 1338903440.214778, len: 167 -Insert lsn: 234, time: 1338903440.214828, len: 167 -Insert lsn: 235, time: 1338903440.214853, len: 167 -Insert lsn: 236, time: 1338903440.214878, len: 167 -Insert lsn: 237, time: 1338903440.214927, len: 167 -Insert lsn: 238, time: 1338903440.214953, len: 167 -Insert lsn: 239, time: 1338903440.214980, len: 167 -Insert lsn: 240, time: 1338903440.215005, len: 167 -Insert lsn: 241, time: 1338903440.215030, len: 167 -Insert lsn: 242, time: 1338903440.215055, len: 167 -Insert lsn: 243, time: 1338903440.215080, len: 167 -Insert lsn: 244, time: 1338903440.215105, len: 167 -Insert lsn: 245, time: 1338903440.215131, len: 167 -Insert lsn: 246, time: 1338903440.215157, len: 167 -Insert lsn: 247, time: 1338903440.215190, len: 167 -Insert lsn: 248, time: 1338903440.215215, len: 167 -Insert lsn: 249, time: 1338903440.215277, len: 167 -Insert lsn: 250, time: 1338903440.215327, len: 167 -Insert lsn: 251, time: 1338903440.215356, len: 167 -Insert lsn: 252, time: 1338903440.215382, len: 167 -Insert lsn: 253, time: 1338903440.215407, len: 167 -Insert lsn: 254, time: 1338903440.215432, len: 167 -Insert lsn: 255, time: 1338903440.215459, len: 167 -Insert lsn: 256, time: 1338903440.215486, len: 167 -Insert lsn: 257, time: 1338903440.215513, len: 167 -Insert lsn: 258, time: 1338903440.215539, len: 167 -Insert lsn: 259, time: 1338903440.215563, len: 167 -Insert lsn: 260, time: 1338903440.215590, len: 167 -Insert lsn: 261, time: 1338903440.215623, len: 167 -Insert lsn: 262, time: 1338903440.215649, len: 167 -Insert lsn: 263, time: 1338903440.215675, len: 167 -Insert lsn: 264, time: 1338903440.215699, len: 167 -Insert lsn: 265, time: 1338903440.215723, len: 167 -Insert lsn: 266, time: 1338903440.215748, len: 167 -Insert lsn: 267, time: 1338903440.215773, len: 167 -Insert lsn: 268, time: 1338903440.215797, len: 167 -Insert lsn: 269, time: 1338903440.215822, len: 167 -Insert lsn: 270, time: 1338903440.215866, len: 167 -Insert lsn: 271, time: 1338903440.215894, len: 167 -Insert lsn: 272, time: 1338903440.215918, len: 167 -Insert lsn: 273, time: 1338903440.215942, len: 167 -Insert lsn: 274, time: 1338903440.215968, len: 167 -Insert lsn: 275, time: 1338903440.216054, len: 167 -Insert lsn: 276, time: 1338903440.216105, len: 167 -Insert lsn: 277, time: 1338903440.216130, len: 167 -Insert lsn: 278, time: 1338903440.216155, len: 167 -Insert lsn: 279, time: 1338903440.216181, len: 167 -Insert lsn: 280, time: 1338903440.216207, len: 167 -Insert lsn: 281, time: 1338903440.216231, len: 167 -Insert lsn: 282, time: 1338903440.216256, len: 167 -Insert lsn: 283, time: 1338903440.216281, len: 167 -Insert lsn: 284, time: 1338903440.216306, len: 167 -Insert lsn: 285, time: 1338903440.216332, len: 167 -Insert lsn: 286, time: 1338903440.216357, len: 167 -Insert lsn: 287, time: 1338903440.216382, len: 167 -Insert lsn: 288, time: 1338903440.216407, len: 167 -Insert lsn: 289, time: 1338903440.216444, len: 167 -Insert lsn: 290, time: 1338903440.216470, len: 167 -Insert lsn: 291, time: 1338903440.216519, len: 167 -Insert lsn: 292, time: 1338903440.216549, len: 167 -Insert lsn: 293, time: 1338903440.216576, len: 167 -Insert lsn: 294, time: 1338903440.216602, len: 167 -Insert lsn: 295, time: 1338903440.216627, len: 167 -Insert lsn: 296, time: 1338903440.216652, len: 167 -Insert lsn: 297, time: 1338903440.216677, len: 167 -Insert lsn: 298, time: 1338903440.216701, len: 167 -Insert lsn: 299, time: 1338903440.216725, len: 167 -Insert lsn: 300, time: 1338903440.216749, len: 167 -Insert lsn: 301, time: 1338903440.216774, len: 167 -Insert lsn: 302, time: 1338903440.217291, len: 68 -Insert lsn: 303, time: 1338903440.217376, len: 68 -Insert lsn: 304, time: 1338903440.217406, len: 68 -Insert lsn: 305, time: 1338903440.217431, len: 68 -Insert lsn: 306, time: 1338903440.217458, len: 68 -Insert lsn: 307, time: 1338903440.217483, len: 68 -Insert lsn: 308, time: 1338903440.217508, len: 68 -Insert lsn: 309, time: 1338903440.217533, len: 68 -Insert lsn: 310, time: 1338903440.217565, len: 68 -Insert lsn: 311, time: 1338903440.217591, len: 68 -Insert lsn: 312, time: 1338903440.217618, len: 69 -Insert lsn: 313, time: 1338903440.217644, len: 69 -Insert lsn: 314, time: 1338903440.217670, len: 69 -Insert lsn: 315, time: 1338903440.217697, len: 69 -Insert lsn: 316, time: 1338903440.217722, len: 69 -Insert lsn: 317, time: 1338903440.217749, len: 69 -Insert lsn: 318, time: 1338903440.217776, len: 69 -Insert lsn: 319, time: 1338903440.217801, len: 69 -Insert lsn: 320, time: 1338903440.217865, len: 69 -Insert lsn: 321, time: 1338903440.217896, len: 69 -Insert lsn: 322, time: 1338903440.217923, len: 69 -Insert lsn: 323, time: 1338903440.217949, len: 69 -Insert lsn: 324, time: 1338903440.217974, len: 69 -Insert lsn: 325, time: 1338903440.218000, len: 69 -Insert lsn: 326, time: 1338903440.218045, len: 69 -Insert lsn: 327, time: 1338903440.218071, len: 69 -Insert lsn: 328, time: 1338903440.218097, len: 69 -Insert lsn: 329, time: 1338903440.218124, len: 69 -Insert lsn: 330, time: 1338903440.218150, len: 69 -Insert lsn: 331, time: 1338903440.218176, len: 69 -Insert lsn: 332, time: 1338903440.218203, len: 69 -Insert lsn: 333, time: 1338903440.218246, len: 69 -Insert lsn: 334, time: 1338903440.218277, len: 69 -Insert lsn: 335, time: 1338903440.218303, len: 69 -Insert lsn: 336, time: 1338903440.218329, len: 69 -Insert lsn: 337, time: 1338903440.218354, len: 69 -Insert lsn: 338, time: 1338903440.218380, len: 69 -Insert lsn: 339, time: 1338903440.218406, len: 69 -Insert lsn: 340, time: 1338903440.218431, len: 69 -Insert lsn: 341, time: 1338903440.218456, len: 69 -Insert lsn: 342, time: 1338903440.218491, len: 69 -Insert lsn: 343, time: 1338903440.218516, len: 69 -Insert lsn: 344, time: 1338903440.218542, len: 69 -Insert lsn: 345, time: 1338903440.218567, len: 69 -Insert lsn: 346, time: 1338903440.218592, len: 69 -Insert lsn: 347, time: 1338903440.218617, len: 69 -Insert lsn: 348, time: 1338903440.218643, len: 69 -Insert lsn: 349, time: 1338903440.218669, len: 69 -Insert lsn: 350, time: 1338903440.218695, len: 69 -Insert lsn: 351, time: 1338903440.218721, len: 69 -Insert lsn: 352, time: 1338903440.218748, len: 69 -Insert lsn: 353, time: 1338903440.218773, len: 69 -Insert lsn: 354, time: 1338903440.218798, len: 69 -Insert lsn: 355, time: 1338903440.218824, len: 69 -Insert lsn: 356, time: 1338903440.218851, len: 69 -Insert lsn: 357, time: 1338903440.218877, len: 69 -Insert lsn: 358, time: 1338903440.218915, len: 69 -Insert lsn: 359, time: 1338903440.218943, len: 69 -Insert lsn: 360, time: 1338903440.218969, len: 69 -Insert lsn: 361, time: 1338903440.219052, len: 69 -Insert lsn: 362, time: 1338903440.219089, len: 69 -Insert lsn: 363, time: 1338903440.219114, len: 69 -Insert lsn: 364, time: 1338903440.219139, len: 69 -Insert lsn: 365, time: 1338903440.219164, len: 69 -Insert lsn: 366, time: 1338903440.219190, len: 69 -Insert lsn: 367, time: 1338903440.219216, len: 69 -Insert lsn: 368, time: 1338903440.219241, len: 69 -Insert lsn: 369, time: 1338903440.219266, len: 69 -Insert lsn: 370, time: 1338903440.219291, len: 69 -Insert lsn: 371, time: 1338903440.219316, len: 69 -Insert lsn: 372, time: 1338903440.219342, len: 69 -Insert lsn: 373, time: 1338903440.219367, len: 69 -Insert lsn: 374, time: 1338903440.219391, len: 69 -Insert lsn: 375, time: 1338903440.219422, len: 69 -Insert lsn: 376, time: 1338903440.219448, len: 69 -Insert lsn: 377, time: 1338903440.219478, len: 69 -Insert lsn: 378, time: 1338903440.219503, len: 69 -Insert lsn: 379, time: 1338903440.219528, len: 69 -Insert lsn: 380, time: 1338903440.219552, len: 69 -Insert lsn: 381, time: 1338903440.219577, len: 69 -Insert lsn: 382, time: 1338903440.219601, len: 69 -Insert lsn: 383, time: 1338903440.219625, len: 69 -Insert lsn: 384, time: 1338903440.219650, len: 69 -Insert lsn: 385, time: 1338903440.219675, len: 69 -Insert lsn: 386, time: 1338903440.219700, len: 69 -Insert lsn: 387, time: 1338903440.219725, len: 69 -Insert lsn: 388, time: 1338903440.219749, len: 69 -Insert lsn: 389, time: 1338903440.219774, len: 69 -Insert lsn: 390, time: 1338903440.219798, len: 69 -Insert lsn: 391, time: 1338903440.219823, len: 69 -Insert lsn: 392, time: 1338903440.219847, len: 69 -Insert lsn: 393, time: 1338903440.219882, len: 69 -Insert lsn: 394, time: 1338903440.219907, len: 69 -Insert lsn: 395, time: 1338903440.219932, len: 69 -Insert lsn: 396, time: 1338903440.219957, len: 69 -Insert lsn: 397, time: 1338903440.219981, len: 69 -Insert lsn: 398, time: 1338903440.220006, len: 69 -Insert lsn: 399, time: 1338903440.220031, len: 69 -Insert lsn: 400, time: 1338903440.220055, len: 69 -Insert lsn: 401, time: 1338903440.220099, len: 69 -Insert lsn: 402, time: 1338903440.220698, len: 100 -Insert lsn: 403, time: 1338903440.220780, len: 100 -Insert lsn: 404, time: 1338903440.220809, len: 100 -Insert lsn: 405, time: 1338903440.220836, len: 100 -Insert lsn: 406, time: 1338903440.220861, len: 100 -Insert lsn: 407, time: 1338903440.220887, len: 100 -Insert lsn: 408, time: 1338903440.220913, len: 100 -Insert lsn: 409, time: 1338903440.220939, len: 100 -Insert lsn: 410, time: 1338903440.220966, len: 100 -Insert lsn: 411, time: 1338903440.220993, len: 100 -Insert lsn: 412, time: 1338903440.221020, len: 101 -Insert lsn: 413, time: 1338903440.221047, len: 101 -Insert lsn: 414, time: 1338903440.221074, len: 101 -Insert lsn: 415, time: 1338903440.221101, len: 101 -Insert lsn: 416, time: 1338903440.221127, len: 101 -Insert lsn: 417, time: 1338903440.221155, len: 101 -Insert lsn: 418, time: 1338903440.221181, len: 101 -Insert lsn: 419, time: 1338903440.221207, len: 101 -Insert lsn: 420, time: 1338903440.221233, len: 101 -Insert lsn: 421, time: 1338903440.221260, len: 101 -Insert lsn: 422, time: 1338903440.221287, len: 101 -Insert lsn: 423, time: 1338903440.221313, len: 101 -Insert lsn: 424, time: 1338903440.221339, len: 101 -Insert lsn: 425, time: 1338903440.221366, len: 101 -Insert lsn: 426, time: 1338903440.221393, len: 101 -Insert lsn: 427, time: 1338903440.221418, len: 101 -Insert lsn: 428, time: 1338903440.221443, len: 101 -Insert lsn: 429, time: 1338903440.221468, len: 101 -Insert lsn: 430, time: 1338903440.221493, len: 101 -Insert lsn: 431, time: 1338903440.221518, len: 101 -Insert lsn: 432, time: 1338903440.221605, len: 101 -Insert lsn: 433, time: 1338903440.221638, len: 101 -Insert lsn: 434, time: 1338903440.221663, len: 101 -Insert lsn: 435, time: 1338903440.221688, len: 101 -Insert lsn: 436, time: 1338903440.221714, len: 101 -Insert lsn: 437, time: 1338903440.221739, len: 101 -Insert lsn: 438, time: 1338903440.221764, len: 101 -Insert lsn: 439, time: 1338903440.221788, len: 101 -Insert lsn: 440, time: 1338903440.221814, len: 101 -Insert lsn: 441, time: 1338903440.221840, len: 101 -Insert lsn: 442, time: 1338903440.221865, len: 101 -Insert lsn: 443, time: 1338903440.221889, len: 101 -Insert lsn: 444, time: 1338903440.221914, len: 101 -Insert lsn: 445, time: 1338903440.221939, len: 101 -Insert lsn: 446, time: 1338903440.221964, len: 101 -Insert lsn: 447, time: 1338903440.221988, len: 101 -Insert lsn: 448, time: 1338903440.222013, len: 101 -Insert lsn: 449, time: 1338903440.222038, len: 101 -Insert lsn: 450, time: 1338903440.222062, len: 101 -Insert lsn: 451, time: 1338903440.222087, len: 101 -Insert lsn: 452, time: 1338903440.222111, len: 101 -Insert lsn: 453, time: 1338903440.222136, len: 101 -Insert lsn: 454, time: 1338903440.222160, len: 101 -Insert lsn: 455, time: 1338903440.222184, len: 101 -Insert lsn: 456, time: 1338903440.222211, len: 101 -Insert lsn: 457, time: 1338903440.222237, len: 101 -Insert lsn: 458, time: 1338903440.222264, len: 101 -Insert lsn: 459, time: 1338903440.222289, len: 101 -Insert lsn: 460, time: 1338903440.222314, len: 101 -Insert lsn: 461, time: 1338903440.222339, len: 101 -Insert lsn: 462, time: 1338903440.222366, len: 101 -Insert lsn: 463, time: 1338903440.222422, len: 101 -Insert lsn: 464, time: 1338903440.222450, len: 101 -Insert lsn: 465, time: 1338903440.222475, len: 101 -Insert lsn: 466, time: 1338903440.222500, len: 101 -Insert lsn: 467, time: 1338903440.222526, len: 101 -Insert lsn: 468, time: 1338903440.222562, len: 101 -Insert lsn: 469, time: 1338903440.222588, len: 101 -Insert lsn: 470, time: 1338903440.222614, len: 101 -Insert lsn: 471, time: 1338903440.222639, len: 101 -Insert lsn: 472, time: 1338903440.222664, len: 101 -Insert lsn: 473, time: 1338903440.222691, len: 101 -Insert lsn: 474, time: 1338903440.222717, len: 101 -Insert lsn: 475, time: 1338903440.222742, len: 101 -Insert lsn: 476, time: 1338903440.222767, len: 101 -Insert lsn: 477, time: 1338903440.222800, len: 101 -Insert lsn: 478, time: 1338903440.222826, len: 101 -Insert lsn: 479, time: 1338903440.222851, len: 101 -Insert lsn: 480, time: 1338903440.222876, len: 101 -Insert lsn: 481, time: 1338903440.222901, len: 101 -Insert lsn: 482, time: 1338903440.222926, len: 101 -Insert lsn: 483, time: 1338903440.222951, len: 101 -Insert lsn: 484, time: 1338903440.222976, len: 101 -Insert lsn: 485, time: 1338903440.223000, len: 101 -Insert lsn: 486, time: 1338903440.223025, len: 101 -Insert lsn: 487, time: 1338903440.223049, len: 101 -Insert lsn: 488, time: 1338903440.223074, len: 101 -Insert lsn: 489, time: 1338903440.223100, len: 101 -Insert lsn: 490, time: 1338903440.223125, len: 101 -Insert lsn: 491, time: 1338903440.223149, len: 101 -Insert lsn: 492, time: 1338903440.223174, len: 101 -Insert lsn: 493, time: 1338903440.223199, len: 101 -Insert lsn: 494, time: 1338903440.223256, len: 101 -Insert lsn: 495, time: 1338903440.223284, len: 101 -Insert lsn: 496, time: 1338903440.223311, len: 101 -Insert lsn: 497, time: 1338903440.223336, len: 101 -Insert lsn: 498, time: 1338903440.223361, len: 101 -Insert lsn: 499, time: 1338903440.223386, len: 101 -Insert lsn: 500, time: 1338903440.223410, len: 101 -Insert lsn: 501, time: 1338903440.223435, len: 101 -Insert lsn: 502, time: 1338903440.224114, len: 166 -Insert lsn: 503, time: 1338903440.224227, len: 166 -Insert lsn: 504, time: 1338903440.224259, len: 166 -Insert lsn: 505, time: 1338903440.224284, len: 166 -Insert lsn: 506, time: 1338903440.224311, len: 166 -Insert lsn: 507, time: 1338903440.224339, len: 166 -Insert lsn: 508, time: 1338903440.224365, len: 166 -Insert lsn: 509, time: 1338903440.224391, len: 166 -Insert lsn: 510, time: 1338903440.224418, len: 166 -Insert lsn: 511, time: 1338903440.224444, len: 166 -Insert lsn: 512, time: 1338903440.224471, len: 167 -Insert lsn: 513, time: 1338903440.224497, len: 167 -Insert lsn: 514, time: 1338903440.224523, len: 167 -Insert lsn: 515, time: 1338903440.224550, len: 167 -Insert lsn: 516, time: 1338903440.224576, len: 167 -Insert lsn: 517, time: 1338903440.224639, len: 167 -Insert lsn: 518, time: 1338903440.224671, len: 167 -Insert lsn: 519, time: 1338903440.224698, len: 167 -Insert lsn: 520, time: 1338903440.224725, len: 167 -Insert lsn: 521, time: 1338903440.224753, len: 167 -Insert lsn: 522, time: 1338903440.224780, len: 167 -Insert lsn: 523, time: 1338903440.224806, len: 167 -Insert lsn: 524, time: 1338903440.224833, len: 167 -Insert lsn: 525, time: 1338903440.224860, len: 167 -Insert lsn: 526, time: 1338903440.224888, len: 167 -Insert lsn: 527, time: 1338903440.224938, len: 167 -Insert lsn: 528, time: 1338903440.224967, len: 167 -Insert lsn: 529, time: 1338903440.224994, len: 167 -Insert lsn: 530, time: 1338903440.225020, len: 167 -Insert lsn: 531, time: 1338903440.225047, len: 167 -Insert lsn: 532, time: 1338903440.225073, len: 167 -Insert lsn: 533, time: 1338903440.225100, len: 167 -Insert lsn: 534, time: 1338903440.225126, len: 167 -Insert lsn: 535, time: 1338903440.225152, len: 167 -Insert lsn: 536, time: 1338903440.225180, len: 167 -Insert lsn: 537, time: 1338903440.225206, len: 167 -Insert lsn: 538, time: 1338903440.225260, len: 167 -Insert lsn: 539, time: 1338903440.225290, len: 167 -Insert lsn: 540, time: 1338903440.225316, len: 167 -Insert lsn: 541, time: 1338903440.225343, len: 167 -Insert lsn: 542, time: 1338903440.225369, len: 167 -Insert lsn: 543, time: 1338903440.225395, len: 167 -Insert lsn: 544, time: 1338903440.225421, len: 167 -Insert lsn: 545, time: 1338903440.225448, len: 167 -Insert lsn: 546, time: 1338903440.225474, len: 167 -Insert lsn: 547, time: 1338903440.225500, len: 167 -Insert lsn: 548, time: 1338903440.225527, len: 167 -Insert lsn: 549, time: 1338903440.225554, len: 167 -Insert lsn: 550, time: 1338903440.225580, len: 167 -Insert lsn: 551, time: 1338903440.225605, len: 167 -Insert lsn: 552, time: 1338903440.225631, len: 167 -Insert lsn: 553, time: 1338903440.225658, len: 167 -Insert lsn: 554, time: 1338903440.225685, len: 167 -Insert lsn: 555, time: 1338903440.225711, len: 167 -Insert lsn: 556, time: 1338903440.225738, len: 167 -Insert lsn: 557, time: 1338903440.225765, len: 167 -Insert lsn: 558, time: 1338903440.225792, len: 167 -Insert lsn: 559, time: 1338903440.225836, len: 167 -Insert lsn: 560, time: 1338903440.225865, len: 167 -Insert lsn: 561, time: 1338903440.225892, len: 167 -Insert lsn: 562, time: 1338903440.225919, len: 167 -Insert lsn: 563, time: 1338903440.225945, len: 167 -Insert lsn: 564, time: 1338903440.225971, len: 167 -Insert lsn: 565, time: 1338903440.225997, len: 167 -Insert lsn: 566, time: 1338903440.226024, len: 167 -Insert lsn: 567, time: 1338903440.226051, len: 167 -Insert lsn: 568, time: 1338903440.226080, len: 167 -Insert lsn: 569, time: 1338903440.226107, len: 167 -Insert lsn: 570, time: 1338903440.226134, len: 167 -Insert lsn: 571, time: 1338903440.226162, len: 167 -Insert lsn: 572, time: 1338903440.226190, len: 167 -Insert lsn: 573, time: 1338903440.226217, len: 167 -Insert lsn: 574, time: 1338903440.226244, len: 167 -Insert lsn: 575, time: 1338903440.226271, len: 167 -Insert lsn: 576, time: 1338903440.226296, len: 167 -Insert lsn: 577, time: 1338903440.226322, len: 167 -Insert lsn: 578, time: 1338903440.226348, len: 167 -Insert lsn: 579, time: 1338903440.226392, len: 167 -Insert lsn: 580, time: 1338903440.226420, len: 167 -Insert lsn: 581, time: 1338903440.226446, len: 167 -Insert lsn: 582, time: 1338903440.226471, len: 167 -Insert lsn: 583, time: 1338903440.226496, len: 167 -Insert lsn: 584, time: 1338903440.226521, len: 167 -Insert lsn: 585, time: 1338903440.226546, len: 167 -Insert lsn: 586, time: 1338903440.226571, len: 167 -Insert lsn: 587, time: 1338903440.226596, len: 167 -Insert lsn: 588, time: 1338903440.226622, len: 167 -Insert lsn: 589, time: 1338903440.226648, len: 167 -Insert lsn: 590, time: 1338903440.226674, len: 167 -Insert lsn: 591, time: 1338903440.226699, len: 167 -Insert lsn: 592, time: 1338903440.226724, len: 167 -Insert lsn: 593, time: 1338903440.226749, len: 167 -Insert lsn: 594, time: 1338903440.226774, len: 167 -Insert lsn: 595, time: 1338903440.226799, len: 167 -Insert lsn: 596, time: 1338903440.226825, len: 167 -Insert lsn: 597, time: 1338903440.226850, len: 167 -Insert lsn: 598, time: 1338903440.226882, len: 167 -Insert lsn: 599, time: 1338903440.226907, len: 167 -Insert lsn: 600, time: 1338903440.226949, len: 167 -Insert lsn: 601, time: 1338903440.226978, len: 167 -Update lsn: 602, time: 1338903440.227788, len: 77 -Update lsn: 603, time: 1338903440.227901, len: 77 -Update lsn: 604, time: 1338903440.227932, len: 77 -Update lsn: 605, time: 1338903440.227961, len: 77 -Update lsn: 606, time: 1338903440.227988, len: 77 -Update lsn: 607, time: 1338903440.228014, len: 77 -Update lsn: 608, time: 1338903440.228041, len: 77 -Update lsn: 609, time: 1338903440.228069, len: 77 -Update lsn: 610, time: 1338903440.228096, len: 77 -Update lsn: 611, time: 1338903440.228123, len: 77 -Update lsn: 612, time: 1338903440.228150, len: 78 -Update lsn: 613, time: 1338903440.228177, len: 78 -Update lsn: 614, time: 1338903440.228204, len: 78 -Update lsn: 615, time: 1338903440.228250, len: 78 -Update lsn: 616, time: 1338903440.228283, len: 78 -Update lsn: 617, time: 1338903440.228311, len: 78 -Update lsn: 618, time: 1338903440.228338, len: 78 -Update lsn: 619, time: 1338903440.228365, len: 78 -Update lsn: 620, time: 1338903440.228393, len: 78 -Update lsn: 621, time: 1338903440.228421, len: 78 -Update lsn: 622, time: 1338903440.228448, len: 78 -Update lsn: 623, time: 1338903440.228475, len: 78 -Update lsn: 624, time: 1338903440.228502, len: 78 -Update lsn: 625, time: 1338903440.228530, len: 78 -Update lsn: 626, time: 1338903440.228556, len: 78 -Update lsn: 627, time: 1338903440.228583, len: 78 -Update lsn: 628, time: 1338903440.228611, len: 78 -Update lsn: 629, time: 1338903440.228639, len: 78 -Update lsn: 630, time: 1338903440.228668, len: 78 -Update lsn: 631, time: 1338903440.228695, len: 78 -Update lsn: 632, time: 1338903440.228723, len: 78 -Update lsn: 633, time: 1338903440.228751, len: 78 -Update lsn: 634, time: 1338903440.228778, len: 78 -Update lsn: 635, time: 1338903440.228838, len: 78 -Update lsn: 636, time: 1338903440.228867, len: 78 -Update lsn: 637, time: 1338903440.228892, len: 78 -Update lsn: 638, time: 1338903440.228918, len: 78 -Update lsn: 639, time: 1338903440.228944, len: 78 -Update lsn: 640, time: 1338903440.228969, len: 78 -Update lsn: 641, time: 1338903440.228995, len: 78 -Update lsn: 642, time: 1338903440.229021, len: 78 -Update lsn: 643, time: 1338903440.229047, len: 78 -Update lsn: 644, time: 1338903440.229073, len: 78 -Update lsn: 645, time: 1338903440.229099, len: 78 -Update lsn: 646, time: 1338903440.229125, len: 78 -Update lsn: 647, time: 1338903440.229150, len: 78 -Update lsn: 648, time: 1338903440.229176, len: 78 -Update lsn: 649, time: 1338903440.229201, len: 78 -Update lsn: 650, time: 1338903440.229228, len: 78 -Update lsn: 651, time: 1338903440.229254, len: 78 -Update lsn: 652, time: 1338903440.229281, len: 78 -Update lsn: 653, time: 1338903440.229307, len: 78 -Update lsn: 654, time: 1338903440.229333, len: 78 -Update lsn: 655, time: 1338903440.229360, len: 78 -Update lsn: 656, time: 1338903440.229386, len: 78 -Update lsn: 657, time: 1338903440.229412, len: 78 -Update lsn: 658, time: 1338903440.229439, len: 78 -Update lsn: 659, time: 1338903440.229465, len: 78 -Update lsn: 660, time: 1338903440.229491, len: 78 -Update lsn: 661, time: 1338903440.229517, len: 78 -Update lsn: 662, time: 1338903440.229544, len: 78 -Update lsn: 663, time: 1338903440.229584, len: 78 -Update lsn: 664, time: 1338903440.229612, len: 78 -Update lsn: 665, time: 1338903440.229639, len: 78 -Update lsn: 666, time: 1338903440.229666, len: 78 -Update lsn: 667, time: 1338903440.229694, len: 78 -Update lsn: 668, time: 1338903440.229723, len: 78 -Update lsn: 669, time: 1338903440.229752, len: 78 -Update lsn: 670, time: 1338903440.229779, len: 78 -Update lsn: 671, time: 1338903440.229808, len: 78 -Update lsn: 672, time: 1338903440.229862, len: 78 -Update lsn: 673, time: 1338903440.229892, len: 78 -Update lsn: 674, time: 1338903440.229933, len: 78 -Update lsn: 675, time: 1338903440.229961, len: 78 -Update lsn: 676, time: 1338903440.229988, len: 78 -Update lsn: 677, time: 1338903440.230015, len: 78 -Update lsn: 678, time: 1338903440.230042, len: 78 -Update lsn: 679, time: 1338903440.230069, len: 78 -Update lsn: 680, time: 1338903440.230096, len: 78 -Update lsn: 681, time: 1338903440.230124, len: 78 -Update lsn: 682, time: 1338903440.230153, len: 78 -Update lsn: 683, time: 1338903440.230180, len: 78 -Update lsn: 684, time: 1338903440.230210, len: 78 -Update lsn: 685, time: 1338903440.230248, len: 78 -Update lsn: 686, time: 1338903440.230274, len: 78 -Update lsn: 687, time: 1338903440.230300, len: 78 -Update lsn: 688, time: 1338903440.230326, len: 78 -Update lsn: 689, time: 1338903440.230352, len: 78 -Update lsn: 690, time: 1338903440.230380, len: 78 -Update lsn: 691, time: 1338903440.230408, len: 78 -Update lsn: 692, time: 1338903440.230434, len: 78 -Update lsn: 693, time: 1338903440.230462, len: 78 -Update lsn: 694, time: 1338903440.230488, len: 78 -Update lsn: 695, time: 1338903440.230515, len: 78 -Update lsn: 696, time: 1338903440.230541, len: 78 -Update lsn: 697, time: 1338903440.230567, len: 78 -Update lsn: 698, time: 1338903440.230593, len: 78 -Update lsn: 699, time: 1338903440.230619, len: 78 -Update lsn: 700, time: 1338903440.230645, len: 78 -Update lsn: 701, time: 1338903440.230670, len: 78 -Update lsn: 702, time: 1338903440.231167, len: 109 -Update lsn: 703, time: 1338903440.231248, len: 109 -Update lsn: 704, time: 1338903440.231279, len: 109 -Update lsn: 705, time: 1338903440.231308, len: 109 -Update lsn: 706, time: 1338903440.231335, len: 109 -Update lsn: 707, time: 1338903440.231362, len: 109 -Update lsn: 708, time: 1338903440.231420, len: 109 -Update lsn: 709, time: 1338903440.231452, len: 109 -Update lsn: 710, time: 1338903440.231482, len: 109 -Update lsn: 711, time: 1338903440.231512, len: 109 -Update lsn: 712, time: 1338903440.231540, len: 110 -Update lsn: 713, time: 1338903440.231589, len: 110 -Update lsn: 714, time: 1338903440.231620, len: 110 -Update lsn: 715, time: 1338903440.231647, len: 110 -Update lsn: 716, time: 1338903440.231674, len: 110 -Update lsn: 717, time: 1338903440.231703, len: 110 -Update lsn: 718, time: 1338903440.231731, len: 110 -Update lsn: 719, time: 1338903440.231761, len: 110 -Update lsn: 720, time: 1338903440.231789, len: 110 -Update lsn: 721, time: 1338903440.231818, len: 110 -Update lsn: 722, time: 1338903440.231847, len: 110 -Update lsn: 723, time: 1338903440.231874, len: 110 -Update lsn: 724, time: 1338903440.231900, len: 110 -Update lsn: 725, time: 1338903440.231927, len: 110 -Update lsn: 726, time: 1338903440.231954, len: 110 -Update lsn: 727, time: 1338903440.231981, len: 110 -Update lsn: 728, time: 1338903440.232007, len: 110 -Update lsn: 729, time: 1338903440.232034, len: 110 -Update lsn: 730, time: 1338903440.232061, len: 110 -Update lsn: 731, time: 1338903440.232088, len: 110 -Update lsn: 732, time: 1338903440.232114, len: 110 -Update lsn: 733, time: 1338903440.232140, len: 110 -Update lsn: 734, time: 1338903440.232166, len: 110 -Update lsn: 735, time: 1338903440.232192, len: 110 -Update lsn: 736, time: 1338903440.232217, len: 110 -Update lsn: 737, time: 1338903440.232270, len: 110 -Update lsn: 738, time: 1338903440.232300, len: 110 -Update lsn: 739, time: 1338903440.232326, len: 110 -Update lsn: 740, time: 1338903440.232352, len: 110 -Update lsn: 741, time: 1338903440.232377, len: 110 -Update lsn: 742, time: 1338903440.232403, len: 110 -Update lsn: 743, time: 1338903440.232429, len: 110 -Update lsn: 744, time: 1338903440.232456, len: 110 -Update lsn: 745, time: 1338903440.232483, len: 110 -Update lsn: 746, time: 1338903440.232509, len: 110 -Update lsn: 747, time: 1338903440.232537, len: 110 -Update lsn: 748, time: 1338903440.232564, len: 110 -Update lsn: 749, time: 1338903440.232590, len: 110 -Update lsn: 750, time: 1338903440.232617, len: 110 -Update lsn: 751, time: 1338903440.232643, len: 110 -Update lsn: 752, time: 1338903440.232670, len: 110 -Update lsn: 753, time: 1338903440.232697, len: 110 -Update lsn: 754, time: 1338903440.232724, len: 110 -Update lsn: 755, time: 1338903440.232750, len: 110 -Update lsn: 756, time: 1338903440.232777, len: 110 -Update lsn: 757, time: 1338903440.232803, len: 110 -Update lsn: 758, time: 1338903440.232829, len: 110 -Update lsn: 759, time: 1338903440.232856, len: 110 -Update lsn: 760, time: 1338903440.232883, len: 110 -Update lsn: 761, time: 1338903440.232909, len: 110 -Update lsn: 762, time: 1338903440.232936, len: 110 -Update lsn: 763, time: 1338903440.232962, len: 110 -Update lsn: 764, time: 1338903440.232989, len: 110 -Update lsn: 765, time: 1338903440.233016, len: 110 -Update lsn: 766, time: 1338903440.233063, len: 110 -Update lsn: 767, time: 1338903440.233091, len: 110 -Update lsn: 768, time: 1338903440.233117, len: 110 -Update lsn: 769, time: 1338903440.233144, len: 110 -Update lsn: 770, time: 1338903440.233170, len: 110 -Update lsn: 771, time: 1338903440.233196, len: 110 -Update lsn: 772, time: 1338903440.233221, len: 110 -Update lsn: 773, time: 1338903440.233247, len: 110 -Update lsn: 774, time: 1338903440.233274, len: 110 -Update lsn: 775, time: 1338903440.233300, len: 110 -Update lsn: 776, time: 1338903440.233327, len: 110 -Update lsn: 777, time: 1338903440.233354, len: 110 -Update lsn: 778, time: 1338903440.233381, len: 110 -Update lsn: 779, time: 1338903440.233407, len: 110 -Update lsn: 780, time: 1338903440.233434, len: 110 -Update lsn: 781, time: 1338903440.233461, len: 110 -Update lsn: 782, time: 1338903440.233488, len: 110 -Update lsn: 783, time: 1338903440.233515, len: 110 -Update lsn: 784, time: 1338903440.233542, len: 110 -Update lsn: 785, time: 1338903440.233568, len: 110 -Update lsn: 786, time: 1338903440.233595, len: 110 -Update lsn: 787, time: 1338903440.233622, len: 110 -Update lsn: 788, time: 1338903440.233649, len: 110 -Update lsn: 789, time: 1338903440.233677, len: 110 -Update lsn: 790, time: 1338903440.233704, len: 110 -Update lsn: 791, time: 1338903440.233730, len: 110 -Update lsn: 792, time: 1338903440.233757, len: 110 -Update lsn: 793, time: 1338903440.233784, len: 110 -Update lsn: 794, time: 1338903440.233827, len: 110 -Update lsn: 795, time: 1338903440.233855, len: 110 -Update lsn: 796, time: 1338903440.233882, len: 110 -Update lsn: 797, time: 1338903440.233909, len: 110 -Update lsn: 798, time: 1338903440.233936, len: 110 -Update lsn: 799, time: 1338903440.233963, len: 110 -Update lsn: 800, time: 1338903440.233989, len: 110 -Update lsn: 801, time: 1338903440.234015, len: 110 -Update lsn: 802, time: 1338903440.234573, len: 175 -Update lsn: 803, time: 1338903440.234678, len: 175 -Update lsn: 804, time: 1338903440.234710, len: 175 -Update lsn: 805, time: 1338903440.234738, len: 175 -Update lsn: 806, time: 1338903440.234767, len: 175 -Update lsn: 807, time: 1338903440.234796, len: 175 -Update lsn: 808, time: 1338903440.234823, len: 175 -Update lsn: 809, time: 1338903440.234851, len: 175 -Update lsn: 810, time: 1338903440.234878, len: 175 -Update lsn: 811, time: 1338903440.234923, len: 175 -Update lsn: 812, time: 1338903440.234954, len: 176 -Update lsn: 813, time: 1338903440.234984, len: 176 -Update lsn: 814, time: 1338903440.235012, len: 176 -Update lsn: 815, time: 1338903440.235040, len: 176 -Update lsn: 816, time: 1338903440.235068, len: 176 -Update lsn: 817, time: 1338903440.235132, len: 176 -Update lsn: 818, time: 1338903440.235167, len: 176 -Update lsn: 819, time: 1338903440.235196, len: 176 -Update lsn: 820, time: 1338903440.235224, len: 176 -Update lsn: 821, time: 1338903440.235254, len: 176 -Update lsn: 822, time: 1338903440.235282, len: 176 -Update lsn: 823, time: 1338903440.235310, len: 176 -Update lsn: 824, time: 1338903440.235339, len: 176 -Update lsn: 825, time: 1338903440.235368, len: 176 -Update lsn: 826, time: 1338903440.235395, len: 176 -Update lsn: 827, time: 1338903440.235422, len: 176 -Update lsn: 828, time: 1338903440.235449, len: 176 -Update lsn: 829, time: 1338903440.235476, len: 176 -Update lsn: 830, time: 1338903440.235503, len: 176 -Update lsn: 831, time: 1338903440.235530, len: 176 -Update lsn: 832, time: 1338903440.235556, len: 176 -Update lsn: 833, time: 1338903440.235583, len: 176 -Update lsn: 834, time: 1338903440.235609, len: 176 -Update lsn: 835, time: 1338903440.235635, len: 176 -Update lsn: 836, time: 1338903440.235682, len: 176 -Update lsn: 837, time: 1338903440.235711, len: 176 -Update lsn: 838, time: 1338903440.235738, len: 176 -Update lsn: 839, time: 1338903440.235764, len: 176 -Update lsn: 840, time: 1338903440.235790, len: 176 -Update lsn: 841, time: 1338903440.235817, len: 176 -Update lsn: 842, time: 1338903440.235843, len: 176 -Update lsn: 843, time: 1338903440.235869, len: 176 -Update lsn: 844, time: 1338903440.235896, len: 176 -Update lsn: 845, time: 1338903440.235923, len: 176 -Update lsn: 846, time: 1338903440.235949, len: 176 -Update lsn: 847, time: 1338903440.235977, len: 176 -Update lsn: 848, time: 1338903440.236004, len: 176 -Update lsn: 849, time: 1338903440.236031, len: 176 -Update lsn: 850, time: 1338903440.236057, len: 176 -Update lsn: 851, time: 1338903440.236084, len: 176 -Update lsn: 852, time: 1338903440.236110, len: 176 -Update lsn: 853, time: 1338903440.236136, len: 176 -Update lsn: 854, time: 1338903440.236163, len: 176 -Update lsn: 855, time: 1338903440.236189, len: 176 -Update lsn: 856, time: 1338903440.236233, len: 176 -Update lsn: 857, time: 1338903440.236262, len: 176 -Update lsn: 858, time: 1338903440.236289, len: 176 -Update lsn: 859, time: 1338903440.236315, len: 176 -Update lsn: 860, time: 1338903440.236341, len: 176 -Update lsn: 861, time: 1338903440.236368, len: 176 -Update lsn: 862, time: 1338903440.236394, len: 176 -Update lsn: 863, time: 1338903440.236421, len: 176 -Update lsn: 864, time: 1338903440.236448, len: 176 -Update lsn: 865, time: 1338903440.236475, len: 176 -Update lsn: 866, time: 1338903440.236501, len: 176 -Update lsn: 867, time: 1338903440.236527, len: 176 -Update lsn: 868, time: 1338903440.236554, len: 176 -Update lsn: 869, time: 1338903440.236581, len: 176 -Update lsn: 870, time: 1338903440.236608, len: 176 -Update lsn: 871, time: 1338903440.236634, len: 176 -Update lsn: 872, time: 1338903440.236660, len: 176 -Update lsn: 873, time: 1338903440.236687, len: 176 -Update lsn: 874, time: 1338903440.236713, len: 176 -Update lsn: 875, time: 1338903440.236739, len: 176 -Update lsn: 876, time: 1338903440.236782, len: 176 -Update lsn: 877, time: 1338903440.236810, len: 176 -Update lsn: 878, time: 1338903440.236837, len: 176 -Update lsn: 879, time: 1338903440.236864, len: 176 -Update lsn: 880, time: 1338903440.236892, len: 176 -Update lsn: 881, time: 1338903440.236919, len: 176 -Update lsn: 882, time: 1338903440.236945, len: 176 -Update lsn: 883, time: 1338903440.236972, len: 176 -Update lsn: 884, time: 1338903440.236998, len: 176 -Update lsn: 885, time: 1338903440.237024, len: 176 -Update lsn: 886, time: 1338903440.237050, len: 176 -Update lsn: 887, time: 1338903440.237077, len: 176 -Update lsn: 888, time: 1338903440.237103, len: 176 -Update lsn: 889, time: 1338903440.237131, len: 176 -Update lsn: 890, time: 1338903440.237158, len: 176 -Update lsn: 891, time: 1338903440.237184, len: 176 -Update lsn: 892, time: 1338903440.237211, len: 176 -Update lsn: 893, time: 1338903440.237236, len: 176 -Update lsn: 894, time: 1338903440.237262, len: 176 -Update lsn: 895, time: 1338903440.237289, len: 176 -Update lsn: 896, time: 1338903440.237339, len: 176 -Update lsn: 897, time: 1338903440.237368, len: 176 -Update lsn: 898, time: 1338903440.237395, len: 176 -Update lsn: 899, time: 1338903440.237421, len: 176 -Update lsn: 900, time: 1338903440.237448, len: 176 -Update lsn: 901, time: 1338903440.237475, len: 176 -Update lsn: 902, time: 1338903440.238040, len: 77 -Update lsn: 903, time: 1338903440.238124, len: 77 -Update lsn: 904, time: 1338903440.238156, len: 77 -Update lsn: 905, time: 1338903440.238183, len: 77 -Update lsn: 906, time: 1338903440.238212, len: 77 -Update lsn: 907, time: 1338903440.238899, len: 77 -Update lsn: 908, time: 1338903440.238960, len: 77 -Update lsn: 909, time: 1338903440.238989, len: 77 -Update lsn: 910, time: 1338903440.239016, len: 77 -Update lsn: 911, time: 1338903440.239043, len: 77 -Update lsn: 912, time: 1338903440.239070, len: 78 -Update lsn: 913, time: 1338903440.239097, len: 78 -Update lsn: 914, time: 1338903440.239125, len: 78 -Update lsn: 915, time: 1338903440.239153, len: 78 -Update lsn: 916, time: 1338903440.239180, len: 78 -Update lsn: 917, time: 1338903440.239207, len: 78 -Update lsn: 918, time: 1338903440.239234, len: 78 -Update lsn: 919, time: 1338903440.239261, len: 78 -Update lsn: 920, time: 1338903440.239290, len: 78 -Update lsn: 921, time: 1338903440.240279, len: 78 -Update lsn: 922, time: 1338903440.240328, len: 78 -Update lsn: 923, time: 1338903440.240355, len: 78 -Update lsn: 924, time: 1338903440.240382, len: 78 -Update lsn: 925, time: 1338903440.240409, len: 78 -Update lsn: 926, time: 1338903440.240436, len: 78 -Update lsn: 927, time: 1338903440.240494, len: 78 -Update lsn: 928, time: 1338903440.240522, len: 78 -Update lsn: 929, time: 1338903440.240548, len: 78 -Update lsn: 930, time: 1338903440.240575, len: 78 -Update lsn: 931, time: 1338903440.240604, len: 78 -Update lsn: 932, time: 1338903440.240632, len: 78 -Update lsn: 933, time: 1338903440.240660, len: 78 -Update lsn: 934, time: 1338903440.240687, len: 78 -Update lsn: 935, time: 1338903440.240714, len: 78 -Update lsn: 936, time: 1338903440.240742, len: 78 -Update lsn: 937, time: 1338903440.240770, len: 78 -Update lsn: 938, time: 1338903440.240797, len: 78 -Update lsn: 939, time: 1338903440.240823, len: 78 -Update lsn: 940, time: 1338903440.240851, len: 78 -Update lsn: 941, time: 1338903440.240879, len: 78 -Update lsn: 942, time: 1338903440.240906, len: 78 -Update lsn: 943, time: 1338903440.240934, len: 78 -Update lsn: 944, time: 1338903440.240961, len: 78 -Update lsn: 945, time: 1338903440.240988, len: 78 -Update lsn: 946, time: 1338903440.241016, len: 78 -Update lsn: 947, time: 1338903440.241044, len: 78 -Update lsn: 948, time: 1338903440.241071, len: 78 -Update lsn: 949, time: 1338903440.241097, len: 78 -Update lsn: 950, time: 1338903440.241124, len: 78 -Update lsn: 951, time: 1338903440.241152, len: 78 -Update lsn: 952, time: 1338903440.241179, len: 78 -Update lsn: 953, time: 1338903440.241206, len: 78 -Update lsn: 954, time: 1338903440.241233, len: 78 -Update lsn: 955, time: 1338903440.241260, len: 78 -Update lsn: 956, time: 1338903440.241287, len: 78 -Update lsn: 957, time: 1338903440.241314, len: 78 -Update lsn: 958, time: 1338903440.241341, len: 78 -Update lsn: 959, time: 1338903440.241369, len: 78 -Update lsn: 960, time: 1338903440.241396, len: 78 -Update lsn: 961, time: 1338903440.241424, len: 78 -Update lsn: 962, time: 1338903440.241451, len: 78 -Update lsn: 963, time: 1338903440.241478, len: 78 -Update lsn: 964, time: 1338903440.241524, len: 78 -Update lsn: 965, time: 1338903440.241552, len: 78 -Update lsn: 966, time: 1338903440.241604, len: 78 -Update lsn: 967, time: 1338903440.241632, len: 78 -Update lsn: 968, time: 1338903440.241661, len: 78 -Update lsn: 969, time: 1338903440.241688, len: 78 -Update lsn: 970, time: 1338903440.241715, len: 78 -Update lsn: 971, time: 1338903440.241741, len: 78 -Update lsn: 972, time: 1338903440.241769, len: 78 -Update lsn: 973, time: 1338903440.241796, len: 78 -Update lsn: 974, time: 1338903440.241823, len: 78 -Update lsn: 975, time: 1338903440.241851, len: 78 -Update lsn: 976, time: 1338903440.241879, len: 78 -Update lsn: 977, time: 1338903440.241909, len: 78 -Update lsn: 978, time: 1338903440.241935, len: 78 -Update lsn: 979, time: 1338903440.241962, len: 78 -Update lsn: 980, time: 1338903440.241990, len: 78 -Update lsn: 981, time: 1338903440.242017, len: 78 -Update lsn: 982, time: 1338903440.242044, len: 78 -Update lsn: 983, time: 1338903440.242071, len: 78 -Update lsn: 984, time: 1338903440.242099, len: 78 -Update lsn: 985, time: 1338903440.242126, len: 78 -Update lsn: 986, time: 1338903440.242154, len: 78 -Update lsn: 987, time: 1338903440.242181, len: 78 -Update lsn: 988, time: 1338903440.242208, len: 78 -Update lsn: 989, time: 1338903440.242236, len: 78 -Update lsn: 990, time: 1338903440.242263, len: 78 -Update lsn: 991, time: 1338903440.242290, len: 78 -Update lsn: 992, time: 1338903440.242317, len: 78 -Update lsn: 993, time: 1338903440.242343, len: 78 -Update lsn: 994, time: 1338903440.242370, len: 78 -Update lsn: 995, time: 1338903440.242398, len: 78 -Update lsn: 996, time: 1338903440.242425, len: 78 -Update lsn: 997, time: 1338903440.242452, len: 78 -Update lsn: 998, time: 1338903440.242479, len: 78 -Update lsn: 999, time: 1338903440.242506, len: 78 -Update lsn: 1000, time: 1338903440.242534, len: 78 -Update lsn: 1001, time: 1338903440.242582, len: 78 -Update lsn: 1002, time: 1338903440.243265, len: 109 -Update lsn: 1003, time: 1338903440.243367, len: 109 -Update lsn: 1004, time: 1338903440.243399, len: 109 -Update lsn: 1005, time: 1338903440.243427, len: 109 -Update lsn: 1006, time: 1338903440.243455, len: 109 -Update lsn: 1007, time: 1338903440.243484, len: 109 -Update lsn: 1008, time: 1338903440.243512, len: 109 -Update lsn: 1009, time: 1338903440.243540, len: 109 -Update lsn: 1010, time: 1338903440.243569, len: 109 -Update lsn: 1011, time: 1338903440.243598, len: 109 -Update lsn: 1012, time: 1338903440.243626, len: 110 -Update lsn: 1013, time: 1338903440.243654, len: 110 -Update lsn: 1014, time: 1338903440.243681, len: 110 -Update lsn: 1015, time: 1338903440.243710, len: 110 -Update lsn: 1016, time: 1338903440.243738, len: 110 -Update lsn: 1017, time: 1338903440.243767, len: 110 -Update lsn: 1018, time: 1338903440.243796, len: 110 -Update lsn: 1019, time: 1338903440.243826, len: 110 -Update lsn: 1020, time: 1338903440.243855, len: 110 -Update lsn: 1021, time: 1338903440.243883, len: 110 -Update lsn: 1022, time: 1338903440.243913, len: 110 -Update lsn: 1023, time: 1338903440.243941, len: 110 -Update lsn: 1024, time: 1338903440.243968, len: 110 -Update lsn: 1025, time: 1338903440.243996, len: 110 -Update lsn: 1026, time: 1338903440.244023, len: 110 -Update lsn: 1027, time: 1338903440.244049, len: 110 -Update lsn: 1028, time: 1338903440.244076, len: 110 -Update lsn: 1029, time: 1338903440.244103, len: 110 -Update lsn: 1030, time: 1338903440.244164, len: 110 -Update lsn: 1031, time: 1338903440.244193, len: 110 -Update lsn: 1032, time: 1338903440.244220, len: 110 -Update lsn: 1033, time: 1338903440.244246, len: 110 -Update lsn: 1034, time: 1338903440.244272, len: 110 -Update lsn: 1035, time: 1338903440.244299, len: 110 -Update lsn: 1036, time: 1338903440.244325, len: 110 -Update lsn: 1037, time: 1338903440.244351, len: 110 -Update lsn: 1038, time: 1338903440.244378, len: 110 -Update lsn: 1039, time: 1338903440.244404, len: 110 -Update lsn: 1040, time: 1338903440.244431, len: 110 -Update lsn: 1041, time: 1338903440.244457, len: 110 -Update lsn: 1042, time: 1338903440.244483, len: 110 -Update lsn: 1043, time: 1338903440.244509, len: 110 -Update lsn: 1044, time: 1338903440.244535, len: 110 -Update lsn: 1045, time: 1338903440.244561, len: 110 -Update lsn: 1046, time: 1338903440.244587, len: 110 -Update lsn: 1047, time: 1338903440.244613, len: 110 -Update lsn: 1048, time: 1338903440.244640, len: 110 -Update lsn: 1049, time: 1338903440.244666, len: 110 -Update lsn: 1050, time: 1338903440.244692, len: 110 -Update lsn: 1051, time: 1338903440.244718, len: 110 -Update lsn: 1052, time: 1338903440.244744, len: 110 -Update lsn: 1053, time: 1338903440.244771, len: 110 -Update lsn: 1054, time: 1338903440.244798, len: 110 -Update lsn: 1055, time: 1338903440.244827, len: 110 -Update lsn: 1056, time: 1338903440.244854, len: 110 -Update lsn: 1057, time: 1338903440.244881, len: 110 -Update lsn: 1058, time: 1338903440.244936, len: 110 -Update lsn: 1059, time: 1338903440.244995, len: 110 -Update lsn: 1060, time: 1338903440.245028, len: 110 -Update lsn: 1061, time: 1338903440.245057, len: 110 -Update lsn: 1062, time: 1338903440.245086, len: 110 -Update lsn: 1063, time: 1338903440.245115, len: 110 -Update lsn: 1064, time: 1338903440.245142, len: 110 -Update lsn: 1065, time: 1338903440.245169, len: 110 -Update lsn: 1066, time: 1338903440.245196, len: 110 -Update lsn: 1067, time: 1338903440.245222, len: 110 -Update lsn: 1068, time: 1338903440.245248, len: 110 -Update lsn: 1069, time: 1338903440.245275, len: 110 -Update lsn: 1070, time: 1338903440.245302, len: 110 -Update lsn: 1071, time: 1338903440.245329, len: 110 -Update lsn: 1072, time: 1338903440.245355, len: 110 -Update lsn: 1073, time: 1338903440.245382, len: 110 -Update lsn: 1074, time: 1338903440.245408, len: 110 -Update lsn: 1075, time: 1338903440.245435, len: 110 -Update lsn: 1076, time: 1338903440.245462, len: 110 -Update lsn: 1077, time: 1338903440.245491, len: 110 -Update lsn: 1078, time: 1338903440.245518, len: 110 -Update lsn: 1079, time: 1338903440.245545, len: 110 -Update lsn: 1080, time: 1338903440.245572, len: 110 -Update lsn: 1081, time: 1338903440.245600, len: 110 -Update lsn: 1082, time: 1338903440.245628, len: 110 -Update lsn: 1083, time: 1338903440.245656, len: 110 -Update lsn: 1084, time: 1338903440.245683, len: 110 -Update lsn: 1085, time: 1338903440.245709, len: 110 -Update lsn: 1086, time: 1338903440.245736, len: 110 -Update lsn: 1087, time: 1338903440.245763, len: 110 -Update lsn: 1088, time: 1338903440.245815, len: 110 -Update lsn: 1089, time: 1338903440.245847, len: 110 -Update lsn: 1090, time: 1338903440.245874, len: 110 -Update lsn: 1091, time: 1338903440.245900, len: 110 -Update lsn: 1092, time: 1338903440.245928, len: 110 -Update lsn: 1093, time: 1338903440.245955, len: 110 -Update lsn: 1094, time: 1338903440.245983, len: 110 -Update lsn: 1095, time: 1338903440.246011, len: 110 -Update lsn: 1096, time: 1338903440.246040, len: 110 -Update lsn: 1097, time: 1338903440.246068, len: 110 -Update lsn: 1098, time: 1338903440.246097, len: 110 -Update lsn: 1099, time: 1338903440.246124, len: 110 -Update lsn: 1100, time: 1338903440.246151, len: 110 -Update lsn: 1101, time: 1338903440.246177, len: 110 -Update lsn: 1102, time: 1338903440.246866, len: 175 -Update lsn: 1103, time: 1338903440.246967, len: 175 -Update lsn: 1104, time: 1338903440.247000, len: 175 -Update lsn: 1105, time: 1338903440.247028, len: 175 -Update lsn: 1106, time: 1338903440.247058, len: 175 -Update lsn: 1107, time: 1338903440.247086, len: 175 -Update lsn: 1108, time: 1338903440.247115, len: 175 -Update lsn: 1109, time: 1338903440.247144, len: 175 -Update lsn: 1110, time: 1338903440.247173, len: 175 -Update lsn: 1111, time: 1338903440.247202, len: 175 -Update lsn: 1112, time: 1338903440.247263, len: 176 -Update lsn: 1113, time: 1338903440.247297, len: 176 -Update lsn: 1114, time: 1338903440.247326, len: 176 -Update lsn: 1115, time: 1338903440.247355, len: 176 -Update lsn: 1116, time: 1338903440.247384, len: 176 -Update lsn: 1117, time: 1338903440.247415, len: 176 -Update lsn: 1118, time: 1338903440.247444, len: 176 -Update lsn: 1119, time: 1338903440.247473, len: 176 -Update lsn: 1120, time: 1338903440.247503, len: 176 -Update lsn: 1121, time: 1338903440.247531, len: 176 -Update lsn: 1122, time: 1338903440.247559, len: 176 -Update lsn: 1123, time: 1338903440.247586, len: 176 -Update lsn: 1124, time: 1338903440.247614, len: 176 -Update lsn: 1125, time: 1338903440.247641, len: 176 -Update lsn: 1126, time: 1338903440.247668, len: 176 -Update lsn: 1127, time: 1338903440.247695, len: 176 -Update lsn: 1128, time: 1338903440.247722, len: 176 -Update lsn: 1129, time: 1338903440.247749, len: 176 -Update lsn: 1130, time: 1338903440.247775, len: 176 -Update lsn: 1131, time: 1338903440.247801, len: 176 -Update lsn: 1132, time: 1338903440.247851, len: 176 -Update lsn: 1133, time: 1338903440.247880, len: 176 -Update lsn: 1134, time: 1338903440.247906, len: 176 -Update lsn: 1135, time: 1338903440.247932, len: 176 -Update lsn: 1136, time: 1338903440.247960, len: 176 -Update lsn: 1137, time: 1338903440.247986, len: 176 -Update lsn: 1138, time: 1338903440.248012, len: 176 -Update lsn: 1139, time: 1338903440.248039, len: 176 -Update lsn: 1140, time: 1338903440.248065, len: 176 -Update lsn: 1141, time: 1338903440.248092, len: 176 -Update lsn: 1142, time: 1338903440.248118, len: 176 -Update lsn: 1143, time: 1338903440.248146, len: 176 -Update lsn: 1144, time: 1338903440.248173, len: 176 -Update lsn: 1145, time: 1338903440.248201, len: 176 -Update lsn: 1146, time: 1338903440.248250, len: 176 -Update lsn: 1147, time: 1338903440.248282, len: 176 -Update lsn: 1148, time: 1338903440.248311, len: 176 -Update lsn: 1149, time: 1338903440.248339, len: 176 -Update lsn: 1150, time: 1338903440.248367, len: 176 -Update lsn: 1151, time: 1338903440.248394, len: 176 -Update lsn: 1152, time: 1338903440.248443, len: 176 -Update lsn: 1153, time: 1338903440.248471, len: 176 -Update lsn: 1154, time: 1338903440.248498, len: 176 -Update lsn: 1155, time: 1338903440.248525, len: 176 -Update lsn: 1156, time: 1338903440.248553, len: 176 -Update lsn: 1157, time: 1338903440.248579, len: 176 -Update lsn: 1158, time: 1338903440.248606, len: 176 -Update lsn: 1159, time: 1338903440.248633, len: 176 -Update lsn: 1160, time: 1338903440.248659, len: 176 -Update lsn: 1161, time: 1338903440.248686, len: 176 -Update lsn: 1162, time: 1338903440.248713, len: 176 -Update lsn: 1163, time: 1338903440.248740, len: 176 -Update lsn: 1164, time: 1338903440.248767, len: 176 -Update lsn: 1165, time: 1338903440.248794, len: 176 -Update lsn: 1166, time: 1338903440.248821, len: 176 -Update lsn: 1167, time: 1338903440.248849, len: 176 -Update lsn: 1168, time: 1338903440.248876, len: 176 -Update lsn: 1169, time: 1338903440.248904, len: 176 -Update lsn: 1170, time: 1338903440.248932, len: 176 -Update lsn: 1171, time: 1338903440.248982, len: 176 -Update lsn: 1172, time: 1338903440.249012, len: 176 -Update lsn: 1173, time: 1338903440.249038, len: 176 -Update lsn: 1174, time: 1338903440.249064, len: 176 -Update lsn: 1175, time: 1338903440.249091, len: 176 -Update lsn: 1176, time: 1338903440.249120, len: 176 -Update lsn: 1177, time: 1338903440.249149, len: 176 -Update lsn: 1178, time: 1338903440.249179, len: 176 -Update lsn: 1179, time: 1338903440.249208, len: 176 -Update lsn: 1180, time: 1338903440.249237, len: 176 -Update lsn: 1181, time: 1338903440.249265, len: 176 -Update lsn: 1182, time: 1338903440.249292, len: 176 -Update lsn: 1183, time: 1338903440.249320, len: 176 -Update lsn: 1184, time: 1338903440.249347, len: 176 -Update lsn: 1185, time: 1338903440.249375, len: 176 -Update lsn: 1186, time: 1338903440.249404, len: 176 -Update lsn: 1187, time: 1338903440.249431, len: 176 -Update lsn: 1188, time: 1338903440.249460, len: 176 -Update lsn: 1189, time: 1338903440.249490, len: 176 -Update lsn: 1190, time: 1338903440.249517, len: 176 -Update lsn: 1191, time: 1338903440.249563, len: 176 -Update lsn: 1192, time: 1338903440.249593, len: 176 -Update lsn: 1193, time: 1338903440.249621, len: 176 -Update lsn: 1194, time: 1338903440.249648, len: 176 -Update lsn: 1195, time: 1338903440.249676, len: 176 -Update lsn: 1196, time: 1338903440.249705, len: 176 -Update lsn: 1197, time: 1338903440.249733, len: 176 -Update lsn: 1198, time: 1338903440.249761, len: 176 -Update lsn: 1199, time: 1338903440.249789, len: 176 -Update lsn: 1200, time: 1338903440.249816, len: 176 -Update lsn: 1201, time: 1338903440.249846, len: 176 diff --git a/test/connector_c/xlog_rpl.test.py b/test/connector_c/xlog_rpl.test.py deleted file mode 100644 index 5f774f785b..0000000000 --- a/test/connector_c/xlog_rpl.test.py +++ /dev/null @@ -1,33 +0,0 @@ -import subprocess -import sys -import os - -from lib.tarantool_server import TarantoolServer - -p = subprocess.Popen([os.path.join(builddir, "test/connector_c/xlog"), - os.path.abspath("connector_c/connector.xlog")], - stdout=subprocess.PIPE) -o,e = p.communicate() -sys.stdout.write(o) - -server.stop() -server.deploy("connector_c/cfg/master.cfg") -server.stop() - -current_xlog = os.path.join(vardir, "00000000000000000002.xlog") -os.symlink(os.path.abspath("connector_c/connector.xlog"), current_xlog) - -server.start() - -print "" - -p = subprocess.Popen([os.path.join(builddir, "test/connector_c/rpl"), - "127.0.0.1", "33016", "1200"], - stdout=subprocess.PIPE) -o,e = p.communicate() -sys.stdout.write(o) - -server.stop() -server.deploy() - -# vim: syntax=python -- GitLab