Changeset: fac720dd6654 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/fac720dd6654
Modified Files:
sql/test/concurrent/Tests/All
sql/test/concurrent/Tests/segments-corruption.py
Branch: Jan2022
Log Message:
Restructure test and include it into Mtest.
diffs (92 lines):
diff --git a/sql/test/concurrent/Tests/All b/sql/test/concurrent/Tests/All
--- a/sql/test/concurrent/Tests/All
+++ b/sql/test/concurrent/Tests/All
@@ -1,3 +1,4 @@
simple_select
crash_on_concurrent_use.SF-1411926
+segments-corruption
smart-segment-merge
diff --git a/sql/test/concurrent/Tests/segments-corruption.py
b/sql/test/concurrent/Tests/segments-corruption.py
--- a/sql/test/concurrent/Tests/segments-corruption.py
+++ b/sql/test/concurrent/Tests/segments-corruption.py
@@ -1,43 +1,43 @@
-import pyodbc
-import time
-from multiprocessing import Pool
-import random
+import os, random, pymonetdb
+from concurrent.futures import ThreadPoolExecutor
+
+init = '''
+ drop table if exists foo;
+ create table foo (c1 int, c2 int, c3 int, c4 int, c5 int);
+ '''
-CONN_STR =
'DRIVER={/libMonetODBC.so};HOST=localhost;PORT=50000;DATABASE=devdb;UID=monetdb;PWD=monetdb'
-QUERIES = [
- "select * from test limit 1",
- "insert into test values (0, 0, 0, 0, 0)",
-]
-DURATION = 30
-CLIENTS = 16
+queries = [
+ "select * from foo limit 1;",
+ "insert into foo values (0, 0, 0, 0, 0);",
+ ]
-def run(_):
- commits = 0
- errors = 0
- conn = pyodbc.connect(CONN_STR)
- conn.autocommit = True
- cursor = conn.cursor()
- cursor.execute("set optimizer = 'default_fast'")
+nr_clients = 16
+nr_queries = 2000
+
+h = os.getenv('MAPIHOST')
+p = int(os.getenv('MAPIPORT'))
+db = os.getenv('TSTDB')
- begin = time.time()
- while time.time() - begin < DURATION:
- try:
- cursor.execute(QUERIES[random.randint(0, len(QUERIES)-1)])
- except:
- print('error')
- errors += 1
- commits += 1
+conn = pymonetdb.connect(hostname=h, port=p,database=db, autocommit=True)
+cursor = conn.cursor()
- return commits, errors
+try:
+ cursor.execute(init)
+except Exception as e:
+ print(e)
+ exit(1)
-conn = pyodbc.connect(CONN_STR)
-conn.autocommit = True
-cursor = conn.cursor()
-cursor.execute('create table if not exists test (c1 int, c2 int, c3 int, c4
int, c5 int)')
+def client(_):
+ conn = pymonetdb.connect(hostname=h, port=p,database=db, autocommit=True)
+ cursor = conn.cursor()
+ cursor.execute("set optimizer = 'default_fast';")
-pool = Pool(CLIENTS)
-results = pool.map(run, [None for _ in range(CLIENTS)])
-total = sum([x[0] for x in results])
-errors = sum([x[1] for x in results])
-print(f'{round(total / DURATION, 2)} tx/s')
-print(errors)
+ for x in range(0, nr_queries):
+ try:
+ cursor.execute(queries[random.randint(0, len(queries)-1)])
+ except Exception as e:
+ print(e)
+ exit(1)
+
+with ThreadPoolExecutor(nr_clients) as pool:
+ pool.map(client, range(nr_clients))
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]