Пример #1
0
        public void TestConstructorSuccess()
        {
            string                senderSource          = "senderSource";
            Option <string>       receiverSource        = Option.Some("receiverSource");
            int                   batchSize             = 10;
            string                resultType            = "resultType1";
            NetworkControllerType networkControllerType = NetworkControllerType.Offline;

            var mockSenderStore   = new Mock <ISequentialStore <TestOperationResult> >();
            var senderResults     = new StoreTestResultCollection <TestOperationResult>(mockSenderStore.Object, batchSize);
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            var receiverResults   = Option.Some <ITestResultCollection <TestOperationResult> >(
                new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize));

            var reportGenerator = new DirectMethodReportGenerator(
                TestDescription,
                Guid.NewGuid().ToString(),
                senderSource,
                senderResults,
                receiverSource,
                receiverResults,
                resultType,
                NetworkStatusTimeline,
                networkControllerType);

            Assert.Equal(TestDescription, reportGenerator.TestDescription);
            Assert.Equal(receiverSource, reportGenerator.ReceiverSource);
            Assert.Equal(senderResults, reportGenerator.SenderTestResults);
            Assert.Equal(senderSource, reportGenerator.SenderSource);
            Assert.Equal(receiverResults, reportGenerator.ReceiverTestResults);
            Assert.Equal(resultType, reportGenerator.ResultType);
        }
Пример #2
0
        public async Task TestCreateReportAsyncWithEmptyResults()
        {
            string expectedSource = "expectedSource";
            string actualSource   = "actualSource";
            int    batchSize      = 10;

            var mockExpectedStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> expectedResults = new StoreTestResultCollection <TestOperationResult>(mockExpectedStore.Object, batchSize);
            var mockActualStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> actualResults = new StoreTestResultCollection <TestOperationResult>(mockActualStore.Object, batchSize);

            var reportGenerator = new CountingReportGenerator(
                TestDescription,
                Guid.NewGuid().ToString(),
                expectedSource,
                expectedResults.GetAsyncEnumerator(),
                actualSource,
                actualResults.GetAsyncEnumerator(),
                "resultType1",
                new SimpleTestOperationResultComparer(),
                UnmatchedResultsMaxSize,
                false);

            var report = (CountingReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(0UL, report.TotalExpectCount);
            Assert.Equal(0UL, report.TotalMatchCount);
            Assert.Equal(0UL, report.TotalDuplicateActualResultCount);
            Assert.Equal(0, report.UnmatchedResults.Count);
        }
        public void TestConstructorSuccess()
        {
            string senderSource   = "senderSource";
            string receiverSource = "receiverSource";
            int    batchSize      = 10;
            string resultType     = "resultType1";

            var mockSenderStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> senderResults = new StoreTestResultCollection <TestOperationResult>(mockSenderStore.Object, batchSize);
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> receiverResults = new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize);

            var reportGenerator = new DirectMethodLongHaulReportGenerator(
                TestDescription,
                Guid.NewGuid().ToString(),
                senderSource,
                Topology.SingleNode,
                false,
                senderResults.GetAsyncEnumerator(),
                receiverSource,
                receiverResults.GetAsyncEnumerator(),
                resultType);

            Assert.Equal(TestDescription, reportGenerator.TestDescription);
            Assert.Equal(receiverSource, reportGenerator.ReceiverSource);
            Assert.Equal(senderResults.GetAsyncEnumerator(), reportGenerator.SenderTestResults);
            Assert.Equal(senderSource, reportGenerator.SenderSource);
            Assert.Equal(receiverResults.GetAsyncEnumerator(), reportGenerator.ReceiverTestResults);
            Assert.Equal(resultType, reportGenerator.ResultType);
        }
