|
From: <br...@us...> - 2009-02-02 16:04:25
|
Revision: 478
http://acmcontester.svn.sourceforge.net/acmcontester/?rev=478&view=rev
Author: brus07
Date: 2009-02-02 16:04:20 +0000 (Mon, 02 Feb 2009)
Log Message:
-----------
Now Tester plugins and Runner can work with ResultIoi type message.
Modified Paths:
--------------
ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs
ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/WorkRunner.cs
ACMServer/trunk/ACMServer/Runner/Class1.cs
ACMServer/trunk/ACMServer/Runner/Runner.csproj
ACMServer/trunk/ACMServer/Runner/Test.dll
Modified: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs
===================================================================
--- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs 2009-02-02 15:59:55 UTC (rev 477)
+++ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/TestRunnerPlugin.cs 2009-02-02 16:04:20 UTC (rev 478)
@@ -23,6 +23,14 @@
base.DataArrived(message);
return true;
}
+ if (message.IsType("TestingResultIoi") == true)
+ {
+ ResultIoi res = ResultIoi.CreateFromXml(message.Message);
+ Result result = res.ToResult();
+ SendResultToControl(result.ToStringX(), "Send");
+ base.DataArrived(message);
+ return true;
+ }
throw new Exception();
}
private void SendResultType(string text)
Modified: ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/WorkRunner.cs
===================================================================
--- ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/WorkRunner.cs 2009-02-02 15:59:55 UTC (rev 477)
+++ ACMServer/trunk/ACMServer/Plugins/TesterPlugins/TestRunnerPlugin/WorkRunner.cs 2009-02-02 16:04:20 UTC (rev 478)
@@ -105,8 +105,10 @@
lock (this)
{
if (message.IndexOf("submitioi") != -1)
- this.Send(new SystemMessage(result, "TestingResult"));
+ {
//this.Send(new SystemMessage(result, "TestingResultIoi"));
+ this.Send(new SystemMessage(result, "TestingResultIoi"));
+ }
else
this.Send(new SystemMessage(result, "TestingResult"));
}
Modified: ACMServer/trunk/ACMServer/Runner/Class1.cs
===================================================================
--- ACMServer/trunk/ACMServer/Runner/Class1.cs 2009-02-02 15:59:55 UTC (rev 477)
+++ ACMServer/trunk/ACMServer/Runner/Class1.cs 2009-02-02 16:04:20 UTC (rev 478)
@@ -5,6 +5,7 @@
using AcmContester.Library.LibraryExtention.Data;
using Main;
using Test;
+using Load;
namespace Checker
{
@@ -140,8 +141,104 @@
public static string GetResultIoi(string message)
{
+ Log log = Log.GetLog();
+ log.Loging(DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(), Log.Priority.INFO);
+ log.Loging(message, Log.Priority.INFO);
+ log.Loging("", Log.Priority.INFO);
+
+ IniFile iniFile = new IniFile("RealTesterConfig.ini");
+ string secureLever = iniFile.GetString("MainConfig", "SecureLevel", "Double");
+
SubmitIoi submit = SubmitIoi.CreateFromXml(message);
- return GetResult(submit.submit.ToString());
+
+ //TODO:
+ string code = submit.submit.sourceCode;
+ code = HtmlEntityDecode(code);
+ int language = submit.submit.language;
+ ResultIoi result = new ResultIoi(submit);
+ try
+ {
+ //Console.SetOut(File.CreateText("logout.txt"));
+ string[] data = File.ReadAllLines("InData.txt");
+ data[2] = data[2] + submit.submit.pbolemID + "\\";
+ string src = code;
+ TestEnv test = new TestEnv(src, language, data[1], data[2]);
+ test.Compile();
+
+ log.Loging("------------------BEGIN SOURCE--------------------------", Log.Priority.INFO);
+ Console.WriteLine("------------------BEGIN SOURCE--------------------------");
+
+ log.Loging(src, Log.Priority.INFO);
+ Console.WriteLine(src);
+
+ log.Loging("-------------------END SOURCE---------------------------", Log.Priority.INFO);
+ Console.WriteLine("-------------------END SOURCE---------------------------");
+
+ log.Loging(String.Format("Compile result: {0}, details: {1}, usedtime:{2}", test.comp.Result, test.comp.Details, test.comp.UsedTime), Log.Priority.INFO);
+ Console.WriteLine("Compile result: {0}, details: {1}, usedtime:{2}", test.comp.Result, test.comp.Details, test.comp.UsedTime);
+
+ log.Loging(String.Format("Comp Output: {0}", test.comp.CompilerOutput), Log.Priority.INFO);
+ Console.WriteLine("Comp Output: {0}", test.comp.CompilerOutput);
+
+ if (test.comp.Result == CompRes.OK)
+ {
+ SecureType secureType = SecureType.Double;
+ try
+ {
+ secureType = (SecureType)Enum.Parse(typeof(SecureType), secureLever, true);
+ }
+ catch (ArgumentException)
+ {
+ }
+ if (secureLever == "None")
+ secureType = SecureType.None;
+ test.RunAllTests(secureType);
+
+ for (int i = 0; i < test.run.results.Length; i++)
+ {
+ log.Loging(String.Format("Test #{0} result: {1}, details: {2}, usedtime:{3}, usedRealTime: {4}, usedmemory: {5}", i + 1,
+ test.run.results[i].res, test.run.results[i].Details, test.run.results[i].UsedTime, test.run.results[i].UsedRealTime, test.run.results[i].UsedMemory), Log.Priority.INFO);
+ Console.WriteLine("Test #{0} result: {1}, details: {2}, usedtime:{3}, usedRealTime: {4}, usedmemory: {5}", i + 1,
+ test.run.results[i].res, test.run.results[i].Details, test.run.results[i].UsedTime, test.run.results[i].UsedRealTime, test.run.results[i].UsedMemory);
+ }
+ }
+
+
+ //TODO:
+ result.res = test.comp.Result.ToString();
+ if (test.comp.Result == CompRes.OK)
+ {
+ int usedTime = -1;
+ int usedMemory = -1;
+ result.testResults = new TestResIoi[test.run.results.Length];
+ for (int i = 0; i < test.run.results.Length; i++)
+ {
+ result.testResults[i] = new TestResIoi();
+
+ usedTime = Math.Max(usedTime, test.run.results[i].UsedTime);
+ usedMemory = Math.Max(usedMemory, test.run.results[i].UsedMemory);
+ result.res = test.run.results[i].res.ToString();
+
+ result.testResults[i].input = test.run.test.tests[i].input;
+ result.testResults[i].output = test.run.test.tests[i].output;
+ result.testResults[i].points = test.run.test.tests[i].points;
+ result.testResults[i].contestantOutput = test.run.results[i].UserOutput;
+ result.testResults[i].usedMemory = test.run.results[i].UsedMemory;
+ result.testResults[i].usedTime = test.run.results[i].UsedTime;
+ result.testResults[i].id = i;
+ result.testResults[i].res = test.run.results[i].res.ToString();
+ }
+ result.usedMemory = usedTime;
+ result.usedTime = usedMemory;
+ }
+ }
+ catch (Exception tex)
+ {
+ log.Loging("Runner:GetResult - Exception (" + tex + ": " + tex.Message, Log.Priority.INFO);
+ log.Loging(tex.StackTrace, Log.Priority.INFO);
+ result.res = "Exception";
+ }
+ return result.ToStringX();
}
}
}
Modified: ACMServer/trunk/ACMServer/Runner/Runner.csproj
===================================================================
--- ACMServer/trunk/ACMServer/Runner/Runner.csproj 2009-02-02 15:59:55 UTC (rev 477)
+++ ACMServer/trunk/ACMServer/Runner/Runner.csproj 2009-02-02 16:04:20 UTC (rev 478)
@@ -28,11 +28,12 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="Load, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" />
<Reference Include="Main, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
- <Reference Include="Test, Version=1.0.3267.427, Culture=neutral, processorArchitecture=x86" />
+ <Reference Include="Test, Version=1.0.3320.28735, Culture=neutral, processorArchitecture=x86" />
</ItemGroup>
<ItemGroup>
<Compile Include="Class1.cs" />
Modified: ACMServer/trunk/ACMServer/Runner/Test.dll
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|