Esempio n. 1
0
        public async Task PriorityQueueTimeToLive()
        {
            CancellationToken token        = this.TestToken;
            string            trcImage     = Context.Current.TestResultCoordinatorImage.Expect(() => new ArgumentException("testResultCoordinatorImage parameter is required for Priority Queues test"));
            string            loadGenImage = Context.Current.LoadGenImage.Expect(() => new ArgumentException("loadGenImage parameter is required for Priority Queues test"));
            string            relayerImage = Context.Current.RelayerImage.Expect(() => new ArgumentException("relayerImage parameter is required for Priority Queues test"));
            string            trackingId   = Guid.NewGuid().ToString();
            TestInfo          testInfo     = this.InitTestInfo(5, 20);

            Action <EdgeConfigBuilder> addLoadGenConfig = this.BuildAddLoadGenConfig(trackingId, loadGenImage, testInfo, false);
            Action <EdgeConfigBuilder> addTrcConfig     = TestResultCoordinatorUtil.BuildAddTestResultCoordinatorConfig(trackingId, trcImage, LoadGenModuleName, RelayerModuleName);

            EdgeDeployment deployment = await this.runtime.DeployConfigurationAsync(addLoadGenConfig + addTrcConfig, token, Context.Current.NestedEdge);

            PriorityQueueTestStatus loadGenTestStatus = await this.PollUntilFinishedAsync(LoadGenModuleName, token);

            // Wait long enough for TTL to expire for some of the messages
            Log.Information($"Waiting for {testInfo.TtlThreshold} seconds for TTL's to expire");
            await Task.Delay(testInfo.TtlThreshold * 1000);

            Action <EdgeConfigBuilder> addRelayerConfig = this.BuildAddRelayerConfig(relayerImage, loadGenTestStatus);

            deployment = await this.runtime.DeployConfigurationAsync(addLoadGenConfig + addTrcConfig + addRelayerConfig, token, Context.Current.NestedEdge);

            await this.PollUntilFinishedAsync(RelayerModuleName, token);

            await TestResultCoordinatorUtil.ValidateResultsAsync();
        }
Esempio n. 2
0
        public async Task GenericMqttTelemetry()
        {
            CancellationToken token = this.TestToken;
            string            networkControllerImage = Context.Current.NetworkControllerImage.Expect(() => new ArgumentException("networkControllerImage parameter is required for Generic Mqtt test"));
            string            trcImage = Context.Current.TestResultCoordinatorImage.Expect(() => new ArgumentException("testResultCoordinatorImage parameter is required for Generic Mqtt test"));
            string            genericMqttTesterImage = Context.Current.GenericMqttTesterImage.Expect(() => new ArgumentException("genericMqttTesterImage parameter is required for Generic Mqtt test"));
            string            trackingId             = Guid.NewGuid().ToString();

            Action <EdgeConfigBuilder> addMqttBrokerConfig            = MqttBrokerUtil.BuildAddBrokerToDeployment(false);
            Action <EdgeConfigBuilder> addNetworkControllerConfig     = TestResultCoordinatorUtil.BuildAddNetworkControllerConfig(trackingId, networkControllerImage);
            Action <EdgeConfigBuilder> addTestResultCoordinatorConfig = TestResultCoordinatorUtil.BuildAddTestResultCoordinatorConfig(trackingId, trcImage, GenericMqttInitiatorModuleName, GenericMqttInitiatorModuleName);
            Action <EdgeConfigBuilder> addGenericMqttTesterConfig     = this.BuildAddGenericMqttTesterConfig(trackingId, trcImage, genericMqttTesterImage);
            Action <EdgeConfigBuilder> config     = addMqttBrokerConfig + addNetworkControllerConfig + addTestResultCoordinatorConfig + addGenericMqttTesterConfig;
            EdgeDeployment             deployment = await this.runtime.DeployConfigurationAsync(config, token, Context.Current.NestedEdge);

            await ValidateScenarioAsync(TimeSpan.FromSeconds(VerificationTolerance), GenericMqttTesterMaxMessages);
        }
Esempio n. 3
0
        static async Task ValidateScenarioAsync(TimeSpan verificationTolerance, int numResultsExpected)
        {
            DateTime end = DateTime.UtcNow + verificationTolerance;

            bool scenarioPassed = false;

            while (DateTime.UtcNow < end)
            {
                await Task.Delay(TimeSpan.FromSeconds(5));

                if (await TestResultCoordinatorUtil.IsCountingReportResultValidAsync(numResultsExpected))
                {
                    scenarioPassed = true;
                    break;
                }
            }

            Assert.True(scenarioPassed);
        }
