public void MsgQueueFileStore_Basic() { MsgQueueFileStore store = null; int count; QueuedMsgInfo msgInfo; QueuedMsg msg, msgTest; object persistID; ClearFolders(); try { store = new MsgQueueFileStore(root); store.Open(); // Should initialize with no persisted messages Assert.AreEqual(0, store.Count); count = 0; foreach (QueuedMsgInfo i in store) { count++; } Assert.AreEqual(0, store.Count); // Try some basic operations while the store is open. msg = new QueuedMsg(); msg.TargetEP = "logical://target"; msg.ResponseEP = "logical://response"; msg.SessionID = Helper.NewGuid(); msg.SendTime = new DateTime(2000, 1, 1); msg.ExpireTime = new DateTime(2000, 1, 2); msg.Body = "Hello World!"; msgInfo = new QueuedMsgInfo(null, msg); Assert.IsNull(store.GetPersistID(msg.ID)); store.Add(msgInfo, msg); Assert.AreEqual(1, store.Count); count = 0; foreach (QueuedMsgInfo i in store) { count++; } Assert.AreEqual(1, store.Count); persistID = store.GetPersistID(msg.ID); Assert.IsNotNull(persistID); msgTest = store.Get(persistID); msgTest.DeserializedBody(); Assert.AreEqual(msg, msgTest); store.SetDeliveryAttempt(persistID, 10, new DateTime(2001, 1, 1)); msgInfo = store.GetInfo(persistID); Assert.AreEqual(10, msgInfo.DeliveryAttempts); Assert.AreEqual(new DateTime(2001, 1, 1), msgInfo.DeliveryTime); store.SetPriority(persistID, DeliveryPriority.Low); msgInfo = store.GetInfo(persistID); Assert.AreEqual(DeliveryPriority.Low, msgInfo.Priority); msgTest = store.Get(persistID); msgTest.DeserializedBody(); Assert.AreEqual(DeliveryPriority.Low, msgTest.Priority); store.Modify(persistID, "logical://target2", new DateTime(2002, 1, 1), new DateTime(2002, 1, 2), DeliveryStatus.Poison); msgInfo = store.GetInfo(persistID); Assert.AreEqual((MsgEP)"logical://target2", msgInfo.TargetEP); Assert.AreEqual(new DateTime(2002, 1, 1), msgInfo.DeliveryTime); Assert.AreEqual(new DateTime(2002, 1, 2), msgInfo.ExpireTime); Assert.AreEqual(DeliveryStatus.Poison, msgInfo.Status); msgTest = store.Get(persistID); msgTest.DeserializedBody(); Assert.AreEqual(DeliveryPriority.Low, msgTest.Priority); Assert.AreEqual(new DateTime(2002, 1, 2), msgTest.ExpireTime); Assert.AreEqual((MsgEP)"logical://target2", msgTest.TargetEP); Assert.AreEqual(msg.ID, msgTest.ID); Assert.AreEqual(msg.SessionID, msgTest.SessionID); Assert.AreEqual(msg.SendTime, msgTest.SendTime); Assert.AreEqual(new DateTime(2002, 1, 2), msgTest.ExpireTime); Assert.AreEqual(msg.Body, msgTest.Body); store.Remove(persistID); Assert.AreEqual(0, store.Count); Assert.IsNull(store.GetPersistID(msg.ID)); Assert.IsNull(store.Get(persistID)); msgTest.DeserializedBody(); Assert.IsNull(store.GetInfo(persistID)); // Persist another message and then close and reopen // the store and confirm that the message is still // there. msg = new QueuedMsg(); msg.TargetEP = "logical://target2"; msg.ResponseEP = "logical://response2"; msg.SessionID = Helper.NewGuid(); msg.SendTime = new DateTime(2000, 1, 1); msg.ExpireTime = new DateTime(2000, 1, 2); msg.Body = "Hello World!"; msgInfo = new QueuedMsgInfo(null, msg); store.Add(msgInfo, msg); store.Close(); store = new MsgQueueFileStore(root); store.Open(); persistID = store.GetPersistID(msg.ID); Assert.IsNotNull(persistID); msgTest = store.Get(persistID); msgTest.DeserializedBody(); Assert.AreEqual(msg, msgTest); } finally { if (store != null) { store.Close(); } } }