public void AddRemoveNodeRemoveApplyAndRevertWhenNodeToRemoveParent1Has3OutputsTest()
        {
            Node parent1         = new Node(NodeType.add, 0);
            Node parent2         = new Node(NodeType.compare, 0);
            Node child1          = new Node(NodeType.copy, 0);
            Node child3          = new Node(NodeType.copy, 0);
            Node nodeToBeRemoved = new Node(NodeType.inverse, 0);
            Node output          = new Node(NodeType.log, 0);

            parent1.ConnectWithOutput(child1);
            parent1.ConnectWithOutput(nodeToBeRemoved);
            parent1.ConnectWithOutput(child3);
            parent2.ConnectWithOutput(nodeToBeRemoved);
            nodeToBeRemoved.ConnectWithOutput(output);


            dummyNetwork.Operations.Add(parent1);
            dummyNetwork.Operations.Add(parent2);
            dummyNetwork.Operations.Add(output);
            dummyNetwork.Operations.Add(nodeToBeRemoved);

            AddRemoveNode mutator = new AddRemoveNode(
                nodeChangeType: AddRemoveNode.NodeChangeType.Remove,
                node: nodeToBeRemoved,
                parent1: parent1,
                parent2: parent2,
                outputs: new List <Node>()
            {
                output
            },
                network: dummyNetwork);

            mutator.Apply();

            Assert.AreEqual(0, parent1.Inputs.Count);
            Assert.AreEqual(3, parent1.Outputs.Count);
            Assert.AreEqual(child1, parent1.Outputs.First.Value);
            Assert.IsNotNull(parent1.Outputs.Find(output));
            Assert.AreEqual(child3, parent1.Outputs.Last.Value);

            Assert.AreEqual(0, parent2.Inputs.Count);
            Assert.AreEqual(0, parent2.Outputs.Count);

            Assert.AreEqual(0, nodeToBeRemoved.Inputs.Count);
            Assert.AreEqual(0, nodeToBeRemoved.Outputs.Count);

            Assert.AreEqual(1, output.Inputs.Count);
            Assert.IsNotNull(output.Inputs.Find(parent1));
            Assert.AreEqual(0, output.Outputs.Count);

            Assert.AreEqual(1, child1.Inputs.Count);
            Assert.AreEqual(parent1, child1.Inputs.First.Value);
            Assert.AreEqual(0, child1.Outputs.Count);

            Assert.AreEqual(1, child3.Inputs.Count);
            Assert.AreEqual(parent1, child3.Inputs.First.Value);
            Assert.AreEqual(0, child3.Outputs.Count);

            dummyNetwork.UTTestingFoo();
        }
