GEODE-519 Make sure that membership port range is available. test looks for port range of 3 port. Sometime that port is not available thus now we check range of port before starting the test.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/658981a9 Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/658981a9 Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/658981a9 Branch: refs/heads/feature/GEODE-1050 Commit: 658981a9a2015839c710d9dbdc9b20937e8dde22 Parents: f226f01 Author: Hitesh Khamesra <[email protected]> Authored: Tue Mar 15 14:34:18 2016 -0700 Committer: Hitesh Khamesra <[email protected]> Committed: Fri Mar 18 09:23:22 2016 -0700 ---------------------------------------------------------------------- .../distributed/DistributedSystemDUnitTest.java | 47 ++++++++++++++++---- 1 file changed, 38 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/658981a9/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedSystemDUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedSystemDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedSystemDUnitTest.java index fcaaa2d..610be11 100644 --- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedSystemDUnitTest.java +++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/DistributedSystemDUnitTest.java @@ -316,23 +316,52 @@ public class DistributedSystemDUnitTest extends DistributedTestCase { assertTrue(unicastPort <= idm.getPort() && idm.getPort() <= unicastPort+2); assertTrue(unicastPort <= idm.getPort() && idm.getDirectChannelPort() <= unicastPort+2); } + + /*** + * this will return starting port, from it "range" of port will available + * @param range + * @return + */ + private int getPortRange(int range) { + int port = DistributionConfig.DEFAULT_MEMBERSHIP_PORT_RANGE[0] + 10000; + int startPort = port; + int found = 0; + while (port <= DistributionConfig.DEFAULT_MEMBERSHIP_PORT_RANGE[1]) { + if (AvailablePort.isPortAvailable(port, AvailablePort.SOCKET)) { + found++; + if (found == range) { + break; + } + port++; + } else { + port++; + startPort = port; + found = 0; + } + } + if (port > DistributionConfig.DEFAULT_MEMBERSHIP_PORT_RANGE[1]) { + fail("Unable to find port range " + range); + } + return startPort; + } public void testMembershipPortRangeWithExactThreeValues() throws Exception { Properties config = new Properties(); - config.setProperty("locators", "localhost["+DistributedTestUtils.getDUnitLocatorPort()+"]"); - config.setProperty(DistributionConfig.MEMBERSHIP_PORT_RANGE_NAME, "" - + (DistributionConfig.DEFAULT_MEMBERSHIP_PORT_RANGE[1] - 2) + "-" - + (DistributionConfig.DEFAULT_MEMBERSHIP_PORT_RANGE[1])); - system = (InternalDistributedSystem)DistributedSystem.connect(config); + config.setProperty("locators", "localhost[" + DistributedTestUtils.getDUnitLocatorPort() + "]"); + int portRange = 3; + int portStartRange = getPortRange(portRange); + int portEndRange = portStartRange + portRange - 1; + config.setProperty(DistributionConfig.MEMBERSHIP_PORT_RANGE_NAME, "" + (portStartRange) + "-" + (portEndRange)); + system = (InternalDistributedSystem) DistributedSystem.connect(config); Cache cache = CacheFactory.create(system); cache.addCacheServer(); DistributionManager dm = (DistributionManager) system.getDistributionManager(); InternalDistributedMember idm = dm.getDistributionManagerId(); system.disconnect(); - assertTrue(idm.getPort() <= DistributionConfig.DEFAULT_MEMBERSHIP_PORT_RANGE[1]); - assertTrue(idm.getPort() >= DistributionConfig.DEFAULT_MEMBERSHIP_PORT_RANGE[0]); - assertTrue(idm.getDirectChannelPort() <= DistributionConfig.DEFAULT_MEMBERSHIP_PORT_RANGE[1]); - assertTrue(idm.getDirectChannelPort() >= DistributionConfig.DEFAULT_MEMBERSHIP_PORT_RANGE[0]); + assertTrue(idm.getPort() <= portEndRange); + assertTrue(idm.getPort() >= portStartRange); + assertTrue(idm.getDirectChannelPort() <= portEndRange); + assertTrue(idm.getDirectChannelPort() >= portStartRange); } public void testConflictingUDPPort() throws Exception {
