2025-05-27 10:44:40 +00:00
import time
import math
2025-06-04 11:32:17 +00:00
from new_test_framework . utils import tdLog , tdSql , clusterComCheck , tdStream , StreamItem
2025-05-27 10:44:40 +00:00
class TestStreamDevBasic :
def setup_class ( cls ) :
tdLog . debug ( f " start to execute { __file__ } " )
def test_stream_dev_basic ( self ) :
2025-06-04 11:32:17 +00:00
""" basic test
2025-05-27 10:44:40 +00:00
Verification testing during the development process .
Catalog :
- Streams : Others
Since : v3 .3 .3 .7
Labels : common , ci
Jira : None
History :
- 2025 - 5 - 26 Simon Guan Created
"""
2025-06-04 11:32:17 +00:00
self . createSnode ( )
self . createDatabase ( )
self . prepareQueryData ( )
self . prepareTriggerTable ( )
self . createStreams ( )
self . checkStreamStatus ( )
2025-06-19 12:07:12 +00:00
self . writeTriggerData ( )
2025-06-04 11:32:17 +00:00
self . checkResults ( )
2025-05-27 10:44:40 +00:00
2025-06-04 11:32:17 +00:00
def createSnode ( self ) :
tdLog . info ( " create snode " )
tdStream . createSnode ( 1 )
2025-05-27 10:44:40 +00:00
2025-06-04 11:32:17 +00:00
def createDatabase ( self ) :
tdLog . info ( f " create database " )
2025-05-27 10:44:40 +00:00
2025-06-04 11:32:17 +00:00
tdSql . prepare ( dbname = " qdb " , vgroups = 1 )
tdSql . prepare ( dbname = " tdb " , vgroups = 1 )
tdSql . prepare ( dbname = " rdb " , vgroups = 1 )
clusterComCheck . checkDbReady ( " qdb " )
clusterComCheck . checkDbReady ( " tdb " )
clusterComCheck . checkDbReady ( " rdb " )
2025-05-27 10:44:40 +00:00
2025-06-04 11:32:17 +00:00
def prepareQueryData ( self ) :
tdLog . info ( " prepare child tables for query " )
tdStream . prepareChildTables ( tbBatch = 1 , rowBatch = 1 , rowsPerBatch = 400 )
tdLog . info ( " prepare normal tables for query " )
tdStream . prepareNormalTables ( tables = 10 , rowBatch = 1 )
tdLog . info ( " prepare virtual tables for query " )
tdStream . prepareVirtualTables ( tables = 10 )
tdLog . info ( " prepare json tag tables for query, include None and primary key " )
tdStream . prepareJsonTables ( tbBatch = 1 , tbPerBatch = 10 )
tdLog . info ( " prepare view " )
tdStream . prepareViews ( views = 5 )
def prepareTriggerTable ( self ) :
tdLog . info ( " prepare tables for trigger " )
2025-06-21 10:13:51 +00:00
stb = " create table tdb.triggers (ts timestamp, c1 int, c2 int) tags(id int, name varchar(16)); "
ctb = " create table tdb.t1 using tdb.triggers tags(1, ' 1 ' ) tdb.t2 using tdb.triggers tags(2, ' 2 ' ) tdb.t3 using tdb.triggers tags(3, ' 3 ' ) "
2025-06-04 11:32:17 +00:00
tdSql . execute ( stb )
tdSql . execute ( ctb )
ntb = " create table tdb.n1 (ts timestamp, c1 int, c2 int) "
tdSql . execute ( ntb )
vstb = " create stable tdb.vtriggers (ts timestamp, c1 int, c2 int) tags(id int) VIRTUAL 1 "
vctb = " create vtable tdb.v1 (tdb.t1.c1, tdb.t2.c2) using tdb.vtriggers tags(1) "
tdSql . execute ( vstb )
tdSql . execute ( vctb )
def writeTriggerData ( self ) :
tdLog . info ( " write data to trigger table " )
2025-05-27 10:44:40 +00:00
sqls = [
2025-06-04 11:32:17 +00:00
" insert into tdb.t1 values ( ' 2025-01-01 00:00:00 ' , 0, 0 ) ( ' 2025-01-01 00:05:00 ' , 5, 50 ) ( ' 2025-01-01 00:10:00 ' , 10, 100) " ,
" insert into tdb.t2 values ( ' 2025-01-01 00:11:00 ' , 11, 110) ( ' 2025-01-01 00:12:00 ' , 12, 120) ( ' 2025-01-01 00:15:00 ' , 15, 150) " ,
" insert into tdb.t3 values ( ' 2025-01-01 00:21:00 ' , 21, 210) " ,
" insert into tdb.n1 values ( ' 2025-01-01 00:25:00 ' , 25, 250) ( ' 2025-01-01 00:26:00 ' , 26, 260) ( ' 2025-01-01 00:27:00 ' , 27, 270) " ,
" insert into tdb.t1 values ( ' 2025-01-01 00:30:00 ' , 30, 300) ( ' 2025-01-01 00:32:00 ' , 32, 320) ( ' 2025-01-01 00:36:00 ' , 36, 360) " ,
" insert into tdb.n1 values ( ' 2025-01-01 00:40:00 ' , 40, 400) ( ' 2025-01-01 00:42:00 ' , 42, 420) " ,
2025-05-27 10:44:40 +00:00
]
tdSql . executes ( sqls )
2025-05-28 07:54:42 +00:00
2025-06-04 11:32:17 +00:00
def checkStreamStatus ( self ) :
tdLog . info ( f " wait total: { len ( self . streams ) } streams run finish " )
2025-05-27 10:44:40 +00:00
tdStream . checkStreamStatus ( )
2025-06-04 11:32:17 +00:00
def checkResults ( self ) :
tdLog . info ( f " check total: { len ( self . streams ) } streams result " )
for stream in self . streams :
stream . checkResults ( )
2025-05-27 10:44:40 +00:00
2025-06-04 11:32:17 +00:00
def createStreams ( self ) :
self . streams = [ ]
2025-05-27 10:44:40 +00:00
2025-06-04 11:32:17 +00:00
stream = StreamItem (
2025-07-01 05:46:27 +00:00
id = 19 ,
stream = " create stream rdb.s19 interval(5m) sliding(5m) from tdb.triggers partition by id into rdb.r19 as select _twend tw, sum(c1) sumcnt from (select tbname, count(*) c1 from qdb.meters where cts >= ' 2025-01-01 00:00:00.000 ' and cts < ' 2025-01-01 00:05:00.000 ' and tint= %% 1 partition by tbname) " ,
res_query = " select tw, sumcnt from rdb.r19 where id = 1 " ,
exp_query = " select _wend, count(*) from qdb.meters where cts >= ' 2025-01-01 00:00:00.000 ' and cts < ' 2025-01-01 00:35:00.000 ' and tint=1 interval(5m) " ,
2025-06-04 11:32:17 +00:00
)
self . streams . append ( stream )
tdLog . info ( f " create total: { len ( self . streams ) } streams " )
for stream in self . streams :
stream . createStream ( )
2025-06-25 09:52:24 +00:00
def check84 ( self ) :
2025-06-23 01:18:45 +00:00
tdSql . checkResultsByFunc (
2025-06-25 09:52:24 +00:00
sql = " select * from rdb.r84 where tag_tbname= ' t1 ' ; " ,
func = lambda : tdSql . getRows ( ) == 14 ,
2025-06-04 11:32:17 +00:00
)