public async Task <ICollection <UnitTestResult> > GenerateResultsImpl(SubmissionData data, string snapshot, DevAssignment assignment, ICollection <SnapshotMethod> snapshotMethods) { using (var handler = new DirectoryHandler(GetTestDirectory(data))) { var testProject = new TestProjectObj(handler.Directory, assignment.TestProject); testProject.MoveFilesToProject(data.SnapshotSourceFiles(snapshot)); var preprocessorArguments = GetPreprocessorArguments(snapshotMethods); var process = new EngineProcess(GetEngineProcessData(handler.Directory, testProject, preprocessorArguments)); var exitCode = process.Run(); if (exitCode == 0) { process.Stop(); return(GetUnitTestResults(assignment.TestProject, ResultsFile(handler.Directory))); } EngineReportExceptionData exception; using (var reader = process.StandardError) { exception = new EngineReportExceptionData(reader.ReadToEnd()) { Type = "Build", }; } process.Stop(); throw exception; } }
public void Launch(EngineSettings settings) { Console.WriteLine ("====================="); Console.WriteLine ("Launching Game Engine"); Console.WriteLine ("====================="); // TODO: Should this be dependent on "verbose" flag? //Console.WriteDebugLine ("Engine ID: " + engineId); var context = EngineContext.New (settings); context.Settings.OutputType = ConsoleOutputType.Game; context.PopulateFromSettings (); context.AddCompleteLogic (); context.Initialize (); //EngineProcess engine = null; // TODO: Remove if not needed try { using(var engine = new EngineProcess (context)) { engine.Run(); } } catch (GameException ex) { context.Console.WriteDebugLine (ex.Message); } //finally { // if (engine != null) // engine.Dispose (); }
public EngineContext(EngineProcess engine) { throw new NotImplementedException (); //Engine = engine; //Construct (); }
public void RunTestMethod(JavaTestClass javaTestClass, JavaTestMethod javaTestMethod, string originalCodeDirectory, string traceDirectory, string referenceCode = null) { var packageClassAndMethod = $"{javaTestClass.Package}.{javaTestClass.Name}#{javaTestMethod.Name}"; var commandOptions = GetCommandOptions(packageClassAndMethod, originalCodeDirectory, javaTestClass.ClassPath, javaTestClass.Name, javaTestMethod.Name, traceDirectory, referenceCode); var process = new EngineProcess(Command, commandOptions, originalCodeDirectory); try { var exitCode = process.Run(); javaTestMethod.Passed = exitCode == 0; } catch (Exception e) { var exception = new EngineExceptionDto() { Report = JavaEngineReportExceptionFactory .GenerateReportForJunitTestRunnerTestMethodProcess(process, e, javaTestClass, javaTestMethod) }; process.Stop(); throw exception; } process.Stop(); }
public static string GenerateReportForCompileVerification(EngineProcess process, IList <string> sourceFiles) { var compilerError = GetErrorFromProcess(process); var joinFiles = sourceFiles.Join(", "); return($"Failure to compile and verify.\nCommand args: {process.Arguments}\nSource Files: {joinFiles}\nCompile Error:\n{compilerError}"); }
public static string GenerateReportForInstrumentation(EngineProcess p, Exception e) { var instrumentationError = GetErrorFromProcess(p); return("Failure to instrument.\n" + $"{GetMessageFromException(e)}\n" + $"Instrumentation Error:\n{instrumentationError}"); }
public void Compile(string workingDirectory, IList <string> sourceFiles) { var process = new EngineProcess(Command, GetCommandOptions(sourceFiles), workingDirectory); RunProcess(process); VerifyCompilation(process, sourceFiles); process.Stop(); }
public static string GenerateReportForCompileProcess(EngineProcess process, Exception e) { var compileError = GetErrorFromProcess(process); return($"Failure to compile.\n" + $"{GetMessageFromException(e)}\n" + $"Compile Error:\n{compileError}"); }
public static string GenerateReportForRawCoveragerReport(EngineProcess process, Exception exception, IList <JavaTestClass> javaClasses) { var reportProcess = GetErrorFromProcess(process); return($"Failure to run Raw Coverage Report.\n" + $"Name of Java Class:{GetNamesFromJavaClasses(javaClasses)}\n" + $"{GetMessageFromException(exception)}\n" + $"Report Process:\n{reportProcess}"); }
public static string GenerateReportForReflectionProcess(EngineProcess p, Exception e, JavaTestClass javaTestClass) { var reflectionError = GetErrorFromProcess(p); var name = GetNameFromJavaClass(javaTestClass); return($"Failure to reflect.\n" + $"Name of Java Class: {name}\n" + $"{GetMessageFromException(e)}\n" + $"Reflection Error: {reflectionError}"); }
public static string GenerateReportForJunitTestRunnerTestMethodProcess(EngineProcess p, Exception e, JavaTestClass javaTestClass, JavaTestMethod javaTestMethod) { var name = GetNameFromJavaMethod(javaTestClass, javaTestMethod); var junitTestError = GetErrorFromProcess(p); return("Failure to junit test runner for test testMethod.\n" + $"Name of Java Method: {name}\n" + $"{GetMessageFromException(e)}\n" + $"Junit Test Error:\n{junitTestError}"); }
public static string GenerateReportForTraceJavaMethod(EngineProcess p, Exception e, JavaTestClass javaTestClass, JavaTestMethod javaTestMethod) { var name = GetNameFromJavaMethod(javaTestClass, javaTestMethod); var traceError = GetErrorFromProcess(p); return("Failure to run trace on java testMethod.\n" + $"Name of Java Method: {name}\n" + $"{GetMessageFromException(e)}\n" + $"Trace Error:\n{traceError}"); }
private void VerifyCompilation(EngineProcess process, IList <string> sourceFiles) { if (!VerifyCompile(sourceFiles)) { var exception = new EngineExceptionDto() { Report = JavaEngineReportExceptionFactory.GenerateReportForCompileVerification(process, sourceFiles), }; process.Stop(); throw exception; } }
public void Run_IncorrectClangHelpShouldNotReutrnExitCodeOfOne() { var process = new EngineProcess( new EngineProcessData() { WaitForExit = 10000, Command = "clang++", Arguments = "help", WorkingDirectory = Directory.GetCurrentDirectory() }); var code = process.Run(); Assert.AreNotEqual(0, code); }
public async Task AnalyzePosition_Should_ShouldAnalyzePositionAfterACoupleOfMoves() { var engineProcess = new EngineProcess(); var stockfishEngine = new StockfishEngine(engineProcess); await stockfishEngine.Initialize(EngineConsts.defaultAnalyzeDepth); await stockfishEngine.SetPosition("e2e4", "e7e5", "f1c4", "f8e7"); var result = await stockfishEngine.AnalyzePosition(); Assert.Contains("bestmove", result); Assert.Contains("d1h5", result); Assert.Contains("ponder", result); }
public void Run_IncorrectClangHelpShouldHaveErrorOutput() { var process = new EngineProcess( new EngineProcessData() { WaitForExit = 10000, Command = "clang++", Arguments = "help", WorkingDirectory = Directory.GetCurrentDirectory() }); process.Run(); var error = process.StandardError; Assert.IsFalse(error.EndOfStream); }
public async Task BuildEngineEvaluations_Should_EvaluateWithStockfishAndSaveToDbIfEvaluationNotFound() { using var context = new ChessMetersContext(options, new OperationalStoreOptionsMigrations()); var engineProcess = new EngineProcess(); var stockfishEngine = new StockfishEngine(engineProcess); var engineAnalyzeEvaluator = new EngineEvaluationBuilder(stockfishEngine, context); var treeMove = await context.TreeMoves.FirstAsync(x => !x.ParentTreeMoveId.HasValue); await engineAnalyzeEvaluator.StartNewGame(EngineConsts.defaultAnalyzeDepth); var result = await engineAnalyzeEvaluator.BuildEngineEvaluations(treeMove); Assert.NotNull(result); Assert.True(result.Id > 0); }
private void RunProcess(EngineProcess process) { try { process.Run(); } catch (Exception e) { var exception = new EngineExceptionDto() { Report = JavaEngineReportExceptionFactory .GenerateReportForCompileProcess(process, e) }; process.Stop(); throw exception; } }
public async Task <ICollection <UnitTest> > GenerateResults(PreAssignment assignment, DirectoryHandler handler, string root) { using (var testHandler = new DirectoryHandler(GetTestDirectory(handler.Directory))) { var testProject = new TestProjectObj(testHandler.Directory, assignment.TestProject); if (!Directory.Exists(testProject.TestFolder)) { throw new EngineAssignmentExceptionData() { Report = new PreAssignmentBadTestFolderReport() } } ; testProject.MoveFilesToProject(root); var preprocessorArguments = GetPreprocessorArguments(assignment.Solution.MethodDeclarations); var process = new EngineProcess(GetEngineProcessData(testHandler.Directory, testProject, preprocessorArguments)); var exitCode = process.Run(); if (exitCode == 0) { process.Stop(); return(GetUnitTestResults(ResultsFile(testHandler.Directory))); } EngineAssignmentExceptionData exception; using (var reader = process.StandardError) { exception = new EngineAssignmentExceptionData() { Report = new PreAssignmentBuildFailureReport() { Report = reader.ReadToEnd(), } }; } process.Stop(); throw exception; } }
public async Task Schedule_Should_ParsePGNAndScheduleReport() { using var context = new ChessMetersContext(options, new OperationalStoreOptionsMigrations()); var engineProcess = new EngineProcess(); var stockfishEngine = new StockfishEngine(engineProcess); var engineAnalyzeEvaluator = new EngineEvaluationBuilder(stockfishEngine, context); var gameAnalyzer = new TreeMovesBuilder(context, engineAnalyzeEvaluator); var gameConverter = new GameConverter(); var reportGenerator = new ReportGenerator(gameAnalyzer, null, context); var reportId = await context.Reports.Select(x => x.Id).FirstAsync(); var report = await reportGenerator.Schedule(reportId, EngineConsts.defaultAnalyzeDepth); Assert.NotNull(report); }
public void GenerateXmlForJavaClass(string codeDirectory, string reflectionDirectory, JavaTestClass javaTestClass) { var process = new EngineProcess(Command, GetCommandOptions(codeDirectory, javaTestClass, reflectionDirectory), codeDirectory); try { process.Run(); } catch (Exception e) { var exception = new EngineExceptionDto() { Report = JavaEngineReportExceptionFactory .GenerateReportForReflectionProcess(process, e, javaTestClass) }; process.Stop(); throw exception; } process.Stop(); }
public void SetupJUnitCore(string workingDirectory, IList <JavaTestClass> javaClasses) { var process = new EngineProcess(Command, GetCommonOptionsForJunitCore(javaClasses), workingDirectory); try { process.Run(); } catch (Exception e) { var exception = new EngineExceptionDto() { Report = JavaEngineReportExceptionFactory .GenerateReportForRawCoveragerJunitCore(process, e, javaClasses) }; process.Stop(); throw exception; } process.Stop(); }
public void TraceJavaMethod(JavaTestClass javaTestClass, JavaTestMethod testMethod, string workingDirectory) { var commandOptions = GetCommandOptions(javaTestClass.Name, testMethod.Name, javaTestClass.ClassPath); var process = new EngineProcess(Command, commandOptions, workingDirectory); try { process.Run(); } catch (Exception e) { var exception = new EngineExceptionDto() { Report = JavaEngineReportExceptionFactory .GenerateReportForTraceJavaMethod(process, e, javaTestClass, testMethod) }; process.Stop(); throw exception; } process.Stop(); }
public async Task BuildTree_Should_SetupTreeAndSaveToDbIfMoveNotFound() { string pgn = "[Event \"Live Chess\"] [Site \"Chess.com\"] [Date \"2020.11.25\"] [Round \"?\"] [White \"claudiuoprea\"] [Black \"Cest_Sebastian\"] [Result \"0-1\"] [ECO \"C26\"] [WhiteElo \"1174\"] [BlackElo \"1212\"] [TimeControl \"600\"] [EndTime \"5:58:12 PST\"] [Termination \"Cest_Sebastian won by resignation\"] 1. e4 {[%timestamp 1]} 1... e5 {[%timestamp 1]} 2. Bc4 {[%timestamp 1]} 2... Nf6 {[%timestamp 1]} 3. Nc3 {[%timestamp 16]} 3... Nc6 {[%timestamp 253]} 4. d3 {[%timestamp 21]} 4... Bb4 {[%timestamp 93]} 5. f4 {[%timestamp 79]} 5... Bxc3+ {[%timestamp 70]} 6. bxc3 {[%timestamp 10]} 6... O-O {[%timestamp 80]} 7. fxe5 {[%timestamp 91]} 7... Nxe5 {[%timestamp 66]} 8. Bb3 {[%timestamp 33]} 8... d6 {[%timestamp 52]} 9. Nf3 {[%timestamp 24]} 9... Bg4 {[%timestamp 27]} 10. h3 {[%timestamp 114]} 10... Bxf3 {[%timestamp 14]} 11. gxf3 {[%timestamp 39]} 11... d5 {[%timestamp 33]} 12. Rg1 {[%timestamp 107]} 12... dxe4 {[%timestamp 58]} 13. Bh6 {[%timestamp 48]} 13... Re8 {[%timestamp 135]} 14. Bxg7 {[%timestamp 126]} 14... Ng6 {[%timestamp 1]} 15. Bh6 {[%timestamp 250]} 15... exf3+ {[%timestamp 59]} 16. Kd2 {[%timestamp 49]} 16... f2 {[%timestamp 174]} 17. Rg2 {[%timestamp 187]} 17... Ne4+ {[%timestamp 237]} 18. Kc1 {[%timestamp 74]} 18... Nxc3 {[%timestamp 142]} 19. Qd2 {[%timestamp 109]} 19... f1=Q+ {[%timestamp 58]} 20. Kb2 {[%timestamp 60]} 20... Na4+ {[%timestamp 431]} 21. Bxa4 {[%timestamp 175]} 21... Qd4+ {[%timestamp 76]} 22. Ka3 {[%timestamp 128]} 22... Qc5+ {[%timestamp 114]} 23. Kb3 {[%timestamp 112]} 23... Qd5+ {[%timestamp 60]} 24. Ka3 {[%timestamp 35]} 24... Qfxg2 {[%timestamp 40]} 25. Qc3 {[%timestamp 74]} 25... Qd6+ {[%timestamp 179]} 26. Kb3 {[%timestamp 149]} 26... Qgd5+ {[%timestamp 69]} 27. Kb2 {[%timestamp 29]} 27... Qb6+ {[%timestamp 96]} 28. Bb3 {[%timestamp 52]} 28... Qdd4 {[%timestamp 1]} 29. Qxd4 {[%timestamp 1]} 29... Qxd4+ {[%timestamp 1]} 30. Ka3 {[%timestamp 31]} 0-1"; using var context = new ChessMetersContext(options, new OperationalStoreOptionsMigrations()); var engineProcess = new EngineProcess(); var stockfishEngine = new StockfishEngine(engineProcess); var engineAnalyzeEvaluator = new EngineEvaluationBuilder(stockfishEngine, context); var gameAnalyzer = new TreeMovesBuilder(context, engineAnalyzeEvaluator); var user = await context.Users.FirstAsync(); var report = new Report { PGN = pgn, Description = $"Unit test ${DateTime.Now}", UserId = user.Id }; await context.Reports.AddAsync(report); await context.SaveChangesAsync(); var moves = await gameAnalyzer.BuildTree(EngineConsts.defaultAnalyzeDepth, new Game { ReportId = report.Id, Result = "0-1", Moves = "d2d4 d7d5 c2c4 c7c6 g1f3" }); Assert.Equal(5, moves.Count()); Assert.All(moves, x => Assert.NotEqual(0, x.Id)); Assert.Null(moves.First().ParentTreeMoveId); Assert.NotNull(moves.Last().ParentTreeMoveId); Assert.NotNull(moves.Last().ParentTreeMove); }
public UCIEngine(UCIEngineStartupArgs args, EngineProcess process) : base(args, process) { UserSuppliedArgs = args; }
public EngineProcess CreateProcess(EngineContext context) { var process = new EngineProcess (context); return process; }
public MockEngineContext(EngineProcess process) : base(process) { throw new NotImplementedException (); }
public EngineProcess CreateProcess(EngineContext context) { var process = new EngineProcess(context); return(process); }
public void AttachProcess(EngineProcess process) { Engine = process; }
private static string GetErrorFromProcess(EngineProcess process) => process.StandardError.ReadToEnd();
public MockEngineContext(EngineProcess process) : base(process) { throw new NotImplementedException(); }