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. |