Skip to content

Commit c28bcee

Browse files
committed
New tests refactoring
1 parent 37bedbe commit c28bcee

File tree

2 files changed

+21
-15
lines changed

2 files changed

+21
-15
lines changed

tests/prepare_stress.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ mkdir -p tmp_stress
44
cd tmp_stress
55
rm -rf ./*
66

7-
git clone https://github.com/gregrahn/tpcds-kit.git
7+
git clone --depth 1 --single-branch --branch master https://github.com/gregrahn/tpcds-kit.git
88
cd tpcds-kit/tools
99
make -s
1010

tests/test_cases.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@
1414

1515
from time import sleep
1616

17+
MAX_PG_QS_RETRIES = 50
18+
TPC_DS_EXCLUDE_LIST = [] # actual numbers of TPC-DS tests to exclude
19+
TPC_DS_STATEMENT_TIMEOUT = 20000 # statement_timeout in ms
20+
stress_in_progress = False
21+
1722
def wait(conn):
1823
"""wait for some event on connection to postgres"""
1924
while 1:
@@ -98,18 +103,21 @@ def pg_query_state(config, pid, verbose=False, costs=False, timing=False, \
98103

99104
conn = psycopg2.connect(**config)
100105
curs = conn.cursor()
101-
set_guc(conn, 'statement_timeout', 10000)
106+
107+
if stress_in_progress:
108+
set_guc(conn, 'statement_timeout', TPC_DS_STATEMENT_TIMEOUT)
109+
n_retries = 0
102110

103111
result = []
104-
n_retries = 0
105112
while not result:
106113
curs.callproc('pg_query_state', (pid, verbose, costs, timing, buffers, triggers, format))
107114
result = curs.fetchall()
108-
n_retries += 1
109115

110-
if n_retries == 25:
111-
print('pg_query_state tried 25 times with no effect')
112-
break
116+
if stress_in_progress:
117+
n_retries += 1
118+
if n_retries >= MAX_PG_QS_RETRIES:
119+
print('\npg_query_state tried %s times with no effect, giving up' % MAX_PG_QS_RETRIES)
120+
break
113121

114122
notices = conn.notices[:]
115123
conn.close()
@@ -565,24 +573,22 @@ def stress_test(config):
565573

566574
acon, = n_async_connect(config)
567575

568-
print('Starting test...')
576+
print('Starting TPC-DS queries...')
569577
timeout_list = []
570-
exclude_list = []
571578
bar = progressbar.ProgressBar(max_value=len(queries))
572579
for i, query in enumerate(queries):
573580
bar.update(i + 1)
574-
if i + 1 in exclude_list:
581+
if i + 1 in TPC_DS_EXCLUDE_LIST:
575582
continue
576583
try:
577-
# Set query timeout to 10 sec
578-
set_guc(acon, 'statement_timeout', 10000)
584+
# Set query timeout to TPC_DS_STATEMENT_TIMEOUT / 1000 seconds
585+
set_guc(acon, 'statement_timeout', TPC_DS_STATEMENT_TIMEOUT)
579586
qs = query_state(config, acon, query)
580587

581-
#TODO: Put here testgres exception when supported
582588
except psycopg2.extensions.QueryCanceledError:
583-
timeout_list.append(i)
589+
timeout_list.append(i + 1)
584590

585591
n_close((acon,))
586592

587593
if len(timeout_list) > 0:
588-
print('There were pg_query_state timeouts (10s) on queries: ', timeout_list)
594+
print('There were pg_query_state timeouts (%s s) on queries:' % TPC_DS_STATEMENT_TIMEOUT, timeout_list)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy