upgrade to python3;add some validator examples
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
|
||||
import math, os, resource, signal, string, sys, threading, logging, time, pickle
|
||||
import shutil, Queue
|
||||
import shutil, queue
|
||||
import unittest
|
||||
import pdb
|
||||
from engineconfig import getConfig
|
||||
@@ -103,12 +103,12 @@ class SimpleTester(TesterBase):
|
||||
if os.path.exists(pcname):
|
||||
try:
|
||||
os.unlink(pcname)
|
||||
except OSError, e:
|
||||
except OSError:
|
||||
self.logger.exception(
|
||||
"Failed to delete presetcode file %s" % pcname)
|
||||
return False
|
||||
f = open(pcname, 'w')
|
||||
f.write(string.replace(presetcode.code, '\r\n', '\n'))
|
||||
f.write(presetcode.code.replace('\r\n', '\n'))
|
||||
f.write('\n');
|
||||
f.close()
|
||||
|
||||
@@ -118,24 +118,24 @@ class SimpleTester(TesterBase):
|
||||
if os.path.exists(datadirsource):
|
||||
try:
|
||||
os.unlink(datadirsource)
|
||||
except OSError, e:
|
||||
except OSError:
|
||||
self.logger.exception("Failed to delete source")
|
||||
return False
|
||||
if os.path.exists(datadirtarget):
|
||||
try:
|
||||
os.unlink(datadirtarget)
|
||||
except OSError, e:
|
||||
except OSError:
|
||||
self.logger.exception("Failed to delete target")
|
||||
return False
|
||||
|
||||
# preprocess source code
|
||||
code = string.replace(submit.code, '\r\n', '\n')
|
||||
code = string.replace(code, chr(0x1a), '') # char generated by tc
|
||||
code = string.replace(code, 'getch()', '')
|
||||
code = string.replace(code, 'getch ()', '')
|
||||
code = string.replace(code, 'getch ( )', '')
|
||||
code = submit.code.replace('\r\n', '\n')
|
||||
code = code.replace(chr(0x1a), '') # char generated by tc
|
||||
code = code.replace('getch()', '')
|
||||
code = code.replace('getch ()', '')
|
||||
code = code.replace('getch ( )', '')
|
||||
|
||||
code = string.replace(code, '\r\n', '\n')
|
||||
code = code.replace('\r\n', '\n')
|
||||
# write source to disk
|
||||
f = open(datadirsource, 'w')
|
||||
f.write(code)
|
||||
@@ -146,7 +146,7 @@ class SimpleTester(TesterBase):
|
||||
config = getConfig()
|
||||
try:
|
||||
submit.user = config.runas.get_nowait()
|
||||
except Queue.Empty:
|
||||
except queue.Empty:
|
||||
self.logger.exception("No runas user left, please create more!")
|
||||
return False
|
||||
rundir = self.get_rundir(submit)
|
||||
@@ -157,12 +157,12 @@ class SimpleTester(TesterBase):
|
||||
if os.path.exists(rundir):
|
||||
try:
|
||||
self._remove(rundir)
|
||||
except OSError, e:
|
||||
except OSError:
|
||||
self.logger.exception("Failed to delete rundir")
|
||||
config.runas.put(submit.user)
|
||||
return False
|
||||
os.mkdir(rundir)
|
||||
os.chmod(rundir, 0775)
|
||||
os.chmod(rundir, 0o775)
|
||||
|
||||
return True
|
||||
|
||||
@@ -199,7 +199,7 @@ class SimpleTester(TesterBase):
|
||||
for code in submit.get_presetcodes():
|
||||
if not code.isheader:
|
||||
cmd.append(code.name)
|
||||
self.logger.debug(string.join(cmd, '_'))
|
||||
self.logger.debug('_'.join(cmd))
|
||||
|
||||
errfile = os.path.join(datadir, 'compile.err')
|
||||
|
||||
@@ -210,9 +210,8 @@ class SimpleTester(TesterBase):
|
||||
|
||||
compilemsg = None
|
||||
if os.path.exists(errfile):
|
||||
f = file(errfile, 'r')
|
||||
compilemsg = string.join(f.readlines(), '')
|
||||
f.close()
|
||||
with open(errfile, 'r') as f:
|
||||
compilemsg = ''.join(f.readlines())
|
||||
|
||||
if compilemsg:
|
||||
submit.set_compilemessage(compilemsg)
|
||||
@@ -283,7 +282,7 @@ class SimpleTester(TesterBase):
|
||||
s = s.replace('<datadir>', datadir)
|
||||
s = s.replace('<user>', submit.user)
|
||||
self.runenv[k] = s
|
||||
self.logger.debug(string.join(cmd, ' ') + ' ' + str(self.runenv))
|
||||
self.logger.debug(' '.join(cmd) + ' ' + str(self.runenv))
|
||||
|
||||
(exitcode, sig, timeused, memused) = \
|
||||
self._execute(submit, cmd, timelimit = testcase.timelimit * 10,
|
||||
@@ -365,22 +364,22 @@ class SimpleTester(TesterBase):
|
||||
try:
|
||||
os.close(0)
|
||||
os.open(infile, os.O_RDONLY)
|
||||
except Exception, e:
|
||||
print e
|
||||
except Exception as e:
|
||||
print(e)
|
||||
sys.exit(125)
|
||||
if outfile:
|
||||
try:
|
||||
os.close(1)
|
||||
os.open(outfile, os.O_WRONLY|os.O_CREAT|os.O_TRUNC, 0666)
|
||||
except Exception, e:
|
||||
print e
|
||||
os.open(outfile, os.O_WRONLY|os.O_CREAT|os.O_TRUNC, 0o666)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
sys.exit(125)
|
||||
if errfile:
|
||||
try:
|
||||
os.close(2)
|
||||
os.open(errfile, os.O_WRONLY|os.O_CREAT|os.O_TRUNC, 0666)
|
||||
except Exception, e:
|
||||
print e
|
||||
os.open(errfile, os.O_WRONLY|os.O_CREAT|os.O_TRUNC, 0o666)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
sys.exit(125)
|
||||
|
||||
#os.chdir(self.get_datadir(submit))
|
||||
@@ -398,22 +397,23 @@ class SimpleTester(TesterBase):
|
||||
# read information form statfile
|
||||
if statfile:
|
||||
try:
|
||||
stat = pickle.load(file(statfile, 'r'))
|
||||
with open(statfile, 'rb') as f:
|
||||
stat = pickle.load(f)
|
||||
exitcode = stat['exitcode']
|
||||
sig = stat['sig']
|
||||
timeused = stat['timeused']
|
||||
memused = 0
|
||||
if self.basemem.has_key('RSS'):
|
||||
if 'RSS' in self.basemem:
|
||||
memused += stat['memrss'] - self.basemem['RSS']
|
||||
if self.basemem.has_key('Data'):
|
||||
if 'Data' in self.basemem:
|
||||
memused += stat['memdata'] - self.basemem['Data']
|
||||
if self.basemem.has_key('Stack'):
|
||||
if 'Stack' in self.basemem:
|
||||
memused += stat['memstack'] - self.basemem['Stack']
|
||||
memused = max(0, memused)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
self.logger.exception(e)
|
||||
self.logger.error("Failed to read statfile: %s" % statfile)
|
||||
exitcode = 127 # judge script error
|
||||
exitcode = 127 # judge script error
|
||||
|
||||
return (exitcode, sig, timeused, memused)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user