2021-12-13 16:26:01 +00:00
#!/usr/bin/env python3
2021-12-13 15:47:37 +00:00
# Tags: no-parallel
2021-12-12 11:46:40 +00:00
import os
import sys
import signal
CURDIR = os . path . dirname ( os . path . realpath ( __file__ ) )
2022-03-22 16:39:58 +00:00
sys . path . insert ( 0 , os . path . join ( CURDIR , " helpers " ) )
2021-12-12 11:46:40 +00:00
from client import client , prompt , end_of_block
log = None
# uncomment the line below for debugging
# log=sys.stdout
2022-03-22 16:39:58 +00:00
with client ( name = " client1> " , log = log ) as client1 , client (
name = " client2> " , log = log
) as client2 :
2021-12-12 11:46:40 +00:00
client1 . expect ( prompt )
client2 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client1 . send ( " SET allow_experimental_window_view = 1 " )
2021-12-12 11:46:40 +00:00
client1 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client1 . send ( " SET window_view_heartbeat_interval = 1 " )
2021-12-12 11:46:40 +00:00
client1 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client2 . send ( " SET allow_experimental_window_view = 1 " )
2021-12-12 11:46:40 +00:00
client2 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client1 . send ( " CREATE DATABASE IF NOT EXISTS 01070_window_view_watch_events " )
2021-12-12 11:46:40 +00:00
client1 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client1 . send ( " DROP TABLE IF EXISTS 01070_window_view_watch_events.mt NO DELAY " )
2021-12-12 11:46:40 +00:00
client1 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client1 . send ( " DROP TABLE IF EXISTS 01070_window_view_watch_events.wv NO DELAY " )
2021-12-12 11:46:40 +00:00
client1 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client1 . send (
" CREATE TABLE 01070_window_view_watch_events.mt(a Int32, timestamp DateTime( ' US/Samoa ' )) ENGINE=MergeTree ORDER BY tuple() "
)
2021-12-12 11:46:40 +00:00
client1 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client1 . send (
2022-05-14 16:46:49 +00:00
" CREATE WINDOW VIEW 01070_window_view_watch_events.wv ENGINE Memory WATERMARK=ASCENDING AS SELECT count(a) AS count, tumbleEnd(wid) AS w_end FROM 01070_window_view_watch_events.mt GROUP BY tumble(timestamp, INTERVAL ' 5 ' SECOND, ' US/Samoa ' ) AS wid "
2022-03-22 16:39:58 +00:00
)
2021-12-12 11:46:40 +00:00
client1 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client1 . send ( " WATCH 01070_window_view_watch_events.wv EVENTS " )
client1 . expect ( " Query id " + end_of_block )
2022-05-17 08:26:22 +00:00
client1 . expect ( " Progress: 0.00 rows.* \ ) " )
2022-03-22 16:39:58 +00:00
client2 . send (
2022-05-17 08:26:22 +00:00
" INSERT INTO 01070_window_view_watch_events.mt VALUES (1, toDateTime( ' 1990/01/01 12:00:00 ' , ' US/Samoa ' )); "
2022-03-22 16:39:58 +00:00
)
2021-12-12 11:46:40 +00:00
client2 . expect ( " Ok. " )
2022-03-22 16:39:58 +00:00
client2 . send (
2022-05-17 08:26:22 +00:00
" INSERT INTO 01070_window_view_watch_events.mt VALUES (1, toDateTime( ' 1990/01/01 12:00:06 ' , ' US/Samoa ' )); "
2022-03-22 16:39:58 +00:00
)
2021-12-12 11:46:40 +00:00
client2 . expect ( " Ok. " )
2022-03-22 16:39:58 +00:00
client1 . expect ( " 1990-01-01 12:00:05 " + end_of_block )
client1 . expect ( " Progress: 1.00 rows.* \ ) " )
2021-12-12 11:46:40 +00:00
# send Ctrl-C
2022-03-22 16:39:58 +00:00
client1 . send ( " \x03 " , eol = " " )
match = client1 . expect ( " ( %s )|([# \ $] ) " % prompt )
2021-12-12 11:46:40 +00:00
if match . groups ( ) [ 1 ] :
client1 . send ( client1 . command )
client1 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client1 . send ( " DROP TABLE 01070_window_view_watch_events.wv NO DELAY; " )
2021-12-12 11:46:40 +00:00
client1 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client1 . send ( " DROP TABLE 01070_window_view_watch_events.mt; " )
2021-12-12 11:46:40 +00:00
client1 . expect ( prompt )
2022-03-22 16:39:58 +00:00
client1 . send ( " DROP DATABASE IF EXISTS 01070_window_view_watch_events; " )
2021-12-12 11:46:40 +00:00
client1 . expect ( prompt )