public async Task BandwidthCheckTimesOutOnSlowCopyByUsingCopyToOptions() { var checkInterval = TimeSpan.FromSeconds(1); var actualBandwidthBytesPerSec = 1024; var actualBandwidth = MbPerSec(bytesPerSec: actualBandwidthBytesPerSec); var bandwidthLimit = MbPerSec(bytesPerSec: actualBandwidthBytesPerSec / 2); // Making sure the actual bandwidth checking options more permissive. var totalBytes = actualBandwidthBytesPerSec * 2; var checkerConfig = new BandwidthChecker.Configuration(checkInterval, bandwidthLimit, maxBandwidthLimit: null, bandwidthLimitMultiplier: null, historicalBandwidthRecordsStored: null); var checker = new BandwidthChecker(checkerConfig); using (var stream = new MemoryStream()) { var bandwidthConfiguration = new BandwidthConfiguration() { Interval = checkInterval, RequiredBytes = actualBandwidthBytesPerSec * 2, }; var options = new CopyOptions(bandwidthConfiguration); var result = await checker.CheckBandwidthAtIntervalAsync( _context, token => CopyRandomToStreamAtSpeed(token, stream, totalBytes, actualBandwidth, options), options, getErrorResult : diagnostics => new CopyFileResult(CopyResultCode.CopyBandwidthTimeoutError, diagnostics)); Assert.Equal(CopyResultCode.CopyBandwidthTimeoutError, result.Code); } }
EmulationConfiguration GetEmulationConfiguration(Config.NetworkEmulation config) { EmulationConfiguration emulationConfiguration = null; if (config.EmulationType == NetworkEmProfile.Bandwidth) { emulationConfiguration = new BandwidthConfiguration { DownstreamBandwidth = config.BandwidthDownstreamSpeed, UpstreamBandwidth = config.BandwidthUpstreamSpeed, TargetEndpoints = config.TargetEndpoints }; } if (config.EmulationType == NetworkEmProfile.Corruption) { emulationConfiguration = new CorruptionConfiguration { PacketPercentage = config.PacketPercentage, TargetEndpoints = config.TargetEndpoints }; } if (config.EmulationType == NetworkEmProfile.Latency) { emulationConfiguration = new LatencyConfiguration { FixedLatencyDelayMilliseconds = _config.LatencyDelay, TargetEndpoints = config.TargetEndpoints }; } /* TODO -CT * if (config.EmulationType == NetworkEmProfile.Disconnect) * { * emulationConfiguration = new DisconnectConfiguration * { * ConnectionTime = config.ConnectionTime, * DisconnectionTime = config.DisconnectionTime, * PeriodicDisconnectionRate = config.PeriodicDisconnectionRate, * TargetEndpoints = config.TargetEndpoints * }; * } */ if (config.EmulationType == NetworkEmProfile.Loss) //Random support implemented... { emulationConfiguration = new LossConfiguration { //BurstRate = config.BurstRate, //MaximumBurst = config.MaximumBurst, //MinimumBurst = config.MinimumBurst, //PeriodicLossPeriod = config.PeriodicLossPeriod, RandomLossRate = config.RandomLossRate, TargetEndpoints = config.TargetEndpoints }; } if (config.EmulationType == NetworkEmProfile.Reorder) { emulationConfiguration = new ReorderConfiguration { CorrelationPercentage = config.CorrelationPercentage, PacketPercentage = config.PacketPercentage }; } return(emulationConfiguration); }
private EmulationConfiguration GetEmulationConfiguration(Config.NetworkEmulation config) { EmulationConfiguration emulationConfiguration = null; if (config.EmulationType == NetworkEmProfile.Bandwidth) { emulationConfiguration = new BandwidthConfiguration { DownstreamBandwidth = config.BandwidthDownstreamSpeed, UpstreamBandwidth = config.BandwidthUpstreamSpeed, TargetEndpoints = config.TargetEndpoints }; } if (config.EmulationType == NetworkEmProfile.Corruption) { emulationConfiguration = new CorruptionConfiguration { PacketPercentage = config.PacketPercentage, TargetEndpoints = config.TargetEndpoints }; } if (config.EmulationType == NetworkEmProfile.Latency) { emulationConfiguration = new LatencyConfiguration { FixedLatencyDelayMilliseconds = _config.LatencyDelay, TargetEndpoints = config.TargetEndpoints }; } /* TODO -CT * if (config.EmulationType == NetworkEmProfile.Disconnect) * { * emulationConfiguration = new DisconnectConfiguration * { * ConnectionTime = config.ConnectionTime, * DisconnectionTime = config.DisconnectionTime, * PeriodicDisconnectionRate = config.PeriodicDisconnectionRate, * TargetEndpoints = config.TargetEndpoints * }; * } */ if (config.EmulationType == NetworkEmProfile.Loss) //Random and Burst are supported... { emulationConfiguration = new LossConfiguration { LossRate = config.LossRate, LossType = config.LossType, TargetEndpoints = config.TargetEndpoints }; if (config.LossType == LossType.Burst) { ((LossConfiguration)emulationConfiguration).BurstRate = config.BurstRate; } } if (config.EmulationType == NetworkEmProfile.Reorder) { emulationConfiguration = new ReorderConfiguration { CorrelationPercentage = config.CorrelationPercentage, PacketPercentage = config.PacketPercentage }; } return(emulationConfiguration); }