You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ji...@apache.org on 2018/06/25 22:11:50 UTC
[geode] branch develop updated: GEODE-4511: rework ClientAuthDUnitRule to illustrate when authenticat… (#2077)
This is an automated email from the ASF dual-hosted git repository.
jinmeiliao 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 87c0ec3 GEODE-4511: rework ClientAuthDUnitRule to illustrate when authenticat… (#2077)
87c0ec3 is described below
commit 87c0ec3940b4ddfc90613389c252036f6be2a93c
Author: jinmeiliao <ji...@pivotal.io>
AuthorDate: Mon Jun 25 15:11:45 2018 -0700
GEODE-4511: rework ClientAuthDUnitRule to illustrate when authenticat… (#2077)
* GEODE-4511: rework ClientAuthDUnitRule to illustrate when authentication is executed on client operations.
---
.../apache/geode/security/ClientAuthDUnitTest.java | 64 ++++++++++++----------
...tAuthorizationLegacyConfigurationDUnitTest.java | 13 ++---
...aAuthorizationUsingLegacySecurityDUnitTest.java | 22 +++-----
...onUsingLegacySecurityWithFailoverDUnitTest.java | 12 ++--
.../geode/test/dunit/rules/ClusterStartupRule.java | 43 ++-------------
...tartupRuleCanSpecifyOlderVersionsDUnitTest.java | 7 +--
6 files changed, 59 insertions(+), 102 deletions(-)
diff --git a/geode-core/src/test/java/org/apache/geode/security/ClientAuthDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/ClientAuthDUnitTest.java
index ae0313e..0ae31a2 100644
--- a/geode-core/src/test/java/org/apache/geode/security/ClientAuthDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/ClientAuthDUnitTest.java
@@ -15,19 +15,20 @@
package org.apache.geode.security;
import static org.apache.geode.distributed.ConfigurationProperties.SECURITY_MANAGER;
-import static org.apache.geode.test.dunit.Disconnect.disconnectAllFromDS;
-import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import org.junit.After;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import org.apache.geode.cache.Region;
+import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.cache.client.ClientCache;
import org.apache.geode.cache.client.ClientRegionFactory;
import org.apache.geode.cache.client.ClientRegionShortcut;
+import org.apache.geode.cache.client.ServerOperationException;
import org.apache.geode.test.dunit.IgnoredException;
-import org.apache.geode.test.dunit.SerializableRunnableIF;
+import org.apache.geode.test.dunit.rules.ClientVM;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.junit.categories.DistributedTest;
import org.apache.geode.test.junit.categories.FlakyTest;
@@ -42,42 +43,45 @@ public class ClientAuthDUnitTest {
@Rule
public ServerStarterRule server = new ServerStarterRule()
- .withProperty(SECURITY_MANAGER, SimpleTestSecurityManager.class.getName()).withAutoStart();
-
- @After
- public void tearDown() throws Exception {
- disconnectAllFromDS();
- }
+ .withProperty(SECURITY_MANAGER, SimpleTestSecurityManager.class.getName())
+ .withRegion(RegionShortcut.REPLICATE, "region");
@Test
public void authWithCorrectPasswordShouldPass() throws Exception {
- lsRule.startClientVM(0, "test", "test", true, server.getPort(),
- new ClientCacheHook(lsRule));
+ ClientVM clientVM = lsRule.startClientVM(0, "data", "data", true, server.getPort());
+ clientVM.invoke(() -> {
+ ClientCache clientCache = ClusterStartupRule.getClientCache();
+ ClientRegionFactory clientRegionFactory =
+ clientCache.createClientRegionFactory(ClientRegionShortcut.PROXY);
+ Region region = clientRegionFactory.create("region");
+ region.put("A", "A");
+ });
}
@Test
- public void authWithIncorrectPasswordShouldFail() throws Exception {
+ public void authWithIncorrectPasswordWithSubscriptionEnabled() throws Exception {
IgnoredException.addIgnoredException(AuthenticationFailedException.class.getName());
-
- assertThatThrownBy(() -> lsRule.startClientVM(0, "test", "invalidPassword", true,
- server.getPort(), new ClientCacheHook(lsRule)))
- .isInstanceOf(AuthenticationFailedException.class);
+ ClientVM clientVM = lsRule.startClientVM(0, "test", "invalidPassword", true, server.getPort());
+ clientVM.invoke(() -> {
+ ClientCache clientCache = ClusterStartupRule.getClientCache();
+ ClientRegionFactory clientRegionFactory =
+ clientCache.createClientRegionFactory(ClientRegionShortcut.PROXY);
+ assertThatThrownBy(() -> clientRegionFactory.create("region"))
+ .isInstanceOf(AuthenticationFailedException.class);
+ });
}
- static class ClientCacheHook implements SerializableRunnableIF {
- final ClusterStartupRule lsRule;
-
- ClientCacheHook(ClusterStartupRule lsRule) {
- this.lsRule = lsRule;
- }
-
- public void run() {
- // Perform an operation that causes the cache to lazy-initialize a pool with the invalid
- // authentication so as to induce the exception.
- ClientCache clientCache = lsRule.getClientCache();
+ @Test
+ public void authWithIncorrectPasswordWithSubscriptionNotEnabled() throws Exception {
+ IgnoredException.addIgnoredException(AuthenticationFailedException.class.getName());
+ ClientVM clientVM = lsRule.startClientVM(0, "test", "invalidPassword", false, server.getPort());
+ clientVM.invoke(() -> {
+ ClientCache clientCache = ClusterStartupRule.getClientCache();
ClientRegionFactory clientRegionFactory =
clientCache.createClientRegionFactory(ClientRegionShortcut.PROXY);
- clientRegionFactory.create("region");
- }
+ Region region = clientRegionFactory.create("region");
+ assertThatThrownBy(() -> region.put("A", "A")).isInstanceOf(ServerOperationException.class)
+ .hasCauseInstanceOf(AuthenticationFailedException.class);
+ });
}
}
diff --git a/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationLegacyConfigurationDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationLegacyConfigurationDUnitTest.java
index 9838e05..bc71000 100644
--- a/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationLegacyConfigurationDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/ClientAuthorizationLegacyConfigurationDUnitTest.java
@@ -36,13 +36,11 @@ import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionFactory;
import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.cache.client.ClientCache;
-import org.apache.geode.cache.client.ClientCacheFactory;
import org.apache.geode.cache.client.ClientRegionFactory;
import org.apache.geode.cache.client.ClientRegionShortcut;
import org.apache.geode.security.templates.SimpleAccessController;
import org.apache.geode.security.templates.SimpleAuthenticator;
import org.apache.geode.security.templates.UserPasswordAuthInit;
-import org.apache.geode.test.dunit.SerializableConsumerIF;
import org.apache.geode.test.dunit.rules.ClientVM;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
@@ -119,10 +117,10 @@ public class ClientAuthorizationLegacyConfigurationDUnitTest {
UserPasswordAuthInit.class.getCanonicalName() + ".create");
int locatorPort = locator.getPort();
- SerializableConsumerIF<ClientCacheFactory> cacheSetup = cf -> cf
- .addPoolLocator("localhost", locatorPort);
- ClientVM client = csRule.startClientVM(2, clientProps, cacheSetup, clientVersion);
+ ClientVM client = csRule.startClientVM(2, clientProps, cf -> cf
+ .addPoolLocator("localhost", locatorPort), clientVersion);
+
client.invoke(() -> {
ClientCache cache = ClusterStartupRule.getClientCache();
ClientRegionFactory<String, String> rf =
@@ -181,10 +179,9 @@ public class ClientAuthorizationLegacyConfigurationDUnitTest {
UserPasswordAuthInit.class.getCanonicalName() + ".create");
int locatorPort = locator.getPort();
- SerializableConsumerIF<ClientCacheFactory> cacheSetup = cf -> cf
- .addPoolLocator("localhost", locatorPort);
- ClientVM client = csRule.startClientVM(2, clientProps, cacheSetup, clientVersion);
+ ClientVM client = csRule.startClientVM(2, clientProps, cf -> cf
+ .addPoolLocator("localhost", locatorPort), clientVersion);
client.invoke(() -> {
ClientCache cache = ClusterStartupRule.getClientCache();
ClientRegionFactory<String, String> rf =
diff --git a/geode-core/src/test/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityDUnitTest.java
index c0cdcfc..9e5074c 100644
--- a/geode-core/src/test/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityDUnitTest.java
@@ -38,7 +38,6 @@ import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionFactory;
import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.cache.client.ClientCache;
-import org.apache.geode.cache.client.ClientCacheFactory;
import org.apache.geode.cache.client.ClientRegionFactory;
import org.apache.geode.cache.client.ClientRegionShortcut;
import org.apache.geode.distributed.ConfigurationProperties;
@@ -46,7 +45,6 @@ import org.apache.geode.security.templates.SimpleAccessController;
import org.apache.geode.security.templates.SimpleAuthenticator;
import org.apache.geode.security.templates.UserPasswordAuthInit;
import org.apache.geode.security.templates.UsernamePrincipal;
-import org.apache.geode.test.dunit.SerializableConsumerIF;
import org.apache.geode.test.dunit.rules.ClientVM;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
@@ -122,9 +120,8 @@ public class ClientDataAuthorizationUsingLegacySecurityDUnitTest {
Properties props = getVMPropertiesWithPermission("dataWrite");
int locatorPort = locator.getPort();
- SerializableConsumerIF<ClientCacheFactory> cacheSetup = cf -> cf
- .addPoolLocator("localhost", locatorPort);
- ClientVM clientVM = csRule.startClientVM(2, props, cacheSetup, clientVersion);
+ ClientVM clientVM = csRule.startClientVM(2, props, cf -> cf
+ .addPoolLocator("localhost", locatorPort), clientVersion);
// Client adds data
clientVM.invoke(() -> {
@@ -156,9 +153,8 @@ public class ClientDataAuthorizationUsingLegacySecurityDUnitTest {
}
int locatorPort = locator.getPort();
- SerializableConsumerIF<ClientCacheFactory> cacheSetup = cf -> cf
- .addPoolLocator("localhost", locatorPort);
- ClientVM client = csRule.startClientVM(2, props, cacheSetup, clientVersion);
+ ClientVM client = csRule.startClientVM(2, props, cf -> cf
+ .addPoolLocator("localhost", locatorPort), clientVersion);
// Client cannot get through any avenue
client.invoke(() -> {
@@ -183,9 +179,8 @@ public class ClientDataAuthorizationUsingLegacySecurityDUnitTest {
Properties props = getVMPropertiesWithPermission("dataRead");
int locatorPort = locator.getPort();
- SerializableConsumerIF<ClientCacheFactory> cacheSetup = cf -> cf
- .addPoolLocator("localhost", locatorPort);
- ClientVM client = csRule.startClientVM(2, props, cacheSetup, clientVersion);
+ ClientVM client = csRule.startClientVM(2, props, cf -> cf
+ .addPoolLocator("localhost", locatorPort), clientVersion);
// Add some values for the client to get
server.invoke(() -> {
@@ -219,10 +214,9 @@ public class ClientDataAuthorizationUsingLegacySecurityDUnitTest {
}
int locatorPort = locator.getPort();
- SerializableConsumerIF<ClientCacheFactory> cacheSetup = cf -> cf
- .addPoolLocator("localhost", locatorPort);
- ClientVM clientVM = csRule.startClientVM(2, props, cacheSetup, clientVersion);
+ ClientVM clientVM = csRule.startClientVM(2, props, cf -> cf
+ .addPoolLocator("localhost", locatorPort), clientVersion);
clientVM.invoke(() -> {
ClientCache cache = ClusterStartupRule.getClientCache();
diff --git a/geode-core/src/test/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityWithFailoverDUnitTest.java b/geode-core/src/test/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityWithFailoverDUnitTest.java
index c2cf154..4871133 100644
--- a/geode-core/src/test/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityWithFailoverDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/security/ClientDataAuthorizationUsingLegacySecurityWithFailoverDUnitTest.java
@@ -42,7 +42,6 @@ import org.apache.geode.cache.Region;
import org.apache.geode.cache.RegionFactory;
import org.apache.geode.cache.RegionShortcut;
import org.apache.geode.cache.client.ClientCache;
-import org.apache.geode.cache.client.ClientCacheFactory;
import org.apache.geode.cache.client.ClientRegionFactory;
import org.apache.geode.cache.client.ClientRegionShortcut;
import org.apache.geode.cache.client.internal.PoolImpl;
@@ -53,7 +52,6 @@ import org.apache.geode.security.templates.SimpleAccessController;
import org.apache.geode.security.templates.SimpleAuthenticator;
import org.apache.geode.security.templates.UserPasswordAuthInit;
import org.apache.geode.security.templates.UsernamePrincipal;
-import org.apache.geode.test.dunit.SerializableConsumerIF;
import org.apache.geode.test.dunit.rules.ClientVM;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
@@ -329,10 +327,9 @@ public class ClientDataAuthorizationUsingLegacySecurityWithFailoverDUnitTest {
int server1Port = this.server1.getPort();
int server2Port = this.server2.getPort();
- SerializableConsumerIF<ClientCacheFactory> cacheSetup = cf -> cf
+ ClientVM client1 = csRule.startClientVM(3, props, cf -> cf
.addPoolServer("localhost", server1Port).addPoolServer("localhost", server2Port)
- .setPoolSubscriptionEnabled(true).setPoolSubscriptionRedundancy(2);
- ClientVM client1 = csRule.startClientVM(3, props, cacheSetup, clientVersion);
+ .setPoolSubscriptionEnabled(true).setPoolSubscriptionRedundancy(2), clientVersion);
// Initialize cache
client1.invoke(() -> {
@@ -388,10 +385,9 @@ public class ClientDataAuthorizationUsingLegacySecurityWithFailoverDUnitTest {
"org.apache.geode.security.templates.UsernamePrincipal");
}
- SerializableConsumerIF<ClientCacheFactory> cacheSetup = cf -> cf
+ ClientVM client = csRule.startClientVM(3, props, cf -> cf
.addPoolServer("localhost", server1Port).addPoolServer("localhost", server2Port)
- .setPoolSubscriptionEnabled(true).setPoolSubscriptionRedundancy(2);
- ClientVM client = csRule.startClientVM(3, props, cacheSetup, clientVersion);
+ .setPoolSubscriptionEnabled(true).setPoolSubscriptionRedundancy(2), clientVersion);
// Initialize cache
client.invoke(() -> {
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java
index 875ecd4..67cdc89 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/ClusterStartupRule.java
@@ -45,7 +45,6 @@ import org.apache.geode.security.templates.UserPasswordAuthInit;
import org.apache.geode.test.dunit.Host;
import org.apache.geode.test.dunit.RMIException;
import org.apache.geode.test.dunit.SerializableConsumerIF;
-import org.apache.geode.test.dunit.SerializableRunnableIF;
import org.apache.geode.test.dunit.VM;
import org.apache.geode.test.dunit.standalone.DUnitLauncher;
import org.apache.geode.test.dunit.standalone.VersionManager;
@@ -238,28 +237,15 @@ public class ClusterStartupRule extends ExternalResource implements Serializable
return memberVM;
}
- /**
- * Starts a client with the given properties, configuring the cacheFactory with the provided
- * Consumer
- */
public ClientVM startClientVM(int index, Properties properties,
SerializableConsumerIF<ClientCacheFactory> cacheFactorySetup, String clientVersion)
throws Exception {
- return startClientVM(index, properties, cacheFactorySetup, clientVersion,
- () -> {
- });
- }
-
- public ClientVM startClientVM(int index, Properties properties,
- SerializableConsumerIF<ClientCacheFactory> cacheFactorySetup, String clientVersion,
- SerializableRunnableIF clientCacheHook) throws Exception {
VM client = getVM(index, clientVersion);
Exception error = client.invoke(() -> {
clientCacheRule =
new ClientCacheRule().withProperties(properties).withCacheSetup(cacheFactorySetup);
try {
clientCacheRule.before();
- clientCacheHook.run();
return null;
} catch (Exception e) {
return e;
@@ -285,32 +271,15 @@ public class ClusterStartupRule extends ExternalResource implements Serializable
props.setProperty(UserPasswordAuthInit.PASSWORD, password);
props.setProperty(SECURITY_CLIENT_AUTH_INIT, UserPasswordAuthInit.class.getName());
- SerializableConsumerIF<ClientCacheFactory> consumer =
- ((cacheFactory) -> {
- cacheFactory.setPoolSubscriptionEnabled(subscriptionEnabled);
- for (int serverPort : serverPorts) {
- cacheFactory.addPoolServer("localhost", serverPort);
- }
- });
+ SerializableConsumerIF<ClientCacheFactory> consumer = ((cacheFactory) -> {
+ cacheFactory.setPoolSubscriptionEnabled(subscriptionEnabled);
+ for (int serverPort : serverPorts) {
+ cacheFactory.addPoolServer("localhost", serverPort);
+ }
+ });
return startClientVM(index, props, consumer);
}
- public ClientVM startClientVM(int index, String username, String password,
- boolean subscriptionEnabled, int serverPort, SerializableRunnableIF clientCacheHook)
- throws Exception {
- Properties props = new Properties();
- props.setProperty(UserPasswordAuthInit.USER_NAME, username);
- props.setProperty(UserPasswordAuthInit.PASSWORD, password);
- props.setProperty(SECURITY_CLIENT_AUTH_INIT, UserPasswordAuthInit.class.getName());
-
- SerializableConsumerIF<ClientCacheFactory> consumer =
- ((cacheFactory) -> {
- cacheFactory.setPoolSubscriptionEnabled(subscriptionEnabled);
- cacheFactory.addPoolServer("localhost", serverPort);
- });
- return startClientVM(index, props, consumer, VersionManager.CURRENT_VERSION, clientCacheHook);
- }
-
/**
* Returns the {@link Member} running inside the VM with the specified {@code index}
*/
diff --git a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/tests/ClusterStartupRuleCanSpecifyOlderVersionsDUnitTest.java b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/tests/ClusterStartupRuleCanSpecifyOlderVersionsDUnitTest.java
index b980333..d234937 100644
--- a/geode-core/src/test/java/org/apache/geode/test/dunit/rules/tests/ClusterStartupRuleCanSpecifyOlderVersionsDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/test/dunit/rules/tests/ClusterStartupRuleCanSpecifyOlderVersionsDUnitTest.java
@@ -26,9 +26,7 @@ import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
-import org.apache.geode.cache.client.ClientCacheFactory;
import org.apache.geode.internal.GemFireVersion;
-import org.apache.geode.test.dunit.SerializableConsumerIF;
import org.apache.geode.test.dunit.rules.ClientVM;
import org.apache.geode.test.dunit.rules.ClusterStartupRule;
import org.apache.geode.test.dunit.rules.MemberVM;
@@ -81,9 +79,8 @@ public class ClusterStartupRuleCanSpecifyOlderVersionsDUnitTest {
@Test
public void clientVersioningTest() throws Exception {
- SerializableConsumerIF<ClientCacheFactory> consumer = cf -> {
- };
- ClientVM locator = csRule.startClientVM(0, new Properties(), consumer, version);
+ ClientVM locator = csRule.startClientVM(0, new Properties(), (cf) -> {
+ }, version);
String locatorVMVersion = locator.getVM().getVersion();
String locatorActualVersion = locator.invoke(GemFireVersion::getGemFireVersion);
assertThat(locatorVMVersion).isEqualTo(version);