Пример #4
0
        public async Task TestCreateReportAsyncWithEmptyResults()
        {
            string senderSource   = "senderSource";
            string receiverSource = "receiverSource";
            int    batchSize      = 10;
            NetworkControllerType networkControllerType = NetworkControllerType.Offline;

            var mockSenderStore   = new Mock <ISequentialStore <TestOperationResult> >();
            var senderResults     = new StoreTestResultCollection <TestOperationResult>(mockSenderStore.Object, batchSize);
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            var receiverResults   = Option.Some <ITestResultCollection <TestOperationResult> >(
                new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize));

            var reportGenerator = new DirectMethodReportGenerator(
                TestDescription,
                Guid.NewGuid().ToString(),
                senderSource,
                senderResults,
                Option.Some(receiverSource),
                receiverResults,
                "resultType1",
                NetworkStatusTimeline,
                networkControllerType);

            var report = (DirectMethodReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(0UL, report.NetworkOnSuccess);
            Assert.Equal(0UL, report.NetworkOffSuccess);
            Assert.Equal(0UL, report.NetworkOnToleratedSuccess);
            Assert.Equal(0UL, report.NetworkOffToleratedSuccess);
            Assert.Equal(0UL, report.NetworkOnFailure);
            Assert.Equal(0UL, report.NetworkOffFailure);
            Assert.Equal(0UL, report.MismatchSuccess);
            Assert.Equal(0UL, report.MismatchFailure);
        }
        public async Task TestCreateReportAsyncWithEmptyResults()
        {
            string expectedSource = "expectedSource";
            string actualSource   = "actualSource";
            int    batchSize      = 10;

            var mockExpectedStore = new Mock <ISequentialStore <TestOperationResult> >();
            var expectedResults   = new StoreTestResultCollection <TestOperationResult>(mockExpectedStore.Object, batchSize);
            var mockActualStore   = new Mock <ISequentialStore <TestOperationResult> >();
            var actualResults     = new StoreTestResultCollection <TestOperationResult>(mockActualStore.Object, batchSize);

            var reportGenerator = new DirectMethodReportGenerator(
                Guid.NewGuid().ToString(),
                expectedSource,
                expectedResults,
                actualSource,
                actualResults,
                "resultType1",
                new DirectMethodTestOperationResultComparer(),
                NetworkStatusTimeline);

            var report = (DirectMethodReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(0UL, report.NetworkOnSuccess);
            Assert.Equal(0UL, report.NetworkOffSuccess);
            Assert.Equal(0UL, report.NetworkOnToleratedSuccess);
            Assert.Equal(0UL, report.NetworkOffToleratedSuccess);
            Assert.Equal(0UL, report.NetworkOnFailure);
            Assert.Equal(0UL, report.NetworkOffFailure);
            Assert.Equal(0UL, report.MismatchSuccess);
            Assert.Equal(0UL, report.MismatchFailure);
        }
        public async Task TestCreateReportAsyncWithEmptyResults()
        {
            string senderSource   = "senderSource";
            string receiverSource = "receiverSource";
            int    batchSize      = 10;

            var mockSenderStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> senderResults = new StoreTestResultCollection <TestOperationResult>(mockSenderStore.Object, batchSize);
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> receiverResults = new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize);

            var reportGenerator = new DirectMethodLongHaulReportGenerator(
                TestDescription,
                Guid.NewGuid().ToString(),
                senderSource,
                Topology.SingleNode,
                false,
                senderResults.GetAsyncEnumerator(),
                receiverSource,
                receiverResults.GetAsyncEnumerator(),
                "resultType1");

            var report = (DirectMethodLongHaulReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(0L, report.ReceiverSuccesses);
            Assert.Equal(0L, report.SenderSuccesses);
            Assert.Equal(0L, report.StatusCodeZero);
            Assert.Equal(0L, report.Unauthorized);
            Assert.Equal(0L, report.DeviceNotFound);
            Assert.Equal(0L, report.TransientError);
            Assert.Equal(0L, report.ResourceError);
            Assert.Equal(0L, report.Other.Sum(x => x.Value));
            Assert.True(report.IsPassed);
        }
        public void TestConstructorSuccess()
        {
            string expectedSource = "expectedSource";
            string actualSource   = "actualSource";
            int    batchSize      = 10;

            var mockExpectedStore = new Mock <ISequentialStore <TestOperationResult> >();
            var expectedResults   = new StoreTestResultCollection <TestOperationResult>(mockExpectedStore.Object, batchSize);
            var mockActualStore   = new Mock <ISequentialStore <TestOperationResult> >();
            var actualResults     = new StoreTestResultCollection <TestOperationResult>(mockActualStore.Object, batchSize);

            var reportGenerator = new DeploymentTestReportGenerator(
                Guid.NewGuid().ToString(),
                expectedSource,
                expectedResults,
                actualSource,
                actualResults);

            Assert.Equal(actualSource, reportGenerator.ActualSource);
            Assert.Equal(actualResults, reportGenerator.ActualTestResults);
            Assert.Equal(expectedSource, reportGenerator.ExpectedSource);
            Assert.Equal(expectedResults, reportGenerator.ExpectedTestResults);
            Assert.Equal(TestOperationResultType.Deployment.ToString(), reportGenerator.ResultType);
            Assert.Equal(typeof(DeploymentTestResultComparer), reportGenerator.TestResultComparer.GetType());
        }
        public async Task TestCreateReportAsyncWithEmptyResults()
        {
            string expectedSource = "expectedSource";
            string actualSource   = "actualSource";
            int    batchSize      = 10;

            var mockExpectedStore = new Mock <ISequentialStore <TestOperationResult> >();
            var expectedResults   = new StoreTestResultCollection <TestOperationResult>(mockExpectedStore.Object, batchSize);
            var mockActualStore   = new Mock <ISequentialStore <TestOperationResult> >();
            var actualResults     = new StoreTestResultCollection <TestOperationResult>(mockActualStore.Object, batchSize);

            var reportGenerator = new DeploymentTestReportGenerator(
                Guid.NewGuid().ToString(),
                expectedSource,
                expectedResults,
                actualSource,
                actualResults);

            var report = (DeploymentTestReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(0UL, report.TotalExpectedDeployments);
            Assert.Equal(0UL, report.TotalActualDeployments);
            Assert.Equal(0UL, report.TotalMatchedDeployments);
            Assert.Equal(0, report.UnmatchedResults.Count);
        }
Пример #9
0
        public async Task TestCreateReportAsync(
            IEnumerable <string> expectedStoreValues,
            IEnumerable <string> actualStoreValues,
            int batchSize,
            ulong totalExpectedDeployments,
            ulong totalActualDeployments,
            ulong totalMatchedDeployments,
            int expectedMissingResultsCount,
            DeploymentTestResult lastActualDeploymentTestResult)
        {
            string expectedSource = "expectedSource";
            string actualSource   = "actualSource";
            string resultType     = TestOperationResultType.Deployment.ToString();

            var mockExpectedStore = new Mock <ISequentialStore <TestOperationResult> >();
            var expectedResults   = new StoreTestResultCollection <TestOperationResult>(mockExpectedStore.Object, batchSize);
            var mockActualStore   = new Mock <ISequentialStore <TestOperationResult> >();
            var actualResults     = new StoreTestResultCollection <TestOperationResult>(mockActualStore.Object, batchSize);

            string trackingId      = Guid.NewGuid().ToString();
            var    reportGenerator = new DeploymentTestReportGenerator(
                TestDescription,
                trackingId,
                expectedSource,
                expectedResults,
                actualSource,
                actualResults,
                UnmatchedResultsMaxSize);

            var expectedStoreData = GetStoreData(expectedSource, resultType, expectedStoreValues);

            for (int i = 0; i < expectedStoreData.Count; i += batchSize)
            {
                int startingOffset = i;
                mockExpectedStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(expectedStoreData.Skip(startingOffset).Take(batchSize));
            }

            var actualStoreData = GetStoreData(actualSource, resultType, actualStoreValues);

            for (int j = 0; j < expectedStoreData.Count; j += batchSize)
            {
                int startingOffset = j;
                mockActualStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(actualStoreData.Skip(startingOffset).Take(batchSize));
            }

            var report = (DeploymentTestReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(totalExpectedDeployments, report.TotalExpectedDeployments);
            Assert.Equal(totalActualDeployments, report.TotalActualDeployments);
            Assert.Equal(totalMatchedDeployments, report.TotalMatchedDeployments);
            Assert.Equal(expectedMissingResultsCount, report.UnmatchedResults.Count);

            if (lastActualDeploymentTestResult != null)
            {
                Assert.True(report.LastActualDeploymentTestResult.HasValue);

                var comparer = new DeploymentTestResultComparer();
                Assert.True(comparer.Matches(lastActualDeploymentTestResult.ToTestOperationResult(), report.LastActualDeploymentTestResult.OrDefault()));
            }
        }
Пример #10
0
        public async Task TestCreateReportAsync(
            IEnumerable <ulong> senderStoreValues,
            IEnumerable <ulong> receiverStoreValues,
            IEnumerable <HttpStatusCode> statusCodes,
            IEnumerable <DateTime> timestamps,
            int batchSize,
            bool expectedIsPassed,
            long expectedOk,
            long expectedStatusCodeZero,
            long expectedDeviceNotFound,
            long expectedTransientError,
            long expectedResourceError,
            long expectedOther)
        {
            string senderSource   = "senderSource";
            string receiverSource = "receiverSource";
            string resultType     = TestOperationResultType.DirectMethod.ToString();

            var mockSenderStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> senderResults = new StoreTestResultCollection <TestOperationResult>(mockSenderStore.Object, batchSize);
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> receiverResults = new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize);

            var reportGenerator = new DirectMethodLongHaulReportGenerator(
                TestDescription,
                Guid.NewGuid().ToString(),
                senderSource,
                senderResults.GetAsyncEnumerator(),
                receiverSource,
                receiverResults.GetAsyncEnumerator(),
                resultType);

            Guid guid = Guid.NewGuid();

            List <(long, TestOperationResult)> senderStoreData = GetSenderStoreData(senderSource, resultType, senderStoreValues, statusCodes, timestamps, guid);

            for (int i = 0; i < senderStoreData.Count; i += batchSize)
            {
                int startingOffset = i;
                mockSenderStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(senderStoreData.Skip(startingOffset).Take(batchSize));
            }

            List <(long, TestOperationResult)> receiverStoreData = GetReceiverStoreData(receiverSource, resultType, receiverStoreValues, timestamps, guid);

            for (int j = 0; j < receiverStoreData.Count; j += batchSize)
            {
                int startingOffset = j;
                mockReceiverStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(receiverStoreData.Skip(startingOffset).Take(batchSize));
            }

            var report = (DirectMethodLongHaulReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(expectedIsPassed, report.IsPassed);
            Assert.Equal(expectedOk, report.SenderSuccesses);
            Assert.Equal(expectedStatusCodeZero, report.StatusCodeZero);
            Assert.Equal(expectedDeviceNotFound, report.DeviceNotFound);
            Assert.Equal(expectedTransientError, report.TransientError);
            Assert.Equal(expectedResourceError, report.ResourceError);
            Assert.Equal(expectedOther, report.Other.Sum(x => x.Value));
        }
Пример #11
0
        public async Task TestCreateReportAsyncWithEmptyResults()
        {
            string senderSource   = "senderSource";
            string receiverSource = "receiverSource";
            int    batchSize      = 10;

            var mockSenderStore   = new Mock <ISequentialStore <TestOperationResult> >();
            var senderResults     = new StoreTestResultCollection <TestOperationResult>(mockSenderStore.Object, batchSize);
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            var receiverResults   = Option.Some <ITestResultCollection <TestOperationResult> >(
                new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize));

            var reportGenerator = new DirectMethodLongHaulReportGenerator(
                TestDescription,
                Guid.NewGuid().ToString(),
                senderSource,
                senderResults,
                Option.Some(receiverSource),
                receiverResults,
                "resultType1");

            var report = (DirectMethodLongHaulReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(0UL, report.ReceiverSuccesses.Expect <ArgumentException>(() => throw new ArgumentException("impossible")));
            Assert.Equal(0UL, report.SenderSuccesses);
            Assert.Equal(0UL, report.StatusCodeZero);
            Assert.Equal(0UL, report.Unknown);
            Assert.True(report.IsPassed);
        }
        public void TestConstructorSuccess()
        {
            string expectedSource = "expectedSource";
            string actualSource   = "actualSource";
            int    batchSize      = 10;
            string resultType     = "resultType1";

            var mockExpectedStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> expectedResults = new StoreTestResultCollection <TestOperationResult>(mockExpectedStore.Object, batchSize);
            var mockActualStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> actualResults = new StoreTestResultCollection <TestOperationResult>(mockActualStore.Object, batchSize);

            var reportGenerator = new CountingReportGenerator(
                TestDescription,
                Guid.NewGuid().ToString(),
                expectedSource,
                expectedResults.GetAsyncEnumerator(),
                actualSource,
                actualResults.GetAsyncEnumerator(),
                resultType,
                new SimpleTestOperationResultComparer(),
                UnmatchedResultsMaxSize);

            Assert.Equal(TestDescription, reportGenerator.TestDescription);
            Assert.Equal(actualSource, reportGenerator.ActualSource);
            Assert.Equal(actualResults.GetAsyncEnumerator(), reportGenerator.ActualTestResults);
            Assert.Equal(expectedSource, reportGenerator.ExpectedSource);
            Assert.Equal(expectedResults.GetAsyncEnumerator(), reportGenerator.ExpectedTestResults);
            Assert.Equal(resultType, reportGenerator.ResultType);
            Assert.Equal(typeof(SimpleTestOperationResultComparer), reportGenerator.TestResultComparer.GetType());
        }
        public async Task TestOtherStatusCodeCounts()
        {
            var x = DirectMethodLongHaulReportData.GetStatusCodeTestData;
            IEnumerable <ulong>          senderStoreValues   = (IEnumerable <ulong>)x[0];
            IEnumerable <ulong>          receiverStoreValues = (IEnumerable <ulong>)x[1];
            IEnumerable <HttpStatusCode> statusCodes         = (IEnumerable <HttpStatusCode>)x[2];
            IEnumerable <DateTime>       timestamps          = (IEnumerable <DateTime>)x[3];
            int  batchSize                  = (int)x[4];
            bool expectedIsPassed           = (bool)x[5];
            long expectedOk                 = (long)x[6];
            long expectedStatusCodeZero     = (long)x[7];
            long expectedStatusCodeNotFound = (long)x[8];
            Dictionary <HttpStatusCode, long> expectedOtherDict = (Dictionary <HttpStatusCode, long>)x[9];

            string senderSource   = "senderSource";
            string receiverSource = "receiverSource";
            string resultType     = TestOperationResultType.DirectMethod.ToString();

            var mockSenderStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> senderResults = new StoreTestResultCollection <TestOperationResult>(mockSenderStore.Object, batchSize);
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> receiverResults = new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize);

            var reportGenerator = new DirectMethodLongHaulReportGenerator(
                TestDescription,
                Guid.NewGuid().ToString(),
                senderSource,
                senderResults.GetAsyncEnumerator(),
                receiverSource,
                receiverResults.GetAsyncEnumerator(),
                resultType);

            Guid guid = Guid.NewGuid();

            List <(long, TestOperationResult)> senderStoreData = GetSenderStoreData(senderSource, resultType, senderStoreValues, statusCodes, timestamps, guid);

            for (int i = 0; i < senderStoreData.Count; i += batchSize)
            {
                int startingOffset = i;
                mockSenderStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(senderStoreData.Skip(startingOffset).Take(batchSize));
            }

            List <(long, TestOperationResult)> receiverStoreData = GetReceiverStoreData(receiverSource, resultType, receiverStoreValues, timestamps, guid);

            for (int j = 0; j < receiverStoreData.Count; j += batchSize)
            {
                int startingOffset = j;
                mockReceiverStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(receiverStoreData.Skip(startingOffset).Take(batchSize));
            }

            var report = (DirectMethodLongHaulReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(expectedIsPassed, report.IsPassed);
            Assert.Equal(expectedOk, report.SenderSuccesses);
            Assert.Equal(expectedStatusCodeZero, report.StatusCodeZero);
            Assert.Equal(expectedStatusCodeNotFound, report.DeviceNotFound);
            Assert.Equal(expectedOtherDict.Sum(x => x.Value), report.Other.Sum(x => x.Value));
            Assert.Equal(expectedOtherDict[HttpStatusCode.ServiceUnavailable], report.Other[HttpStatusCode.ServiceUnavailable]);
            Assert.Equal(expectedOtherDict[HttpStatusCode.InternalServerError], report.Other[HttpStatusCode.InternalServerError]);
        }
        public async Task SimpleResultsEnumeration(
            string[] expectedStoreValues,
            int batchSize)
        {
            string expectedSource = "expectedSource";
            string resultType     = "resultType1";

            var mockExpectedStore = new Mock <ISequentialStore <TestOperationResult> >();
            var expectedResults   = new StoreTestResultCollection <TestOperationResult>(mockExpectedStore.Object, batchSize);

            var expectedStoreData = GetStoreData(expectedSource, resultType, expectedStoreValues);

            for (int i = 0; i < expectedStoreData.Count; i += batchSize)
            {
                int startingOffset = i;
                mockExpectedStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(expectedStoreData.Skip(startingOffset).Take(batchSize));
            }

            int j = 0;

            while (await expectedResults.MoveNextAsync())
            {
                Assert.Equal(expectedStoreValues[j], expectedResults.Current.Result);
                j++;
            }
        }
Пример #15
0
        public async Task TestCreateReportWithSenderResultsOnlyAsync(
            IEnumerable <ulong> senderStoreValues,
            IEnumerable <HttpStatusCode> statusCodes,
            IEnumerable <DateTime> timestamps,
            int batchSize,
            ulong expectedNetworkOnSuccess,
            ulong expectedNetworkOffSuccess,
            ulong expectedNetworkOnToleratedSuccess,
            ulong expectedNetworkOffToleratedSuccess,
            ulong expectedNetworkOnFailure,
            ulong expectedNetworkOffFailure,
            ulong expectedMismatchSuccess,
            ulong expectedMismatchFailure,
            bool expectedIsPassed,
            NetworkControllerType networkControllerType = NetworkControllerType.Offline)
        {
            string senderSource = "senderSource";
            string resultType   = TestOperationResultType.DirectMethod.ToString();

            var mockSenderStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> senderResults = new StoreTestResultCollection <TestOperationResult>(mockSenderStore.Object, batchSize);
            var mockReceiverStore         = new Mock <ISequentialStore <TestOperationResult> >();
            var receiverResultsEnumerator = Option.None <IAsyncEnumerator <TestOperationResult> >();

            var reportGenerator = new DirectMethodConnectivityReportGenerator(
                TestDescription,
                Topology.SingleNode,
                Guid.NewGuid().ToString(),
                senderSource,
                senderResults.GetAsyncEnumerator(),
                Option.None <string>(),
                receiverResultsEnumerator,
                resultType,
                NetworkStatusTimeline,
                networkControllerType);

            var senderStoreData = GetSenderStoreData(senderSource, resultType, senderStoreValues, statusCodes, timestamps, Guid.NewGuid());

            for (int i = 0; i < senderStoreData.Count; i += batchSize)
            {
                int startingOffset = i;
                mockSenderStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(senderStoreData.Skip(startingOffset).Take(batchSize));
            }

            var report = (DirectMethodConnectivityReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(expectedNetworkOnSuccess, report.NetworkOnSuccess);
            Assert.Equal(expectedNetworkOffSuccess, report.NetworkOffSuccess);
            Assert.Equal(expectedNetworkOnToleratedSuccess, report.NetworkOnToleratedSuccess);
            Assert.Equal(expectedNetworkOffToleratedSuccess, report.NetworkOffToleratedSuccess);
            Assert.Equal(expectedNetworkOnFailure, report.NetworkOnFailure);
            Assert.Equal(expectedNetworkOffFailure, report.NetworkOffFailure);
            Assert.Equal(expectedMismatchSuccess, report.MismatchSuccess);
            Assert.Equal(expectedMismatchFailure, report.MismatchFailure);
            Assert.Equal(expectedIsPassed, report.IsPassed);
        }
        public async Task TestCreateReportAsync(
            IEnumerable <string> expectedStoreValues,
            IEnumerable <string> actualStoreValues,
            int batchSize,
            ulong expectedTotalExpectedCount,
            ulong expectedTotalMatchCount,
            ulong expectedTotalDuplicateExpectedResultCount,
            ulong expectedTotalDuplicateActualResultCount,
            int expectedMissingResultsCount)
        {
            string expectedSource = "expectedSource";
            string actualSource   = "actualSource";
            string resultType     = TestOperationResultType.Messages.ToString();

            var mockExpectedStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> expectedResults = new StoreTestResultCollection <TestOperationResult>(mockExpectedStore.Object, batchSize);
            var mockActualStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> actualResults = new StoreTestResultCollection <TestOperationResult>(mockActualStore.Object, batchSize);

            var reportGenerator = new CountingReportGenerator(
                TestDescription,
                Guid.NewGuid().ToString(),
                expectedSource,
                expectedResults.GetAsyncEnumerator(),
                actualSource,
                actualResults.GetAsyncEnumerator(),
                resultType,
                new SimpleTestOperationResultComparer(),
                UnmatchedResultsMaxSize,
                false);

            var expectedStoreData = GetStoreData(expectedSource, resultType, expectedStoreValues);

            for (int i = 0; i < expectedStoreData.Count; i += batchSize)
            {
                int startingOffset = i;
                mockExpectedStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(expectedStoreData.Skip(startingOffset).Take(batchSize));
            }

            var actualStoreData = GetStoreData(actualSource, resultType, actualStoreValues);

            for (int j = 0; j < expectedStoreData.Count; j += batchSize)
            {
                int startingOffset = j;
                mockActualStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(actualStoreData.Skip(startingOffset).Take(batchSize));
            }

            var report = (CountingReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(expectedTotalExpectedCount, report.TotalExpectCount);
            Assert.Equal(expectedTotalMatchCount, report.TotalMatchCount);
            Assert.Equal(expectedTotalDuplicateExpectedResultCount, report.TotalDuplicateExpectedResultCount);
            Assert.Equal(expectedTotalDuplicateActualResultCount, report.TotalDuplicateActualResultCount);
            Assert.Equal(expectedMissingResultsCount, report.UnmatchedResults.Count);
        }
Пример #17
0
        public async Task FilterTestActualResultAtEndWithNoMatch()
        {
            TestableTestResultFilter filter   = new TestableTestResultFilter(new SimpleTestOperationResultComparer(), this.Expected3, this.Actual3);
            TimeSpan unmatchedResultTolerance = TimeSpan.FromMinutes(5);
            var      mockExpectedStore        = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> expectedResults = new StoreTestResultCollection <TestOperationResult>(mockExpectedStore.Object, 10);
            var mockActualStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> actualResults = new StoreTestResultCollection <TestOperationResult>(mockActualStore.Object, 10);
            List <TestOperationResult>             list          = new List <TestOperationResult>();

            (var filteredExpectedTestResults, var filteredActualTestResults) =
                await filter.FilterResults(unmatchedResultTolerance, expectedResults, actualResults);

            Assert.Equal(3, await filteredExpectedTestResults.CountAsync());
            Assert.Equal(5, await filteredActualTestResults.CountAsync());
        }
        public void TestConstructorThrowsWhenSenderStoreIsNotProvided()
        {
            int batchSize         = 10;
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> receiverResults = new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize);

            ArgumentNullException ex = Assert.Throws <ArgumentNullException>(
                () => new DirectMethodLongHaulReportGenerator(
                    TestDescription,
                    Guid.NewGuid().ToString(),
                    "senderSource",
                    null,
                    "receiverSource",
                    receiverResults.GetAsyncEnumerator(),
                    "resultType1"));

            Assert.Equal("senderTestResults", ex.ParamName);
        }
Пример #19
0
        private StoreTestResultCollection <TestOperationResult> GetInvalidStoreTestResultCollection(
            IEnumerable <string> resultValues,
            IEnumerable <DateTime> resultDates,
            IEnumerable <string> resultOperations)
        {
            int    batchSize         = 500;
            string source            = "testSource";
            var    expectedStoreData = GetInvalidStoreData(source, resultValues, resultDates);
            var    mockResultStore   = new Mock <ISequentialStore <TestOperationResult> >();
            var    resultCollection  = new StoreTestResultCollection <TestOperationResult>(mockResultStore.Object, batchSize);

            for (int i = 0; i < expectedStoreData.Count; i += batchSize)
            {
                int startingOffset = i;
                mockResultStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(expectedStoreData.Skip(startingOffset).Take(batchSize));
            }

            return(resultCollection);
        }
Пример #20
0
        public async Task TestCreateReportWithSenderResultsOnlyAsync(
            IEnumerable <ulong> senderStoreValues,
            IEnumerable <ulong> receiverStoreValues,
            IEnumerable <HttpStatusCode> statusCodes,
            IEnumerable <DateTime> timestamps,
            int batchSize,
            bool expectedIsPassed,
            ulong expectedOk,
            ulong expectedStatusCodeZero,
            ulong expectedUnknown)
        {
            string senderSource = "senderSource";
            var    values       = receiverStoreValues;
            string resultType   = TestOperationResultType.DirectMethod.ToString();

            var mockSenderStore = new Mock <ISequentialStore <TestOperationResult> >();
            var senderResults   = new StoreTestResultCollection <TestOperationResult>(mockSenderStore.Object, batchSize);
            var receiverResults = Option.None <ITestResultCollection <TestOperationResult> >();

            var reportGenerator = new DirectMethodLongHaulReportGenerator(
                TestDescription,
                Guid.NewGuid().ToString(),
                senderSource,
                senderResults,
                Option.None <string>(),
                receiverResults,
                resultType);

            var senderStoreData = GetSenderStoreData(senderSource, resultType, senderStoreValues, statusCodes, timestamps, Guid.NewGuid());

            for (int i = 0; i < senderStoreData.Count; i += batchSize)
            {
                int startingOffset = i;
                mockSenderStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(senderStoreData.Skip(startingOffset).Take(batchSize));
            }

            var report = (DirectMethodLongHaulReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(expectedIsPassed, report.IsPassed);
            Assert.Equal(expectedOk, report.SenderSuccesses);
            Assert.Equal(expectedStatusCodeZero, report.StatusCodeZero);
            Assert.Equal(expectedUnknown, report.Unknown);
        }
        public void TestConstructorThrowsWhenExpectedStoreIsNotProvided()
        {
            int batchSize       = 10;
            var mockActualStore = new Mock <ISequentialStore <TestOperationResult> >();
            var actualResults   = new StoreTestResultCollection <TestOperationResult>(mockActualStore.Object, batchSize);

            ArgumentNullException ex = Assert.Throws <ArgumentNullException>(
                () => new DirectMethodReportGenerator(
                    Guid.NewGuid().ToString(),
                    "expectedSource",
                    null,
                    "actualSource",
                    actualResults,
                    "resultType1",
                    new DirectMethodTestOperationResultComparer(),
                    NetworkStatusTimeline));

            Assert.Equal("expectedTestResults", ex.ParamName);
        }
        public void TestConstructorThrowsWhenTrackingIdIsNotProvided(string trackingId)
        {
            int batchSize         = 10;
            var mockSenderResults = new Mock <IAsyncEnumerator <TestOperationResult> >();
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> receiverResults = new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize);

            ArgumentException ex = Assert.Throws <ArgumentException>(
                () => new DirectMethodLongHaulReportGenerator(
                    TestDescription,
                    trackingId,
                    "senderSource",
                    mockSenderResults.Object,
                    "receiverSource",
                    receiverResults.GetAsyncEnumerator(),
                    "resultType1"));

            Assert.StartsWith("trackingId", ex.Message);
        }
        public void TestConstructorThrowsWhenResultTypeIsNotProvided(string resultType)
        {
            int batchSize           = 10;
            var mockExpectedResults = new Mock <ITestResultCollection <TestOperationResult> >();
            var mockActualStore     = new Mock <ISequentialStore <TestOperationResult> >();
            var actualResults       = new StoreTestResultCollection <TestOperationResult>(mockActualStore.Object, batchSize);

            ArgumentException ex = Assert.Throws <ArgumentException>(
                () => new DirectMethodReportGenerator(
                    Guid.NewGuid().ToString(),
                    "expectedSource",
                    mockExpectedResults.Object,
                    "actualSource",
                    actualResults,
                    resultType,
                    new DirectMethodTestOperationResultComparer(),
                    NetworkStatusTimeline));

            Assert.StartsWith("resultType", ex.Message);
        }
        public void TestConstructorThrowsWhenResultTypeIsNotProvided(string resultType)
        {
            int batchSize         = 10;
            var mockSenderResults = new Mock <IAsyncEnumerator <TestOperationResult> >();
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult> receiverResults = new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize);

            ArgumentException ex = Assert.Throws <ArgumentException>(
                () => new DirectMethodLongHaulReportGenerator(
                    TestDescription,
                    Guid.NewGuid().ToString(),
                    "senderSource",
                    Topology.SingleNode,
                    false,
                    mockSenderResults.Object,
                    "receiverSource",
                    receiverResults.GetAsyncEnumerator(),
                    resultType));

            Assert.StartsWith("resultType", ex.Message);
        }
Пример #25
0
        public void TestConstructorThrowsWhenSenderStoreIsNotProvided()
        {
            int batchSize = 10;
            NetworkControllerType networkControllerType = NetworkControllerType.Offline;
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult>           receiverResults           = new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize);
            Option <IAsyncEnumerator <TestOperationResult> > receiverResultsEnumerator = Option.Some <IAsyncEnumerator <TestOperationResult> >(receiverResults.GetAsyncEnumerator());

            ArgumentNullException ex = Assert.Throws <ArgumentNullException>(
                () => new DirectMethodConnectivityReportGenerator(
                    TestDescription,
                    Guid.NewGuid().ToString(),
                    "senderSource",
                    null,
                    Option.Some("receiverSource"),
                    receiverResultsEnumerator,
                    "resultType1",
                    NetworkStatusTimeline,
                    networkControllerType));

            Assert.Equal("senderTestResults", ex.ParamName);
        }
Пример #26
0
        public void TestConstructorThrowsWhenReceiverTestResultsButNoReceiverSource()
        {
            int batchSize = 10;
            NetworkControllerType networkControllerType = NetworkControllerType.Offline;
            var mockSenderResults = new Mock <IAsyncEnumerator <TestOperationResult> >();
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult>           receiverResults           = new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize);
            Option <IAsyncEnumerator <TestOperationResult> > receiverResultsEnumerator = Option.Some <IAsyncEnumerator <TestOperationResult> >(receiverResults.GetAsyncEnumerator());

            ArgumentException ex = Assert.Throws <ArgumentException>(
                () => new DirectMethodConnectivityReportGenerator(
                    TestDescription,
                    Guid.NewGuid().ToString(),
                    "senderSource",
                    mockSenderResults.Object,
                    Option.None <string>(),
                    receiverResultsEnumerator,
                    "resultType1",
                    NetworkStatusTimeline,
                    networkControllerType));

            Assert.Equal("Provide both receiverSource and receiverTestResults or neither.", ex.Message);
        }
Пример #27
0
        public void TestConstructorThrowsWhenTrackingIdIsNotProvided(string trackingId)
        {
            int batchSize = 10;
            NetworkControllerType networkControllerType = NetworkControllerType.Offline;
            var mockSenderResults = new Mock <IAsyncEnumerator <TestOperationResult> >();
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            IAsyncEnumerable <TestOperationResult>           receiverResults           = new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize);
            Option <IAsyncEnumerator <TestOperationResult> > receiverResultsEnumerator = Option.Some <IAsyncEnumerator <TestOperationResult> >(receiverResults.GetAsyncEnumerator());

            ArgumentException ex = Assert.Throws <ArgumentException>(
                () => new DirectMethodConnectivityReportGenerator(
                    TestDescription,
                    trackingId,
                    "senderSource",
                    mockSenderResults.Object,
                    Option.Some("receiverSource"),
                    receiverResultsEnumerator,
                    "resultType1",
                    NetworkStatusTimeline,
                    networkControllerType));

            Assert.StartsWith("trackingId", ex.Message);
        }
