This is an automated email from the ASF dual-hosted git repository.
upthewaterspout pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new e719331 GEODE-5629: Changing GMSEncryptJUnitTest to use
ConcurrencyRule
e719331 is described below
commit e719331d03b3e3b1ae069b9db5b04cc928b96e3f
Author: Dan Smith <[email protected]>
AuthorDate: Fri Aug 24 12:14:36 2018 -0700
GEODE-5629: Changing GMSEncryptJUnitTest to use ConcurrencyRule
This test was not capturing exceptions from the background threads.
Using ConcurrenyRule to execute the background tests.
---
.../gms/messenger/GMSEncryptJUnitTest.java | 122 ++++++++-------------
1 file changed, 48 insertions(+), 74 deletions(-)
diff --git
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncryptJUnitTest.java
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncryptJUnitTest.java
index 53fa083..5a2a5c1 100755
---
a/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncryptJUnitTest.java
+++
b/geode-core/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/messenger/GMSEncryptJUnitTest.java
@@ -21,7 +21,7 @@ import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
-import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.Callable;
import org.junit.Assert;
import org.junit.Rule;
@@ -37,7 +37,7 @@ import
org.apache.geode.distributed.internal.membership.gms.ServiceConfig;
import org.apache.geode.distributed.internal.membership.gms.Services;
import org.apache.geode.internal.admin.remote.RemoteTransportConfig;
import org.apache.geode.test.junit.categories.MembershipTest;
-import org.apache.geode.test.junit.rules.ExecutorServiceRule;
+import org.apache.geode.test.junit.rules.ConcurrencyRule;
@Category({MembershipTest.class})
public class GMSEncryptJUnitTest {
@@ -52,8 +52,7 @@ public class GMSEncryptJUnitTest {
NetView netView;
@Rule
- public ExecutorServiceRule executorServiceRule =
- ExecutorServiceRule.builder().threadCount(THREAD_COUNT).build();
+ public ConcurrencyRule concurrencyRule = new ConcurrencyRule();
private void initMocks() throws Exception {
initMocks(DEFAULT_ALGO);
@@ -143,52 +142,39 @@ public class GMSEncryptJUnitTest {
sender.overrideInstallViewForTest(netView);
receiver.overrideInstallViewForTest(netView);
- final CountDownLatch countDownLatch = new CountDownLatch(THREAD_COUNT);
- for (int j = 0; j < THREAD_COUNT; j++)
- executorServiceRule.execute(new Runnable() {
- public void run() {
- // sender encrypts a message, so use receiver's public key
- try {
- int count = 0;
- for (int i = 0; i < runs; i++) {
- // System.out.println("another run " + i + " threadid " +
- // Thread.currentThread().getId());
- String ch = "Hello world";
- byte[] challenge = ch.getBytes();
- byte[] encryptedChallenge = sender.encryptData(challenge,
mockMembers[2]);
+ for (int j = 0; j < THREAD_COUNT; j++) {
+ Callable<Object> callable = () -> {
+ String ch = "Hello world";
+ byte[] challenge = ch.getBytes();
+ byte[] encryptedChallenge = sender.encryptData(challenge,
mockMembers[2]);
- // receiver decrypts the message using the sender's public key
- byte[] decryptBytes = receiver.decryptData(encryptedChallenge,
mockMembers[1]);
+ // receiver decrypts the message using the sender's public key
+ byte[] decryptBytes = receiver.decryptData(encryptedChallenge,
mockMembers[1]);
- // now send a response
- String response = "Hello yourself!";
- byte[] responseBytes = response.getBytes();
- byte[] encryptedResponse = receiver.encryptData(responseBytes,
mockMembers[1]);
+ // now send a response
+ String response = "Hello yourself!";
+ byte[] responseBytes = response.getBytes();
+ byte[] encryptedResponse = receiver.encryptData(responseBytes,
mockMembers[1]);
- // receiver decodes the response
- byte[] decryptedResponse = sender.decryptData(encryptedResponse,
mockMembers[2]);
+ // receiver decodes the response
+ byte[] decryptedResponse = sender.decryptData(encryptedResponse,
mockMembers[2]);
- Assert.assertFalse(Arrays.equals(challenge, encryptedChallenge));
+ Assert.assertFalse(Arrays.equals(challenge, encryptedChallenge));
- Assert.assertTrue(Arrays.equals(challenge, decryptBytes));
+ Assert.assertTrue(Arrays.equals(challenge, decryptBytes));
- Assert.assertFalse(Arrays.equals(responseBytes,
encryptedResponse));
+ Assert.assertFalse(Arrays.equals(responseBytes, encryptedResponse));
- Assert.assertTrue(Arrays.equals(responseBytes,
decryptedResponse));
- count++;
- }
- Assert.assertEquals(runs, count);
- countDownLatch.countDown();
- } catch (Exception e) {
- e.printStackTrace();
+ Assert.assertTrue(Arrays.equals(responseBytes, decryptedResponse));
- }
+ return null;
+ };
- }
- });
+ concurrencyRule.add(callable).repeatForIterations(runs);
+ }
- countDownLatch.await();
+ concurrencyRule.executeInParallel();
}
@Test
@@ -322,51 +308,39 @@ public class GMSEncryptJUnitTest {
receiver.overrideInstallViewForTest(netView);
final int runs = 100000;
- final CountDownLatch countDownLatch = new CountDownLatch(THREAD_COUNT);
-
- for (int j = 0; j < THREAD_COUNT; j++)
- executorServiceRule.execute(new Runnable() {
- public void run() {
- // sender encrypts a message, so use receiver's public key
- try {
- int count = 0;
- for (int i = 0; i < runs; i++) {
- String ch = "Hello world";
- byte[] challenge = ch.getBytes();
- byte[] encryptedChallenge = sender.encryptData(challenge);
- // receiver decrypts the message using the sender's public key
- byte[] decryptBytes = receiver.decryptData(encryptedChallenge);
+ for (int j = 0; j < THREAD_COUNT; j++) {
+ Callable<Void> callable = () -> {
+ // sender encrypts a message, so use receiver's public key
- // now send a response
- String response = "Hello yourself!";
- byte[] responseBytes = response.getBytes();
- byte[] encryptedResponse = receiver.encryptData(responseBytes);
+ String ch = "Hello world";
+ byte[] challenge = ch.getBytes();
+ byte[] encryptedChallenge = sender.encryptData(challenge);
- // receiver decodes the response
- byte[] decryptedResponse = sender.decryptData(encryptedResponse);
+ // receiver decrypts the message using the sender's public key
+ byte[] decryptBytes = receiver.decryptData(encryptedChallenge);
- Assert.assertFalse(Arrays.equals(challenge, encryptedChallenge));
+ // now send a response
+ String response = "Hello yourself!";
+ byte[] responseBytes = response.getBytes();
+ byte[] encryptedResponse = receiver.encryptData(responseBytes);
- Assert.assertTrue(Arrays.equals(challenge, decryptBytes));
+ // receiver decodes the response
+ byte[] decryptedResponse = sender.decryptData(encryptedResponse);
- Assert.assertFalse(Arrays.equals(responseBytes,
encryptedResponse));
+ Assert.assertFalse(Arrays.equals(challenge, encryptedChallenge));
- Assert.assertTrue(Arrays.equals(responseBytes,
decryptedResponse));
+ Assert.assertTrue(Arrays.equals(challenge, decryptBytes));
- count++;
- }
+ Assert.assertFalse(Arrays.equals(responseBytes, encryptedResponse));
- Assert.assertEquals(runs, count);
+ Assert.assertTrue(Arrays.equals(responseBytes, decryptedResponse));
- countDownLatch.countDown();
- } catch (Exception e) {
- e.printStackTrace();
- }
+ return null;
+ };
+ concurrencyRule.add(callable).repeatForIterations(runs);
- }
- });
-
- countDownLatch.await();
+ }
+ concurrencyRule.executeInParallel();
}
}