upgrade to python3;add some validator examples
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import sys, string, hashlib, os
|
||||
from stat import *
|
||||
@@ -9,9 +9,9 @@ def check_file(name, size, md5sum):
|
||||
m = hashlib.md5()
|
||||
if os.path.isfile(name):
|
||||
s = os.stat(name)[ST_SIZE]
|
||||
if s == string.atoi(size):
|
||||
if s == int(size):
|
||||
f = open(name, 'rb')
|
||||
m.update(f.read(string.atoi(size)))
|
||||
m.update(f.read(int(size)))
|
||||
f.close()
|
||||
d = m.hexdigest()
|
||||
result.write("%s %d %s\n" % (name, s, d))
|
||||
@@ -26,9 +26,10 @@ if __name__ == '__main__':
|
||||
result = open(sys.argv[3], 'w+')
|
||||
fstdout = open(sys.argv[2], 'r')
|
||||
for line in fstdout:
|
||||
name, size, md5sum = string.split(string.strip(line), ' ')
|
||||
name, size, md5sum = line.strip().split(' ')
|
||||
if not check_file(name, size, md5sum):
|
||||
print 'WA'; break
|
||||
print('WA')
|
||||
break
|
||||
fstdout.close()
|
||||
result.close()
|
||||
print 'AC'
|
||||
print('AC')
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os, sys, string, signal, resource, time, getopt, pickle
|
||||
|
||||
@@ -43,22 +43,23 @@ class RunGuard:
|
||||
optlist, self.args = getopt.gnu_getopt(sys.argv, 'e:t:m:d:o:T:p')
|
||||
for o, v in optlist:
|
||||
if o == '-e':
|
||||
self.nproc += string.atoi(v)
|
||||
self.nproc += int(v)
|
||||
if o == '-t':
|
||||
self.timelimit = string.atoi(v)
|
||||
self.timelimit = int(v)
|
||||
if o == '-m':
|
||||
self.memlimit = string.atoi(v) * 1024
|
||||
self.memlimit = int(v) * 1024
|
||||
if o == '-d':
|
||||
self.rundir = v
|
||||
if o == '-o':
|
||||
self.writeto = v
|
||||
if o == '-T':
|
||||
self.timetime = string.atoi(v)
|
||||
self.timetime = int(v)
|
||||
if o == '-p':
|
||||
self.usepickle = True
|
||||
|
||||
v = os.getenv('GUARD_RLIMIT_OFILE')
|
||||
if v: self.ofile = string.atoi(v)
|
||||
if v:
|
||||
self.ofile = int(v)
|
||||
self.ldpreload = os.getenv('GUARD_LD_PRELOAD')
|
||||
|
||||
def execute(self):
|
||||
@@ -90,7 +91,7 @@ class RunGuard:
|
||||
while pid == 0:
|
||||
try:
|
||||
os.kill(self.childpid, signal.SIGKILL)
|
||||
except OSError, e:
|
||||
except OSError:
|
||||
pass
|
||||
pid, status, ru = os.wait4(self.childpid, os.WNOHANG)
|
||||
time.sleep(0.1)
|
||||
@@ -106,24 +107,27 @@ class RunGuard:
|
||||
def _get_memused(self):
|
||||
procdir = '/proc/%d' % self.childpid
|
||||
if os.path.isdir(procdir):
|
||||
cmdline = file(procdir + '/cmdline', 'r').readlines()
|
||||
with open(procdir + '/cmdline', 'r') as f:
|
||||
cmdline = f.readlines()
|
||||
|
||||
# do not get memory usage of this script after just fork
|
||||
if len(cmdline) > 0 and \
|
||||
string.strip(cmdline[0], '\0') != \
|
||||
string.join(self.args[1:], '\0'):
|
||||
cmdline[0].strip('\0') != \
|
||||
'\0'.join(self.args[1:]):
|
||||
return
|
||||
|
||||
procstatus = file(procdir + '/status', 'r')
|
||||
rss = 0; data = 0; stack = 0
|
||||
for line in procstatus:
|
||||
n = line[0:6]
|
||||
if n == 'VmRSS:':
|
||||
rss = string.atoi(line[7:-3])
|
||||
if n == 'VmData':
|
||||
data = string.atoi(line[8:-3])
|
||||
if n == 'VmStk:':
|
||||
stack = string.atoi(line[7:-3])
|
||||
with open(procdir + '/status', 'r') as procstatus:
|
||||
rss = 0
|
||||
data = 0
|
||||
stack = 0
|
||||
for line in procstatus:
|
||||
n = line[0:6]
|
||||
if n == 'VmRSS:':
|
||||
rss = int(line[7:-3])
|
||||
if n == 'VmData':
|
||||
data = int(line[8:-3])
|
||||
if n == 'VmStk:':
|
||||
stack = int(line[7:-3])
|
||||
self.memrss = max(self.memrss, rss)
|
||||
if self.memdata + self.memstack < data + stack:
|
||||
self.memdata = data
|
||||
@@ -134,26 +138,23 @@ class RunGuard:
|
||||
if self.writeto == None:
|
||||
f = sys.stdout
|
||||
else:
|
||||
f = file(self.writeto, 'w')
|
||||
|
||||
if self.usepickle:
|
||||
obj = { 'exitcode' : self.exitcode,
|
||||
'sig' : self.sig,
|
||||
'timeused' : self.timeused,
|
||||
'memrss' : self.memrss,
|
||||
'memdata' : self.memdata,
|
||||
'memstack' : self.memstack }
|
||||
pickle.dump(obj, f)
|
||||
else:
|
||||
print >>f, "exitcode: %d" % self.exitcode
|
||||
print >>f, "sig: %d" % self.sig
|
||||
print >>f, "time: %.3f" % self.timeused
|
||||
print >>f, "rss: %d" % self.memrss
|
||||
print >>f, "data: %d" % self.memdata
|
||||
print >>f, "stack: %d" % self.memstack
|
||||
|
||||
if self.writeto != None: f.close()
|
||||
with open(self.writeto, 'w') as f:
|
||||
if self.usepickle:
|
||||
obj = { 'exitcode' : self.exitcode,
|
||||
'sig' : self.sig,
|
||||
'timeused' : self.timeused,
|
||||
'memrss' : self.memrss,
|
||||
'memdata' : self.memdata,
|
||||
'memstack' : self.memstack }
|
||||
pickle.dump(obj, f)
|
||||
else:
|
||||
print("exitcode: %d" % self.exitcode, file=f)
|
||||
print("sig: %d" % self.sig, file=f)
|
||||
print("time: %.3f" % self.timeused, file=f)
|
||||
print("rss: %d" % self.memrss, file=f)
|
||||
print("data: %d" % self.memdata, file=f)
|
||||
print("stack: %d" % self.memstack, file=f)
|
||||
|
||||
if __name__ == '__main__':
|
||||
os.umask(0002)
|
||||
os.umask(0o002)
|
||||
RunGuard().run()
|
||||
|
||||
Reference in New Issue
Block a user