Changeset: 34589d226cb2 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/34589d226cb2 Added Files: sql/test/strimps/Tests/All sql/test/strimps/Tests/persisted_strimp.SQL.py sql/test/strimps/Tests/strimps_stable_counts.SQL.py Branch: string_imprints Log Message:
Add tests specific to strimps diffs (129 lines): diff --git a/sql/test/strimps/Tests/All b/sql/test/strimps/Tests/All new file mode 100644 --- /dev/null +++ b/sql/test/strimps/Tests/All @@ -0,0 +1,2 @@ +strimps_stable_counts +persisted_strimp diff --git a/sql/test/strimps/Tests/persisted_strimp.SQL.py b/sql/test/strimps/Tests/persisted_strimp.SQL.py new file mode 100644 --- /dev/null +++ b/sql/test/strimps/Tests/persisted_strimp.SQL.py @@ -0,0 +1,57 @@ +import os +import socket +import tempfile + +try: + from MonetDBtesting import process +except ImportError: + import process +from MonetDBtesting.sqltest import SQLTestCase + +COUNT_QUERY = "SELECT COUNT(*) FROM orders WHERE o_comment LIKE '%%slyly%%';" + +sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +sock.bind(('', 0)) +port = sock.getsockname()[1] +sock.close() + +# Make sure that reading a persisted strimp from disk gives correct +# results. + +with tempfile.TemporaryDirectory() as farm_dir: + fdir = os.path.join(farm_dir, 'db1') + os.mkdir(fdir) + with process.server(mapiport=port, dbname='db1', + args=["--set", "gdk_use_strimps=yes",], + dbfarm=fdir, + stdin=process.PIPE, + stdout=process.PIPE, + stderr=process.PIPE) as s: + with SQLTestCase() as mdb: + mdb.connect(database='db1', port=port, username='monetdb', password='monetdb') + mdb.execute("""CREATE TABLE orders ( + o_orderkey BIGINT NOT NULL, + o_custkey INTEGER NOT NULL, + o_orderstatus CHAR(1) NOT NULL, + o_totalprice DECIMAL(15,2) NOT NULL, + o_orderdate DATE NOT NULL, + o_orderpriority CHAR(15) NOT NULL, + o_clerk CHAR(15) NOT NULL, + o_shippriority INTEGER NOT NULL, + o_comment VARCHAR(79) NOT NULL);""").assertSucceeded() + mdb.execute("""COPY 15000 RECORDS INTO orders from r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS '|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded() + mdb.execute("""COPY 15000 RECORDS INTO orders from r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS '|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded() + mdb.execute("""COPY 15000 RECORDS INTO orders from r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS '|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded() + mdb.execute("""COPY 15000 RECORDS INTO orders from r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS '|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded() + mdb.execute("SELECT COUNT(*) FROM orders WHERE o_comment LIKE '%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)]) + s.communicate() + + with process.server(mapiport=port, dbname='db1', + args=["--set", "gdk_use_strimps=yes",], + dbfarm=fdir, + stdin=process.PIPE, stdout=process.PIPE, stderr=process.PIPE) as s: + with SQLTestCase() as mdb: + mdb.connect(database='db1', port=port, username='monetdb', password='monetdb') + mdb.execute("SELECT COUNT(*) FROM orders WHERE o_comment LIKE '%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)]) + mdb.execute("SELECT COUNT(*) FROM orders WHERE o_comment LIKE '%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)]) + s.communicate() diff --git a/sql/test/strimps/Tests/strimps_stable_counts.SQL.py b/sql/test/strimps/Tests/strimps_stable_counts.SQL.py new file mode 100644 --- /dev/null +++ b/sql/test/strimps/Tests/strimps_stable_counts.SQL.py @@ -0,0 +1,55 @@ +import os +import socket +import tempfile + +try: + from MonetDBtesting import process +except ImportError: + import process +from MonetDBtesting.sqltest import SQLTestCase + +COUNT_QUERY = "SELECT COUNT(*) FROM orders WHERE o_comment LIKE '%%slyly%%';" + +sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +sock.bind(('', 0)) +port = sock.getsockname()[1] +sock.close() + +# Make sure that using a strimp returns the same number of rows as +# not using it. + +with tempfile.TemporaryDirectory() as farm_dir: + fdir = os.path.join(farm_dir, 'db1') + os.mkdir(fdir) + with process.server(mapiport=port, dbname='db1', + dbfarm=fdir, + stdin=process.PIPE, + stdout=process.PIPE, + stderr=process.PIPE) as s: + with SQLTestCase() as mdb: + mdb.connect(database='db1', port=port, username='monetdb', password='monetdb') + mdb.execute("""CREATE TABLE orders ( + o_orderkey BIGINT NOT NULL, + o_custkey INTEGER NOT NULL, + o_orderstatus CHAR(1) NOT NULL, + o_totalprice DECIMAL(15,2) NOT NULL, + o_orderdate DATE NOT NULL, + o_orderpriority CHAR(15) NOT NULL, + o_clerk CHAR(15) NOT NULL, + o_shippriority INTEGER NOT NULL, + o_comment VARCHAR(79) NOT NULL);""").assertSucceeded() + mdb.execute("""COPY 15000 RECORDS INTO orders from r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS '|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded() + mdb.execute("""COPY 15000 RECORDS INTO orders from r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS '|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded() + mdb.execute("""COPY 15000 RECORDS INTO orders from r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS '|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded() + mdb.execute("""COPY 15000 RECORDS INTO orders from r'{}/sql/benchmarks/tpch/SF-0.01/orders.tbl' USING DELIMITERS '|','\n','"';""".format(os.getenv('TSTSRCBASE'))).assertSucceeded() + mdb.execute("SELECT COUNT(*) FROM orders WHERE o_comment LIKE '%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)]) + s.communicate() + + with process.server(mapiport=port, dbname='db1', + args=["--set", "gdk_use_strimps=yes",], + dbfarm=fdir, + stdin=process.PIPE, stdout=process.PIPE, stderr=process.PIPE) as s: + with SQLTestCase() as mdb: + mdb.connect(database='db1', port=port, username='monetdb', password='monetdb') + mdb.execute("SELECT COUNT(*) FROM orders WHERE o_comment LIKE '%%slyly%%';").assertSucceeded().assertDataResultMatch([(12896,)]) + s.communicate() _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list