@Test public void getBridgeTest() throws StateAccessException, InterruptedException, KeeperException, SerializationException, BridgeZkManager.VxLanPortIdUpdateException { Setup.ensureZkDirectoryStructureExists(zkDir(), zkRoot); UUID bridgeId = getBridgeZkManager().create(new BridgeZkManager.BridgeConfig("test", null, null)); TestBridgeBuilder bridgeBuilder = new TestBridgeBuilder(); client.getBridge(bridgeId, bridgeBuilder); pollCallCounts(bridgeBuilder, 1); assertThat("Build is called", bridgeBuilder.getBuildCallsCount(), equalTo(1)); // let's cause a bridge update getBridgeZkManager() .update( bridgeId, new BridgeZkManager.BridgeConfig("test1", getRandomChainId(), getRandomChainId())); pollCallCounts(bridgeBuilder, 2); assertThat("Bridge update was notified", bridgeBuilder.getBuildCallsCount(), equalTo(2)); }
@Test public void MacPortMapTest() throws InterruptedException, KeeperException, SerializationException, StateAccessException { Setup.ensureZkDirectoryStructureExists(zkDir(), zkRoot); UUID bridgeId = getBridgeZkManager() .create( new BridgeZkManager.BridgeConfig("test", getRandomChainId(), getRandomChainId())); TestBridgeBuilder bridgeBuilder = new TestBridgeBuilder(); client.getBridge(bridgeId, bridgeBuilder); pollCallCounts(bridgeBuilder, 1); assertThat("Build is called", bridgeBuilder.getBuildCallsCount(), equalTo(1)); // and a new packet. MAC mac = MAC.random(); UUID portUUID = UUID.randomUUID(); /////////// // This sends two notifications. bridgeBuilder.simulateNewPacket(mac, portUUID); /////////// pollCallCounts(bridgeBuilder, 3); // make sure the notifications sent what we expected. assertEquals(bridgeBuilder.getNotifiedMAC(), mac); assertNull(bridgeBuilder.getNotifiedUUID()[0]); assertEquals(portUUID, bridgeBuilder.getNotifiedUUID()[1]); // make sure the packet is there. assertEquals(portUUID, bridgeBuilder.getPort(mac)); // remove the port. bridgeBuilder.removePort(mac, portUUID); pollCallCounts(bridgeBuilder, 5); // make sure the notifications sent what we expected. assertEquals(bridgeBuilder.getNotifiedMAC(), mac); assertEquals(portUUID, bridgeBuilder.getNotifiedUUID()[0]); assertNull(bridgeBuilder.getNotifiedUUID()[1]); // make sure that the mac <-> port association has been removed. assertNull(bridgeBuilder.getPort(mac)); assertThat("Bridge update was notified", bridgeBuilder.getBuildCallsCount(), equalTo(1)); }