예제 #1
0
        public async Task CustomProject_StressSearchCanBeCanceled()
        {
            BuildOutputNode firstMatch = null;

            var bo = GenerateCustomBuild(10);

            var search = new BuildOutputDataSearch(bo.GetRootNodes(true));

            for (int i = 0; i < 100; i++)
            {
                await Task.WhenAll(Task.Run(async() => firstMatch = await search.FirstMatch("Message ")),
                                   Task.Delay (100).ContinueWith(t => search.Cancel()));

                Assert.True(search.IsCanceled, "Search was not canceled");
            }
        }
예제 #2
0
        public async Task CustomProject_SearchCanBeCanceled()
        {
            var bo     = GenerateCustomBuild(10);
            var search = new BuildOutputDataSearch(bo.GetRootNodes(true));

            var searchTask = search.FirstMatch("Message ");

            search.Cancel();

            var firstMatch = await searchTask;

            Assert.Null(firstMatch, "Got a first match, but the canceled search did not expect records");
            Assert.True(search.IsCanceled, "Search was not canceled, but we expect cancel the operation");

            searchTask = search.FirstMatch("Message ");
            firstMatch = await searchTask;
            Assert.NotNull(firstMatch, "No record was found in the search, but one was expected to be found.");
            Assert.False(search.IsCanceled, "Search was canceled for some unexpected reason");
        }