Ejemplo n.º 1
0
        static async Task StartAsync(INetworkController controller, CancellationToken cancellationToken)
        {
            var delay = Settings.Current.StartAfter;

            INetworkStatusReporter reporter = new NetworkStatusReporter(Settings.Current.TestResultCoordinatorEndpoint, Settings.Current.ModuleId, Settings.Current.TrackingId);

            foreach (Frequency item in Settings.Current.Frequencies)
            {
                Log.LogInformation($"Schedule task for type {controller.NetworkControllerType} to start after {delay} Offline frequency {item.OfflineFrequency} Online frequency {item.OnlineFrequency} Run times {item.RunsCount}");

                var taskExecutor = new CountedTaskExecutor(
                    async cs =>
                {
                    await SetNetworkControllerStatus(controller, NetworkControllerStatus.Enabled, reporter, cs);
                    await Task.Delay(item.OfflineFrequency, cs);
                    await SetNetworkControllerStatus(controller, NetworkControllerStatus.Disabled, reporter, cs);
                },
                    delay,
                    item.OnlineFrequency,
                    item.RunsCount,
                    Log,
                    "restrict/default");

                await taskExecutor.Schedule(cancellationToken);

                // Only needs to set the start delay for first frequency, after that reset to 0
                delay = TimeSpan.FromSeconds(0);
            }
        }
Ejemplo n.º 2
0
        static async Task StartAsync(INetworkController controller, CancellationToken cancellationToken)
        {
            INetworkStatusReporter reporter = new NetworkStatusReporter(Settings.Current.TestResultCoordinatorEndpoint, Settings.Current.ModuleId, Settings.Current.TrackingId);

            foreach (Frequency item in Settings.Current.Frequencies)
            {
                Log.LogInformation($"Schedule task for type {controller.NetworkControllerType} with enable network control frequency {item.OfflineFrequency}, disable network control frequency {item.OnlineFrequency}, and run times {item.RunsCount}.");

                var taskExecutor = new CountedTaskExecutor(
                    async cs =>
                {
                    await SetNetworkControllerStatus(controller, NetworkControllerStatus.Enabled, reporter, cs);
                    await Task.Delay(item.OfflineFrequency, cs);
                    await SetNetworkControllerStatus(controller, NetworkControllerStatus.Disabled, reporter, cs);
                },
                    TimeSpan.Zero,
                    item.OnlineFrequency,
                    item.RunsCount,
                    Log,
                    "restrict/default");

                await taskExecutor.Schedule(cancellationToken);
            }
        }