Changeset: 8ab53f51a540 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=8ab53f51a540
Modified Files:
sql/test/BugTracker-2015/Tests/schemadiff.Bug-3778.SQL.py
Branch: default
Log Message:
Use portable way of creating temporary directory, and cleanup afterwards.
diffs (120 lines):
diff --git a/sql/test/BugTracker-2015/Tests/schemadiff.Bug-3778.SQL.py
b/sql/test/BugTracker-2015/Tests/schemadiff.Bug-3778.SQL.py
--- a/sql/test/BugTracker-2015/Tests/schemadiff.Bug-3778.SQL.py
+++ b/sql/test/BugTracker-2015/Tests/schemadiff.Bug-3778.SQL.py
@@ -1,4 +1,4 @@
-import os, sys, socket, glob, monetdb.sql, threading, time, codecs, shutil
+import os, sys, socket, glob, monetdb.sql, threading, time, codecs, shutil,
tempfile
try:
from MonetDBtesting import process
except ImportError:
@@ -29,61 +29,62 @@ def freeport():
sock.close()
return port
-tmpdir = os.path.join(os.environ.get('TMPDIR', '/tmp'), 'remotetest')
-if os.path.exists(tmpdir):
- shutil.rmtree(tmpdir)
-if not os.path.exists(tmpdir):
- os.makedirs(tmpdir)
+tmpdir = tempfile.mkdtemp()
-masterport = freeport()
-masterproc = process.server(mapiport=masterport, dbname="master",
dbfarm=os.path.join(tmpdir, 'master'), stdin = process.PIPE, stdout =
process.PIPE)
-masterconn = monetdb.sql.connect(database='', port=masterport, autocommit=True)
+try:
+ masterport = freeport()
+ masterproc = process.server(mapiport=masterport, dbname="master",
dbfarm=os.path.join(tmpdir, 'master'), stdin = process.PIPE, stdout =
process.PIPE)
+ masterconn = monetdb.sql.connect(database='', port=masterport,
autocommit=True)
-# load data (in parallel)
-def worker_load(workerrec):
- c = workerrec['conn'].cursor()
- stable = shardtable + workerrec['tpf']
+ # load data (in parallel)
+ def worker_load(workerrec):
+ c = workerrec['conn'].cursor()
+ stable = shardtable + workerrec['tpf']
- screateq = 'create table ' + stable + ' ' +
shardedtabledefslightlydifferent;
- c.execute(screateq)
- c.execute(tabledata.replace("%SHARD%", stable))
+ screateq = 'create table ' + stable + ' ' +
shardedtabledefslightlydifferent;
+ c.execute(screateq)
+ c.execute(tabledata.replace("%SHARD%", stable))
-# setup and start workers
-workers = []
-for i in range(nworkers):
- workerport = freeport()
- workerdbname = 'worker_' + str(i)
- workerrec = {
- 'no' : i,
- 'port' : workerport,
- 'dbname' : workerdbname,
- 'dbfarm' : os.path.join(tmpdir, workerdbname),
- 'mapi' : 'mapi:monetdb://localhost:'+str(workerport)+'/' +
workerdbname,
- 'tpf' : '_' + str(i)
- }
- workerrec['proc'] = process.server(mapiport=workerrec['port'],
dbname=workerrec['dbname'], dbfarm=workerrec['dbfarm'], stdin = process.PIPE,
stdout = process.PIPE)
- workerrec['conn'] = monetdb.sql.connect(database=workerrec['dbname'],
port=workerrec['port'], autocommit=True)
- t = threading.Thread(target=worker_load, args = [workerrec])
- t.start()
- workerrec['loadthread'] = t
- workers.append(workerrec)
+ # setup and start workers
+ workers = []
+ for i in range(nworkers):
+ workerport = freeport()
+ workerdbname = 'worker_' + str(i)
+ workerrec = {
+ 'no' : i,
+ 'port' : workerport,
+ 'dbname' : workerdbname,
+ 'dbfarm' : os.path.join(tmpdir, workerdbname),
+ 'mapi' : 'mapi:monetdb://localhost:'+str(workerport)+'/' +
workerdbname,
+ 'tpf' : '_' + str(i)
+ }
+ workerrec['proc'] = process.server(mapiport=workerrec['port'],
dbname=workerrec['dbname'], dbfarm=workerrec['dbfarm'], stdin = process.PIPE,
stdout = process.PIPE)
+ workerrec['conn'] = monetdb.sql.connect(database=workerrec['dbname'],
port=workerrec['port'], autocommit=True)
+ t = threading.Thread(target=worker_load, args = [workerrec])
+ t.start()
+ workerrec['loadthread'] = t
+ workers.append(workerrec)
-# wait until they are finished loading
-for workerrec in workers:
- workerrec['loadthread'].join()
+ # wait until they are finished loading
+ for workerrec in workers:
+ workerrec['loadthread'].join()
-# glue everything together on the master
-mtable = 'create merge table ' + shardtable + ' ' + shardedtabledef
-c = masterconn.cursor()
-c.execute(mtable)
-for workerrec in workers:
- rtable = 'create remote table ' + shardtable + workerrec['tpf'] + ' ' +
shardedtabledef + ' on \'' + workerrec['mapi'] + '\''
- atable = 'alter table ' + shardtable + ' add table ' + shardtable +
workerrec['tpf'];
- c.execute(rtable)
- c.execute(atable)
+ # glue everything together on the master
+ mtable = 'create merge table ' + shardtable + ' ' + shardedtabledef
+ c = masterconn.cursor()
+ c.execute(mtable)
+ for workerrec in workers:
+ rtable = 'create remote table ' + shardtable + workerrec['tpf'] + ' '
+ shardedtabledef + ' on \'' + workerrec['mapi'] + '\''
+ atable = 'alter table ' + shardtable + ' add table ' + shardtable +
workerrec['tpf'];
+ c.execute(rtable)
+ c.execute(atable)
-c.execute("select * from " + shardtable + workers[0]['tpf'] )
-print str(c.fetchall())
+ c.execute("select * from " + shardtable + workers[0]['tpf'] )
+ print str(c.fetchall())
+
+finally:
+ if os.path.exists(tmpdir):
+ shutil.rmtree(tmpdir)
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list