示例#1
0
 void HandleRebuildResult(ReplayResult result, RebuildProjectionVersion @event)
 {
     if (result.IsSuccess)
     {
         var finalize = new FinalizeProjectionVersionRequest(@event.ProjectionVersionRequest.Id, @event.ProjectionVersionRequest.Version);
         commandPublisher.Publish(finalize);
     }
     else if (result.ShouldRetry)
     {
         RequestTimeout(new RebuildProjectionVersion(@event.ProjectionVersionRequest, DateTime.UtcNow.AddSeconds(30)));
     }
     else
     {
         log.Error(() => result.Error);
         if (result.IsTimeout)
         {
             var timedout = new TimeoutProjectionVersionRequest(@event.ProjectionVersionRequest.Id, @event.ProjectionVersionRequest.Version, @event.ProjectionVersionRequest.Timebox);
             commandPublisher.Publish(timedout);
         }
         else
         {
             var cancel = new CancelProjectionVersionRequest(@event.ProjectionVersionRequest.Id, @event.ProjectionVersionRequest.Version, result.Error);
             commandPublisher.Publish(cancel);
         }
     }
 }
示例#2
0
文件: RecordLog.cs 项目: zedr0n/ZES
        /// <inheritdoc />
        public bool Validate(IScenario scenario, ReplayResult result = null)
        {
            // var otherJson = JsonConvert.SerializeObject(scenario.Results, Formatting.Indented);
            // var thisJson = JsonConvert.SerializeObject(_scenario.Value.Results, Formatting.Indented);
            if (result != null)
            {
                result.Output = JsonConvert.SerializeObject(_scenario.Value.Results.Select(r => r.Result));
            }

            var expectedResults = scenario.Results.Select(r => JToken.Parse(r.Result)).ToList();
            var thisResults     = _scenario.Value.Results.Select(r => JToken.Parse(r.Result)).ToList();

            if (expectedResults.Count != thisResults.Count)
            {
                _log.Warn($"Output has {thisResults.Count} results, expected {expectedResults.Count}");
                return(false);
            }

            var jdp = new JsonDiffPatch();

            for (var i = 0; i < thisResults.Count; ++i)
            {
                var diff = jdp.Diff(expectedResults[i], thisResults[i]);
                if (diff == null)
                {
                    continue;
                }

                _log.Warn($"Mismatch for \n {scenario.Results[i].GraphQl} : \n {diff.ToString()}");
                if (result != null)
                {
                    result.Difference = diff.ToString();
                }
                return(false);
            }

            return(true);
        }
示例#3
0
        public void Handle(RebuildProjectionVersion @event)
        {
            ReplayResult result = projectionPlayer.Rebuild(@event.ProjectionVersionRequest.Version, @event.ProjectionVersionRequest.Timebox.RebuildFinishUntil);

            HandleRebuildResult(result, @event);
        }