Example #2
0
 private void CheckStress()
 {
     Console.WriteLine("SampleTriggerCount " + MySettings.SampleTriggerCount + ", VeryHighSampleTriggerCount " + MySettings.VeryHighSampleTriggerCount + ", maximumnodes " + MySettings.maximumnodes + ", minimumnodes " + MySettings.minimumnodes);
     Console.WriteLine("{0,-20}{1,-20}{2,-20}", "Nodepool Prefix", "quantity", "active nodes");
     foreach (var nodepool in nodePools)
     {
         Console.WriteLine("{0,-20}{1,-20}{2,-20}", nodepool.hostnamePrefix, nodepool.quantity, nodepool.activequantity);
         if (nodepool.HighStressCount > MySettings.SampleTriggerCount && nodepool.quantity < MySettings.maximumnodes)
         {
             AddRemoveNode.AddNode(nodepool);
             Console.WriteLine(nodepool.hostnamePrefix + " adding node " + nodepool.HighStressCount);
             nodepool.HighStressCount = 0;
         }
         if (nodepool.VeryHighStressCount > MySettings.VeryHighSampleTriggerCount && nodepool.quantity < MySettings.maximumnodes)
         {
             AddRemoveNode.AddNode(nodepool);
             Console.WriteLine(nodepool.hostnamePrefix + " adding node " + nodepool.VeryHighStressCount);
             nodepool.VeryHighStressCount = 0;
             nodepool.HighStressCount     = 0;
         }
         if (nodepool.LowStressCount > MySettings.SampleTriggerCount && nodepool.quantity > MySettings.minimumnodes)
         {
             AddRemoveNode.RemoveNode(nodepool);
             Console.WriteLine(nodepool.hostnamePrefix + " removeing node " + nodepool.LowStressCount);
             nodepool.LowStressCount = 0;
         }
     }
 }
        public void AddRemoveNodeRemoveApplyAndRevertWhenSecondParentHas2AndNodeToRemoveIsLastOneChildrenTest()
        {
            Node parent1         = new Node(NodeType.add, 0);
            Node parent2         = new Node(NodeType.compare, 0);
            Node child1          = new Node(NodeType.copy, 0);
            Node nodeToBeRemoved = new Node(NodeType.inverse, 0);
            Node output          = new Node(NodeType.log, 0);

            parent1.ConnectWithOutput(nodeToBeRemoved);
            parent2.ConnectWithOutput(child1);
            parent2.ConnectWithOutput(nodeToBeRemoved);
            nodeToBeRemoved.ConnectWithOutput(output);


            dummyNetwork.Operations.Add(parent1);
            dummyNetwork.Operations.Add(parent2);
            dummyNetwork.Operations.Add(output);
            dummyNetwork.Operations.Add(child1);
            dummyNetwork.Operations.Add(nodeToBeRemoved);

            AddRemoveNode mutator = new AddRemoveNode(
                nodeChangeType: AddRemoveNode.NodeChangeType.Remove,
                node: nodeToBeRemoved,
                parent1: parent1,
                parent2: parent2,
                outputs: new List <Node>(nodeToBeRemoved.Outputs),
                network: dummyNetwork);

            mutator.Apply();
            mutator.Revert();

            Assert.AreEqual(0, parent1.Inputs.Count);
            Assert.AreEqual(1, parent1.Outputs.Count);
            Assert.IsTrue(parent1.Outputs.Contains(nodeToBeRemoved));

            Assert.AreEqual(2, nodeToBeRemoved.Inputs.Count);
            Assert.AreEqual(parent1, nodeToBeRemoved.Inputs.First.Value);
            Assert.AreEqual(parent2, nodeToBeRemoved.Inputs.Last.Value);
            Assert.AreEqual(1, nodeToBeRemoved.Outputs.Count);
            Assert.AreEqual(output, nodeToBeRemoved.Outputs.First.Value);

            Assert.AreEqual(0, parent2.Inputs.Count);
            Assert.AreEqual(2, parent2.Outputs.Count);
            Assert.AreEqual(child1, parent2.Outputs.First.Value);
            Assert.AreEqual(nodeToBeRemoved, parent2.Outputs.Last.Value);

            Assert.AreEqual(1, output.Inputs.Count);
            Assert.AreEqual(nodeToBeRemoved, output.Inputs.First.Value);
            Assert.AreEqual(0, output.Outputs.Count);

            Assert.AreEqual(1, child1.Inputs.Count);
            Assert.AreEqual(parent2, child1.Inputs.First.Value);
            Assert.AreEqual(0, child1.Outputs.Count);

            dummyNetwork.UTTestingFoo();
        }
        public void AddRemoveNodeApplyTest()
        {
            Node parent1 = new Node(NodeType.add, 0);
            Node parent2 = new Node(NodeType.add, 0);
            Node output  = new Node(NodeType.add, 0);

            parent1.ConnectWithOutput(output);
            dummyNetwork.Operations.Add(parent1);
            dummyNetwork.Operations.Add(parent2);
            dummyNetwork.Operations.Add(output);


            Node          nodeToBeAdded = new Node(NodeType.add, 0);
            AddRemoveNode mutator       = new AddRemoveNode(
                nodeChangeType: AddRemoveNode.NodeChangeType.Add,
                node: nodeToBeAdded,
                parent1: parent1,
                parent2: parent2,
                outputs: new List <Node>()
            {
                output
            },
                network: dummyNetwork);

            mutator.Apply();

            Assert.AreEqual(0, parent1.Inputs.Count);
            Assert.AreEqual(1, parent1.Outputs.Count);
            Assert.IsNotNull(parent1.Outputs.Find(nodeToBeAdded));

            Assert.AreEqual(0, parent2.Inputs.Count);
            Assert.AreEqual(1, parent2.Outputs.Count);
            Assert.IsNotNull(parent2.Outputs.Find(nodeToBeAdded));

            Assert.AreEqual(2, nodeToBeAdded.Inputs.Count);
            Assert.IsNotNull(nodeToBeAdded.Inputs.Find(parent1));
            Assert.IsNotNull(nodeToBeAdded.Inputs.Find(parent2));
            Assert.AreEqual(1, nodeToBeAdded.Outputs.Count);
            Assert.IsNotNull(nodeToBeAdded.Outputs.Find(output));

            Assert.AreEqual(1, output.Inputs.Count);
            Assert.IsNotNull(output.Inputs.Find(nodeToBeAdded));
            Assert.AreEqual(0, output.Outputs.Count);
        }