Beispiel #1
0
        public BuildTreeBuildsDelta(IEnumerable <IBuildNode> currentBuildNodes, IReadOnlyDictionary <CacheKey, BuildStatus>?previousStatesOfBuildIds, PartialSucceededTreatmentMode partialSucceededTreatmentMode)
        {
            // without information of the previous state, a delta is not possible to calculate
            if (previousStatesOfBuildIds == null)
            {
                return;
            }

            foreach (var newBuild in currentBuildNodes)
            {
                if (previousStatesOfBuildIds.TryGetValue(newBuild.Build.CacheKey(), out var previousStatus))
                {
                    if (previousStatus != newBuild.Status)
                    {
                        AddToDelta(newBuild);
                    }
                }
                else
                {
                    AddToDelta(newBuild);
                }
            }

            void AddToDelta(IBuildNode buildNode)
            {
                switch (buildNode.Status)
                {
                case BuildStatus.Cancelled:
                    CancelledBuilds.Add(buildNode);
                    break;

                case BuildStatus.Failed:
                    FailedBuilds.Add(buildNode);
                    break;

                case BuildStatus.Succeeded:
                    SucceededBuilds.Add(buildNode);
                    break;

                case BuildStatus.PartiallySucceeded:
                    switch (partialSucceededTreatmentMode)
                    {
                    case PartialSucceededTreatmentMode.TreatAsSucceeded:
                        SucceededBuilds.Add(buildNode);
                        break;

                    case PartialSucceededTreatmentMode.TreatAsFailed:
                        FailedBuilds.Add(buildNode);
                        break;
                    }

                    break;
                }
            }
        }
Beispiel #2
0
 public void Clear()
 {
     FailedBuilds.Clear();
     SucceededBuilds.Clear();
     CancelledBuilds.Clear();
 }
Beispiel #3
0
 public void RemoveNode(IBuildNode node)
 {
     FailedBuilds.Remove(node);
     CancelledBuilds.Remove(node);
     SucceededBuilds.Remove(node);
 }