You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by up...@apache.org on 2018/08/24 23:26:06 UTC
[geode] branch develop updated: GEODE-5629: Changing
GMSEncryptJUnitTest to use ConcurrencyRule
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 <up...@apache.org>
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();
}
}