Repository: incubator-geode Updated Branches: refs/heads/develop 676b2a781 -> f788d698e
GEODE-613 CI Failure: LocatorLoadSnapshotJUnitTest.testConcurrentBalancing I've removed useless threads and timing loop from the test. It will no longer time out. Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/f788d698 Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/f788d698 Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/f788d698 Branch: refs/heads/develop Commit: f788d698e877b15570052f89b9d0b5ab23023f81 Parents: 676b2a7 Author: Bruce Schuchardt <bschucha...@pivotal.io> Authored: Thu May 5 15:15:58 2016 -0700 Committer: Bruce Schuchardt <bschucha...@pivotal.io> Committed: Thu May 5 15:25:06 2016 -0700 ---------------------------------------------------------------------- .../execute/EmptyRegionFunctionException.java | 63 +++++++++++++++++++ .../execute/EmtpyRegionFunctionException.java | 63 ------------------- .../internal/LocatorLoadSnapshotJUnitTest.java | 65 +++----------------- 3 files changed, 73 insertions(+), 118 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f788d698/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmptyRegionFunctionException.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmptyRegionFunctionException.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmptyRegionFunctionException.java new file mode 100644 index 0000000..a077779 --- /dev/null +++ b/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmptyRegionFunctionException.java @@ -0,0 +1,63 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.gemstone.gemfire.cache.execute; + +import com.gemstone.gemfire.distributed.DistributedMember; + +/** + * Exception to indicate that Region is empty for data aware functions. + * + * @since 6.5 + * + */ +public class EmptyRegionFunctionException extends FunctionException { + + private static final long serialVersionUID = 1L; + + /** + * Construct an instance of EmtpyRegionFunctionException + * + * @param cause + * a Throwable cause of this exception + */ + public EmptyRegionFunctionException(Throwable cause) { + super(cause); + } + + /** + * Construct an instance of EmtpyRegionFunctionException + * + * @param msg + * Exception message + */ + public EmptyRegionFunctionException(String msg) { + super(msg); + } + + /** + * Construct an instance of EmtpyRegionFunctionException + * + * @param msg + * the error message + * @param cause + * a Throwable cause of this exception + */ + public EmptyRegionFunctionException(String msg, Throwable cause) { + super(msg, cause); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f788d698/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmtpyRegionFunctionException.java ---------------------------------------------------------------------- diff --git a/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmtpyRegionFunctionException.java b/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmtpyRegionFunctionException.java deleted file mode 100644 index 6aff9eb..0000000 --- a/geode-core/src/main/java/com/gemstone/gemfire/cache/execute/EmtpyRegionFunctionException.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.gemstone.gemfire.cache.execute; - -import com.gemstone.gemfire.distributed.DistributedMember; - -/** - * Exception to indicate that Region is empty for data aware functions. - * - * @since 6.5 - * - */ -public class EmtpyRegionFunctionException extends FunctionException { - - private static final long serialVersionUID = 1L; - - /** - * Construct an instance of EmtpyRegionFunctionException - * - * @param cause - * a Throwable cause of this exception - */ - public EmtpyRegionFunctionException(Throwable cause) { - super(cause); - } - - /** - * Construct an instance of EmtpyRegionFunctionException - * - * @param msg - * Exception message - */ - public EmtpyRegionFunctionException(String msg) { - super(msg); - } - - /** - * Construct an instance of EmtpyRegionFunctionException - * - * @param msg - * the error message - * @param cause - * a Throwable cause of this exception - */ - public EmtpyRegionFunctionException(String msg, Throwable cause) { - super(msg, cause); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/f788d698/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java ---------------------------------------------------------------------- diff --git a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java old mode 100644 new mode 100755 index 34ac767..d8a1290 --- a/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java +++ b/geode-core/src/test/java/com/gemstone/gemfire/distributed/internal/LocatorLoadSnapshotJUnitTest.java @@ -257,21 +257,19 @@ public class LocatorLoadSnapshotJUnitTest { assertEquals(Arrays.asList(new ServerLocation[] {} ), sn.getServersForQueue(null, excludeAll, 3)); } - + /** - * A basic test of concurrent functionality. Starts a number of + * A basic test of concurrent functionality. Simulate a number of * threads making requests and expects the load to be balanced between * three servers. * @throws InterruptedException */ - @Category(FlakyTest.class) // GEODE-613: lots of threads, async action, IntegrationTest-not-UnitTest, thread joins, time sensitive @Test public void testConcurrentBalancing() throws InterruptedException { int NUM_THREADS = 50; final int NUM_REQUESTS = 10000; int ALLOWED_THRESHOLD = 50; //We should never be off by more than - //the number of concurrent threads. - + final LocatorLoadSnapshot sn = new LocatorLoadSnapshot(); final ServerLocation l1 = new ServerLocation("localhost", 1); final ServerLocation l2 = new ServerLocation("localhost", 2); @@ -290,47 +288,18 @@ public class LocatorLoadSnapshotJUnitTest { loadCounts.put(l2, new AtomicInteger(initialLoad2)); loadCounts.put(l3, new AtomicInteger(initialLoad3)); - Thread[] threads = new Thread[NUM_THREADS]; -// final Object lock = new Object(); for(int i =0; i < NUM_THREADS; i++) { - threads[i] = new Thread("Thread-" + i) { - public void run() { - for(int ii = 0; ii < NUM_REQUESTS; ii++) { - ServerLocation location; -// synchronized(lock) { - location = sn.getServerForConnection(null, Collections.EMPTY_SET); -// } - AtomicInteger count = (AtomicInteger) loadCounts.get(location); - count.incrementAndGet(); - } - } - }; - } - - for(int i =0; i < NUM_THREADS; i++) { - threads[i].start(); - } - - for(int i =0; i < NUM_THREADS; i++) { - Thread t = threads[i]; - long ms = 30 * 1000; - t.join(30 * 1000); - if (t.isAlive()) { - for(int j =0; j < NUM_THREADS; j++) { - threads[j].interrupt(); - } - fail("Thread did not terminate after " + ms + " ms: " + t); + for(int ii = 0; ii < NUM_REQUESTS; ii++) { + ServerLocation location; + location = sn.getServerForConnection(null, Collections.EMPTY_SET); + AtomicInteger count = (AtomicInteger) loadCounts.get(location); + count.incrementAndGet(); } } - double expectedPerServer = ( initialLoad1 + initialLoad2 + initialLoad3 + + double expectedPerServer = ( initialLoad1 + initialLoad2 + initialLoad3 + NUM_REQUESTS * NUM_THREADS) / (double) loadCounts.size(); -// for(Iterator itr = loadCounts.entrySet().iterator(); itr.hasNext(); ) { -// Map.Entry entry = (Entry) itr.next(); -// ServerLocation location = (ServerLocation) entry.getKey(); -// AI count= (AI) entry.getValue(); -// } - + for(Iterator itr = loadCounts.entrySet().iterator(); itr.hasNext(); ) { Map.Entry entry = (Entry) itr.next(); ServerLocation location = (ServerLocation) entry.getKey(); @@ -368,18 +337,4 @@ public class LocatorLoadSnapshotJUnitTest { assertFalse(sn.hasBalancedConnections("b")); } - public void _test2() { // delete this method? - final LocatorLoadSnapshot sn = new LocatorLoadSnapshot(); - sn.addServer(new ServerLocation("hs20h.gemstone.com",28543), new String[0], new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f)); - sn.addServer(new ServerLocation("hs20l.gemstone.com",22385), new String[0], new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f)); - sn.addServer(new ServerLocation("hs20n.gemstone.com",23482), new String[0], new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f)); - sn.addServer(new ServerLocation("hs20m.gemstone.com",23429), new String[0], new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f)); - sn.addServer(new ServerLocation("hs20e.gemstone.com",20154), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f)); - sn.addServer(new ServerLocation("hs20j.gemstone.com",24273), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f)); - sn.addServer(new ServerLocation("hs20g.gemstone.com",27125), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f)); - sn.addServer(new ServerLocation("hs20i.gemstone.com",25201), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f)); - sn.addServer(new ServerLocation("hs20k.gemstone.com",23711), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f)); - sn.addServer(new ServerLocation("hs20f.gemstone.com",21025), new String[0],new ServerLoad(0.0f, 0.00125f, 0.0f, 1.0f)); - } - }