|
|
@@ -17,8 +17,17 @@ def hello_world():
|
|
|
return 'Hello World!'
|
|
|
|
|
|
|
|
|
-@app.route('/api/judgeTest', methods=['POST'])
|
|
|
-def judge_test():
|
|
|
+'''
|
|
|
+code: string 源代码
|
|
|
+language: string 编程语言{cpp,java,c,python}
|
|
|
+timeLimit: int 时间限制
|
|
|
+memoryLimit: int 内存限制
|
|
|
+inputOutputMapping: hashmap 输入输出对
|
|
|
+'''
|
|
|
+
|
|
|
+
|
|
|
+@app.route('/api/judge', methods=['POST'])
|
|
|
+def judge():
|
|
|
start = time.time()
|
|
|
requestData = request.get_data(as_text=True)
|
|
|
data = json.loads(requestData)
|
|
|
@@ -47,89 +56,15 @@ def judge_test():
|
|
|
save_test_cases(input_list, output_list, td_total)
|
|
|
src_file = save_code(language, code)
|
|
|
rst = judgement.judge(src_file, 'testcases', td_total, time_limit, memory_limit, language)
|
|
|
-
|
|
|
- # save_test_cases_by_cid(cid, input_list, output_list, td_total)
|
|
|
- # src_file = save_code_by_cid(cid, language, code)
|
|
|
- # rst = judgement.judge_by_cid(src_file, 'testcases-'+cid, td_total, time_limit, memory_limit, language,cid)
|
|
|
os.remove(src_file)
|
|
|
shutil.rmtree('testcases')
|
|
|
os.chdir(app_path)
|
|
|
app.logger.info(os.getcwd())
|
|
|
+ shutil.rmtree(dir_name)
|
|
|
app.logger.info(time.time() - start)
|
|
|
return rst
|
|
|
|
|
|
|
|
|
-'''
|
|
|
-code: string 源代码
|
|
|
-language: string 编程语言{cpp,java,c,python}
|
|
|
-timeLimit: int 时间限制
|
|
|
-memoryLimit: int 内存限制
|
|
|
-inputOutputMapping: hashmap 输入输出对
|
|
|
-'''
|
|
|
-
|
|
|
-
|
|
|
-@app.route('/api/judge', methods=['POST'])
|
|
|
-def judge():
|
|
|
- start = time.time()
|
|
|
- requestData = request.get_data(as_text=True)
|
|
|
- data = json.loads(requestData)
|
|
|
- code = data['code']
|
|
|
- language = data['language']
|
|
|
- cid = str(data['commitId'])
|
|
|
- time_limit = int(data['timeLimit'])
|
|
|
- memory_limit = int(data['memoryLimit'])
|
|
|
- input_list = data['inputList']
|
|
|
- output_list = data['outputList']
|
|
|
- if len(input_list) != len(output_list):
|
|
|
- return {"result_list": [{'result': "System Error"}],
|
|
|
- 'message': 'test data incompleted'}
|
|
|
- td_total = len(input_list)
|
|
|
- # save_test_cases(input_list, output_list, td_total)
|
|
|
- # src_file = save_code(language, code)
|
|
|
- # rst = judgement.judge(src_file, 'testcases', td_total, time_limit, memory_limit, language)
|
|
|
-
|
|
|
- save_test_cases_by_cid(cid, input_list, output_list, td_total)
|
|
|
- src_file = save_code_by_cid(cid, language, code)
|
|
|
- rst = judgement.judge_by_cid(src_file, 'testcases-'+cid, td_total, time_limit, memory_limit, language,cid)
|
|
|
- os.remove(src_file)
|
|
|
- shutil.rmtree('main-'+cid)
|
|
|
- shutil.rmtree('testcases-'+cid)
|
|
|
- app.logger.info(time.time() - start)
|
|
|
- return rst
|
|
|
-
|
|
|
-
|
|
|
-def save_test_cases_by_cid(cid, input_list, output_list, td_total):
|
|
|
- dir_name = 'testcases-' + cid
|
|
|
- if os.path.exists(dir_name):
|
|
|
- shutil.rmtree(dir_name)
|
|
|
- os.mkdir(dir_name)
|
|
|
- for i in range(0, td_total):
|
|
|
- in_file = open(dir_name + '/' + str(i) + '.in', 'w')
|
|
|
- in_file.write(input_list[i])
|
|
|
- out_file = open(dir_name + '/' + str(i) + '.out', 'w')
|
|
|
- out_file.write(output_list[i])
|
|
|
-
|
|
|
-
|
|
|
-def save_code_by_cid(cid, language, code):
|
|
|
- dir_name = 'main-' + cid
|
|
|
- if os.path.exists(dir_name):
|
|
|
- shutil.rmtree(dir_name)
|
|
|
- os.mkdir(dir_name)
|
|
|
-
|
|
|
- src_file = None
|
|
|
- if language == 'c':
|
|
|
- src_file = open(dir_name+'/'+'main.c', 'w')
|
|
|
- elif language == 'cpp':
|
|
|
- src_file = open(dir_name+'/'+'main.cpp', 'w')
|
|
|
- elif language == 'java':
|
|
|
- src_file = open(dir_name+'/'+'Main.java', 'w')
|
|
|
- elif language == 'python':
|
|
|
- src_file = open(dir_name+'/'+'main.py', 'w')
|
|
|
- app.logger.info(src_file.name)
|
|
|
- src_file.write(code)
|
|
|
- return src_file.name
|
|
|
-
|
|
|
-
|
|
|
def save_test_cases(input_list, output_list, td_total):
|
|
|
if os.path.exists('testcases'):
|
|
|
shutil.rmtree('testcases')
|