示例#1
0
        [InlineData(3, 0, 3)]    // We have 0 locations
        public void BinManagerFromOther(int prevLocationsPerBin, int amountOfLocations, int currLocationsPerBin)
        {
            var(manager, locations) = CreateAndValidate(prevLocationsPerBin, amountOfLocations);
            var bytes = manager.Serialize();
            var deserializedManager = BinManager.CreateFromSerialized(bytes, currLocationsPerBin, _clock, TimeSpan.FromHours(1));

            ValidateBalanced(deserializedManager, locations);
        }
示例#2
0
        [InlineData(3, 1000, 10)] // Start with large amount of machines
        public void BinManagerSerializeDeserialize(int locationsPerBin, int initialAmountOfLocations, int locationsToAdd)
        {
            var(manager, locations) = CreateAndValidate(locationsPerBin, initialAmountOfLocations);
            AddLocationsAndValidate(manager, locations, locationsToAdd);

            var bytes = manager.Serialize();
            var deserializedManager = BinManager.CreateFromSerialized(bytes, locationsPerBin, _clock, TimeSpan.FromHours(1));

            VerifyMappingsAreEqual(manager, deserializedManager);
        }
示例#3
0
        public async Task StressTestForSerializationAsync()
        {
            var startLocations    = Enumerable.Range(1, 10).Select(i => new MachineId(i)).ToArray();
            var locationsToRemove = Enumerable.Range(1, 5).Select(i => new MachineId(i)).ToArray();

            for (var repetition = 0; repetition < 10; repetition++)
            {
                var manager = new BinManager(locationsPerBin: 3, startLocations, _clock, expiryTime: TimeSpan.FromSeconds(1));

                var tasks      = locationsToRemove.Select(i => Task.Run(() => manager.RemoveLocation(i))).ToArray();
                var serialized = manager.Serialize();
                BinManager.CreateFromSerialized(serialized, locationsPerBin: 3, _clock, TimeSpan.FromSeconds(1)); // We want to make sure that deserialization does not fail.
                await Task.WhenAll(tasks);
            }
        }