public void InitAkkaDictionaryTest() { //Thread.Sleep(5000); var akkaDict = new HtmSparseIntDictionary <Column>(new HtmSparseIntDictionaryConfig() { //HtmActorConfig = new HtmConfig() //{ // ColumnTopology = new HtmModuleTopology() // { // Dimensions = new int[] { 100, 200 }, // IsMajorOrdering = false, // } //}, Nodes = Helpers.DefaultNodeList, }); for (int i = 0; i < 100; i++) { akkaDict.Add(i, new Column(32, i, 0.0, 0)); } for (int i = 0; i < 100; i++) { Column col; Assert.IsTrue(akkaDict.TryGetValue(i, out col)); } Column col2; Assert.IsFalse(akkaDict.TryGetValue(-1, out col2)); Assert.IsTrue(100 == akkaDict.Count); }
public void PartitionLookupTest(string[] nodes, int partitionsPerNode, int elements, int key, int expectedNode, int expectedPartition) { var nodeList = new List <string>(); nodeList.AddRange(nodes); var map = HtmSparseIntDictionary <Column> .CreatePartitionMap(nodeList, elements, partitionsPerNode); var part = HtmSparseIntDictionary <Column> .GetPlacementSlotForElement(map, key); Assert.IsTrue(part.NodeIndx == expectedNode && part.PartitionIndx == expectedPartition); }
public void TestGroupingByNode(string[] nodes) { var nodeList = new List <string>(nodes); List <IActorRef> list = new List <IActorRef>(); for (int k = 0; k < nodes.Length; k++) { list.Add(new MockedActor(nodes[k])); } var map = HtmSparseIntDictionary <Column> .CreatePartitionMap(nodeList, 4096, 10); int i = 0; foreach (var item in map) { item.ActorRef = list[i++ % nodes.Length]; } var groupedNodes = HtmSparseIntDictionary <object> .GetPartitionsByNode(map); }
public void PartitionMapTest(string[] nodes, int partitionsPerNode, int elements) { var nodeList = new List <string>(); nodeList.AddRange(nodes); var map = HtmSparseIntDictionary <Column> .CreatePartitionMap(nodeList, elements, partitionsPerNode); // System can allocate less partitions than requested. Assert.IsTrue(map.Count <= nodes.Length * partitionsPerNode); Assert.IsTrue((map[7].MinKey == 14 && map[7].MaxKey == 15) || (map[7].MinKey == 21 && map[7].MaxKey == 23) || (map[9].MinKey == 3690 && map[9].MaxKey == 4095) || (map[170].MinKey == 1020 && map[170].MaxKey == 1023)); Assert.IsTrue((int)(object)map.Last().MaxKey >= (elements - 1)); foreach (var item in map) { // Partition can hold a single element. Assert.IsTrue((int)(object)item.MaxKey >= (int)(object)item.MinKey); } }
public void UniformPartitioningTest(int nodes, int elements, int placingElement, int expectedNode) { var targetNode = HtmSparseIntDictionary <Column> .GetPlacementSlotForElement(nodes, elements, placingElement); Assert.IsTrue(targetNode == expectedNode); }