From bce18ee8b82e55c2bd91834c3953b38ea9eebe53 Mon Sep 17 00:00:00 2001 From: Ping Xiao Date: Mon, 27 Sep 2021 17:31:16 +0800 Subject: [PATCH] [TS-376]: add test case --- .../C#Test/nanosupport/nanotest.cs | 59 ++++----------- tests/pytest/insert/schemaChangeTest.py | 72 +++++++++++++++++++ 2 files changed, 85 insertions(+), 46 deletions(-) create mode 100644 tests/pytest/insert/schemaChangeTest.py diff --git a/tests/connectorTest/C#Test/nanosupport/nanotest.cs b/tests/connectorTest/C#Test/nanosupport/nanotest.cs index b9eaefef8c..666c731e3a 100644 --- a/tests/connectorTest/C#Test/nanosupport/nanotest.cs +++ b/tests/connectorTest/C#Test/nanosupport/nanotest.cs @@ -29,21 +29,7 @@ namespace TDengineDriver private string password="taosdata"; private short port = 0; - //sql parameters - private string dbName; - private string tbName; - private string precision; - - private bool isInsertData; - private bool isQueryData; - - private long tableCount; - private long totalRows; - private long batchRows; - private long beginTimestamp = 1551369600000L; - private IntPtr conn = IntPtr.Zero; - private long rowsInserted = 0; static void Main(string[] args) { @@ -73,15 +59,6 @@ namespace TDengineDriver tester.executeQuery("select * from tb;"); - // Console.WriteLine("expected is : {0}", width); - // tdSql.checkData(0,0,"2021-06-10 0:00:00.100000001"); - // tdSql.checkData(1,0,"2021-06-10 0:00:00.150000000"); - // tdSql.checkData(2,0,"2021-06-10 0:00:00.299999999"); - // tdSql.checkData(3,1,3); - // tdSql.checkData(4,1,5); - // tdSql.checkData(5,1,7); - // tdSql.checkRows(6); - tester.executeQuery("select count(*) from tb where ts > 1623254400100000000 and ts < 1623254400100000002;"); Console.WriteLine("expected is : 1 " ); tester.executeQuery("select count(*) from tb where ts > '2021-06-10 0:00:00.100000001' and ts < '2021-06-10 0:00:00.160000000';"); @@ -271,8 +248,8 @@ namespace TDengineDriver // tdSql.checkData(0,0,1623258000123456789); - Console.WriteLine("usdb" ); + tester.execute("drop database if exists usdb;"); tester.execute("create database usdb precision 'us';"); tester.execute("use usdb;"); tester.execute("create stable st (ts timestamp ,speed float ) tags(time timestamp ,id int);"); @@ -289,16 +266,12 @@ namespace TDengineDriver tester.execute("insert into tb1 using st tags('2021-06-10 0:00:00.123' , 1 ) values('2021-06-10T0:00:00.123+07:00' , 1.0);" ); tester.executeQuery("select first(*) from tb1;"); Console.WriteLine("expected is : 1623258000123 " ); - - - + tester.CloseConnection(); tester.cleanup(); - - } - public void InitTDengine() + public void InitTDengine() { TDengine.Options((int)TDengineInitOption.TDDB_OPTION_CONFIGDIR, this.configDir); TDengine.Options((int)TDengineInitOption.TDDB_OPTION_SHELL_ACTIVITY_TIMER, "60"); @@ -307,7 +280,7 @@ namespace TDengineDriver Console.WriteLine("get connection starting..."); } - public void ConnectTDengine() + public void ConnectTDengine() { string db = ""; this.conn = TDengine.Connect(this.host, this.user, this.password, db, this.port); @@ -321,13 +294,13 @@ namespace TDengineDriver Console.WriteLine("[ OK ] Connection established."); } } - //EXECUTE SQL - public void execute(string sql) + + //EXECUTE SQL + public void execute(string sql) { DateTime dt1 = DateTime.Now; IntPtr res = TDengine.Query(this.conn, sql.ToString()); DateTime dt2 = DateTime.Now; - TimeSpan span = dt2 - dt1; if ((res == IntPtr.Zero) || (TDengine.ErrorNo(res) != 0)) { @@ -345,7 +318,7 @@ namespace TDengineDriver TDengine.FreeResult(res); } //EXECUTE QUERY - public void executeQuery(string sql) + public void executeQuery(string sql) { DateTime dt1 = DateTime.Now; @@ -454,7 +427,7 @@ namespace TDengineDriver } - public void CloseConnection() + public void CloseConnection() { if (this.conn != IntPtr.Zero) { @@ -481,22 +454,16 @@ namespace TDengineDriver switch(psc) { case 0: - Console.WriteLine("db:[{0:G}]'s precision is {1:G}",this.dbName,"millisecond"); + Console.WriteLine("db:[{0:G}]'s precision is {1:G} millisecond"); break; case 1: - Console.WriteLine("db:[{0:G}]'s precision is {1:G}",this.dbName,"microsecond"); + Console.WriteLine("db:[{0:G}]'s precision is {1:G} microsecond"); break; case 2: - Console.WriteLine("db:[{0:G}]'s precision is {1:G}",this.dbName,"nanosecond"); + Console.WriteLine("db:[{0:G}]'s precision is {1:G} nanosecond"); break; } - - } - - // public void checkData(int x ,int y , long ts ){ - - // } - + } } } diff --git a/tests/pytest/insert/schemaChangeTest.py b/tests/pytest/insert/schemaChangeTest.py new file mode 100644 index 0000000000..a62a15bcc0 --- /dev/null +++ b/tests/pytest/insert/schemaChangeTest.py @@ -0,0 +1,72 @@ +################################################################### +# 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 * +import multiprocessing as mp + +class TDTestCase: + def init(self, conn, logSql): + tdLog.debug("start to execute %s" % __file__) + tdSql.init(conn.cursor()) + self.ts = 1609430400000 + + def alterTableSchema(self): + conn1 = taos.connect(host="127.0.0.1", user="root", password="taosdata", config=tdDnodes.getSimCfgPath()) + c1 = conn1.cursor() + + c1.execute("use db") + c1.execute("alter table st drop column c2") + c1.execute("alter table st add column c2 double") + + tdLog.sleep(1) + c1.execute("select * from st") + for data in c1: + print("Process 1: c2 = %s" % data[2]) + + + def insertData(self): + conn2 = taos.connect(host="127.0.0.1", user="root", password="taosdata", config=tdDnodes.getSimCfgPath()) + c2 = conn2.cursor() + + tdLog.sleep(1) + c2.execute("use db") + c2.execute("insert into t1 values(%d, 2, 2.22)" % (self.ts + 1)) + + c2.execute("select * from st") + for data in c2: + print("Process 2: c2 = %f" % data[2]) + + def run(self): + tdSql.prepare() + tdSql.execute("create table st(ts timestamp, c1 int, c2 float) tags(t1 int)") + tdSql.execute("create table t1 using st tags(1)") + tdSql.execute("insert into t1 values(%d, 1, 1.11)" % self.ts) + p1 = mp.Process(target=self.alterTableSchema, args=()) + p2 = mp.Process(target=self.insertData, args=()) + p1.start() + p2.start() + + p1.join() + p2.join() + + def stop(self): + tdSql.close() + tdLog.success("%s successfully executed" % __file__) + +tdCases.addWindows(__file__, TDTestCase()) +tdCases.addLinux(__file__, TDTestCase()) \ No newline at end of file -- GitLab