Changeset: fcc5d425dacc for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=fcc5d425dacc
Added Files:
        monetdb5/extras/dvf/Tests/All
        monetdb5/extras/dvf/Tests/create_file_list.py
        monetdb5/extras/dvf/Tests/create_file_list.stable.err
        monetdb5/extras/dvf/Tests/create_file_list.stable.out
        monetdb5/extras/dvf/Tests/dvf.py
        monetdb5/extras/dvf/Tests/dvf.reqtests
        monetdb5/extras/dvf/Tests/dvf.stable.err
        monetdb5/extras/dvf/Tests/dvf.stable.out
        monetdb5/extras/dvf/Tests/example_mseed_files.zip
        monetdb5/extras/dvf/Tests/initializer.sql
        monetdb5/extras/dvf/Tests/mseed_schema.sql
        monetdb5/extras/dvf/Tests/mseed_schema.stable.err
        monetdb5/extras/dvf/Tests/mseed_schema.stable.out
        monetdb5/extras/dvf/Tests/opt_dvf.py
        monetdb5/extras/dvf/Tests/opt_dvf.reqtests
        monetdb5/extras/dvf/Tests/opt_dvf.stable.err
        monetdb5/extras/dvf/Tests/opt_dvf.stable.out
        monetdb5/extras/dvf/Tests/registrar.reqtests
        monetdb5/extras/dvf/Tests/registrar.sql.in
        monetdb5/extras/dvf/Tests/registrar.stable.err
        monetdb5/extras/dvf/Tests/registrar.stable.out
Modified Files:
        sql/backends/monet5/miniseed/registrar.c
Branch: DVframework
Log Message:

Created tests for dvf optimizer and dvf module.


diffs (truncated from 2591 to 300 lines):

