68 lines
1.9 KiB
Python
Executable File
68 lines
1.9 KiB
Python
Executable File
#!/usr/bin/env python2.6
|
|
|
|
import os, signal, sys, logging, logging.handlers
|
|
|
|
judge = None
|
|
|
|
def setup_logging():
|
|
from engineconfig import getConfig
|
|
config = getConfig()
|
|
|
|
judgelog = os.path.join(config.judgehome, config.logdir,
|
|
'judge-%s.log' % config.profile)
|
|
testerlog = os.path.join(config.judgehome, config.logdir,
|
|
'tester-%s.log' % config.profile)
|
|
|
|
# setup logger
|
|
# judge.main is for main judge program
|
|
logger = logging.getLogger('main')
|
|
hdlr = logging.handlers.RotatingFileHandler(
|
|
judgelog, 'a', 1024 * 1024 * 5, 4)
|
|
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
|
|
hdlr.setFormatter(formatter)
|
|
logger.addHandler(hdlr)
|
|
if config.debug:
|
|
logger.setLevel(logging.DEBUG)
|
|
else:
|
|
logger.setLevel(logging.INFO)
|
|
|
|
# judge.tester is for forked compiler and programs
|
|
logger = logging.getLogger('tester')
|
|
hdlr = logging.handlers.RotatingFileHandler(
|
|
testerlog, 'a', 1024 * 1024 * 5, 4)
|
|
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
|
|
hdlr.setFormatter(formatter)
|
|
logger.addHandler(hdlr)
|
|
if config.debug:
|
|
logger.setLevel(logging.DEBUG)
|
|
else:
|
|
logger.setLevel(logging.INFO)
|
|
|
|
def main():
|
|
judgehome = os.path.abspath(os.path.dirname(sys.argv[0]))
|
|
sys.path.insert(1, os.path.join(judgehome, 'python'))
|
|
|
|
from engineconfig import getConfig
|
|
config = getConfig()
|
|
config.judgehome = judgehome
|
|
vars = {'config': config}
|
|
|
|
execfile(sys.argv[1], vars, vars)
|
|
|
|
setup_logging()
|
|
|
|
from engine import JudgeEngine
|
|
judge = JudgeEngine()
|
|
|
|
# setup signal handler
|
|
signal.signal(signal.SIGINT, judge.quit)
|
|
signal.signal(signal.SIGQUIT, judge.quit)
|
|
signal.signal(signal.SIGTERM, judge.quit)
|
|
|
|
judge.run()
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|
|
# vim: set expandtab tabstop=4 shiftwidth=4:
|