public void HandleMessage(ICDEThing sender, object pIncoming) { TheProcessMessage pMsg = pIncoming as TheProcessMessage; if (pMsg == null) { return; } var tCmd = pMsg.Message.TXT.Split(':'); switch (tCmd[0]) { case "CDE_NODETOPICS": sinkServiceInfo(pMsg?.Message); break; case "ADD_FOOTPRINT": var Tf = TheCommonUtils.DeserializeJSONStringToObject <NodeTypeScript>(pMsg.Message.PLS); if (Tf?.NodeTypes != null && Tf.NodeTypes.Count > 0) { MyFootPrints.AddItems(Tf.NodeTypes, null); } TheCommCore.PublishToOriginator(pMsg.Message, new TSM(pMsg.Message.ENG, $"{tCmd[0]}_RESPONSE{(tCmd.Length>1?$":{tCmd[1]}":"")}", "{\"RESPONSE\":\"SUCCESS\"}"), true); break; } }
public void GetRecordsFromTheStorageMirrorTest( [Values(0, 500, 5000)] int maxCount, [Values(50, 5000)] int totalCandidates ) { #region ASSEMBLE TheStorageMirror <TheStorageEngineTSM> .StoreResponse response = null; var random = new Random(); var data = Enumerable.Range(1, totalCandidates).OrderBy(i => random.Next(1, totalCandidates)); ManualResetEventSlim gate = new ManualResetEventSlim(); TheStorageMirror <TheStorageEngineTSM> mirror; List <TheStorageEngineTSM> TSMs = new List <TheStorageEngineTSM>(); // Build the collection of TSMs foreach (var payload in data) { TSMs.Add(new TheStorageEngineTSM() { cdeMID = Guid.NewGuid(), TXTPattern = payload.ToString() }); } // Spin up your mirror mirror = new TheStorageMirror <TheStorageEngineTSM>(TheCDEngines.MyIStorageService) { IsRAMStore = true, CacheStoreInterval = 1, IsStoreIntervalInSeconds = true, IsCachePersistent = true, UseSafeSave = true, AllowFireUpdates = true, }; if (maxCount > 0) { mirror.SetMaxStoreSize(maxCount); } mirror.RegisterEvent(eStoreEvents.StoreReady, e => { gate.Set(); }); mirror.InitializeStore(true); // Wait for mirror to initialize... gate.Wait(30000); // Add your items Task.Factory.StartNew(() => { mirror.AddItems(TSMs, payload => { response = payload; gate.Set(); }); }); //Wait for response gate.Reset(); gate.Wait(30000); if ((response != null) && response.HasErrors) { Assert.Fail("Unable to add test collection items! Reason: {0}", response.ErrorMsg); } #endregion #region ACT // Attempt to retrieve your items Task.Factory.StartNew(() => { mirror.GetRecords(payload => { response = payload; gate.Set(); }, true); }); // Wait for response gate.Reset(); gate.Wait(30000); if ((response != null) && response.HasErrors) { Assert.Fail("Unable to retrieve items! Reason: {0}", response.ErrorMsg); } mirror?.Dispose(); #endregion #region ASSERT var expectedCount = maxCount == 0 ? totalCandidates : Math.Min(maxCount, totalCandidates); Assert.AreEqual(expectedCount, response.MyRecords.Count, "Not all test records were not added successfully."); #endregion }
public void RemoveAnItemByIDFromTheStorageMirrorTest() { #region ASSEMBLE TheStorageMirror <TheStorageEngineTSM> .StoreResponse response = null; int totalCandidates = 5000; int indexMiddle = totalCandidates / 2; int indexCurrent = 0; var random = new Random(); var data = Enumerable.Range(1, totalCandidates).OrderBy(i => random.Next(1, totalCandidates)); ManualResetEventSlim gate = new ManualResetEventSlim(); TheStorageMirror <TheStorageEngineTSM> mirror; TheStorageEngineTSM tsmCurrent = null; TheStorageEngineTSM tsmMiddle = null; TheStorageEngineTSM tsmMatch = null; List <TheStorageEngineTSM> TSMs = new List <TheStorageEngineTSM>(); List <TheStorageEngineTSM> myRecords = new List <TheStorageEngineTSM>(); // Build the collection of TSMs and cache the middle one foreach (var payload in data) { tsmCurrent = new TheStorageEngineTSM() { cdeMID = Guid.NewGuid(), TXTPattern = payload.ToString() }; TSMs.Add(tsmCurrent); if ((indexCurrent++ >= indexMiddle) && (tsmMiddle == null)) { tsmMiddle = tsmCurrent; } } if (tsmMiddle == null) { Assert.Fail("Unable to cache the middle TSM!"); } // Spin up your mirror mirror = new TheStorageMirror <TheStorageEngineTSM>(TheCDEngines.MyIStorageService) { IsRAMStore = true, CacheStoreInterval = 1, IsStoreIntervalInSeconds = true, IsCachePersistent = true, UseSafeSave = true, AllowFireUpdates = true, }; mirror.RegisterEvent(eStoreEvents.StoreReady, e => { gate.Set(); }); mirror.InitializeStore(true); // Wait for mirror to initialize... gate.Wait(30000); // Add your items Task.Factory.StartNew(() => { mirror.AddItems(TSMs, payload => { response = payload; gate.Set(); }); }); //Wait for response gate.Reset(); gate.Wait(30000); if ((response != null) && response.HasErrors) { Assert.Fail("Unable to add test collection items! Reason: {0}", response.ErrorMsg); } #endregion #region ACT // Attempt to remove your middle item Task.Factory.StartNew(() => { mirror.RemoveAnItemByID(tsmMiddle.cdeMID, payload => { response = payload; gate.Set(); }); }); // Wait for response gate.Reset(); gate.Wait(30000); if ((response != null) && response.HasErrors) { Assert.Fail("Unable to remove item by ID! Reason: {0}", response.ErrorMsg); } // Attempt to retrieve your middle item tsmMatch = mirror.GetEntryByID(tsmMiddle.cdeMID); mirror?.Dispose(); #endregion #region ASSERT Assert.IsTrue(tsmMatch == null); #endregion }
public void AddItemsToTheStorageMirrorTest() { #region ASSEMBLE TheStorageMirror <TheStorageEngineTSM> .StoreResponse response = null; int totalCandidates = 5000; var random = new Random(); var data = Enumerable.Range(1, totalCandidates).OrderBy(i => random.Next(1, totalCandidates)); ManualResetEventSlim gate = new ManualResetEventSlim(); TheStorageMirror <TheStorageEngineTSM> mirror; List <TheStorageEngineTSM> TSMs = new List <TheStorageEngineTSM>(); // Build the collection of TSMs foreach (var payload in data) { TSMs.Add(new TheStorageEngineTSM() { TXTPattern = payload.ToString() }); } // Spin up your mirror mirror = new TheStorageMirror <TheStorageEngineTSM>(TheCDEngines.MyIStorageService) { IsRAMStore = true, CacheStoreInterval = 1, IsStoreIntervalInSeconds = true, IsCachePersistent = true, UseSafeSave = true, AllowFireUpdates = true, }; mirror.RegisterEvent(eStoreEvents.StoreReady, e => { gate.Set(); }); mirror.InitializeStore(true); // Wait for mirror to initialize... gate.Wait(30000); #endregion #region ACT // Add your items Task.Factory.StartNew(() => { mirror.AddItems(TSMs, payload => { response = payload; gate.Set(); }); }); //Wait for response gate.Reset(); gate.Wait(30000); mirror?.Dispose(); #endregion #region ASSERT Assert.IsFalse(response.HasErrors); #endregion }