public void TestNoCompleteToWaiting() { BuildRequest request = CreateNewBuildRequest(1, new string[1] { "foo" }); BuildRequestConfiguration config = new BuildRequestConfiguration(1, new BuildRequestData("foo", new Dictionary<string, string>(), "foo", new string[0], null), "2.0"); BuildRequestEntry entry = new BuildRequestEntry(request, config); Assert.AreEqual(entry.State, BuildRequestEntryState.Ready); entry.Continue(); Assert.AreEqual(entry.State, BuildRequestEntryState.Active); BuildResult requiredResult = new BuildResult(request); requiredResult.AddResultsForTarget("foo", TestUtilities.GetEmptySucceedingTargetResult()); entry.Complete(requiredResult); Assert.AreEqual(entry.State, BuildRequestEntryState.Complete); BuildRequest waitingRequest1 = CreateNewBuildRequest(2, new string[1] { "bar" }); entry.WaitForResult(waitingRequest1); }
public void TestSimpleStateProgression() { // Start in Ready BuildRequest request = CreateNewBuildRequest(1, new string[1] { "foo" }); BuildRequestConfiguration config = new BuildRequestConfiguration(1, new BuildRequestData("foo", new Dictionary<string, string>(), "foo", new string[0], null), "2.0"); BuildRequestEntry entry = new BuildRequestEntry(request, config); Assert.AreEqual(entry.State, BuildRequestEntryState.Ready); Assert.AreEqual(entry.Request, request); Assert.IsNull(entry.Result); // Move to active. Should not be any results yet. IDictionary<int, BuildResult> results = entry.Continue(); Assert.AreEqual(entry.State, BuildRequestEntryState.Active); Assert.IsNull(entry.Result); Assert.IsNull(results); // Wait for results, move to waiting. BuildRequest waitingRequest = CreateNewBuildRequest(2, new string[1] { "bar" }); entry.WaitForResult(waitingRequest); Assert.AreEqual(entry.State, BuildRequestEntryState.Waiting); Assert.AreEqual(entry.Request, request); Assert.IsNull(entry.Result); // Provide the results, move to ready. BuildResult requiredResult = new BuildResult(waitingRequest); requiredResult.AddResultsForTarget("bar", TestUtilities.GetEmptySucceedingTargetResult()); entry.ReportResult(requiredResult); Assert.AreEqual(entry.State, BuildRequestEntryState.Ready); Assert.AreEqual(entry.Request, request); Assert.IsNull(entry.Result); // Continue the build, move to active. results = entry.Continue(); Assert.AreEqual(entry.State, BuildRequestEntryState.Active); Assert.IsNull(entry.Result); Assert.AreEqual(results.Count, 1); Assert.IsTrue(results.ContainsKey(requiredResult.NodeRequestId)); Assert.AreEqual(results[requiredResult.NodeRequestId], requiredResult); // Complete the build, move to completed. BuildResult result = new BuildResult(request); result.AddResultsForTarget("foo", TestUtilities.GetEmptySucceedingTargetResult()); entry.Complete(result); Assert.AreEqual(entry.State, BuildRequestEntryState.Complete); Assert.IsNotNull(entry.Result); Assert.AreEqual(entry.Result, result); }
public void TestNoReadyToComplete() { BuildRequest request = CreateNewBuildRequest(1, new string[1] { "foo" }); BuildRequestData data1 = new BuildRequestData("foo", new Dictionary<string, string>(), "foo", new string[0], null); BuildRequestConfiguration config = new BuildRequestConfiguration(1, data1, "2.0"); BuildRequestEntry entry = new BuildRequestEntry(request, config); Assert.AreEqual(entry.State, BuildRequestEntryState.Ready); BuildResult requiredResult = new BuildResult(request); requiredResult.AddResultsForTarget("foo", TestUtilities.GetEmptySucceedingTargetResult()); entry.Complete(requiredResult); }