Пример #28
0
 static async Task <NetworkStatusTimeline> GetNetworkStatusTimelineAsync(StoreTestResultCollection <TestOperationResult> results, TimeSpan tolerancePeriod)
 {
     return(await NetworkStatusTimeline.CreateAsync(results, tolerancePeriod));
 }
        public async Task TestCreateReportAsync(
            IEnumerable <string> expectedStoreValues,
            IEnumerable <string> actualStoreValues,
            IEnumerable <int> statusCodes,
            IEnumerable <DateTime> timestamps,
            int batchSize,
            ulong expectedNetworkOnSuccess,
            ulong expectedNetworkOffSuccess,
            ulong expectedNetworkOnToleratedSuccess,
            ulong expectedNetworkOffToleratedSuccess,
            ulong expectedNetworkOnFailure,
            ulong expectedNetworkOffFailure,
            ulong expectedMismatchSuccess,
            ulong expectedMismatchFailure,
            bool expectedIsPassed)
        {
            string expectedSource = "expectedSource";
            string actualSource   = "actualSource";
            string resultType     = TestOperationResultType.DirectMethod.ToString();

            var mockExpectedStore = new Mock <ISequentialStore <TestOperationResult> >();
            var expectedResults   = new StoreTestResultCollection <TestOperationResult>(mockExpectedStore.Object, batchSize);
            var mockActualStore   = new Mock <ISequentialStore <TestOperationResult> >();
            var actualResults     = new StoreTestResultCollection <TestOperationResult>(mockActualStore.Object, batchSize);

            var reportGenerator = new DirectMethodReportGenerator(
                Guid.NewGuid().ToString(),
                expectedSource,
                expectedResults,
                actualSource,
                actualResults,
                resultType,
                new DirectMethodTestOperationResultComparer(),
                NetworkStatusTimeline);

            var expectedStoreData = GetExpectedStoreData(expectedSource, resultType, expectedStoreValues, statusCodes, timestamps);

            for (int i = 0; i < expectedStoreData.Count; i += batchSize)
            {
                int startingOffset = i;
                mockExpectedStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(expectedStoreData.Skip(startingOffset).Take(batchSize));
            }

            var actualStoreData = GetActualStoreData(actualSource, resultType, actualStoreValues, timestamps);

            for (int j = 0; j < expectedStoreData.Count; j += batchSize)
            {
                int startingOffset = j;
                mockActualStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(actualStoreData.Skip(startingOffset).Take(batchSize));
            }

            var report = (DirectMethodReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(expectedNetworkOnSuccess, report.NetworkOnSuccess);
            Assert.Equal(expectedNetworkOffSuccess, report.NetworkOffSuccess);
            Assert.Equal(expectedNetworkOnToleratedSuccess, report.NetworkOnToleratedSuccess);
            Assert.Equal(expectedNetworkOffToleratedSuccess, report.NetworkOffToleratedSuccess);
            Assert.Equal(expectedNetworkOnFailure, report.NetworkOnFailure);
            Assert.Equal(expectedNetworkOffFailure, report.NetworkOffFailure);
            Assert.Equal(expectedMismatchSuccess, report.MismatchSuccess);
            Assert.Equal(expectedMismatchFailure, report.MismatchFailure);
            Assert.Equal(expectedIsPassed, report.IsPassed);
        }
        public async Task TestCreateReportAsync(
            IEnumerable <string> senderStoreValues,
            IEnumerable <string> receiverStoreValues,
            IEnumerable <HttpStatusCode> statusCodes,
            IEnumerable <DateTime> timestamps,
            int batchSize,
            ulong expectedNetworkOnSuccess,
            ulong expectedNetworkOffSuccess,
            ulong expectedNetworkOnToleratedSuccess,
            ulong expectedNetworkOffToleratedSuccess,
            ulong expectedNetworkOnFailure,
            ulong expectedNetworkOffFailure,
            ulong expectedMismatchSuccess,
            ulong expectedMismatchFailure,
            bool expectedIsPassed)
        {
            string senderSource   = "senderSource";
            string receiverSource = "receiverSource";
            string resultType     = TestOperationResultType.DirectMethod.ToString();

            var mockSenderStore   = new Mock <ISequentialStore <TestOperationResult> >();
            var senderResults     = new StoreTestResultCollection <TestOperationResult>(mockSenderStore.Object, batchSize);
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            var receiverResults   = Option.Some <ITestResultCollection <TestOperationResult> >(
                new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize));

            var reportGenerator = new DirectMethodReportGenerator(
                Guid.NewGuid().ToString(),
                senderSource,
                senderResults,
                Option.Some(receiverSource),
                receiverResults,
                resultType,
                NetworkStatusTimeline);

            Guid guid            = Guid.NewGuid();
            var  senderStoreData = GetSenderStoreData(senderSource, resultType, senderStoreValues, statusCodes, timestamps, guid);

            for (int i = 0; i < senderStoreData.Count; i += batchSize)
            {
                int startingOffset = i;
                mockSenderStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(senderStoreData.Skip(startingOffset).Take(batchSize));
            }

            var receiverStoreData = GetReceiverStoreData(receiverSource, resultType, receiverStoreValues, timestamps, guid);

            for (int j = 0; j < senderStoreData.Count; j += batchSize)
            {
                int startingOffset = j;
                mockReceiverStore.Setup(s => s.GetBatch(startingOffset, batchSize)).ReturnsAsync(receiverStoreData.Skip(startingOffset).Take(batchSize));
            }

            var report = (DirectMethodReport)await reportGenerator.CreateReportAsync();

            Assert.Equal(expectedNetworkOnSuccess, report.NetworkOnSuccess);
            Assert.Equal(expectedNetworkOffSuccess, report.NetworkOffSuccess);
            Assert.Equal(expectedNetworkOnToleratedSuccess, report.NetworkOnToleratedSuccess);
            Assert.Equal(expectedNetworkOffToleratedSuccess, report.NetworkOffToleratedSuccess);
            Assert.Equal(expectedNetworkOnFailure, report.NetworkOnFailure);
            Assert.Equal(expectedNetworkOffFailure, report.NetworkOffFailure);
            Assert.Equal(expectedMismatchSuccess, report.MismatchSuccess);
            Assert.Equal(expectedMismatchFailure, report.MismatchFailure);
            Assert.Equal(expectedIsPassed, report.IsPassed);
        }