diff --git a/tests/pytest/update/append_commit_last.py b/tests/pytest/update/append_commit_last.py index 9b31adccecbb4298638025dfc42a7b96137d1028..013983f9402292d03d26bd998c96eaf39b26a8fd 100644 --- a/tests/pytest/update/append_commit_last.py +++ b/tests/pytest/update/append_commit_last.py @@ -1,42 +1,85 @@ -# clear env set up - -create database db update 1; - -## Step 1 -$loops = 1000 -#t0 = 1604298064000 - -create table t1 (ts timestamp, a int); -for ($i = 0; $i < $loops; $i++) { - insert into t1 values ($t0 + $i, 1); - restart to commit - check query result -} - -## Step 2 -create table t2 (ts timestamp, a int); - -insert into t2 ($t0, 1); -restart to commit -check query result - -for ($i = 1; $i <= 150; $i++) { - insert into t2 values ($t0 + $i, 1); -} -restart to commit -check query result - -## Step 3 -create table t3 (ts timestamp, a int); - -insert into t3 ($t0, 1); -restart to commit -check query result - -for ($i = 0; $i < 8; $i++) { - for ($j = 1; $j <= 10; $j++) { - insert into t3 values ($t0 + $i * 10 + $j , 1); - } -} -restart to commit -check query result \ No newline at end of file +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import sys +import taos +from util.log import * +from util.cases import * +from util.sql import * +from util.dnodes import * + + +class TDTestCase: + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor()) + + self.ts = 1604298064000 + + def restartTaosd(self): + tdDnodes.stop(1) + tdDnodes.startWithoutSleep(1) + tdSql.execute("use udb") + + def run(self): + tdSql.prepare() + + print("==============step1") + tdSql.execute("create database udb update 1") + tdSql.execute("use udb") + tdSql.execute("create table t1 (ts timestamp, a int)") + + for i in range(10): + tdSql.execute("insert into t1 values(%d, 1)" % (self.ts + i)) + self.restartTaosd() + tdSql.query("select * from t1") + tdSql.checkRows(i + 1) + + + print("==============step2") + tdSql.execute("create table t2 (ts timestamp, a int)") + tdSql.execute("insert into t2 values(%d, 1)" % self.ts) + self.restartTaosd() + tdSql.query("select * from t2") + tdSql.checkRows(1) + + for i in range(1, 151): + tdSql.execute("insert into t2 values(%d, 1)" % (self.ts + i)) + + self.restartTaosd() + tdSql.query("select * from t2") + tdSql.checkRows(151) + + + print("==============step3") + tdSql.execute("create table t3 (ts timestamp, a int)") + tdSql.execute("insert into t3 values(%d, 1)" % self.ts) + self.restartTaosd() + tdSql.query("select * from t3") + tdSql.checkRows(1) + + for i in range(8): + for j in range(1, 11): + tdSql.execute("insert into t3 values(%d, 1)" % (self.ts + i * 10 + j)) + + self.restartTaosd() + tdSql.query("select * from t3") + tdSql.checkRows(81) + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) diff --git a/tests/pytest/update/merge_commit_last.py b/tests/pytest/update/merge_commit_last.py index 9d832d8984935f983a6b72989c29d2048c082c28..183cca0a1e40fd995daaed0f271bb5083838a78f 100644 --- a/tests/pytest/update/merge_commit_last.py +++ b/tests/pytest/update/merge_commit_last.py @@ -1,187 +1,321 @@ -# clear env set up - -$t0 = 1603152000000 - -create database db update 1 days 30; - -## STEP 1: UPDATE THE LAST RECORD REPEATEDLY -create table t1 (ts timestamp, a int); - -for ($i = 0; $i < 100; $i++) { - insert into t1 values ($t0, $i); - - restart to commit - check query result -} - -## STEP 2: UPDATE THE WHOLE LAST BLOCK -create table t2 (ts timestamp, a int); -for ($i = 0; $i < 50; $i++) { - insert into t2 values ($t0 + $i, 1); -} -restart to commit -check query result - -for ($i = 0; $i < 50; $i++) { - insert into t2 values ($t0 + $i, 2); -} - -check query result -restart to commit -check query result - -## STEP 3: UPDATE PART OF THE LAST BLOCK -create table t3 (ts timestamp, a int); -for ($i = 0; $i < 50; $i++) { - insert into t3 values ($t0 + $i, 1); -} -restart to commit -check query result - -for ($i = 0; $i < 25; $i++) { - insert into t3 values ($t0 + $i, 2); -} - -check query result -restart to commit -check query result - -for ($i = 25; $i < 50; $i++) { - insert into t3 values ($t0 + $i, 2); -} - -check query result -restart to commit -check query result - -## STEP 4: UPDATE AND INSERT APPEND AT END OF DATA -create table t4 (ts timestamp, a int); -for ($i = 0; $i < 50; $i++) { - insert into t4 values ($t0 + $i, 1); -} -restart to commit -check query result - -for ($i = 0; $i < 25; $i++) { - insert into t4 values ($t0 + $i, 2); -} - -for ($i = 50; $i < 60; $i++) { - insert into t4 values ($t0 + $i, 2); -} - -check query result -restart to commit -check query result - -## STEP 5: UPDATE AND INSERT PREPEND SOME DATA -create table t5 (ts timestamp, a int); -for ($i = 0; $i < 50; $i++) { - insert into t5 values ($t0 + $i, 1); -} -restart to commit -check query result - -for ($i = -10; $i < 0; $i++) { - insert into t4 values ($t0 + $i, 2); -} - -for ($i = 0; $i < 25; $i++) { - insert into t5 values ($t0 + $i, 2); -} - -check query result -restart to commit -check query result - -for ($i = -10; $i < 0; $i++) { - insert into t4 values ($t0 + $i, 3); -} - -for ($i = 25; $i < 50; $i++) { - insert into t5 values ($t0 + $i, 3); -} - -check query result -restart to commit -check query result - -## STEP 6: INSERT AHEAD A LOT OF DATA -create table t6 (ts timestamp, a int); -for ($i = 0; $i < 50; $i++) { - insert into t6 values ($t0 + $i, 1); -} -restart to commit -check query result - -for ($i = -1000; $i < 0; $i++) { - insert into t6 values ($t0 + $i, 2); -} - -check query result -restart to commit -check query result - -## STEP 7: INSERT AHEAD A LOT AND UPDATE -create table t7 (ts timestamp, a int); -for ($i = 0; $i < 50; $i++) { - insert into t7 values ($t0 + $i, 1); -} -restart to commit -check query result - -for ($i = -1000; $i < 25; $i++) { - insert into t7 values ($t0 + $i, 2); -} - -check query result -restart to commit -check query result - -## STEP 8: INSERT AHEAD A LOT AND UPDATE -create table t8 (ts timestamp, a int); -for ($i = 0; $i < 50; $i++) { - insert into t8 values ($t0 + $i, 1); -} -restart to commit -check query result - -for ($i = 25; $i < 6000; $i++) { - insert into t8 values ($t0 + $i, 2); -} - -check query result -restart to commit -check query result - -## STEP 9: UPDATE ONLY MIDDLE -create table t9 (ts timestamp, a int); -for ($i = 0; $i < 50; $i++) { - insert into t9 values ($t0 + $i, 1); -} -restart to commit -check query result - -for ($i = 20; $i < 30; $i++) { - insert into t9 values ($t0 + $i, 2); -} - -check query result -restart to commit -check query result - -## STEP 10: A LOT OF DATA COVER THE WHOLE BLOCK -create table t10 (ts timestamp, a int); -for ($i = 0; $i < 50; $i++) { - insert into t10 values ($t0 + $i, 1); -} -restart to commit -check query result - -for ($i = -4000; $i < 4000; $i++) { - insert into t10 values ($t0 + $i, 2); -} - -check query result -restart to commit -check query result \ No newline at end of file +################################################################### +# Copyright (c) 2016 by TAOS Technologies, Inc. +# All rights reserved. +# +# This file is proprietary and confidential to TAOS Technologies. +# No part of this file may be reproduced, stored, transmitted, +# disclosed or used in any form or by any means other than as +# expressly provided by the written permission from Jianhui Tao +# +################################################################### + +# -*- coding: utf-8 -*- + +import sys +import taos +from util.log import * +from util.cases import * +from util.sql import * +from util.dnodes import * + + +class TDTestCase: + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor()) + + self.ts = 1603152000000 + + def restartTaosd(self): + tdDnodes.stop(1) + tdDnodes.startWithoutSleep(1) + tdSql.execute("use udb") + + def run(self): + tdSql.prepare() + + tdSql.execute("create database udb update 1 days 30") + tdSql.execute("use udb") + + print("==============step 1: UPDATE THE LAST RECORD REPEATEDLY") + tdSql.execute("create table t1 (ts timestamp, a int)") + + for i in range(5): + tdSql.execute("insert into t1 values(%d, %d)" % (self.ts, i)) + self.restartTaosd() + tdSql.query("select * from t1") + tdSql.checkRows(1) + tdSql.checkData(0, 1, i) + + print("==============step 2: UPDATE THE WHOLE LAST BLOCK") + tdSql.execute("create table t2 (ts timestamp, a int)") + + for i in range(50): + tdSql.execute("insert into t2 values(%d, 1)" % (self.ts + i)) + self.restartTaosd() + tdSql.query("select * from t2") + tdSql.checkRows(50) + for i in range(50): + tdSql.checkData(i, 1, 1) + + for i in range(50): + tdSql.execute("insert into t2 values(%d, 2)" % (self.ts + i)) + tdSql.query("select * from t2") + for i in range(50): + tdSql.checkData(i, 1, 2) + + self.restartTaosd() + tdSql.query("select * from t2") + tdSql.checkRows(50) + for i in range(50): + tdSql.checkData(i, 1, 2) + + print("==============step 3: UPDATE PART OF THE LAST BLOCK") + tdSql.execute("create table t3 (ts timestamp, a int)") + + for i in range(50): + tdSql.execute("insert into t3 values(%d, 1)" % (self.ts + i)) + self.restartTaosd() + tdSql.query("select * from t3") + tdSql.checkRows(50) + for i in range(50): + tdSql.checkData(i, 1, 1) + + for i in range(25): + tdSql.execute("insert into t3 values(%d, 2)" % (self.ts + i)) + + tdSql.query("select * from t3") + for i in range(25): + tdSql.checkData(i, 1, 2) + for i in range(25, 50): + tdSql.checkData(i, 1, 1) + + self.restartTaosd() + tdSql.query("select * from t3") + tdSql.checkRows(50) + for i in range(25): + tdSql.checkData(i, 1, 2) + for i in range(25, 50): + tdSql.checkData(i, 1, 1) + + print("==============step 4: UPDATE AND INSERT APPEND AT END OF DATA") + tdSql.execute("create table t4 (ts timestamp, a int)") + + for i in range(50): + tdSql.execute("insert into t4 values(%d, 1)" % (self.ts + i)) + + self.restartTaosd() + tdSql.query("select * from t4") + tdSql.checkRows(50) + for i in range(50): + tdSql.checkData(i, 1, 1) + + for i in range(25): + tdSql.execute("insert into t4 values(%d, 2)" % (self.ts + i)) + + for i in range(50, 60): + tdSql.execute("insert into t4 values(%d, 2)" % (self.ts + i)) + + tdSql.query("select * from t4") + tdSql.checkRows(60) + for i in range(25): + tdSql.checkData(i, 1, 2) + for i in range(25, 50): + tdSql.checkData(i, 1, 1) + for i in range(50, 60): + tdSql.checkData(i, 1, 2) + + self.restartTaosd() + tdSql.query("select * from t4") + tdSql.checkRows(60) + for i in range(25): + tdSql.checkData(i, 1, 2) + for i in range(25, 50): + tdSql.checkData(i, 1, 1) + for i in range(50, 60): + tdSql.checkData(i, 1, 2) + + print("==============step 5: UPDATE AND INSERT PREPEND SOME DATA") + tdSql.execute("create table t5 (ts timestamp, a int)") + + for i in range(50): + tdSql.execute("insert into t5 values(%d, 1)" % (self.ts + i)) + + self.restartTaosd() + tdSql.query("select * from t5") + tdSql.checkRows(50) + for i in range(50): + tdSql.checkData(i, 1, 1) + + for i in range(-10, 0): + tdSql.execute("insert into t5 values(%d, 2)" % (self.ts + i)) + + for i in range(25): + tdSql.execute("insert into t5 values(%d, 2)" % (self.ts + i)) + + tdSql.query("select * from t5") + tdSql.checkRows(60) + tdSql.query("select sum(a) from t5") + tdSql.checkData(0, 0, 95) + + self.restartTaosd() + tdSql.query("select * from t5") + tdSql.checkRows(60) + tdSql.query("select sum(a) from t5") + tdSql.checkData(0, 0, 95) + + for i in range(-10, 0): + tdSql.execute("insert into t5 values(%d, 3)" % (self.ts + i)) + + for i in range(25, 50): + tdSql.execute("insert into t5 values(%d, 3)" % (self.ts + i)) + + tdSql.query("select * from t5") + tdSql.checkRows(60) + tdSql.query("select sum(a) from t5") + tdSql.checkData(0, 0, 155) + + self.restartTaosd() + tdSql.query("select * from t5") + tdSql.checkRows(60) + tdSql.query("select sum(a) from t5") + tdSql.checkData(0, 0, 155) + + + print("==============step 6: INSERT AHEAD A LOT OF DATA") + tdSql.execute("create table t6 (ts timestamp, a int)") + + for i in range(50): + tdSql.execute("insert into t6 values(%d, 1)" % (self.ts + i)) + + self.restartTaosd() + tdSql.query("select * from t6") + tdSql.checkRows(50) + tdSql.query("select sum(a) from t6") + tdSql.checkData(0, 0, 50) + + for i in range(-1000, 0): + tdSql.execute("insert into t6 values(%d, 2)" % (self.ts + i)) + + tdSql.query("select * from t6") + tdSql.checkRows(1050) + tdSql.query("select sum(a) from t6") + tdSql.checkData(0, 0, 2050) + + self.restartTaosd() + tdSql.query("select * from t6") + tdSql.checkRows(1050) + tdSql.query("select sum(a) from t6") + tdSql.checkData(0, 0, 2050) + + print("==============step 7: INSERT AHEAD A LOT AND UPDATE") + tdSql.execute("create table t7 (ts timestamp, a int)") + + for i in range(50): + tdSql.execute("insert into t7 values(%d, 1)" % (self.ts + i)) + + self.restartTaosd() + tdSql.query("select * from t7") + tdSql.checkRows(50) + tdSql.query("select sum(a) from t7") + tdSql.checkData(0, 0, 50) + + for i in range(-1000, 25): + tdSql.execute("insert into t7 values(%d, 2)" % (self.ts + i)) + + tdSql.query("select * from t7") + tdSql.checkRows(1050) + tdSql.query("select sum(a) from t7") + tdSql.checkData(0, 0, 2075) + + self.restartTaosd() + tdSql.query("select * from t7") + tdSql.checkRows(1050) + tdSql.query("select sum(a) from t7") + tdSql.checkData(0, 0, 2075) + + print("==============step 8: INSERT AFTER A LOT AND UPDATE") + tdSql.execute("create table t8 (ts timestamp, a int)") + + for i in range(50): + tdSql.execute("insert into t8 values(%d, 1)" % (self.ts + i)) + + self.restartTaosd() + tdSql.query("select * from t8") + tdSql.checkRows(50) + tdSql.query("select sum(a) from t8") + tdSql.checkData(0, 0, 50) + + for i in range(25, 6000): + tdSql.execute("insert into t8 values(%d, 2)" % (self.ts + i)) + + tdSql.query("select * from t8") + tdSql.checkRows(6000) + tdSql.query("select sum(a) from t8") + tdSql.checkData(0, 0, 11975) + + self.restartTaosd() + tdSql.query("select * from t8") + tdSql.checkRows(6000) + tdSql.query("select sum(a) from t8") + tdSql.checkData(0, 0, 11975) + + print("==============step 9: UPDATE ONLY MIDDLE") + tdSql.execute("create table t9 (ts timestamp, a int)") + + for i in range(50): + tdSql.execute("insert into t9 values(%d, 1)" % (self.ts + i)) + + self.restartTaosd() + tdSql.query("select * from t9") + tdSql.checkRows(50) + tdSql.query("select sum(a) from t9") + tdSql.checkData(0, 0, 50) + + for i in range(20, 30): + tdSql.execute("insert into t9 values(%d, 2)" % (self.ts + i)) + + tdSql.query("select * from t9") + tdSql.checkRows(50) + tdSql.query("select sum(a) from t9") + tdSql.checkData(0, 0, 60) + + self.restartTaosd() + tdSql.query("select * from t9") + tdSql.checkRows(50) + tdSql.query("select sum(a) from t9") + tdSql.checkData(0, 0, 60) + + print("==============step 10: A LOT OF DATA COVER THE WHOLE BLOCK") + tdSql.execute("create table t10 (ts timestamp, a int)") + + for i in range(50): + tdSql.execute("insert into t10 values(%d, 1)" % (self.ts + i)) + + self.restartTaosd() + tdSql.query("select * from t10") + tdSql.checkRows(50) + tdSql.query("select sum(a) from t10") + tdSql.checkData(0, 0, 50) + + for i in range(-4000, 4000): + tdSql.execute("insert into t10 values(%d, 2)" % (self.ts + i)) + + tdSql.query("select * from t10") + tdSql.checkRows(8000) + tdSql.query("select sum(a) from t10") + tdSql.checkData(0, 0, 16000) + + self.restartTaosd() + tdSql.query("select * from t10") + tdSql.checkRows(8000) + tdSql.query("select sum(a) from t10") + tdSql.checkData(0, 0, 16000) + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase())