public void Insert() { using var sharedMemoryRegionView = SharedMemoryRegionView.Create <MlosProxyInternal.SharedConfigMemoryRegion>(SharedMemoryMapName, SharedMemorySize); sharedMemoryRegionView.CleanupOnClose = true; MlosProxyInternal.SharedConfigMemoryRegion sharedConfigMemoryRegion = sharedMemoryRegionView.MemoryRegion(); var hashTable = new SharedConfigManager(); hashTable.SetMemoryRegion(sharedConfigMemoryRegion); for (int i = 0; i < 500; i++) { { TestComponentConfig config = default; config.ComponentType = (uint)(i + 1); config.Category = 2; config.Delay = 5; var componentConfig = ComponentConfig.Create(config); hashTable.Insert(componentConfig); } { var componentConfig = new ComponentConfig <TestComponentConfig, UnitTestProxy.TestComponentConfig>(); componentConfig.Config.ComponentType = (uint)(i + 1); componentConfig.Config.Category = 2; hashTable.UpdateConfig(componentConfig); Assert.Equal <double>(5, componentConfig.Config.Delay); } { var componentConfig = new ComponentConfig <TestComponentStatistics, UnitTestProxy.TestComponentStatistics>(); componentConfig.Config.Id = i; componentConfig.Config.RefCount.Value = 5; componentConfig.Config.Counters[0].Value = 2; hashTable.Insert(componentConfig); } } for (int i = 0; i < 500; i++) { { var componentConfig = new ComponentConfig <TestComponentConfig, UnitTestProxy.TestComponentConfig>(); componentConfig.Config.ComponentType = (uint)(i + 1); componentConfig.Config.Category = 2; hashTable.UpdateConfig(componentConfig); Assert.Equal <double>(5, componentConfig.Config.Delay); } { var componentConfig = new ComponentConfig <TestComponentStatistics, UnitTestProxy.TestComponentStatistics>(); componentConfig.Config.Id = i; hashTable.UpdateConfig(componentConfig); Assert.Equal <ulong>(5, componentConfig.Config.RefCount.Value); Assert.Equal <ulong>(2, componentConfig.Config.Counters[0].Value); } { var componentStatistics = new TestComponentStatistics() { Id = i }; SharedConfig <UnitTestProxy.TestComponentStatistics> sharedConfig = hashTable.Lookup(componentStatistics); } { TestComponentStatistics.CodegenKey codegenKey = default; codegenKey.Id = i; SharedConfig <UnitTestProxy.TestComponentStatistics> sharedConfig = hashTable.Lookup(codegenKey); Assert.Equal <ulong>(5, sharedConfig.Config.RefCount.Load()); Assert.Equal <ulong>(2, sharedConfig.Config.Counters[0].Load()); } } }
public void Insert() { // Create a shared memory map. // using var sharedMemoryRegionView = SharedMemoryRegionView.CreateNew <MlosProxyInternal.SharedConfigMemoryRegion>(SharedMemoryMapName, SharedMemorySize); sharedMemoryRegionView.CleanupOnClose = true; // Create a shared config manager, and register created test shared memory map. // using var sharedConfigManager = new SharedConfigManager(); sharedConfigManager.RegisterSharedConfigMemoryRegion(sharedMemoryRegionView); sharedConfigManager.CleanupOnClose = true; for (int i = 0; i < 500; i++) { { TestComponentConfig config = default; config.ComponentType = (uint)(i + 1); config.Category = 2; config.Delay = 5; var componentConfig = ComponentConfig.Create(config); sharedConfigManager.Insert(componentConfig); } { var componentConfig = new ComponentConfig <TestComponentConfig, UnitTestProxy.TestComponentConfig>(); componentConfig.Config.ComponentType = (uint)(i + 1); componentConfig.Config.Category = 2; sharedConfigManager.UpdateConfig(componentConfig); Assert.Equal <double>(5, componentConfig.Config.Delay); } { var componentConfig = new ComponentConfig <TestComponentStatistics, UnitTestProxy.TestComponentStatistics>(); componentConfig.Config.Id = i; componentConfig.Config.RefCount.Value = 5; componentConfig.Config.Counters[0].Value = 2; sharedConfigManager.Insert(componentConfig); } } for (int i = 0; i < 500; i++) { { var componentConfig = new ComponentConfig <TestComponentConfig, UnitTestProxy.TestComponentConfig>(); componentConfig.Config.ComponentType = (uint)(i + 1); componentConfig.Config.Category = 2; sharedConfigManager.UpdateConfig(componentConfig); Assert.Equal <double>(5, componentConfig.Config.Delay); } { var componentConfig = new ComponentConfig <TestComponentStatistics, UnitTestProxy.TestComponentStatistics>(); componentConfig.Config.Id = i; sharedConfigManager.UpdateConfig(componentConfig); Assert.Equal <ulong>(5, componentConfig.Config.RefCount.Value); Assert.Equal <ulong>(2, componentConfig.Config.Counters[0].Value); } { var componentStatistics = new TestComponentStatistics() { Id = i }; SharedConfig <UnitTestProxy.TestComponentStatistics> sharedConfig = sharedConfigManager.Lookup(componentStatistics); } { TestComponentStatistics.CodegenKey codegenKey = default; codegenKey.Id = i; SharedConfig <UnitTestProxy.TestComponentStatistics> sharedConfig = sharedConfigManager.Lookup(codegenKey); Assert.Equal <ulong>(5, sharedConfig.Config.RefCount.Load()); Assert.Equal <ulong>(2, sharedConfig.Config.Counters[0].Load()); } } }