Changeset: 809c1bbab4e7 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=809c1bbab4e7 Added Files: sql/test/configurable_rss/Tests/no_cap_rss_32.py.src sql/test/configurable_rss/Tests/no_cap_rss_64.py.src sql/test/configurable_rss/Tests/rss.py Removed Files: sql/test/configurable_rss/Tests/cap_rss.py sql/test/configurable_rss/Tests/no_cap_rss.sql sql/test/configurable_rss/Tests/no_cap_rss_32.sql sql/test/configurable_rss/Tests/no_cap_rss_64.sql.src Modified Files: sql/test/configurable_rss/Tests/cap_rss_32.py.src sql/test/configurable_rss/Tests/cap_rss_64.py.src sql/test/configurable_rss/Tests/cap_rss_64.stable.out sql/test/configurable_rss/Tests/no_cap_rss_64.stable.out Branch: config_rss Log Message:
Base all rss tests on a single configurable Python script. diffs (201 lines): diff --git a/sql/test/configurable_rss/Tests/cap_rss_32.py.src b/sql/test/configurable_rss/Tests/cap_rss_32.py.src --- a/sql/test/configurable_rss/Tests/cap_rss_32.py.src +++ b/sql/test/configurable_rss/Tests/cap_rss_32.py.src @@ -1,1 +1,1 @@ -$RELSRCDIR/cap_rss.py +$RELSRCDIR/rss.py diff --git a/sql/test/configurable_rss/Tests/cap_rss_64.py.src b/sql/test/configurable_rss/Tests/cap_rss_64.py.src --- a/sql/test/configurable_rss/Tests/cap_rss_64.py.src +++ b/sql/test/configurable_rss/Tests/cap_rss_64.py.src @@ -1,1 +1,1 @@ -$RELSRCDIR/cap_rss.py +$RELSRCDIR/rss.py diff --git a/sql/test/configurable_rss/Tests/cap_rss_64.stable.out b/sql/test/configurable_rss/Tests/cap_rss_64.stable.out --- a/sql/test/configurable_rss/Tests/cap_rss_64.stable.out +++ b/sql/test/configurable_rss/Tests/cap_rss_64.stable.out @@ -23,7 +23,7 @@ stdout of test 'cap_rss_64` in directory #end; #select getrss() < 20000 as resident_set_size_is_less_then_20kbytes, quantile(c/a, 0.8) * 0 from test; % .L2, sys.L6 # table_name -% resident_set_size_is_less_then_20kbytes, L6 # name +% resident_set_size_is_less_then_20000_kb, L6 # name % boolean, double # type % 5, 24 # length [ true, 0 ] diff --git a/sql/test/configurable_rss/Tests/no_cap_rss.sql b/sql/test/configurable_rss/Tests/no_cap_rss.sql deleted file mode 100644 --- a/sql/test/configurable_rss/Tests/no_cap_rss.sql +++ /dev/null @@ -1,26 +0,0 @@ -create function getrss() -returns bigint external name status.rss_cursize; - -create table test(a int, b int, c double); - -insert into test values (1, 0, 1); - -create procedure loop_insert(maximum_size bigint) -begin - declare size bigint; - set size = (select count(*) from test); - - while size < maximum_size do - insert into test (select a+1, b+2, rand()*c from test); - - set size = (select count(*) from test); - end while; -end; - -call loop_insert(1000000); - --- it seems that it requires an analytical query to keep memory in ram. -select getrss() > 20000 as resident_set_size_is_bigger_then_20kbytes, quantile(c/a, 0.8) * 0 from test; - -drop table test cascade; -drop function getrss; diff --git a/sql/test/configurable_rss/Tests/no_cap_rss_64.sql.src b/sql/test/configurable_rss/Tests/no_cap_rss_32.py.src rename from sql/test/configurable_rss/Tests/no_cap_rss_64.sql.src rename to sql/test/configurable_rss/Tests/no_cap_rss_32.py.src --- a/sql/test/configurable_rss/Tests/no_cap_rss_64.sql.src +++ b/sql/test/configurable_rss/Tests/no_cap_rss_32.py.src @@ -1,1 +1,1 @@ -$RELSRCDIR/no_cap_rss.sql +$RELSRCDIR/rss.py diff --git a/sql/test/configurable_rss/Tests/no_cap_rss_32.sql b/sql/test/configurable_rss/Tests/no_cap_rss_32.sql deleted file mode 100644 --- a/sql/test/configurable_rss/Tests/no_cap_rss_32.sql +++ /dev/null @@ -1,26 +0,0 @@ -create function getrss() -returns bigint external name status.rss_cursize; - -create table test(a int, b int, c double); - -insert into test values (1, 0, 1); - -create procedure loop_insert(maximum_size bigint) -begin - declare size bigint; - set size = (select count(*) from test); - - while size < maximum_size do - insert into test (select a+1, b+2, rand()*c from test); - - set size = (select count(*) from test); - end while; -end; - -call loop_insert(1000000); - --- it seems that it requires an analytical query to keep memory in ram. -select getrss() as resident_set_size, quantile(c/a, 0.8) * 0 from test; - -drop table test cascade; -drop function getrss; diff --git a/sql/test/configurable_rss/Tests/no_cap_rss_64.sql.src b/sql/test/configurable_rss/Tests/no_cap_rss_64.py.src copy from sql/test/configurable_rss/Tests/no_cap_rss_64.sql.src copy to sql/test/configurable_rss/Tests/no_cap_rss_64.py.src --- a/sql/test/configurable_rss/Tests/no_cap_rss_64.sql.src +++ b/sql/test/configurable_rss/Tests/no_cap_rss_64.py.src @@ -1,1 +1,1 @@ -$RELSRCDIR/no_cap_rss.sql +$RELSRCDIR/rss.py diff --git a/sql/test/configurable_rss/Tests/no_cap_rss_64.stable.out b/sql/test/configurable_rss/Tests/no_cap_rss_64.stable.out --- a/sql/test/configurable_rss/Tests/no_cap_rss_64.stable.out +++ b/sql/test/configurable_rss/Tests/no_cap_rss_64.stable.out @@ -1,27 +1,9 @@ stdout of test 'no_cap_rss_64` in directory 'sql/test/configurable_rss` itself: -# 16:57:25 > -# 16:57:25 > "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" "mapi_open=true" "--set" "mapi_port=32503" "--set" "monet_prompt=" "--forcemito" "--dbpath=C:\Users\aris\monetdb-installation\var\MonetDB\mTests_sql_test_configurable_rss" "--set" "embedded_c=true" -# 16:57:25 > - -# MonetDB 5 server v11.29.4 -# This is an unreleased version -# Serving database 'mTests_sql_test_configurable_rss', using 2 threads -# Compiled for x86_64-pc-winnt/64bit -# Found 8.000 GiB available main-memory. -# Copyright (c) 1993 - July 2008 CWI. -# Copyright (c) August 2008 - 2018 MonetDB B.V., all rights reserved -# Visit https://www.monetdb.org/ for further information -# Listening for connection requests on mapi:monetdb://DESKTOP-J5OE0E3:32503/ -# MonetDB/GIS module loaded -# MonetDB/SQL module loaded - -Ready. - -# 16:57:25 > -# 16:57:25 > "mclient" "-lsql" "-ftest" "-tnone" "-Eutf-8" "-i" "-e" "--host=DESKTOP-J5OE0E3" "--port=32503" -# 16:57:25 > +# 13:48:01 > +# 13:48:01 > "C:\Python27\python.exe" "no_cap_rss_64.py" "no_cap_rss_64" +# 13:48:01 > #create function getrss() #returns bigint external name status.rss_cursize; @@ -41,7 +23,7 @@ Ready. #end; #select getrss() > 20000 as resident_set_size_is_bigger_then_20kbytes, quantile(c/a, 0.8) * 0 from test; % .L2, sys.L6 # table_name -% resident_set_size_is_bigger_then_20kbytes, L6 # name +% resident_set_size_is_bigger_then_20000_kb, L6 # name % boolean, double # type % 5, 24 # length [ true, 0 ] diff --git a/sql/test/configurable_rss/Tests/cap_rss.py b/sql/test/configurable_rss/Tests/rss.py rename from sql/test/configurable_rss/Tests/cap_rss.py rename to sql/test/configurable_rss/Tests/rss.py --- a/sql/test/configurable_rss/Tests/cap_rss.py +++ b/sql/test/configurable_rss/Tests/rss.py @@ -5,11 +5,14 @@ except ImportError: import process class RSSTestConfig: + CAPPED = True # CAUTION: switch implementation without default. test_2_gdk_mem_maxsize = { - "cap_rss_64" : 20000000, - "cap_rss_32" : 10000000 + "cap_rss_64" : (20000000,CAPPED), + "cap_rss_32" : (10000000,CAPPED), + "no_cap_rss_64" : (20000000,not CAPPED), + "no_cap_rss_32" : (10000000,not CAPPED) } sql_template = \ @@ -36,20 +39,29 @@ end; call loop_insert(1000000); -- it seems that it requires an analytical query to keep memory in ram. -select getrss() < {0} as resident_set_size_is_less_then_{0}_kB, quantile(c/a, 0.8) * 0 from test; +select getrss() {compare_sign} {cap_in_kB} as resident_set_size_is_{compare_string}_then_{cap_in_kB}_kB, quantile(c/a, 0.8) * 0 from test; drop table test cascade; drop function getrss; """ def __init__(self, test): - self.rss_max_in_Bytes = RSSTestConfig.test_2_gdk_mem_maxsize[test] + self.rss_max_in_Bytes, self.is_capped = RSSTestConfig.test_2_gdk_mem_maxsize[test] def prepare_server_options(self): - return ["--set", "gdk_mem_maxsize={}".format(self.rss_max_in_Bytes)] + return ["--set", "gdk_mem_maxsize={}".format(self.rss_max_in_Bytes)] if self.is_capped else [] + + def get_template_parameters(self): + + compare_sign, compare_string = ("<", "less") if self.is_capped else (">", "bigger") + + return (self.rss_max_in_Bytes / 1000, compare_sign, compare_string) + def prepare_sql_script(self): - return RSSTestConfig.sql_template.format(self.rss_max_in_Bytes / 1000) + cap_in_kB, compare_sign, compare_string = self.get_template_parameters() + + return RSSTestConfig.sql_template.format(cap_in_kB=cap_in_kB, compare_sign=compare_sign, compare_string=compare_string) def build_test_config(): test = sys.argv[1] _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list