public ZingerResult Explore() { //set the execute tracestatements to false //trace statements should be executed only when error trace is generated. ZingerConfiguration.ExecuteTraceStatements = false; if (StartStateTraversalInfo.IsInvalidEndState()) { bool oldCT = ZingerConfiguration.CompactTraces; ZingerConfiguration.CompactTraces = false; SafetyErrors.Add(StartStateTraversalInfo.GenerateTrace()); ZingerConfiguration.CompactTraces = oldCT; this.lastErrorFound = StartStateTraversalInfo.ErrorCode; } var result = IterativeSearchStateSpace(); //In the end of the plugin is enabled then call the plugin if (ZingerConfiguration.ZPlugin != null) { Console.WriteLine("Executed EndPlugin Function"); ZingerConfiguration.ZPlugin.zPlugin.EndPlugin(); } //Handle Zinger Return Status switch (result) { case ZingerResult.Success: ZingerUtilities.PrintSuccessMessage("##################"); ZingerUtilities.PrintSuccessMessage("Check Passed"); ZingerUtilities.PrintSuccessMessage("##################"); return ZingerResult.Success; case ZingerResult.ZingRuntimeError: ZingerUtilities.PrintErrorMessage("Zinger Internal Runtime Exception"); break; case ZingerResult.ProgramRuntimeError: ZingerUtilities.PrintErrorMessage("Program Runtime Error"); break; case ZingerResult.Assertion: ZingerUtilities.PrintErrorMessage("##################"); ZingerUtilities.PrintErrorMessage("Check Failed"); ZingerUtilities.PrintErrorMessage("##################"); break; case ZingerResult.Deadlock: ZingerUtilities.PrintErrorMessage("Deadlock Detected !"); break; case ZingerResult.AcceptanceCyleFound: ZingerUtilities.PrintErrorMessage("##################"); ZingerUtilities.PrintErrorMessage("Liveness Check Failed"); ZingerUtilities.PrintErrorMessage("##################"); break; case ZingerResult.DFSStackOverFlowError: ZingerUtilities.PrintErrorMessage("##################"); ZingerUtilities.PrintErrorMessage("Check Failed"); ZingerUtilities.PrintErrorMessage("##################"); ZingerUtilities.PrintErrorMessage(String.Format("DFS Stack Size Exceeded {0}", ZingerConfiguration.BoundDFSStackLength)); break; case ZingerResult.ZingerMotionPlanningInvocation: break; default: ZingerUtilities.PrintErrorMessage("Zinger threw an unknown error. Please report this to the Zing developers"); break; } ZingerConfiguration.ExecuteTraceStatements = true; if (ZingerConfiguration.DetailedZingTrace) { PrintErrorTracesDetailed(); } if (ZingerConfiguration.EnableTrace) { PrintErrorTracesToFile(); } return result; }
private void Initialize() { //Fingerprint the start state. Fingerprint fp = startStateStateImpl.Fingerprint; CancelTokenZingExplorer = new CancellationTokenSource(); SafetyErrors = new ArrayList(); AcceptingCycles = new ArrayList(); lastErrorFound = ZingerResult.Success; StartStateTraversalInfo = GetTraversalInfoForTrace(null); }