@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)); }