Esempio n. 1
0
        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);
        }
Esempio n. 3
0
        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);
        }