Пример #1
0
        public void BinariesCanBeUpdated()
        {
            var id      = _cache.Add(new BinaryStorageClass(), _bytes);
            var details = _cache.Get(id);

            details.NameTag = 100;
            _cache.Update(details);

            _cache.Dispose();
            _cache = new BinariesCache(_data);
            _cache.Open(_path);

            Assert.That(_cache.Get(id).NameTag, Is.EqualTo(100));
        }
Пример #2
0
        public void SetUp()
        {
            _folder = new AutoKillFolder("TestBinariesCache", true);
            Directory.CreateDirectory(_folder.Path);
            _path = Path.Combine(_folder.Path, "test");

            _data  = new MockBinaryDataCache();
            _cache = new BinariesCache(_data);
            _cache.Create(_path);

            var random = new Random();

            _bytes = new byte[BinaryDataStorageClass.MaxBufferSize * 2];
            random.NextBytes(_bytes);
        }
Пример #3
0
        public void BinariesAreLoadedOnOpen()
        {
            var ids = Enumerable.Range(0, 20).Select(i => Guid.NewGuid()).ToList();

            foreach (var guid in ids)
            {
                _cache.Add(new BinaryStorageClass {
                    Id = guid
                }, _bytes);
            }

            _cache.Dispose();
            _cache = new BinariesCache(_data);
            _cache.Open(_path);

            Assert.That(_cache.Binaries.Select(b => b.Id).OrderBy(b => b), Is.EqualTo(ids.OrderBy(i => i)));
        }
Пример #4
0
        public void MissingDataIsRecoveredOnOpen()
        {
            var ids = Enumerable.Range(0, 20).Select(i => Guid.NewGuid()).ToList();

            foreach (var guid in ids)
            {
                _cache.Add(new BinaryStorageClass {
                    Id = guid
                }, _bytes);
            }

            //simulate a failure in which saving the data failed to commit (which could be caused by power failure, for example).
            _data.Data.Remove(_cache.Get(ids.Last()).FirstDataBlockId);

            //Reopen the file, which should discard the last binary, because it's data is missing
            _cache.Dispose();
            _cache = new BinariesCache(_data);
            _cache.Open(_path);

            Assert.That(_cache.Get(ids.Last()), Is.Null);
        }
Пример #5
0
        public void FileIndexIsRecoveredOnOpen()
        {
            var ids = Enumerable.Range(0, 20).Select(i => Guid.NewGuid()).ToList();

            foreach (var guid in ids)
            {
                _cache.Add(new BinaryStorageClass {
                    Id = guid
                }, _bytes);
            }

            _cache.Dispose();
            _cache = new BinariesCache(_data);
            _cache.Open(_path);

            var newId = Guid.NewGuid();

            _cache.Add(new BinaryStorageClass {
                Id = newId
            }, _bytes);
            Assert.That(_cache.Get(newId).FileIndex, Is.EqualTo(21));
        }