Esempio n. 1
0
 private void HandleRunnningBuildDisplayInformations(BuildResult result)
 {
    RunningBuildProgressBarColor = blueBrush;
    if (result.Waiting)
    {
       RunningBuildImagePath = @"pack://*****:*****@"pack://application:,,,/Images/test_failed.png";
       RunningBuildImageToolTip = "Unit-test failed";
       RunningBuildProgressBarColor = redBrush;
       if (!isPinedView && !string.Equals(errorPreviousRunningBuildNumber, result.RunningBuildNumber))
       {
          errorPreviousRunningBuildNumber = result.RunningBuildNumber;
          ToastNotifications.CreateToastNotification(result, true, ToastActivated);
       }
    }
    else if (result.TestsRunning)
    {
       RunningBuildImagePath = @"pack://*****:*****@"pack://application:,,,/Images/finishDisc.png";
       RunningBuildImageToolTip = "Final steps (WIX setup)";
    }
    else
    {
       RunningBuildImagePath = @"pack://application:,,,/Images/building.png";
       RunningBuildImageToolTip = "Building DLLs";
    }
 }
Esempio n. 2
0
      /// <summary>Refreshes this instance.</summary>
      internal async void Refresh()
      {
         PreviousBuildNumber = Number;
         PreviousRunningBuildNumber = RunningBuildNumber;
         Status = BuildStatus.Waiting;

         var resultCollection = await buildExplorer.GetBuildResultCollection(BuildInformation);
         if (!string.IsNullOrEmpty(resultCollection.ErrorMessage))
         {
            Name = resultCollection.ErrorMessage;
            Number = string.Empty;
            RequestedBy = string.Empty;
            FinishDateTime = string.Empty;
            Status = BuildStatus.Unknown;
            IsRunning = false;
            TfsUri = string.Empty;
            RunningTfsUri = string.Empty;
            return;
         }

         var firstNotWaiting = resultCollection.BuildResults.FirstOrDefault(x => !x.Waiting);
         if (firstNotWaiting == null)
         {
            return;
         }

         var firstFinished =
            resultCollection.BuildResults.FirstOrDefault(
               x => x.Status != BuildStatus.InProgress && x.Status != BuildStatus.Waiting);

         if (!isPinedView && !string.IsNullOrEmpty(PreviousBuildNumber) && !string.Equals(PreviousBuildNumber, firstNotWaiting.Number)
             && (firstNotWaiting.Status == BuildStatus.PartiallySucceeded || firstNotWaiting.Status == BuildStatus.Failed))
         {
            ToastNotifications.CreateToastNotification(firstNotWaiting, false, ToastActivated);
         }

         var doNotGetTests = !mainWindowViewModel.UseFullWidth && mainWindowViewModel.BigSizeMode;
         var buildChanged = string.IsNullOrEmpty(PreviousBuildNumber) || !string.Equals(PreviousBuildNumber, firstFinished.Number);
         if ((buildChanged || !testsLoaded) && !doNotGetTests)
         {
            await buildExplorer.GetTestResultAsync(BuildInformation, firstNotWaiting);
            tempBuildContainer.PassedTests = firstNotWaiting.PassedTests;
            tempBuildContainer.FailedTests = firstNotWaiting.FailedTests;
            tempBuildContainer.TotalTests = firstNotWaiting.TotalTests;
            testsLoaded = true;
         }

         if (buildChanged)
         {
            Changeset = await buildExplorer.GetChangesetAsync(BuildInformation, firstFinished.SourceVersion);
         }

         Name = firstNotWaiting.Name;
         Number = GetValue(firstNotWaiting.IsRunning, x => x.Number, firstNotWaiting, firstFinished);
         RequestedBy = GetValue(firstNotWaiting.IsRunning, x => x.RequestedBy, firstNotWaiting, firstFinished);
         FinishDateTime = GetValue(firstNotWaiting.IsRunning, x => x.FinishTime, firstNotWaiting, firstFinished);
         Status = GetValue(firstNotWaiting.IsRunning, x => x.Status, firstNotWaiting, firstFinished);
         IsRunning = firstNotWaiting.IsRunning;
         IsGatedCheckin = firstNotWaiting.IsGatedCheckin;
         TfsUri = InsertDetailUrl(GetValue(firstNotWaiting.IsRunning, x => x.TfsUri, firstNotWaiting, firstFinished));
         RunningTfsUri = InsertDetailUrl(firstNotWaiting.RunningTfsUri);
         PassedTests = tempBuildContainer.PassedTests;
         FailedTests = tempBuildContainer.FailedTests;
         TotalTests = tempBuildContainer.TotalTests;
         RunningBuildErrorDetails.Clear();
         if (!firstNotWaiting.IsRunning)
         {
            return;
         }

         var runningBuildChanged = string.IsNullOrEmpty(PreviousRunningBuildNumber) || !string.Equals(PreviousRunningBuildNumber, firstNotWaiting.RunningBuildNumber);
         if (runningBuildChanged && !firstNotWaiting.IsGatedCheckin)
         {
            RunningBuildChangeset = await buildExplorer.GetChangesetAsync(BuildInformation, firstNotWaiting.RunningBuildSourceVersion);
         }

         var span = DateTime.Now - firstNotWaiting.RunningStartTime;
         RunningMinutes = firstNotWaiting.Waiting ? 0 : (int)span.TotalMinutes;
         RunningBuildRequestedBy = firstNotWaiting.RunningBuildRequestedBy;
         RunningBuildNumber = firstNotWaiting.RunningBuildNumber;
         RunningBuildId = firstNotWaiting.RunningBuildId;
         ErrorsInBuild = firstNotWaiting.TestsFailed;
         HandleRunnningBuildDisplayInformations(firstNotWaiting);
         foreach (var error in firstNotWaiting.FailingDetails.Take(5))
         {
            RunningBuildErrorDetails.Add(error);
         }

         if (RunningBuildErrorDetails.Count > 5)
         {
            RunningBuildErrorDetails.Add("(...)");
         }

         var buildTimes =
            resultCollection.BuildResults.Where(
               x => x.Status == BuildStatus.PartiallySucceeded || x.Status == BuildStatus.Succeeded)
               .Select(x => x.Duration).ToList();
         if (!buildTimes.Any())
         {
            return;
         }

         var average = buildTimes.Average();
         AverageMinutes = (int)average;
         var progress = (int)(span.TotalMinutes * 100 / average);
         RunningProgress = progress > 100 ? 100 : progress;
      }