Example #1
0
        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);
        }
Example #2
0
        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());
        }
Example #3
0
        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);
        }