Esempio n. 4
0
        public async Task PriorityQueueModuleToHubMessages()
        {
            CancellationToken token                  = this.TestToken;
            string            trcImage               = Context.Current.TestResultCoordinatorImage.Expect(() => new ArgumentException("testResultCoordinatorImage parameter is required for Priority Queues test"));
            string            loadGenImage           = Context.Current.LoadGenImage.Expect(() => new ArgumentException("loadGenImage parameter is required for Priority Queues test"));
            string            relayerImage           = Context.Current.RelayerImage.Expect(() => new ArgumentException("relayerImage parameter is required for Priority Queues test"));
            string            networkControllerImage = Context.Current.NetworkControllerImage.Expect(() => new ArgumentException("networkControllerImage parameter is required for Priority Queues test"));
            string            trackingId             = Guid.NewGuid().ToString();
            TestInfo          testInfo               = this.InitTestInfo(5, 1000, true, "00:00:40");

            var testResultReportingClient = new TestResultReportingClient {
                BaseUrl = "http://localhost:5001"
            };

            Action <EdgeConfigBuilder> addLoadGenConfig           = this.BuildAddLoadGenConfig(trackingId, loadGenImage, testInfo, true);
            Action <EdgeConfigBuilder> addTrcConfig               = TestResultCoordinatorUtil.BuildAddTestResultCoordinatorConfig(trackingId, trcImage, LoadGenModuleName, "hubtest");
            Action <EdgeConfigBuilder> addNetworkControllerConfig = TestResultCoordinatorUtil.BuildAddNetworkControllerConfig(trackingId, networkControllerImage);

            EdgeDeployment deployment = await this.runtime.DeployConfigurationAsync(addLoadGenConfig + addTrcConfig + addNetworkControllerConfig, token, Context.Current.NestedEdge);

            bool networkOn = true;

            await this.ToggleConnectivity(!networkOn, NetworkControllerModuleName, token);

            await Task.Delay(TimeSpan.Parse(LoadGenTestDuration) + TimeSpan.Parse(testInfo.LoadGenStartDelay) + TimeSpan.FromSeconds(10));

            await this.ToggleConnectivity(networkOn, NetworkControllerModuleName, token);

            PriorityQueueTestStatus loadGenTestStatus = await this.PollUntilFinishedAsync(LoadGenModuleName, token);

            ConcurrentQueue <MessageTestResult> messages = new ConcurrentQueue <MessageTestResult>();

            await this.ReceiveEventsFromIotHub(deployment.StartTime, messages, loadGenTestStatus, trackingId, token);

            while (messages.TryDequeue(out MessageTestResult messageTestResult))
            {
                await testResultReportingClient.ReportResultAsync(messageTestResult.ToTestOperationResultDto());
            }

            await TestResultCoordinatorUtil.ValidateResultsAsync();
        }
Esempio n. 5
0
        public async Task PriorityQueueModuleToModuleMessages()
        {
            CancellationToken token        = this.TestToken;
            string            trcImage     = Context.Current.TestResultCoordinatorImage.Expect(() => new ArgumentException("testResultCoordinatorImage parameter is required for Priority Queues test"));
            string            loadGenImage = Context.Current.LoadGenImage.Expect(() => new ArgumentException("loadGenImage parameter is required for Priority Queues test"));
            string            relayerImage = Context.Current.RelayerImage.Expect(() => new ArgumentException("relayerImage parameter is required for Priority Queues test"));
            string            trackingId   = Guid.NewGuid().ToString();
            TestInfo          testInfo     = this.InitTestInfo(5, 1000, true);

            Action <EdgeConfigBuilder> addLoadGenConfig = this.BuildAddLoadGenConfig(trackingId, loadGenImage, testInfo, false);
            Action <EdgeConfigBuilder> addTrcConfig     = TestResultCoordinatorUtil.BuildAddTestResultCoordinatorConfig(trackingId, trcImage, LoadGenModuleName, RelayerModuleName);

            EdgeDeployment deployment = await this.runtime.DeployConfigurationAsync(addLoadGenConfig + addTrcConfig, token, Context.Current.NestedEdge);

            PriorityQueueTestStatus loadGenTestStatus = await this.PollUntilFinishedAsync(LoadGenModuleName, token);

            Action <EdgeConfigBuilder> addRelayerConfig = this.BuildAddRelayerConfig(relayerImage, loadGenTestStatus);

            deployment = await this.runtime.DeployConfigurationAsync(addLoadGenConfig + addTrcConfig + addRelayerConfig, token, Context.Current.NestedEdge);

            await this.PollUntilFinishedAsync(RelayerModuleName, token);

            await TestResultCoordinatorUtil.ValidateResultsAsync();
        }