https://issues.apache.org/jira/browse/AMQ-3845 - make test (and map) work better on slow machines

git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1349713 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Bosanac Dejan 2012-06-13 09:53:13 +00:00
parent ccf601e4e4
commit b067a65444
3 changed files with 26 additions and 21 deletions

View File

@ -88,7 +88,7 @@ public class CachedLDAPAuthorizationMap extends DefaultAuthorizationMap implemen
private static String ANY_DESCENDANT = "\\$"; private static String ANY_DESCENDANT = "\\$";
private DirContext context; protected DirContext context;
private EventDirContext eventContext; private EventDirContext eventContext;
protected HashMap<ActiveMQDestination, AuthorizationEntry> entries = protected HashMap<ActiveMQDestination, AuthorizationEntry> entries =
@ -106,10 +106,20 @@ public class CachedLDAPAuthorizationMap extends DefaultAuthorizationMap implemen
env.put(Context.SECURITY_PROTOCOL, connectionProtocol); env.put(Context.SECURITY_PROTOCOL, connectionProtocol);
env.put(Context.PROVIDER_URL, connectionURL); env.put(Context.PROVIDER_URL, connectionURL);
env.put(Context.SECURITY_AUTHENTICATION, authentication); env.put(Context.SECURITY_AUTHENTICATION, authentication);
//env.put("com.sun.jndi.ldap.connect.pool", "true");
return new InitialDirContext(env); return new InitialDirContext(env);
} }
protected boolean isContextAlive() {
boolean alive = false;
if (context != null) {
try {
context.getAttributes("");
alive = true;
} catch (Exception e) {}
}
return alive;
}
/** /**
* Returns the existing open context or creates a new one and registers listeners for * Returns the existing open context or creates a new one and registers listeners for
* push notifications if such an update style is enabled. This implementation should not * push notifications if such an update style is enabled. This implementation should not
@ -120,17 +130,8 @@ public class CachedLDAPAuthorizationMap extends DefaultAuthorizationMap implemen
* @throws NamingException if there is an error setting things up * @throws NamingException if there is an error setting things up
*/ */
protected DirContext open() throws NamingException { protected DirContext open() throws NamingException {
if (context != null) { if (isContextAlive()) {
boolean alive = true; return context;
try {
context.getAttributes("");
} catch (Exception e) {
LOG.info("LDAP connection failed", e);
alive = false;
}
if (alive) {
return context;
}
} }
try { try {
@ -631,7 +632,7 @@ public class CachedLDAPAuthorizationMap extends DefaultAuthorizationMap implemen
*/ */
protected void checkForUpdates() { protected void checkForUpdates() {
if (context == null || (!refreshDisabled && (refreshInterval != -1 && System.currentTimeMillis() >= lastUpdated + refreshInterval))) { if (context == null || (!refreshDisabled && (refreshInterval != -1 && System.currentTimeMillis() >= lastUpdated + refreshInterval))) {
if (context == null) { if (!isContextAlive()) {
try { try {
context = createContext(); context = createContext();
} catch (NamingException ne) { } catch (NamingException ne) {

View File

@ -19,6 +19,7 @@ package org.apache.activemq.security;
import org.apache.activemq.command.ActiveMQQueue; import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic; import org.apache.activemq.command.ActiveMQTopic;
import org.apache.activemq.jaas.GroupPrincipal; import org.apache.activemq.jaas.GroupPrincipal;
import org.apache.activemq.util.Wait;
import org.apache.directory.ldap.client.api.LdapConnection; import org.apache.directory.ldap.client.api.LdapConnection;
import org.apache.directory.server.core.integ.AbstractLdapTestUnit; import org.apache.directory.server.core.integ.AbstractLdapTestUnit;
import org.apache.directory.shared.ldap.model.ldif.LdifEntry; import org.apache.directory.shared.ldap.model.ldif.LdifEntry;
@ -300,16 +301,20 @@ public abstract class AbstractCachedLDAPAuthorizationMapLegacyTest extends Abstr
getLdapServer().stop(); getLdapServer().stop();
Thread.sleep(1000); // wait for the context to be closed
// as we can't rely on ldar server isStarted()
Wait.waitFor(new Wait.Condition() {
public boolean isSatisified() throws Exception {
return map.context == null;
}
});
if (!sync) { failedACLs = map.getReadACLs(new ActiveMQQueue("TEST.FOO"));
failedACLs = map.getReadACLs(new ActiveMQQueue("TEST.FOO")); assertEquals("set size: " + failedACLs, 2, failedACLs.size());
assertEquals("set size: " + failedACLs, 2, failedACLs.size());
}
getLdapServer().start(); getLdapServer().start();
Thread.sleep(1000); Thread.sleep(2000);
connection = getLdapConnection(); connection = getLdapConnection();

View File

@ -161,7 +161,6 @@ cn: read
member: cn=users,ou=Group,ou=ActiveMQ,ou=system member: cn=users,ou=Group,ou=ActiveMQ,ou=system
member: cn=admins,ou=Group,ou=ActiveMQ,ou=system member: cn=admins,ou=Group,ou=ActiveMQ,ou=system
member: uid=jdoe,ou=User,ou=ActiveMQ,ou=system member: uid=jdoe,ou=User,ou=ActiveMQ,ou=system
member: cn=notthere,ou=Group,ou=ActiveMQ,ou=system
objectClass: groupOfNames objectClass: groupOfNames
objectClass: top objectClass: top