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 2016/06/30 19:23:27 UTC
[22/26] incubator-geode git commit: GEODE-1571: post process for get,
query, cq and register interest.
GEODE-1571: post process for get, query, cq and register interest.
Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/39c56843
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/39c56843
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/39c56843
Branch: refs/heads/feature/GEODE-1571
Commit: 39c56843bdaa67f0df4dbbb9edc096e8cb4e12e6
Parents: beb50ad
Author: Jinmei Liao <ji...@pivotal.io>
Authored: Thu Jun 30 11:58:42 2016 -0700
Committer: Jinmei Liao <ji...@pivotal.io>
Committed: Thu Jun 30 11:58:42 2016 -0700
----------------------------------------------------------------------
.../cache/tier/sockets/BaseCommandQuery.java | 28 +++++
.../cache/tier/sockets/CacheClientNotifier.java | 29 ++---
.../cache/tier/sockets/CacheClientProxy.java | 110 ++++++++++++++----
.../cache/tier/sockets/ClientUserAuths.java | 6 -
.../cache/tier/sockets/ServerConnection.java | 9 --
.../internal/security/GeodeSecurityUtil.java | 3 +-
.../gemfire/security/PostProcessor.java | 2 +-
.../security/templates/SamplePostProcessor.java | 4 +-
...CacheServerMBeanAuthenticationJUnitTest.java | 9 +-
.../JsonAuthorizationCacheStartRule.java | 16 +--
...ractIntegratedClientAuthDistributedTest.java | 4 +
...tegratedClientGetPutAuthDistributedTest.java | 32 ++---
...urityNoShowValue1PostProcessorDUnitTest.java | 84 ++++++++++++++
...ntegratedSecurityPostProcessorDUnitTest.java | 116 +++++++++++++++++++
.../security/NoShowValue1PostProcessor.java | 43 +++++++
.../security/CQPostProcessorDunitTest.java | 88 ++++++++++++++
...ntegratedClientQueryAuthDistributedTest.java | 25 +++-
.../cli/commands/CommandOverHttpDUnitTest.java | 17 +--
18 files changed, 515 insertions(+), 110 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommandQuery.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommandQuery.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommandQuery.java
index 8a95cf8..3f79873 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommandQuery.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/BaseCommandQuery.java
@@ -156,6 +156,34 @@ public abstract class BaseCommandQuery extends BaseCommand {
if (result instanceof SelectResults) {
SelectResults selectResults = (SelectResults)result;
+
+ // post process, iterate through the result for post processing
+ List list = selectResults.asList();
+ for(Iterator<Object> valItr = list.iterator(); valItr.hasNext();){
+ Object value = valItr.next();
+ Object newValue = value;
+ if(value instanceof CqEntry){
+ CqEntry cqEntry = (CqEntry)value;
+ Object cqNewValue = GeodeSecurityUtil.postProcess(null, cqEntry.getKey(), cqEntry.getValue());
+ if(!cqEntry.getValue().equals(cqNewValue)){
+ selectResults.remove(value);
+ if(cqNewValue!=null){
+ selectResults.add(new CqEntry(cqEntry.getKey(), cqNewValue));
+ }
+ }
+ }
+ else {
+ newValue = GeodeSecurityUtil.postProcess(null, null, value);
+ if(!value.equals(newValue)){
+ selectResults.remove(value);
+ // only add the newValue back if it's not null
+ if(newValue!=null){
+ selectResults.add(newValue);
+ }
+ }
+ }
+ }
+
if (logger.isDebugEnabled()) {
logger.debug("Query Result size for : {} is {}", query.getQueryString(), selectResults.size());
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
index 11dc204..c5b742c 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientNotifier.java
@@ -46,6 +46,7 @@ import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.apache.logging.log4j.Logger;
+import org.apache.shiro.subject.Subject;
import com.gemstone.gemfire.CancelException;
import com.gemstone.gemfire.DataSerializer;
@@ -394,12 +395,14 @@ public class CacheClientNotifier {
new IllegalArgumentException("Invalid conflation byte"), clientVersion);
return;
}
-
+
+ proxy = registerClient(socket, proxyID, proxy, isPrimary, clientConflation,
+ clientVersion, acceptorId, notifyBySubscription);
//TODO:hitesh
Properties credentials = HandShake.readCredentials(dis, dos,
authenticator, system);
- if (credentials != null) {
+ if (credentials != null && proxy!=null) {
if (securityLogWriter.fineEnabled()) {
securityLogWriter.fine("CacheClientNotifier: verifying credentials for proxyID: " + proxyID);
}
@@ -424,11 +427,14 @@ public class CacheClientNotifier {
authzCallback = (AccessControl) authzMethod.invoke(null, (Object[]) null);
authzCallback.init(principal, member, this.getCache());
}
+ proxy.setPostAuthzCallback(authzCallback);
+ }
+ else if(subject instanceof Subject){
+ proxy.setSubject((Subject)subject);
}
}
}
catch (ClassNotFoundException e) {
-
throw new IOException(LocalizedStrings.CacheClientNotifier_CLIENTPROXYMEMBERSHIPID_OBJECT_COULD_NOT_BE_CREATED_EXCEPTION_OCCURRED_WAS_0.toLocalizedString(e));
}
catch (AuthenticationRequiredException ex) {
@@ -441,24 +447,19 @@ public class CacheClientNotifier {
writeException(dos, HandShake.REPLY_EXCEPTION_AUTHENTICATION_FAILED, ex, clientVersion);
return;
}
- catch (Exception ex) {
- logger.warn(LocalizedMessage.create(LocalizedStrings.CacheClientNotifier_AN_EXCEPTION_WAS_THROWN_FOR_CLIENT_0_1, new Object[] {proxyID, ""}), ex);
- writeException(dos, Acceptor.UNSUCCESSFUL_SERVER_TO_CLIENT, ex, clientVersion);
- return;
- }
- try {
- proxy = registerClient(socket, proxyID, proxy, isPrimary, clientConflation,
- clientVersion, acceptorId, notifyBySubscription);
- }
catch (CacheException e) {
logger.warn(LocalizedMessage.create(LocalizedStrings.CacheClientNotifier_0_REGISTERCLIENT_EXCEPTION_ENCOUNTERED_IN_REGISTRATION_1, new Object[] {this, e}), e);
IOException io = new IOException(LocalizedStrings.CacheClientNotifier_EXCEPTION_OCCURRED_WHILE_TRYING_TO_REGISTER_INTEREST_DUE_TO_0.toLocalizedString(e.getMessage()));
io.initCause(e);
throw io;
}
- if (authzCallback != null && proxy != null) {
- proxy.setPostAuthzCallback(authzCallback);
+ catch (Exception ex) {
+ logger.warn(LocalizedMessage.create(LocalizedStrings.CacheClientNotifier_AN_EXCEPTION_WAS_THROWN_FOR_CLIENT_0_1, new Object[] {proxyID, ""}), ex);
+ writeException(dos, Acceptor.UNSUCCESSFUL_SERVER_TO_CLIENT, ex, clientVersion);
+ return;
}
+
+
this._statistics.endClientRegistration(startTime);
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
index c4b48f4..23b7bde 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/CacheClientProxy.java
@@ -17,12 +17,55 @@
package com.gemstone.gemfire.internal.cache.tier.sockets;
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.net.Socket;
+import java.net.SocketException;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentLinkedQueue;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReadWriteLock;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+import java.util.regex.Pattern;
+
+import org.apache.logging.log4j.Logger;
+import org.apache.shiro.subject.Subject;
+import org.apache.shiro.util.ThreadState;
+
import com.gemstone.gemfire.CancelException;
import com.gemstone.gemfire.DataSerializer;
import com.gemstone.gemfire.StatisticsFactory;
-import com.gemstone.gemfire.cache.*;
+import com.gemstone.gemfire.cache.Cache;
+import com.gemstone.gemfire.cache.CacheClosedException;
+import com.gemstone.gemfire.cache.CacheException;
+import com.gemstone.gemfire.cache.ClientSession;
+import com.gemstone.gemfire.cache.DynamicRegionFactory;
+import com.gemstone.gemfire.cache.InterestRegistrationEvent;
+import com.gemstone.gemfire.cache.InterestResultPolicy;
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.cache.RegionDestroyedException;
+import com.gemstone.gemfire.cache.RegionExistsException;
import com.gemstone.gemfire.cache.client.internal.RegisterInterestTracker;
-import com.gemstone.gemfire.cache.operations.*;
+import com.gemstone.gemfire.cache.operations.DestroyOperationContext;
+import com.gemstone.gemfire.cache.operations.InvalidateOperationContext;
+import com.gemstone.gemfire.cache.operations.OperationContext;
+import com.gemstone.gemfire.cache.operations.PutOperationContext;
+import com.gemstone.gemfire.cache.operations.RegionClearOperationContext;
+import com.gemstone.gemfire.cache.operations.RegionCreateOperationContext;
+import com.gemstone.gemfire.cache.operations.RegionDestroyOperationContext;
import com.gemstone.gemfire.cache.query.CqException;
import com.gemstone.gemfire.cache.query.internal.cq.CqService;
import com.gemstone.gemfire.cache.query.internal.cq.InternalCqQuery;
@@ -34,8 +77,21 @@ import com.gemstone.gemfire.i18n.StringId;
import com.gemstone.gemfire.internal.SystemTimer;
import com.gemstone.gemfire.internal.SystemTimer.SystemTimerTask;
import com.gemstone.gemfire.internal.Version;
-import com.gemstone.gemfire.internal.cache.*;
+import com.gemstone.gemfire.internal.cache.CacheDistributionAdvisee;
import com.gemstone.gemfire.internal.cache.CacheDistributionAdvisor.InitialImageAdvice;
+import com.gemstone.gemfire.internal.cache.ClientServerObserver;
+import com.gemstone.gemfire.internal.cache.ClientServerObserverHolder;
+import com.gemstone.gemfire.internal.cache.Conflatable;
+import com.gemstone.gemfire.internal.cache.DistributedRegion;
+import com.gemstone.gemfire.internal.cache.EntryEventImpl;
+import com.gemstone.gemfire.internal.cache.EnumListenerEvent;
+import com.gemstone.gemfire.internal.cache.EventID;
+import com.gemstone.gemfire.internal.cache.FilterProfile;
+import com.gemstone.gemfire.internal.cache.GemFireCacheImpl;
+import com.gemstone.gemfire.internal.cache.InterestRegistrationEventImpl;
+import com.gemstone.gemfire.internal.cache.LocalRegion;
+import com.gemstone.gemfire.internal.cache.PartitionedRegion;
+import com.gemstone.gemfire.internal.cache.StateFlushOperation;
import com.gemstone.gemfire.internal.cache.ha.HAContainerWrapper;
import com.gemstone.gemfire.internal.cache.ha.HARegionQueue;
import com.gemstone.gemfire.internal.cache.ha.HARegionQueueAttributes;
@@ -51,24 +107,8 @@ import com.gemstone.gemfire.internal.logging.LoggingThreadGroup;
import com.gemstone.gemfire.internal.logging.log4j.LocalizedMessage;
import com.gemstone.gemfire.internal.logging.log4j.LogMarker;
import com.gemstone.gemfire.internal.security.AuthorizeRequestPP;
+import com.gemstone.gemfire.internal.security.GeodeSecurityUtil;
import com.gemstone.gemfire.security.AccessControl;
-import org.apache.logging.log4j.Logger;
-
-import java.io.ByteArrayInputStream;
-import java.io.DataInputStream;
-import java.io.IOException;
-import java.net.Socket;
-import java.net.SocketException;
-import java.nio.ByteBuffer;
-import java.util.*;
-import java.util.concurrent.ConcurrentLinkedQueue;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-import java.util.regex.Pattern;
/**
* Class <code>CacheClientProxy</code> represents the server side of the
@@ -223,6 +263,7 @@ public class CacheClientProxy implements ClientSession {
boolean keepalive = false;
private AccessControl postAuthzCallback;
+ private Subject subject;
/**
* For multiuser environment..
@@ -362,6 +403,16 @@ public class CacheClientProxy implements ClientSession {
this.postAuthzCallback = authzCallback;
}
}
+
+ public void setSubject(Subject subject) {
+ //TODO:hitesh synchronization
+ synchronized (this.clientUserAuthsLock) {
+ if (this.subject != null) {
+ subject.logout();
+ }
+ this.subject = subject;
+ }
+ }
public void setCQVsUserAuth(String cqName, long uniqueId, boolean isDurable)
{
@@ -1591,6 +1642,7 @@ public class CacheClientProxy implements ClientSession {
*/
protected void deliverMessage(Conflatable conflatable)
{
+ ThreadState state = GeodeSecurityUtil.bindSubject(this.subject);
ClientUpdateMessage clientMessage = null;
if(conflatable instanceof HAEventWrapper) {
clientMessage = ((HAEventWrapper)conflatable).getClientUpdateMessage();
@@ -1600,6 +1652,21 @@ public class CacheClientProxy implements ClientSession {
this._statistics.incMessagesReceived();
+ // post process
+ Object oldValue = clientMessage.getValue();
+ if(oldValue instanceof byte[]){
+ EntryEventImpl.deserialize((byte[])oldValue);
+ Object newValue = GeodeSecurityUtil.postProcess(clientMessage.getRegionName(),
+ clientMessage.getKeyOfInterest(),
+ EntryEventImpl.deserialize((byte[])oldValue));
+ clientMessage.setLatestValue(EntryEventImpl.serialize(newValue));
+ }
+ else{
+ Object newValue = GeodeSecurityUtil.postProcess(clientMessage.getRegionName(),
+ clientMessage.getKeyOfInterest(), oldValue);
+ clientMessage.setLatestValue(newValue);
+ }
+
if (clientMessage.needsNoAuthorizationCheck() || postDeliverAuthCheckPassed(clientMessage)) {
// If dispatcher is getting initialized, add the event to temporary queue.
if (this.messageDispatcherInit) {
@@ -1625,6 +1692,9 @@ public class CacheClientProxy implements ClientSession {
} else {
this._statistics.incMessagesFailedQueued();
}
+
+ if(state!=null)
+ state.clear();
}
protected void sendMessageDirectly(ClientMessage message) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientUserAuths.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientUserAuths.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientUserAuths.java
index 27f7fa8..8d24491 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientUserAuths.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ClientUserAuths.java
@@ -27,7 +27,6 @@ import org.apache.shiro.subject.Subject;
import com.gemstone.gemfire.internal.logging.LogService;
import com.gemstone.gemfire.internal.security.AuthorizeRequest;
import com.gemstone.gemfire.internal.security.AuthorizeRequestPP;
-import com.gemstone.gemfire.security.NotAuthorizedException;
public class ClientUserAuths
{
@@ -133,11 +132,6 @@ public class ClientUserAuths
}
}
}
- else
- {
- //TODO:throw not authorized exception? will this ever happen??
- throw new NotAuthorizedException("User is not authorized for CQ");
- }
}
public void removeUserAuthAttributesForCq(String cqName, boolean isDurable)
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
index 7c650b9..37c6034 100755
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/cache/tier/sockets/ServerConnection.java
@@ -630,15 +630,6 @@ public class ServerConnection implements Runnable {
}
return true;
}
-
-// public static AuthorizeRequestPP getPostAuthorizeCallback(ClientProxyMembershipID proxyId, String cqName)
-// {
-// ClientUserAuths cua = proxyIdVsClientUserAuths.get(proxyId);
-// UserAuthAttributes uaa = cua.getUserAuthAttributes(cqName);
-// if (uaa != null)
-// return uaa.getPostAuthzRequest();
-// return null;
-// }
public void setCq(String cqName, boolean isDurable) throws Exception
{
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/main/java/com/gemstone/gemfire/internal/security/GeodeSecurityUtil.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/internal/security/GeodeSecurityUtil.java b/geode-core/src/main/java/com/gemstone/gemfire/internal/security/GeodeSecurityUtil.java
index 0ae3f7d..af1788a 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/internal/security/GeodeSecurityUtil.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/internal/security/GeodeSecurityUtil.java
@@ -343,7 +343,8 @@ public class GeodeSecurityUtil {
if(subject == null)
return result;
- return postProcessor.processRegionValue((Principal)subject.getPrincipal(), regionPath, key, result);
+ String regionName = StringUtils.stripStart(regionPath, "/");
+ return postProcessor.processRegionValue((Principal)subject.getPrincipal(), regionName, key, result);
}
public static Object getObject(String factoryName) {
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/main/java/com/gemstone/gemfire/security/PostProcessor.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/security/PostProcessor.java b/geode-core/src/main/java/com/gemstone/gemfire/security/PostProcessor.java
index 7f959e9..1331081 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/security/PostProcessor.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/security/PostProcessor.java
@@ -22,5 +22,5 @@ import java.util.Properties;
public interface PostProcessor {
void init(Properties securityProps);
- Object processRegionValue(Principal principal, String regionPath, Object key, Object value);
+ Object processRegionValue(Principal principal, String regionName, Object key, Object value);
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/main/java/com/gemstone/gemfire/security/templates/SamplePostProcessor.java
----------------------------------------------------------------------
diff --git a/geode-core/src/main/java/com/gemstone/gemfire/security/templates/SamplePostProcessor.java b/geode-core/src/main/java/com/gemstone/gemfire/security/templates/SamplePostProcessor.java
index 87a4e3c..8f13deb 100644
--- a/geode-core/src/main/java/com/gemstone/gemfire/security/templates/SamplePostProcessor.java
+++ b/geode-core/src/main/java/com/gemstone/gemfire/security/templates/SamplePostProcessor.java
@@ -36,9 +36,9 @@ public class SamplePostProcessor implements PostProcessor{
@Override
public Object processRegionValue(Principal principal,
- String regionPath,
+ String regionName,
Object key,
Object value) {
- return principal.getName()+"/"+regionPath+"/"+key+"/"+value;
+ return principal.getName()+"/"+regionName+"/"+key+"/"+value;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/CacheServerMBeanAuthenticationJUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/CacheServerMBeanAuthenticationJUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/CacheServerMBeanAuthenticationJUnitTest.java
index cf2a739..f38f2fc 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/CacheServerMBeanAuthenticationJUnitTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/CacheServerMBeanAuthenticationJUnitTest.java
@@ -16,15 +16,16 @@
*/
package com.gemstone.gemfire.management.internal.security;
-import com.gemstone.gemfire.internal.AvailablePort;
-import com.gemstone.gemfire.management.CacheServerMXBean;
-import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
import org.junit.Before;
import org.junit.ClassRule;
import org.junit.Rule;
import org.junit.Test;
import org.junit.experimental.categories.Category;
+import com.gemstone.gemfire.internal.AvailablePort;
+import com.gemstone.gemfire.management.CacheServerMXBean;
+import com.gemstone.gemfire.test.junit.categories.IntegrationTest;
+
@Category(IntegrationTest.class)
public class CacheServerMBeanAuthenticationJUnitTest {
private static int jmxManagerPort = AvailablePort.getRandomAvailablePort(AvailablePort.SOCKET);
@@ -33,7 +34,7 @@ public class CacheServerMBeanAuthenticationJUnitTest {
@ClassRule
public static JsonAuthorizationCacheStartRule serverRule = new JsonAuthorizationCacheStartRule(
- jmxManagerPort, "cacheServer.json", false);
+ jmxManagerPort, "cacheServer.json");
@Rule
public MBeanServerConnectionRule connectionRule = new MBeanServerConnectionRule(jmxManagerPort);
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/JsonAuthorizationCacheStartRule.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/JsonAuthorizationCacheStartRule.java b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/JsonAuthorizationCacheStartRule.java
index 4714016..00a9d7f 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/JsonAuthorizationCacheStartRule.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/management/internal/security/JsonAuthorizationCacheStartRule.java
@@ -31,12 +31,10 @@ public class JsonAuthorizationCacheStartRule extends ExternalResource {
private int httpPort = 0;
private String jsonFile;
private Class postProcessor;
- private boolean doAuthorization;
public JsonAuthorizationCacheStartRule(int jmxManagerPort, String jsonFile, Class postProcessor) {
this.jmxManagerPort = jmxManagerPort;
this.jsonFile = jsonFile;
- this.doAuthorization = true;
this.postProcessor = postProcessor;
}
@@ -44,20 +42,12 @@ public class JsonAuthorizationCacheStartRule extends ExternalResource {
public JsonAuthorizationCacheStartRule(int jmxManagerPort, String jsonFile) {
this.jmxManagerPort = jmxManagerPort;
this.jsonFile = jsonFile;
- this.doAuthorization = true;
}
public JsonAuthorizationCacheStartRule(int jmxManagerPort, int httpPort, String jsonFile) {
this.jmxManagerPort = jmxManagerPort;
this.httpPort = httpPort;
this.jsonFile = jsonFile;
- this.doAuthorization = true;
- }
-
- public JsonAuthorizationCacheStartRule(int jmxManagerPort, String jsonFile, boolean doAuthorization) {
- this.jmxManagerPort = jmxManagerPort;
- this.jsonFile = jsonFile;
- this.doAuthorization = doAuthorization;
}
protected void before() throws Throwable {
@@ -71,9 +61,7 @@ public class JsonAuthorizationCacheStartRule extends ExternalResource {
properties.put(HTTP_SERVICE_PORT, String.valueOf(httpPort));
properties.put(SECURITY_CLIENT_AUTHENTICATOR,
JSONAuthorization.class.getName() + ".create");
- if (doAuthorization) {
- properties.put(SECURITY_CLIENT_ACCESSOR, JSONAuthorization.class.getName() + ".create");
- }
+
if(postProcessor!=null){
properties.put(SECURITY_CLIENT_ACCESSOR_PP, postProcessor.getName()+".create");
}
@@ -82,8 +70,6 @@ public class JsonAuthorizationCacheStartRule extends ExternalResource {
cache = new CacheFactory(properties).create();
cache.addCacheServer().start();
-
- cache.createRegionFactory().create("region1");
}
public Cache getCache(){
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/test/java/com/gemstone/gemfire/security/AbstractIntegratedClientAuthDistributedTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/security/AbstractIntegratedClientAuthDistributedTest.java b/geode-core/src/test/java/com/gemstone/gemfire/security/AbstractIntegratedClientAuthDistributedTest.java
index a7ecb25..50d33ef 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/security/AbstractIntegratedClientAuthDistributedTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/security/AbstractIntegratedClientAuthDistributedTest.java
@@ -47,6 +47,7 @@ public class AbstractIntegratedClientAuthDistributedTest extends JUnit4CacheTest
protected VM client2 = null;
protected VM client3 = null;
protected int serverPort;
+ protected Class postProcessor = null;
@Before
public void before() throws Exception{
@@ -59,6 +60,9 @@ public class AbstractIntegratedClientAuthDistributedTest extends JUnit4CacheTest
Properties props = new Properties();
props.setProperty(SECURITY_CLIENT_AUTHENTICATOR, JSONAuthorization.class.getName()+".create");
+ if(postProcessor!=null){
+ props.setProperty(SECURITY_CLIENT_ACCESSOR_PP, postProcessor.getName()+".create");
+ }
props.setProperty(MCAST_PORT, "0");
props.setProperty(LOCATORS, "");
props.setProperty(SECURITY_LOG_LEVEL, "finest");
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedClientGetPutAuthDistributedTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedClientGetPutAuthDistributedTest.java b/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedClientGetPutAuthDistributedTest.java
index 37f9e80..0630ecf 100644
--- a/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedClientGetPutAuthDistributedTest.java
+++ b/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedClientGetPutAuthDistributedTest.java
@@ -24,16 +24,14 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
import com.gemstone.gemfire.cache.Region;
import com.gemstone.gemfire.cache.client.ClientCache;
-import com.gemstone.gemfire.cache.client.ClientCacheFactory;
-import com.gemstone.gemfire.cache.client.ClientRegionShortcut;
import com.gemstone.gemfire.test.dunit.AsyncInvocation;
import com.gemstone.gemfire.test.junit.categories.DistributedTest;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
-
@Category(DistributedTest.class)
public class IntegratedClientGetPutAuthDistributedTest extends AbstractIntegratedClientAuthDistributedTest {
@@ -49,12 +47,8 @@ public class IntegratedClientGetPutAuthDistributedTest extends AbstractIntegrate
// client1 connects to server as a user not authorized to do any operations
AsyncInvocation ai1 = client1.invokeAsync(()->{
- ClientCache cache = new ClientCacheFactory(createClientProperties("stranger", "1234567"))
- .setPoolSubscriptionEnabled(true)
- .addPoolServer("localhost", serverPort)
- .create();
-
- Region region = cache.createClientRegionFactory(ClientRegionShortcut.PROXY).create(REGION_NAME);
+ ClientCache cache = createClientCache("stranger", "1234567", serverPort);
+ Region region = cache.getRegion(REGION_NAME);
assertNotAuthorized(()->region.put("key3", "value3"), "DATA:WRITE:AuthRegion:key3");
assertNotAuthorized(()->region.get("key3"), "DATA:READ:AuthRegion:key3");
@@ -72,12 +66,8 @@ public class IntegratedClientGetPutAuthDistributedTest extends AbstractIntegrate
// client2 connects to user as a user authorized to use AuthRegion region
AsyncInvocation ai2 = client2.invokeAsync(()->{
- ClientCache cache = new ClientCacheFactory(createClientProperties("authRegionUser", "1234567"))
- .setPoolSubscriptionEnabled(true)
- .addPoolServer("localhost", serverPort)
- .create();
-
- Region region = cache.createClientRegionFactory(ClientRegionShortcut.PROXY).create(REGION_NAME);
+ ClientCache cache = createClientCache("authRegionUser", "1234567", serverPort);
+ Region region = cache.getRegion(REGION_NAME);
region.put("key3", "value3");
assertEquals("value3", region.get("key3"));
@@ -96,12 +86,8 @@ public class IntegratedClientGetPutAuthDistributedTest extends AbstractIntegrate
// client3 connects to user as a user authorized to use key1 in AuthRegion region
AsyncInvocation ai3 = client3.invokeAsync(()->{
- ClientCache cache = new ClientCacheFactory(createClientProperties("key1User", "1234567"))
- .setPoolSubscriptionEnabled(true)
- .addPoolServer("localhost", serverPort)
- .create();
-
- Region region = cache.createClientRegionFactory(ClientRegionShortcut.PROXY).create(REGION_NAME);
+ ClientCache cache = createClientCache("key1User", "1234567", serverPort);
+ Region region = cache.getRegion(REGION_NAME);
assertNotAuthorized(()->region.put("key2", "value1"), "DATA:WRITE:AuthRegion:key2");
assertNotAuthorized(()->region.get("key2"), "DATA:READ:AuthRegion:key2");
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedSecurityNoShowValue1PostProcessorDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedSecurityNoShowValue1PostProcessorDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedSecurityNoShowValue1PostProcessorDUnitTest.java
new file mode 100644
index 0000000..98a62df
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedSecurityNoShowValue1PostProcessorDUnitTest.java
@@ -0,0 +1,84 @@
+/*
+ * 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.security;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Test;
+
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.cache.client.ClientCache;
+import com.gemstone.gemfire.cache.client.Pool;
+import com.gemstone.gemfire.cache.client.PoolManager;
+import com.gemstone.gemfire.cache.query.SelectResults;
+
+public class IntegratedSecurityNoShowValue1PostProcessorDUnitTest extends AbstractIntegratedClientAuthDistributedTest {
+
+ public IntegratedSecurityNoShowValue1PostProcessorDUnitTest(){
+ this.postProcessor = NoShowValue1PostProcessor.class;
+ }
+
+ @Test
+ public void testPostProcess(){
+ List<String> keys = new ArrayList<>();
+ keys.add("key1");
+ keys.add("key2");
+
+ client1.invoke(()->{
+ ClientCache cache = createClientCache("super-user", "1234567", serverPort);
+ Region region = cache.getRegion(REGION_NAME);
+
+ // post process for get
+ assertEquals("value3", region.get("key3"));
+
+ assertNull(region.get("key1"));
+
+ // post processs for getAll
+ Map values = region.getAll(keys);
+ assertEquals(2, values.size());
+ assertEquals("value2", values.get("key2"));
+ assertNull(values.get("key1"));
+
+ // post process for query
+ String query = "select * from /AuthRegion";
+ SelectResults result = region.query(query);
+ System.out.println("query result: "+result);
+ assertEquals(4, result.size());
+ assertTrue(result.contains("value0"));
+ assertFalse(result.contains("value1"));
+ assertTrue(result.contains("value2"));
+ assertTrue(result.contains("value3"));
+ assertTrue(result.contains("value4"));
+
+ Pool pool = PoolManager.find(region);
+ result = (SelectResults)pool.getQueryService().newQuery(query).execute();
+ System.out.println("query result: "+result);
+ assertTrue(result.contains("value0"));
+ assertFalse(result.contains("value1"));
+ assertTrue(result.contains("value2"));
+ assertTrue(result.contains("value3"));
+ assertTrue(result.contains("value4"));
+
+ });
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedSecurityPostProcessorDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedSecurityPostProcessorDUnitTest.java b/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedSecurityPostProcessorDUnitTest.java
new file mode 100644
index 0000000..9f3e8b7
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/security/IntegratedSecurityPostProcessorDUnitTest.java
@@ -0,0 +1,116 @@
+/*
+ * 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.security;
+
+import static org.junit.Assert.*;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Test;
+
+import com.gemstone.gemfire.cache.EntryEvent;
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.cache.client.ClientCache;
+import com.gemstone.gemfire.cache.client.ClientCacheFactory;
+import com.gemstone.gemfire.cache.client.ClientRegionFactory;
+import com.gemstone.gemfire.cache.client.ClientRegionShortcut;
+import com.gemstone.gemfire.cache.client.Pool;
+import com.gemstone.gemfire.cache.client.PoolManager;
+import com.gemstone.gemfire.cache.query.SelectResults;
+import com.gemstone.gemfire.cache.util.CacheListenerAdapter;
+import com.gemstone.gemfire.security.templates.SamplePostProcessor;
+
+public class IntegratedSecurityPostProcessorDUnitTest extends AbstractIntegratedClientAuthDistributedTest {
+
+ public IntegratedSecurityPostProcessorDUnitTest(){
+ this.postProcessor = SamplePostProcessor.class;
+ }
+
+ @Test
+ public void testPostProcess(){
+ List<String> keys = new ArrayList<>();
+ keys.add("key1");
+ keys.add("key2");
+
+ client1.invoke(()->{
+ ClientCache cache = createClientCache("super-user", "1234567", serverPort);
+ Region region = cache.getRegion(REGION_NAME);
+
+ // post process for get
+ Object value = region.get("key3");
+ assertEquals("super-user/AuthRegion/key3/value3", value);
+
+ // post processs for getAll
+ Map values = region.getAll(keys);
+ assertEquals(2, values.size());
+ assertEquals("super-user/AuthRegion/key1/value1", values.get("key1"));
+ assertEquals("super-user/AuthRegion/key2/value2", values.get("key2"));
+
+ // post process for query
+ String query = "select * from /AuthRegion";
+ SelectResults result = region.query(query);
+ assertEquals(5, result.size());
+
+ assertTrue(result.contains("super-user/null/null/value0"));
+ assertTrue(result.contains("super-user/null/null/value1"));
+ assertTrue(result.contains("super-user/null/null/value2"));
+ assertTrue(result.contains("super-user/null/null/value3"));
+ assertTrue(result.contains("super-user/null/null/value4"));
+
+ Pool pool = PoolManager.find(region);
+ result = (SelectResults)pool.getQueryService().newQuery(query).execute();
+ assertTrue(result.contains("super-user/null/null/value0"));
+ assertTrue(result.contains("super-user/null/null/value1"));
+ assertTrue(result.contains("super-user/null/null/value2"));
+ assertTrue(result.contains("super-user/null/null/value3"));
+ assertTrue(result.contains("super-user/null/null/value4"));
+
+ });
+ }
+
+ @Test
+ public void testRegisterInterestPostProcess(){
+ client1.invoke(()->{
+ ClientCache cache = new ClientCacheFactory(createClientProperties("super-user", "1234567"))
+ .setPoolSubscriptionEnabled(true)
+ .addPoolServer("localhost", serverPort)
+ .create();
+
+ ClientRegionFactory factory = cache.createClientRegionFactory(ClientRegionShortcut.PROXY);
+ factory.addCacheListener(new CacheListenerAdapter() {
+ @Override
+ public void afterUpdate(EntryEvent event) {
+ assertEquals("super-user/AuthRegion/key1/value2", event.getSerializedNewValue().getDeserializedValue());
+ }
+ });
+
+ Region region = factory.create(REGION_NAME);
+ region.put("key1", "value1");
+ region.registerInterest("key1");
+ });
+
+ client2.invoke(()->{
+ ClientCache cache = createClientCache("dataUser", "1234567", serverPort);
+ Region region = cache.getRegion(REGION_NAME);
+ region.put("key1", "value2");
+ });
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-core/src/test/java/com/gemstone/gemfire/security/NoShowValue1PostProcessor.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/com/gemstone/gemfire/security/NoShowValue1PostProcessor.java b/geode-core/src/test/java/com/gemstone/gemfire/security/NoShowValue1PostProcessor.java
new file mode 100644
index 0000000..bca9717
--- /dev/null
+++ b/geode-core/src/test/java/com/gemstone/gemfire/security/NoShowValue1PostProcessor.java
@@ -0,0 +1,43 @@
+/*
+ * 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.security;
+
+import java.security.Principal;
+import java.util.Properties;
+
+public class NoShowValue1PostProcessor implements PostProcessor {
+
+ public static NoShowValue1PostProcessor create(){
+ return new NoShowValue1PostProcessor();
+ }
+
+ @Override
+ public void init(final Properties securityProps) {
+ }
+
+ @Override
+ public Object processRegionValue(final Principal principal,
+ final String regionName,
+ final Object key,
+ final Object value) {
+ if(value.equals("value1"))
+ return null;
+ else
+ return value;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-cq/src/test/java/com/gemstone/gemfire/security/CQPostProcessorDunitTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/security/CQPostProcessorDunitTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/security/CQPostProcessorDunitTest.java
new file mode 100644
index 0000000..54f2e1a
--- /dev/null
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/security/CQPostProcessorDunitTest.java
@@ -0,0 +1,88 @@
+/*
+ * 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.security;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+
+import com.gemstone.gemfire.cache.Region;
+import com.gemstone.gemfire.cache.client.ClientCache;
+import com.gemstone.gemfire.cache.client.Pool;
+import com.gemstone.gemfire.cache.client.PoolManager;
+import com.gemstone.gemfire.cache.query.CqAttributes;
+import com.gemstone.gemfire.cache.query.CqAttributesFactory;
+import com.gemstone.gemfire.cache.query.CqEvent;
+import com.gemstone.gemfire.cache.query.CqQuery;
+import com.gemstone.gemfire.cache.query.CqResults;
+import com.gemstone.gemfire.cache.query.QueryService;
+import com.gemstone.gemfire.cache.query.internal.cq.CqListenerImpl;
+import com.gemstone.gemfire.security.templates.SamplePostProcessor;
+
+public class CQPostProcessorDunitTest extends AbstractIntegratedClientAuthDistributedTest {
+
+ public CQPostProcessorDunitTest(){
+ this.postProcessor = SamplePostProcessor.class;
+ }
+
+ @Test
+ public void testPostProcess(){
+ String query = "select * from /AuthRegion";
+ client1.invoke(()-> {
+ ClientCache cache = createClientCache("super-user", "1234567", serverPort);
+ Region region = cache.getRegion(REGION_NAME);
+
+
+
+ Pool pool = PoolManager.find(region);
+ QueryService qs = pool.getQueryService();
+
+ CqAttributesFactory factory = new CqAttributesFactory();
+
+ factory.addCqListener(new CqListenerImpl() {
+ @Override
+ public void onEvent(final CqEvent aCqEvent) {
+ assertEquals("key6", aCqEvent.getKey());
+ assertEquals("super-user/AuthRegion/key6/value6", aCqEvent.getNewValue());
+ }
+ });
+
+
+ CqAttributes cqa = factory.create();
+
+ // Create the CqQuery
+ CqQuery cq = qs.newCq("CQ1", query, cqa);
+ CqResults results = cq.executeWithInitialResults();
+ assertEquals(5, results.size());
+ String resultString = results.toString();
+ assertTrue(resultString, resultString.contains("key:key0,value:super-user/null/key0/value0"));
+ assertTrue(resultString.contains("key:key1,value:super-user/null/key1/value1"));
+ assertTrue(resultString.contains("key:key2,value:super-user/null/key2/value2"));
+ assertTrue(resultString.contains("key:key3,value:super-user/null/key3/value3"));
+ assertTrue(resultString.contains("key:key4,value:super-user/null/key4/value4"));
+ });
+
+ client2.invoke(()-> {
+ ClientCache cache = createClientCache("authRegionUser", "1234567", serverPort);
+ Region region = cache.getRegion(REGION_NAME);
+ region.put("key6", "value6");
+ });
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-cq/src/test/java/com/gemstone/gemfire/security/IntegratedClientQueryAuthDistributedTest.java
----------------------------------------------------------------------
diff --git a/geode-cq/src/test/java/com/gemstone/gemfire/security/IntegratedClientQueryAuthDistributedTest.java b/geode-cq/src/test/java/com/gemstone/gemfire/security/IntegratedClientQueryAuthDistributedTest.java
index ad219cf..0b22146 100644
--- a/geode-cq/src/test/java/com/gemstone/gemfire/security/IntegratedClientQueryAuthDistributedTest.java
+++ b/geode-cq/src/test/java/com/gemstone/gemfire/security/IntegratedClientQueryAuthDistributedTest.java
@@ -25,6 +25,8 @@ import com.gemstone.gemfire.cache.client.Pool;
import com.gemstone.gemfire.cache.client.PoolManager;
import com.gemstone.gemfire.cache.query.CqAttributes;
import com.gemstone.gemfire.cache.query.CqAttributesFactory;
+import com.gemstone.gemfire.cache.query.CqEvent;
+import com.gemstone.gemfire.cache.query.CqListener;
import com.gemstone.gemfire.cache.query.CqQuery;
import com.gemstone.gemfire.cache.query.QueryService;
import com.gemstone.gemfire.test.junit.categories.DistributedTest;
@@ -87,11 +89,30 @@ public class IntegratedClientQueryAuthDistributedTest extends AbstractIntegrated
Pool pool = PoolManager.find(region);
QueryService qs = pool.getQueryService();
- CqAttributes cqa = new CqAttributesFactory().create();
+ CqAttributesFactory factory = new CqAttributesFactory();
+ factory.addCqListener(new CqListener() {
+ @Override
+ public void onEvent(final CqEvent aCqEvent) {
+ System.out.println(aCqEvent);
+ }
+
+ @Override
+ public void onError(final CqEvent aCqEvent) {
+
+ }
+
+ @Override
+ public void close() {
+
+ }
+ });
+
+
+ CqAttributes cqa = factory.create();
// Create the CqQuery
CqQuery cq = qs.newCq("CQ1", query, cqa);
- cq.execute();
+ System.out.println("query result: "+cq.executeWithInitialResults());
cq.stop();
});
http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/39c56843/geode-web/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CommandOverHttpDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-web/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CommandOverHttpDUnitTest.java b/geode-web/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CommandOverHttpDUnitTest.java
index 14a48c7..2f5348f 100644
--- a/geode-web/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CommandOverHttpDUnitTest.java
+++ b/geode-web/src/test/java/com/gemstone/gemfire/management/internal/cli/commands/CommandOverHttpDUnitTest.java
@@ -16,25 +16,16 @@
*/
package com.gemstone.gemfire.management.internal.cli.commands;
-import org.junit.experimental.categories.Category;
-import org.junit.Test;
-
-import static org.junit.Assert.*;
-
-import com.gemstone.gemfire.test.dunit.cache.internal.JUnit4CacheTestCase;
-import com.gemstone.gemfire.test.dunit.internal.JUnit4DistributedTestCase;
-import com.gemstone.gemfire.test.junit.categories.DistributedTest;
-
-import com.gemstone.gemfire.test.junit.categories.DistributedTest;
-import com.gemstone.gemfire.test.junit.categories.SecurityTest;
-import com.gemstone.gemfire.test.junit.runner.SuiteRunner;
-
import org.junit.ClassRule;
import org.junit.contrib.java.lang.system.ProvideSystemProperty;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
+import com.gemstone.gemfire.test.junit.categories.DistributedTest;
+import com.gemstone.gemfire.test.junit.categories.SecurityTest;
+import com.gemstone.gemfire.test.junit.runner.SuiteRunner;
+
@Category({ DistributedTest.class, SecurityTest.class })
@RunWith(SuiteRunner.class)
@Suite.SuiteClasses({