[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