Exemple #1
0
        internal DirectMethodConnectivityReportGenerator(
            string testDescription,
            string trackingId,
            string senderSource,
            IAsyncEnumerator <TestOperationResult> senderTestResults,
            Option <string> receiverSource,
            Option <IAsyncEnumerator <TestOperationResult> > receiverTestResults,
            string resultType,
            NetworkStatusTimeline networkStatusTimeline,
            NetworkControllerType networkControllerType)
        {
            if (receiverSource.HasValue ^ receiverTestResults.HasValue)
            {
                throw new ArgumentException("Provide both receiverSource and receiverTestResults or neither.");
            }

            this.TestDescription       = Preconditions.CheckNonWhiteSpace(testDescription, nameof(testDescription));
            this.trackingId            = Preconditions.CheckNonWhiteSpace(trackingId, nameof(trackingId));
            this.SenderSource          = Preconditions.CheckNonWhiteSpace(senderSource, nameof(senderSource));
            this.SenderTestResults     = Preconditions.CheckNotNull(senderTestResults, nameof(senderTestResults));
            this.ReceiverSource        = receiverSource;
            this.ReceiverTestResults   = receiverTestResults;
            this.ResultType            = Preconditions.CheckNonWhiteSpace(resultType, nameof(resultType));
            this.NetworkStatusTimeline = Preconditions.CheckNotNull(networkStatusTimeline, nameof(networkStatusTimeline));
            this.NetworkControllerType = networkControllerType;
        }
Exemple #2
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);
        }
Exemple #3
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);
        }
Exemple #4
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);
        }
Exemple #5
0
        public void TestConstructorThrowsWhenReceiverSourceButNoReceiverTestResults()
        {
            NetworkControllerType networkControllerType = NetworkControllerType.Offline;
            var mockSenderResults = new Mock <IAsyncEnumerator <TestOperationResult> >();

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

            Assert.Equal("Provide both receiverSource and receiverTestResults or neither.", ex.Message);
        }
Exemple #6
0
        public void TestConstructorThrowsWhenSenderStoreIsNotProvided()
        {
            int batchSize = 10;
            NetworkControllerType networkControllerType = NetworkControllerType.Offline;
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            var receiverResults   = Option.Some <ITestResultCollection <TestOperationResult> >(
                new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize));

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

            Assert.Equal("senderTestResults", ex.ParamName);
        }
Exemple #7
0
        public void TestConstructorThrowsWhenTrackingIdIsNotProvided(string trackingId)
        {
            int batchSize = 10;
            NetworkControllerType networkControllerType = NetworkControllerType.Offline;
            var mockSenderResults = new Mock <ITestResultCollection <TestOperationResult> >();
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            var receiverResults   = Option.Some <ITestResultCollection <TestOperationResult> >(
                new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize));

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

            Assert.StartsWith("trackingId", ex.Message);
        }
Exemple #8
0
        public void TestConstructorThrowsWhenReceiverTestResultsButNoReceiverSource()
        {
            int batchSize = 10;
            NetworkControllerType networkControllerType = NetworkControllerType.Offline;
            var mockSenderResults = new Mock <ITestResultCollection <TestOperationResult> >();
            var mockReceiverStore = new Mock <ISequentialStore <TestOperationResult> >();
            var receiverResults   = Option.Some <ITestResultCollection <TestOperationResult> >(
                new StoreTestResultCollection <TestOperationResult>(mockReceiverStore.Object, batchSize));

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

            Assert.Equal("Provide both receiverSource and receiverTestResults or neither.", ex.Message);
        }
Exemple #9
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,
                    Topology.SingleNode,
                    Guid.NewGuid().ToString(),
                    "senderSource",
                    null,
                    Option.Some("receiverSource"),
                    receiverResultsEnumerator,
                    "resultType1",
                    NetworkStatusTimeline,
                    networkControllerType));

            Assert.Equal("senderTestResults", ex.ParamName);
        }
Exemple #10
0
        public void TestConstructorThrowsWhenTestDescriptionIsNotProvided(string testDescription)
        {
            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.Some("receiverSource"),
                    receiverResultsEnumerator,
                    "resultType1",
                    NetworkStatusTimeline,
                    networkControllerType));

            Assert.StartsWith("testDescription", ex.Message);
        }
Exemple #11
0
 internal TestReportGeneratorFactory(ITestOperationResultStorage storage, NetworkControllerType networkControllerType, Option <LongHaulSpecificSettings> longhaulSettings)
 {
     this.Storage = Preconditions.CheckNotNull(storage, nameof(storage));
     this.NetworkControllerType = networkControllerType;
     this.LonghaulSettings      = longhaulSettings;
 }
        public Task ReportNetworkStatusAsync(NetworkControllerOperation operation, NetworkControllerStatus networkControllerStatus, NetworkControllerType networkControllerType, bool success = true)
        {
            var testResult = new NetworkControllerTestResult(this.moduleId, DateTime.UtcNow)
            {
                Operation               = operation,
                OperationStatus         = success ? "Success" : "Failed",
                NetworkControllerType   = networkControllerType,
                NetworkControllerStatus = networkControllerStatus,
                TrackingId              = this.trackingId
            };

            return(ExecuteWithRetry(
                       () => ModuleUtil.ReportTestResultAsync(
                           this.testResultReportingClient, Log, testResult),
                       RetryingReportTestResult));
        }
 internal TestReportGeneratorFactory(ITestOperationResultStorage storage, NetworkControllerType networkControllerType)
 {
     this.Storage = Preconditions.CheckNotNull(storage, nameof(storage));
     this.NetworkControllerType = networkControllerType;
 }
        public Task ReportNetworkStatus(NetworkControllerOperation operation, NetworkControllerStatus networkControllerStatus, NetworkControllerType networkControllerType, bool success = true)
        {
            var networkController = new NetworkControllerResult()
            {
                Operation = operation.ToString(), OperationStatus = success ? "Success" : "Failed", NetworkControllerType = networkControllerType, NetworkControllerStatus = networkControllerStatus, TrackingId = this.trackingId
            };

            return(ModuleUtil.ReportStatus(this.trcClient, Log, this.moduleId, networkController.ToString(), TestOperationResultType.Network.ToString()));
        }