[java-identity-provider COMMIT] in /trunk/idp-session-impl/src: main/java/net/shibboleth/idp/session/impl/StorageBack...
noreply at shibboleth.net
noreply at shibboleth.net
Fri Oct 4 16:22:53 EDT 2013
Author: scantor
Date: Fri Oct 4 16:22:52 2013
New Revision: 4827
URL: http://svn.shibboleth.net/view/java-identity-provider?rev=4827&view=rev
Log:
Improve cleanup of seconday lookup lists, add unit test.
Modified:
trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java
trunk/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedSessionManagerTest.java
Modified: trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java?rev=4827&r1=4826&r2=4827&view=diff
==============================================================================
--- trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java (original)
+++ trunk/idp-session-impl/src/main/java/net/shibboleth/idp/session/impl/StorageBackedSessionManager.java Fri Oct 4 16:22:52 2013
@@ -533,8 +533,13 @@
}
try {
- storageService.updateWithVersion(sessionList.getVersion(), serviceId, serviceKey,
- writeBackSessionList.toString(), sessionList.getExpiration());
+ String writeBackValue = writeBackSessionList.toString();
+ if (writeBackValue.length() == 0) {
+ storageService.delete(serviceId, serviceKey);
+ } else if (!writeBackValue.equals(sessionList.getValue())) {
+ storageService.updateWithVersion(sessionList.getVersion(), serviceId, serviceKey,
+ writeBackValue, sessionList.getExpiration());
+ }
} catch (IOException e) {
log.warn("Ignoring exception while updating secondary index", e);
} catch (VersionMismatchException e) {
Modified: trunk/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedSessionManagerTest.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedSessionManagerTest.java?rev=4827&r1=4826&r2=4827&view=diff
==============================================================================
--- trunk/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedSessionManagerTest.java (original)
+++ trunk/idp-session-impl/src/test/java/net/shibboleth/idp/session/impl/StorageBackedSessionManagerTest.java Fri Oct 4 16:22:52 2013
@@ -17,8 +17,13 @@
package net.shibboleth.idp.session.impl;
+import java.io.IOException;
import java.util.Arrays;
import java.util.Collection;
+import java.util.List;
+
+import javax.json.JsonObject;
+import javax.json.stream.JsonGenerator;
import net.shibboleth.idp.authn.AuthenticationFlowDescriptor;
import net.shibboleth.idp.authn.AuthenticationResult;
@@ -29,6 +34,7 @@
import net.shibboleth.idp.session.ServiceSession;
import net.shibboleth.idp.session.ServiceSessionSerializerRegistry;
import net.shibboleth.idp.session.SessionException;
+import net.shibboleth.idp.session.criterion.ServiceSessionCriterion;
import net.shibboleth.idp.session.criterion.SessionIdCriterion;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.logic.ConstraintViolationException;
@@ -42,6 +48,8 @@
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
+import com.google.common.collect.Lists;
+
/** {@link StorageBackedSessionManager} unit test. */
public class StorageBackedSessionManagerTest {
@@ -61,6 +69,7 @@
serializerRegistry = new ServiceSessionSerializerRegistry();
serializerRegistry.register(BasicServiceSession.class, new BasicServiceSessionSerializer(sessionSlop));
+ serializerRegistry.register(ExtendedServiceSession.class, new ExtendedServiceSessionSerializer(sessionSlop));
AuthenticationFlowDescriptor foo = new AuthenticationFlowDescriptor("AuthenticationFlow/Foo");
foo.setLifetime(60 * 1000);
@@ -129,7 +138,7 @@
Assert.assertNull(manager.resolveSingle(new CriteriaSet(new SessionIdCriterion(sessionId))));
}
- @Test
+ @Test(threadPoolSize = 10, invocationCount = 10, timeOut = 10000)
public void testAddress() throws SessionException, ResolverException {
// Interleave checks of addresses of the two types.
@@ -152,6 +161,8 @@
Assert.assertFalse(two.checkAddress("192.168.1.2"));
Assert.assertTrue(two.checkAddress("fe80::ca2a:14ff:fe2a:3e04"));
Assert.assertFalse(one.checkAddress("fe80::ca2a:14ff:fe2a:3e05"));
+
+ manager.destroySession(session.getId());
}
@Test(threadPoolSize = 10, invocationCount = 10, timeOut = 10000)
@@ -205,6 +216,8 @@
session2 = manager.resolveSingle(new CriteriaSet(new SessionIdCriterion(session.getId())));
Assert.assertTrue(session.removeAuthenticationResult(foo));
[... 93 lines stripped ...]
More information about the commits
mailing list