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

Reply via email to