public void GetBuildRuns()
        {
            BuildProject project = Instance.Create.BuildProject("My Project", "Project");

            BuildRun run1 = project.CreateBuildRun("Run 1", new DateTime(2008, 1, 1));
            BuildRun run2 = project.CreateBuildRun("Run 2", new DateTime(2008, 1, 2));
            BuildRun run3 = project.CreateBuildRun("Run 3", new DateTime(2008, 1, 3));

            run1.Reference = "A";
            run2.Reference = "A";
            run3.Reference = "B";

            run1.Status.CurrentValue = "Passed";
            run2.Status.CurrentValue = "Passed";
            run3.Status.CurrentValue = "Failed";

            run1.Save();
            run2.Save();
            run3.Save();

            BuildRunFilter filter = new BuildRunFilter();

            filter.References.Add("A");
            filter.Status.Add("Passed");
            ICollection <BuildRun> runs = project.GetBuildRuns(filter);

            CollectionAssert.AreEquivalent(new string[] { "Run 1", "Run 2" }, DeriveListOfNamesFromAssets(runs));
        }
        public void AddChangeSetsToBuildRun(BuildRun buildRun, IEnumerable <ChangeSet> changeSets)
        {
            var changeSetIds = new List <ValueId>(buildRun.ChangeSets);

            changeSetIds.AddRange(changeSets.Select(ValueId.FromEntity));
            buildRun.ChangeSets = changeSetIds.ToArray();
        }
Esempio n. 3
0
        public static void StartBuild(BuildJob job, BuildSettings settings)
        {
            if (job == null)
            {
                throw new ArgumentNullException("job");
            }
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }

            BuildRun buildRun = new BuildRun(job, settings);

            lock (lockObject) {
                if (freeWorkerProcesses.Count > 0)
                {
                    DequeueFreeWorkerProcess().StartBuild(buildRun);
                }
                else
                {
                    outstandingBuildRuns.Enqueue(buildRun);
                    if (workerProcessCount < MaxWorkerProcessCount)
                    {
                        workerProcessCount++;
                        (new WorkerProcessHost()).Start();
                    }
                }
            }
        }
Esempio n. 4
0
            void OnWorkerLost(object sender, EventArgs e)
            {
                BuildRun buildRun;

                lock (lockObject) {
                    workerProcessCount--;
                    freeWorkerProcesses.Remove(this);
                    if (workerProcessCount == 0 && currentBuildRun == null)
                    {
                        // error starting worker => we must
                        // cancel all outstanding build runs to prevent them from waiting
                        // for a worker becoming ready when all workers are dead
                        while (workerProcessCount == 0 && outstandingBuildRuns.Count > 0)
                        {
                            BuildRun r = outstandingBuildRuns.Dequeue();
                            Monitor.Exit(lockObject);
                            r.RaiseError("Error starting worker process.");
                            r.Done(false);
                            Monitor.Enter(lockObject);
                        }
                    }
                    buildRun = Interlocked.Exchange(ref currentBuildRun, null);
                }
                if (buildRun != null)
                {
                    buildRun.RaiseError("Worker process lost during build");
                    buildRun.Done(false);
                }
            }
Esempio n. 5
0
 public int UpdateSolution_Begin(ref int pfCancelUpdate)
 {
     _ongoingBuild = new BuildRun {
         SolutionName = SolutionName, BuildStarted = DateTime.Now
     };
     return(VSConstants.S_OK);
 }
        [Test] public void GetBuildRuns()
        {
            ChangeSet    changeSet      = Instance.Create.ChangeSet(_name, _reference);
            ChangeSet    notMyChangeSet = Instance.Create.ChangeSet("Other ChangeSet", "abcd");
            BuildProject buildProject   = Instance.Create.BuildProject("BP", "1234");
            BuildRun     buildRun       = buildProject.CreateBuildRun("BR", DateTime.Now);
            BuildRun     notMyBuildRun  = buildProject.CreateBuildRun("Not My BR", DateTime.Now);

            buildRun.ChangeSets.Add(changeSet);
            notMyBuildRun.ChangeSets.Add(notMyChangeSet);
            AssetID changeSetId = changeSet.ID;
            AssetID buildRunId  = buildRun.ID;

            ResetInstance();

            changeSet = Instance.Get.ChangeSetByID(changeSetId);
            ICollection <BuildRun> buildRuns = changeSet.GetBuildRuns(null);

            Assert.AreEqual(1, buildRuns.Count);

            IEnumerator <BuildRun> enumerator = buildRuns.GetEnumerator();

            enumerator.MoveNext();
            Assert.AreEqual(buildRunId, enumerator.Current.ID);
        }
Esempio n. 7
0
            public void ReportEvent(BuildEventArgs e)
            {
                BuildRun buildRun = currentBuildRun;

                if (buildRun != null)
                {
                    buildRun.RaiseEvent(e);
                }
            }
Esempio n. 8
0
        public int UpdateSolution_Done(int fSucceeded, int fModified, int fCancelCommand)
        {
            _ongoingBuild.BuildEnded = DateTime.Now;
            BuildSession.BuildRuns.Add(_ongoingBuild);

            WriteToOutputWindow($"========== Build Time : {_ongoingBuild.BuildTimeInSeconds:0.000} seconds ==========\r\n");

            _ongoingBuild = null;

            _buildFileManager.WriteBuildSessionFile(BuildSession);

            return(VSConstants.S_OK);
        }
Esempio n. 9
0
            void OnReady(object sender, EventArgs e)
            {
                BuildRun nextBuildRun = null;

                lock (lockObject) {
                    if (outstandingBuildRuns.Count > 0)
                    {
                        nextBuildRun = outstandingBuildRuns.Dequeue();
                    }
                    else
                    {
                        freeWorkerProcesses.Add(this);
                    }
                }
                if (nextBuildRun != null)
                {
                    StartBuild(nextBuildRun);
                }
            }
Esempio n. 10
0
		public static void StartBuild(BuildJob job, BuildSettings settings)
		{
			if (job == null)
				throw new ArgumentNullException("job");
			if (settings == null)
				throw new ArgumentNullException("settings");
			
			BuildRun buildRun = new BuildRun(job, settings);
			lock (lockObject) {
				if (freeWorkerProcesses.Count > 0) {
					DequeueFreeWorkerProcess().StartBuild(buildRun);
				} else {
					outstandingBuildRuns.Enqueue(buildRun);
					if (workerProcessCount < MaxWorkerProcessCount) {
						workerProcessCount++;
						(new WorkerProcessHost()).Start();
					}
				}
			}
		}
Esempio n. 11
0
 // runs in lock(lockObject)
 internal void StartBuild(BuildRun nextBuildRun)
 {
     Debug.Assert(currentBuildRun == null);
     currentBuildRun = nextBuildRun;
     process.CallMethodOnWorker("StartBuild", currentBuildRun.job);
 }
Esempio n. 12
0
			// runs in lock(lockObject)
			internal void StartBuild(BuildRun nextBuildRun)
			{
				Debug.Assert(currentBuildRun == null);
				currentBuildRun = nextBuildRun;
				process.CallMethodOnWorker("StartBuild", currentBuildRun.job);
			}