public ProtoExecutionResult Execute(GaugeMethod method, params string[] args) { var stopwatch = Stopwatch.StartNew(); var builder = new ProtoExecutionResult() { Failed = false, }; var executionResult = _sandbox.ExecuteMethod(method, args); builder.ExecutionTime = stopwatch.ElapsedMilliseconds; if (!executionResult.Success) { var elapsedMilliseconds = stopwatch.ElapsedMilliseconds; builder.Failed = true; var isScreenShotEnabled = Utils.TryReadEnvValue("SCREENSHOT_ENABLED"); if (isScreenShotEnabled == null || isScreenShotEnabled.ToLower() != "false") { builder.ScreenShot = TakeScreenshot(); } builder.ErrorMessage = executionResult.ExceptionMessage; builder.StackTrace = executionResult.StackTrace; builder.RecoverableError = executionResult.Recoverable; builder.ExecutionTime = elapsedMilliseconds; } return(builder); }
public ProtoExecutionResult Execute(MethodInfo method, params object[] args) { Logger.Debug("Execution method: {0}.{1}", method.DeclaringType.FullName, method.Name); var stopwatch = Stopwatch.StartNew(); var builder = ProtoExecutionResult.CreateBuilder().SetFailed(false); var executionResult = _sandbox.ExecuteMethod(method, StringParamConverter.TryConvertParams(method, args)); builder.SetExecutionTime(stopwatch.ElapsedMilliseconds); if (!executionResult.Success) { Logger.Error("Error executing {0}.{1}", method.DeclaringType.FullName, method.Name); var elapsedMilliseconds = stopwatch.ElapsedMilliseconds; builder.SetFailed(true); var isScreenShotEnabled = Utils.TryReadEnvValue("SCREENSHOT_ENABLED"); if (isScreenShotEnabled == null || isScreenShotEnabled.ToLower() != "false") { builder.SetScreenShot(TakeScreenshot()); } builder.SetErrorMessage(executionResult.ExceptionMessage); builder.SetStackTrace(executionResult.StackTrace); builder.SetRecoverableError(false); builder.SetExecutionTime(elapsedMilliseconds); } return(builder.Build()); }
public ProtoExecutionResult Execute(GaugeMethod method, params string[] args) { var stopwatch = Stopwatch.StartNew(); var builder = new ProtoExecutionResult { Failed = false }; var executionResult = _sandbox.ExecuteMethod(method, args); builder.ExecutionTime = stopwatch.ElapsedMilliseconds; if (!executionResult.Success) { var elapsedMilliseconds = stopwatch.ElapsedMilliseconds; builder.Failed = true; var isScreenShotEnabled = Utils.TryReadEnvValue("SCREENSHOT_ON_FAILURE"); if (isScreenShotEnabled == null || isScreenShotEnabled.ToLower() != "false") { var screenshot = TakeScreenshot(); builder.ScreenShot = screenshot; builder.FailureScreenshot = screenshot; } builder.ErrorMessage = executionResult.ExceptionMessage; builder.StackTrace = executionResult.StackTrace; builder.RecoverableError = executionResult.Recoverable; builder.ExecutionTime = elapsedMilliseconds; } var allPendingMessages = GetAllPendingMessages().Where(m => m != null); builder.Message.AddRange(allPendingMessages); var allPendingScreenshots = GetAllPendingScreenshots().Select(ByteString.CopyFrom); builder.Screenshots.AddRange(allPendingScreenshots); return(builder); }