Beispiel #1
0
		public CachingModule()
		{
			Log = ServiceLocator.Locator.Resolve<ILogger>();
			_coroutinesManager = ServiceLocator.Locator.Resolve<ICoroutinesManager>();
			var main = ServiceLocator.Locator.Resolve<IMain>();
			var timeout = TimeSpan.FromHours(1);
			_nodeCache = new NodeCache(_coroutinesManager, timeout);
			_nodeCacheCoroutineThread = new NodeCacheCoroutine(_nodeCache);
			_coroutinesManager.StartCoroutine(_nodeCacheCoroutineThread);
			SetParameter(HttpParameters.CacheInstance, _nodeCache);
			main.RegisterCommand("nodecache.groups", new CommandDefinition((Action)ShowGroups));
			main.RegisterCommand("nodecache.items", new CommandDefinition((Action<string>)ShowItems,typeof(string)));
		}
		public void ItShouldBePossibleToAddAndGetNotExistingItem()
		{
			_loadDataCalled = 0;
			object result = null;
			var target = new NodeCache(_runner,TimeSpan.FromSeconds(10));
			var cr = new NodeCacheCoroutine(target);
			_runner.StartCoroutine(cr);
			_runner.RunCycle();

			var waiter = (FluentResultBuilder)target.AddAndGet(new CacheDefinition
			{
				Id = "test",
				LoadData = () => LoadDataWithWait(10, 5)
			}, (r) =>
			{
				result = r;
			});
			_runner.StartCoroutine(waiter.AsCoroutine());
			_runner.RunCycleFor(200);

			Assert.AreEqual(1, _loadDataCalled);
			Assert.AreEqual("RESULT", result);
		}