В консольное приложение, я могу успешно получить вызов обратно из кэша кластера в случае добавляется или удаляется из кэша элемент.Тестовый пример для имитации вызова кэша назад для AppFabric
Как выполнить тот же тест в среде Test Driven. Когда я пишу тестовый пример, я не могу запустить OnCacheChange.
Пожалуйста, помогите.
Спасибо ..
Следующий код работает в консольное приложение ...
static void Main(string[] args)
{
dtStart = DateTime.Now;
dtEnd = DateTime.MinValue;
string line;
var factory = new DataCacheFactory();
var key = "mycachekey1";
var cache = factory.GetCache("default");
var d = cache.AddCacheLevelCallback(DataCacheOperations.AddItem | DataCacheOperations.RemoveItem | DataCacheOperations.ReplaceItem, OnCacheChange);
Console.WriteLine("Cache Name = {0} : DelegateId = {1}",d.CacheName,d.DelegateId);
var obj = cache[key];
if (obj == null)
{
Console.WriteLine("data was not cached.");
Console.WriteLine("Enter your data to be cached.");
line = Console.ReadLine();
cache.Add(key, line);
}
Console.WriteLine("getting data from cache: {0}", cache[key]);
Console.WriteLine("type yes to remove data for cache key {0} : ", key);
line = Console.ReadLine();
if (line.ToString().Length > 0)
{
cache.Remove(key);
Console.WriteLine("cache removed");
Console.ReadLine();
}
}
static void OnCacheChange(string cacheName, string region, string key, DataCacheItemVersion itemVersion, DataCacheOperations operationId, DataCacheNotificationDescriptor notificationDescriptor)
{
dtEnd = DateTime.Now;
TimeSpan timeSpan = dtEnd - dtStart;
Console.WriteLine("Event to be fired in seconds = {0}", timeSpan.Seconds);
Console.WriteLine("A cache-level notification has been triggered. Following are the details:");
Console.WriteLine("Cache: " + cacheName);
Console.WriteLine("Region: " + region);
Console.WriteLine("Key: " + key);
Console.WriteLine("Operation: " + operationId.ToString());
Console.WriteLine("Notification Description: " + notificationDescriptor.DelegateId);
Console.WriteLine("Finished executing the cache notification callback.");
}
После TestMethod не может стрелять событие OnCacheChange.
[TestMethod]
public void CacheCallBackFunctionTest()
{
_eventFired = false;
_startDateTime = DateTime.Now;
var key = "mycachekey2";
var cache = CachingManager.CacheFactory().GetCache("default");
cache.AddCacheLevelCallback(DataCacheOperations.AddItem | DataCacheOperations.RemoveItem | DataCacheOperations.ReplaceItem, OnCacheChange);
cache.Add(key, "my value 1");
cache.Remove(key);
System.Threading.Thread.Sleep(10000);
Assert.IsTrue(_eventFired);
}
Какая ошибка/проблема у вас есть? Это ошибка времени компиляции или что-то еще? – McGarnagle
У меня нет никакой ошибки, за исключением того, что OnCacheChange никогда не запускается в тестовом примере. Как всегда, в консольном приложении, когда я покидаю консольное приложение, OnCacheChange запускается после 10 секунд или около того ... –
I предположим, что вы попытались увеличить тайм-аут до 20 секунд, чтобы быть уверенным? – McGarnagle