diff --git a/monetdb5/extras/dvf/Tests/All b/monetdb5/extras/dvf/Tests/All
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/dvf/Tests/All
@@ -0,0 +1,5 @@
+mseed_schema
+create_file_list
+registrar
+opt_dvf
+dvf
diff --git a/monetdb5/extras/dvf/Tests/create_file_list.py 
b/monetdb5/extras/dvf/Tests/create_file_list.py
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/dvf/Tests/create_file_list.py
@@ -0,0 +1,13 @@
+import os, sys, zipfile
+
+dest = os.environ['TSTSRCDIR']
+archive = os.path.join(dest, 'example_mseed_files.zip')
+if not os.path.exists(archive):
+        sys.exit(1)
+
+z = zipfile.ZipFile(archive)
+z.extractall(dest)
+fl = open(os.path.join(dest, 'example_mseed_file_list.txt'), 'w')
+for f in z.namelist():
+        fl.write(str(os.path.join(dest, f)) + '\n')
+z.close()
diff --git a/monetdb5/extras/dvf/Tests/create_file_list.stable.err 
b/monetdb5/extras/dvf/Tests/create_file_list.stable.err
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/dvf/Tests/create_file_list.stable.err
@@ -0,0 +1,12 @@
+stderr of test 'create_file_list` in directory 'extras/dvf` itself:
+
+
+# 16:20:50 >  
+# 16:20:50 >  "/usr/bin/python" "create_file_list.py" "create_file_list"
+# 16:20:50 >  
+
+
+# 16:20:50 >  
+# 16:20:50 >  "Done."
+# 16:20:50 >  
+
diff --git a/monetdb5/extras/dvf/Tests/create_file_list.stable.out 
b/monetdb5/extras/dvf/Tests/create_file_list.stable.out
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/dvf/Tests/create_file_list.stable.out
@@ -0,0 +1,12 @@
+stdout of test 'create_file_list` in directory 'extras/dvf` itself:
+
+
+# 16:20:50 >  
+# 16:20:50 >  "/usr/bin/python" "create_file_list.py" "create_file_list"
+# 16:20:50 >  
+
+
+# 16:20:50 >  
+# 16:20:50 >  "Done."
+# 16:20:50 >  
+
diff --git a/monetdb5/extras/dvf/Tests/dvf.py b/monetdb5/extras/dvf/Tests/dvf.py
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/dvf/Tests/dvf.py
@@ -0,0 +1,35 @@
+import sys
+import os
+try:
+        from MonetDBtesting import process
+except ImportError:
+        import process
+
+def client(input):
+        c = process.client('sql',
+                stdin = process.PIPE,
+                stdout = process.PIPE,
+                stderr = process.PIPE)
+        out, err = c.communicate(input)
+        sys.stdout.write(out)
+        sys.stderr.write(err)
+
+f = open(os.path.join(os.environ['TSTSRCDIR'], 'initializer.sql'), 'r')
+
+script1 = f.read() + '''\
+SELECT AVG(sample_value) FROM mseed.dataview WHERE network = 'FR';
+SELECT MAX(sample_value) FROM mseed.dataview WHERE seq_no < 1000;
+'''
+
+def main():
+        s = process.server(args = ["--set", "gdk_readonly=yes"],
+                stdin = process.PIPE,
+                stdout = process.PIPE,
+                stderr = process.PIPE)
+        client(script1)
+        out, err = s.communicate()
+        sys.stdout.write(out)
+        sys.stderr.write(err)
+
+if __name__ == '__main__':
+        main()
diff --git a/monetdb5/extras/dvf/Tests/dvf.reqtests 
b/monetdb5/extras/dvf/Tests/dvf.reqtests
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/dvf/Tests/dvf.reqtests
@@ -0,0 +1,3 @@
+mseed_schema
+create_file_list
+registrar
diff --git a/monetdb5/extras/dvf/Tests/dvf.stable.err 
b/monetdb5/extras/dvf/Tests/dvf.stable.err
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/dvf/Tests/dvf.stable.err
@@ -0,0 +1,31 @@
+stderr of test 'dvf` in directory 'extras/dvf` itself:
+
+
+# 17:17:56 >  
+# 17:17:56 >  "/usr/bin/python" "dvf.py" "dvf"
+# 17:17:56 >  
+
+# builtin opt  gdk_dbname = demo
+# builtin opt  gdk_dbfarm = 
/export/scratch2/kargin/Monet/dft_miniseed/PREFIX/DFT/var/monetdb5/dbfarm
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_vmtrim = yes
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 50000
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  gdk_dbfarm = 
/export/scratch2/kargin/Monet/dft_miniseed/PREFIX/DFT/var/MonetDB
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 37875
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbname = mTests_extras_dvf
+# cmdline opt  gdk_readonly = yes
+
+# 17:17:57 >  
+# 17:17:57 >  "Done."
+# 17:17:57 >  
+
diff --git a/monetdb5/extras/dvf/Tests/dvf.stable.out 
b/monetdb5/extras/dvf/Tests/dvf.stable.out
new file mode 100644
--- /dev/null
+++ b/monetdb5/extras/dvf/Tests/dvf.stable.out
@@ -0,0 +1,52 @@
+stdout of test 'dvf` in directory 'extras/dvf` itself:
+
+
+# 17:17:56 >  
+# 17:17:56 >  "/usr/bin/python" "dvf.py" "dvf"
+# 17:17:56 >  
+
+#SET optimizer = 'sequential_pipe';
+#declare opt_pipe_def string; set opt_pipe_def  = (select def from 
optimizers() where name = optimizer);
+#declare opt_pipe_def string; set opt_pipe_def  = (select def from 
optimizers() where name = optimizer);
+#set optimizer = substring(opt_pipe_def, 0, 
length(opt_pipe_def)-length('optimizer.joinPath();optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.history();optimizer.multiplex();optimizer.garbageCollector();'))
 || 
'optimizer.reorder();optimizer.deadcode();optimizer.reduce();optimizer.history();optimizer.multiplex();optimizer.DVframework();optimizer.garbageCollector();';
+#SELECT AVG(sample_value) FROM mseed.dataview WHERE network = 'FR';
+% mseed. # table_name
+% L1 # name
+% double # type
+% 24 # length
+[ -8023.4      ]
+#SELECT MAX(sample_value) FROM mseed.dataview WHERE seq_no < 1000;
+% mseed.dataview # table_name
+% L1 # name
+% int # type
+% 6 # length
+[ 123496       ]
+# MonetDB 5 server v11.14.0
+# This is an unreleased version
+# Serving database 'mTests_extras_dvf', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 15.629 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2012 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://lodz.ins.cwi.nl:37875/
+# MonetDB/GIS module loaded
+# MonetDB/JAQL module loaded
+# MonetDB/SQL module loaded
+num_rows: 25
+num_rows: 75
+#BBPdecref: range error 931
+#BBPdecref: range error 930
+num_rows: 25
+num_rows: 75
+num_rows: 1872
+num_rows: 3760
+num_rows: 90406
+#BBPdecref: range error 953
+#BBPdecref: range error 946
+#BBPdecref: range error 949
+
+# 17:17:57 >  
+# 17:17:57 >  "Done."
+# 17:17:57 >  
+
diff --git a/monetdb5/extras/dvf/Tests/example_mseed_files.zip 
b/monetdb5/extras/dvf/Tests/example_mseed_files.zip
new file mode 100644
index 
0000000000000000000000000000000000000000..a821669dd31c918b64116f9cad85441907c53044
GIT binary patch
literal 93721
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
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to