Esempio n. 1
0
        public Service(ulong capacity, uint port)
        {
            _memCache = new MemCache(capacity, Scheduler.Default);

            IScheduler scheduler = Scheduler.Default;

            var requestHandlers = GetRequestHandlers(scheduler, _memCache);

            _requestDispatcher = new RequestDispatcher(scheduler, _memCache, requestHandlers);
            _server            = new RequestResponseTcpServer(IPAddress.Any, (int)port, _requestDispatcher);
            _restListener      = new CacheRestServer(new Dictionary <string, IHttpHandler>
            {
                { "/cache/(.+)", new CacheRestHttpHandler(_memCache) },
                { "/static/(.+)", new StaticFileHttpHandler() }
            },
                                                     new[]
            {
                "http://localhost:8222/cache/",
                "http://localhost:8222/static/"
            });
            _websocketServer = new WebSocketServer(new [] { "http://localhost:8222/sub/" },
                                                   o => new CacheEntrySubscriptionHandler(_memCache, o));
            _fileSystem = new FileSystemWrapper();
            const string cachelogBin = "cachelog.bin";

            _restorer = new CacheRestorer(_memCache, _fileSystem, cachelogBin);
        }
Esempio n. 2
0
        public void Setup()
        {
            _mockCache = new Mock <IMemCache>();
            _mockFile  = new Mock <IFile>();

            _readStream  = new MemoryStream();
            _writeStream = new MemoryStream();
            _mockFile.Setup(s => s.Open(
                                It.IsAny <string>(),
                                It.Is <FileMode>(fm => fm == FileMode.OpenOrCreate),
                                It.Is <FileAccess>(fa => fa == FileAccess.Write))).Returns(_writeStream);

            _mockFileSystem = new Mock <IFileSystem>();
            _mockFileSystem.SetupGet(fs => fs.File).Returns(_mockFile.Object);

            _cacheRestorer = new CacheRestorer(_mockCache.Object, _mockFileSystem.Object, "log");
        }
Esempio n. 3
0
        public void LogIsReplacedWithCompacted()
        {
            // TODO: test that temp file name is same in open and replace
            _mockFile.Setup(s => s.Open(
                                It.IsAny <string>(),
                                It.Is <FileMode>(fm => fm == FileMode.OpenOrCreate),
                                It.Is <FileAccess>(fa => fa == FileAccess.Write))).Returns(_writeStream);

            GivenLogFile("log", CreateLogStream());

            _cacheRestorer.RestoreCache();

            _mockFile.Verify(file => file.Replace(
                                 It.IsAny <string>(),
                                 It.Is <string>(d => d == "log"),
                                 It.IsAny <string>(),
                                 It.IsAny <bool>()), Times.Once());

            var entries = CacheRestorer.ReadLog(new MemoryStream(_writeStream.ToArray()));

            Assert.AreEqual(3, entries.Count());
        }