/** Tests for {@link TopologyMap#containsNode(NodeIdentifier)}. */ public final void testContainsNode() { networkGraph = new TopologyMap(NODE_5); assertTrue(networkGraph.containsNode(NODE_5)); assertFalse(networkGraph.containsNode(NODE_4)); assertTrue(networkGraph.containsNode(NodeIdentifierFactory.fromNodeId(NODE_5.getIdString()))); assertFalse( networkGraph.containsNode(NodeIdentifierFactory.fromNodeId("FAKE" + NODE_5.getIdString()))); }
/** Test for {@link TopologyMap#removeNode()}. */ public final void testRemoveNode() { TopologyMap graph = new TopologyMap(NODE_2); graph.addNode(NODE_1); graph.removeNode(NODE_2); graph.removeNode((TopologyNode) null); assertTrue(graph.containsNode(NODE_1)); graph.removeNode(NODE_1); assertFalse(graph.containsNode(NODE_1)); }
/** Simple test for graph setup: NODE_1 - NODE_2 - NODE_3. */ public final void testGraphSetUp() { networkGraph = new TopologyMap(NODE_1); networkGraph.addNode(NODE_1); networkGraph.addNode(NODE_2); networkGraph.addNode(NODE_3); assertTrue(GRAPH_CONTAINS_NODE, networkGraph.containsNode(NODE_1)); assertTrue(GRAPH_CONTAINS_NODE, networkGraph.containsNode(NODE_2)); assertTrue(GRAPH_CONTAINS_NODE, networkGraph.containsNode(NODE_3)); assertFalse(GRAPH_DOES_NOT_CONTAIN_NODE, networkGraph.containsNode(NODE_4)); assertFalse(GRAPH_DOES_NOT_CONTAIN_NODE, networkGraph.containsNode(NODE_5)); networkGraph.addLink(NODE_1, NODE_2, CONNECTION_ID_1); networkGraph.addLink(NODE_2, NODE_3, CONNECTION_ID_1); assertTrue(GRAPH_SHOULD_CONTAIN_CHANNEL, networkGraph.containsLinkBetween(NODE_1, NODE_2)); assertTrue(GRAPH_SHOULD_CONTAIN_CHANNEL, networkGraph.containsLinkBetween(NODE_2, NODE_3)); assertFalse(GRAPH_CONTAINS_CHANNEL, networkGraph.containsLinkBetween(NODE_1, NODE_3)); assertFalse(GRAPH_CONTAINS_CHANNEL, networkGraph.containsLinkBetween(NODE_4, NODE_5)); assertEquals(DIFFERENT_NUMBER_OF_EDGES_IN_GRAPH_EXPECTED, 2, networkGraph.getLinkCount()); assertEquals(DIFFERENT_NUMBER_OF_VERTICES_IN_GRAPH_EXPECTED, 3, networkGraph.getNodeCount()); }
/** Build graph and do manipulations with some {@link LinkStateAdvertisement}s. */ public final void testUpdateGraph() { // IMPORTANT: the test graph must be "owned" by a node that is not used in the test, // as TopologyMap was made to ignore external updates for its local node networkGraph = new TopologyMap(NODE_3); networkGraph.addNode(NODE_1); networkGraph.addNode(NODE_2); networkGraph.addNode(NODE_3); assertFalse(GRAPH_CONTAINS_CHANNEL, networkGraph.containsLinkBetween(NODE_1, NODE_3)); assertFalse(GRAPH_CONTAINS_CHANNEL, networkGraph.containsLinkBetween(NODE_1, NODE_2)); assertFalse(GRAPH_CONTAINS_CHANNEL, networkGraph.containsLinkBetween(NODE_2, NODE_3)); networkGraph.addLink(NODE_1, NODE_2, CONNECTION_ID_1); networkGraph.addLink(NODE_2, NODE_3, CONNECTION_ID_2); assertTrue(GRAPH_SHOULD_CONTAIN_CHANNEL, networkGraph.containsLinkBetween(NODE_1, NODE_2)); assertTrue(GRAPH_SHOULD_CONTAIN_CHANNEL, networkGraph.containsLinkBetween(NODE_2, NODE_3)); assertFalse(GRAPH_CONTAINS_CHANNEL, networkGraph.containsLinkBetween(NODE_1, NODE_3)); LinkStateAdvertisement lsa = LinkStateAdvertisement.createUpdateLsa( NODE_1, NODE_1_NAME, true, networkGraph.getSequenceNumberOfNode(NODE_1) + 1, networkGraph.hashCode(), true, Arrays.asList( new TopologyLink[] { new TopologyLink(NODE_1, NODE_2, CONNECTION_ID_1), new TopologyLink(NODE_1, NODE_3, CONNECTION_ID_3) })); assertTrue(LSA_CAUSED_NO_UPDATE, networkGraph.update(lsa)); assertTrue(GRAPH_SHOULD_CONTAIN_CHANNEL, networkGraph.containsLinkBetween(NODE_1, NODE_3)); assertTrue(GRAPH_SHOULD_CONTAIN_CHANNEL, networkGraph.containsLinkBetween(NODE_1, NODE_2)); assertTrue(GRAPH_SHOULD_CONTAIN_CHANNEL, networkGraph.containsLinkBetween(NODE_2, NODE_3)); lsa = LinkStateAdvertisement.createUpdateLsa( NODE_1, NODE_1_NAME, true, networkGraph.getSequenceNumberOfNode(NODE_1) + 1, networkGraph.hashCode(), true, Arrays.asList(new TopologyLink[] {new TopologyLink(NODE_1, NODE_3, CONNECTION_ID_1)})); assertTrue(LSA_CAUSED_NO_UPDATE, networkGraph.update(lsa)); assertFalse(GRAPH_CONTAINS_CHANNEL, networkGraph.containsLinkBetween(NODE_1, NODE_2)); assertTrue(GRAPH_SHOULD_CONTAIN_CHANNEL, networkGraph.containsLinkBetween(NODE_1, NODE_3)); // inject a new node (NODE_4) via LSA lsa = LinkStateAdvertisement.createUpdateLsa( NODE_4, NODE_4_NAME, true, 1, networkGraph.hashCode(), true, Arrays.asList( new TopologyLink[] { new TopologyLink(NODE_4, NODE_3, CONNECTION_ID_1), new TopologyLink(NODE_4, NODE_2, CONNECTION_ID_1) })); assertTrue(LSA_CAUSED_NO_UPDATE, networkGraph.update(lsa)); assertTrue(GRAPH_CONTAINS_NODE, networkGraph.containsNode(NODE_4)); assertTrue(GRAPH_SHOULD_CONTAIN_CHANNEL, networkGraph.containsLinkBetween(NODE_4, NODE_3)); lsa = LinkStateAdvertisement.createUpdateLsa( NODE_4, NODE_4_NAME, true, networkGraph.getSequenceNumberOfNode(NODE_4) + 1, networkGraph.hashCode(), true, Arrays.asList(new TopologyLink[] {new TopologyLink(NODE_4, NODE_5, CONNECTION_ID_1)})); assertFalse(GRAPH_DOES_NOT_CONTAIN_NODE, networkGraph.containsNode(NODE_5)); // log.info(NetworkFormatter.summary(networkGraph)); assertTrue(LSA_CAUSED_NO_UPDATE, networkGraph.update(lsa)); assertTrue(GRAPH_CONTAINS_NODE, networkGraph.containsNode(NODE_5)); assertTrue(GRAPH_SHOULD_CONTAIN_CHANNEL, networkGraph.containsLinkBetween(NODE_4, NODE_5)); }