Changeset: 9f1de51326e1 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/9f1de51326e1 Added Files: sql/test/testdb-reload2/Tests/All sql/test/testdb-reload2/Tests/reload.py sql/test/testdb-reload2/Tests/reload.timeout Branch: default Log Message:
Test msqldump with --outputdir argument. diffs (109 lines): diff --git a/sql/test/testdb-reload2/Tests/All b/sql/test/testdb-reload2/Tests/All new file mode 100644 --- /dev/null +++ b/sql/test/testdb-reload2/Tests/All @@ -0,0 +1,1 @@ +reload diff --git a/sql/test/testdb-reload2/Tests/reload.py b/sql/test/testdb-reload2/Tests/reload.py new file mode 100644 --- /dev/null +++ b/sql/test/testdb-reload2/Tests/reload.py @@ -0,0 +1,92 @@ +'''\ +Load the "dump" from the sql/test/testdb test and dump it. Load that +dump into a fresh database and check the result of dumping that. +''' + +import os, sys, shutil, tempfile +try: + from MonetDBtesting import process +except ImportError: + import process +try: + from MonetDBtesting import sqllogictest +except ImportError: + import sqllogictest + +dbfarm = os.getenv('GDK_DBFARM') +tstdb = os.getenv('TSTDB') +tstsrcdir = os.getenv('TSTSRCDIR') + +if not tstdb or not dbfarm: + print('No TSTDB or GDK_DBFARM in environment') + sys.exit(1) + +tstdb2 = tstdb + '-clone' +if os.path.exists(os.path.join(dbfarm, tstdb2)): + shutil.rmtree(os.path.join(dbfarm, tstdb2)) + +with tempfile.TemporaryDirectory() as tmpdirname: +# start the first server + with process.server(stdin=process.PIPE, + stdout=process.PIPE, + stderr=process.PIPE, + mapiport='0') as s1: + # load data into the first server's database + with sqllogictest.SQLLogic(out=open(os.devnull, 'w')) as sql: + sql.connect(hostname='localhost', + port=s1.dbport, + database=s1.dbname) + sql.parse(os.path.join(tstsrcdir, os.pardir, os.pardir, + 'testdb', 'Tests', 'load.test')) + # dump the first server's database into tmpdirname + with process.client(lang='sqldump', + args=[f'--outputdir={tmpdirname}'], + server=s1, + stdin=process.PIPE, + stdout=process.PIPE, + stderr=process.PIPE) as d1: + d1out, d1err = d1.communicate() + s1out, s1err = s1.communicate() + sys.stdout.writelines([line for line in d1out.splitlines(keepends=True) if not line.startswith('#')]) + sys.stderr.writelines([line for line in d1err.splitlines(keepends=True) if not line.startswith('#')]) + sys.stdout.writelines([line for line in s1out.splitlines(keepends=True) if not line.startswith('#')]) + sys.stderr.writelines([line for line in s1err.splitlines(keepends=True) if not line.startswith('#')]) + # start the second server + with process.server(dbname=tstdb2, + mapiport='0', + stdin=process.PIPE, + stdout=process.PIPE, + stderr=process.PIPE) as s2: + # restore the first server's dump + with process.client(lang='sql', + args=[os.path.join(tmpdirname, 'dump.sql')], + format='trash', + echo=False, + server=s2, + stdin=process.PIPE, + stdout=process.PIPE, + stderr=process.PIPE) as c2: + c2out, c2err = c2.communicate() + # dump the second server's database + with process.client(lang='sqldump', + server=s2, + stdin=process.PIPE, + stdout=process.PIPE, + stderr=process.PIPE) as d2: + d2out, d2err = d2.communicate() + sys.stderr.write(d2err) + s2out, s2err = s2.communicate() + sys.stdout.writelines([line for line in s2out.splitlines(keepends=True) if not line.startswith('#')]) + sys.stderr.writelines([line for line in s2err.splitlines(keepends=True) if not line.startswith('#')]) + +if len(sys.argv) == 2 and sys.argv[1] == 'reload': + output = ''.join(d2out).splitlines(keepends=True) + while len(output) > 0 and output[0].startswith('--'): + del output[0] + stableout = os.path.join(tstsrcdir, '..', '..', 'testdb', 'Tests', 'dump-nogeom.stable.out') + stable = open(stableout, encoding='utf-8').readlines() + import difflib + for line in difflib.unified_diff(stable, output, fromfile='test', tofile=stableout): + sys.stderr.write(line) +else: + sys.stdout.writelines(d2out) diff --git a/sql/test/testdb-reload2/Tests/reload.timeout b/sql/test/testdb-reload2/Tests/reload.timeout new file mode 100644 --- /dev/null +++ b/sql/test/testdb-reload2/Tests/reload.timeout @@ -0,0 +1,1 @@ +3 _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org