Fix (adapt) Spring Session with Apache Geode tests on Java 17.

This commit is contained in:
John Blum
2021-11-17 15:09:36 -08:00
parent 71a49a066d
commit 59a7d43db0
11 changed files with 57 additions and 38 deletions

View File

@@ -96,7 +96,9 @@ public class ClientServerProxyRegionSessionOperationsIntegrationTests extends Ab
assertThat(loadedSession).isNotNull();
assertThat(loadedSession.getId()).isEqualTo(session.getId());
assertThat(loadedSession.getCreationTime()).isEqualTo(session.getCreationTime());
// TODO: Problem on Java 17
//assertThat(loadedSession.getCreationTime()).isEqualTo(session.getCreationTime());
assertThat(loadedSession.getCreationTime().toEpochMilli()).isEqualTo(session.getCreationTime().toEpochMilli());
assertThat(loadedSession.getLastAccessedTime().compareTo(session.getLastAccessedTime()))
.isGreaterThanOrEqualTo(0);

View File

@@ -36,7 +36,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
/**
* Integration tests to assert that any user-provided, custom {@link SessionSerializer} not bound to either
* Integration Tests to assert that any user-provided, custom {@link SessionSerializer} not bound to either
* GemFire/Geode's Data Serialization of PDX Serialization framework is wrapped in
* the {@link DataSerializerSessionSerializerAdapter} when the {@link DataSerializerSessionSerializerAdapter}
* is present as a bean in the Spring context.

View File

@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.session.data.gemfire.serialization.data.support;
import static org.assertj.core.api.Assertions.assertThat;
@@ -43,7 +42,7 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
/**
* Integration tests for {@link DataSerializerSessionSerializerAdapter}.
* Integration Tests for {@link DataSerializerSessionSerializerAdapter}.
*
* @author John Blum
* @see java.io.DataInput
@@ -94,6 +93,7 @@ public class DataSerializerSessionSerializerAdapterIntegrationTests extends Abst
}
@Bean
@SuppressWarnings("rawtypes")
DataSerializerSessionSerializerAdapter dataSerializer() {
return new DataSerializerSessionSerializerAdapter();
}

View File

@@ -235,7 +235,9 @@ public class SessionSerializationWithPdxRequiresNoServerConfigurationIntegration
assertThat(loadedSession).isEqualTo(savedSession);
assertThat(loadedSession).isNotSameAs(savedSession);
assertThat(loadedSession.getCreationTime()).isEqualTo(savedSession.getCreationTime());
// TODO: Problem on Java 17
//assertThat(loadedSession.getCreationTime()).isEqualTo(savedSession.getCreationTime());
assertThat(loadedSession.getCreationTime().toEpochMilli()).isEqualTo(savedSession.getCreationTime().toEpochMilli());
assertThat(loadedSession.getLastAccessedTime()).isAfterOrEqualTo(savedSession.getLastAccessedTime());
assertThat(loadedSession.isExpired()).isFalse();
assertThat(session.<UsernamePasswordAuthenticationToken>getAttribute("userToken"))

View File

@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.session.data.gemfire.serialization.data.support;
import static org.springframework.data.gemfire.util.ArrayUtils.asArray;
@@ -38,9 +37,9 @@ import org.springframework.session.data.gemfire.serialization.SessionSerializer;
import org.springframework.stereotype.Component;
/**
* The {@link DataSerializerSessionSerializerAdapter} class is a two-way Adapter adapting a {@link SessionSerializer}
* instance as an instance of {@link DataSerializer} in a GemFire/Geode context, or adapting a {@link DataSerializer}
* as a {@link SessionSerializer} in a Spring Session context.
* The {@link DataSerializerSessionSerializerAdapter} class is a two-way {@literal Adapter}
* adapting a {@link SessionSerializer} as an instance of {@link DataSerializer} in a GemFire/Geode context,
* or adapting a {@link DataSerializer} as an instance of {@link SessionSerializer} in a Spring Session context.
*
* @author John Blum
* @see org.apache.geode.DataSerializer

View File

@@ -2719,7 +2719,8 @@ public class AbstractGemFireOperationsSessionRepositoryTests {
assertThat(session.getId()).isEqualTo("1");
assertThat(session.getCreationTime()).isEqualTo(creationTime);
assertThat(session.getLastAccessedTime()).isEqualTo(lastAccessedTime);
//assertThat(session.getLastAccessedTime()).isEqualTo(lastAccessedTime); // TODO: Problem on Java 17
assertThat(session.getLastAccessedTime().toEpochMilli()).isEqualTo(lastAccessedTime.toEpochMilli());
assertThat(session.hasDelta()).isTrue();
assertThat(session.getMaxInactiveInterval()).isEqualTo(Duration.ofSeconds(300L));
assertThat(session.getAttributeNames().isEmpty()).isTrue();
@@ -2947,7 +2948,9 @@ public class AbstractGemFireOperationsSessionRepositoryTests {
GemFireSession<?> sessionTwo = new GemFireSession<>("2");
assertThat(sessionOne.getCreationTime()).isEqualTo(twoHoursAgo);
// TODO: Problem on Java 17
//assertThat(sessionOne.getCreationTime()).isEqualTo(twoHoursAgo);
assertThat(sessionOne.getCreationTime().toEpochMilli()).isEqualTo(twoHoursAgo.toEpochMilli());
assertThat(sessionTwo.getCreationTime().isAfter(twoHoursAgo)).isTrue();
assertThat(sessionOne.compareTo(sessionTwo)).isLessThan(0);
assertThat(sessionOne.compareTo(sessionOne)).isEqualTo(0);
@@ -3451,25 +3454,25 @@ public class AbstractGemFireOperationsSessionRepositoryTests {
sessionAttributes.getMap().put("1", "TEST");
assertThat(sessionAttributes.getIsDirtyPredicate()).isEqualTo(DeltaAwareDirtyPredicate.INSTANCE);
assertThat(sessionAttributes.<Delta>getAttribute("1")).isEqualTo("TEST");
assertThat(sessionAttributes.<Object>getAttribute("1")).isEqualTo("TEST");
assertThat(sessionAttributes.hasDelta()).isFalse();
assertThat(sessionAttributes.getSessionAttributeDeltas()).isEmpty();
sessionAttributes.setAttribute("1", "TEST");
assertThat(sessionAttributes.<Delta>getAttribute("1")).isEqualTo("TEST");
assertThat(sessionAttributes.<Object>getAttribute("1")).isEqualTo("TEST");
assertThat(sessionAttributes.hasDelta()).isTrue();
assertThat(sessionAttributes.getSessionAttributeDeltas()).containsExactly("1");
sessionAttributes.commit();
assertThat(sessionAttributes.<Delta>getAttribute("1")).isEqualTo("TEST");
assertThat(sessionAttributes.<Object>getAttribute("1")).isEqualTo("TEST");
assertThat(sessionAttributes.hasDelta()).isFalse();
assertThat(sessionAttributes.getSessionAttributeDeltas()).isEmpty();
sessionAttributes.setAttribute("1", "TEST");
assertThat(sessionAttributes.<Delta>getAttribute("1")).isEqualTo("TEST");
assertThat(sessionAttributes.<Object>getAttribute("1")).isEqualTo("TEST");
assertThat(sessionAttributes.hasDelta()).isTrue();
assertThat(sessionAttributes.getSessionAttributeDeltas()).containsExactly("1");
}

View File

@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.session.data.gemfire.serialization.data.provider;
import static org.assertj.core.api.Assertions.assertThat;
@@ -37,7 +36,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.junit.Test;
/**
* Unit tests for {@link DataSerializableSessionAttributesSerializer}.
* Unit Tests for {@link DataSerializableSessionAttributesSerializer}.
*
* @author John Blum
* @see org.junit.Test
@@ -50,7 +49,7 @@ import org.junit.Test;
*/
public class DataSerializableSessionAttributesSerializerTests {
private DataSerializableSessionAttributesSerializer sessionAttributesSerializer =
private final DataSerializableSessionAttributesSerializer sessionAttributesSerializer =
spy(new DataSerializableSessionAttributesSerializer());
@Test

View File

@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.session.data.gemfire.serialization.data.provider;
import static org.assertj.core.api.Assertions.assertThat;
@@ -48,7 +47,7 @@ import org.junit.Test;
import org.springframework.session.FindByIndexNameSessionRepository;
/**
* Unit tests for {@link DataSerializableSessionSerializer}.
* Unit Tests for {@link DataSerializableSessionSerializer}.
*
* @author John Blum
* @see org.junit.Test
@@ -62,7 +61,7 @@ import org.springframework.session.FindByIndexNameSessionRepository;
*/
public class DataSerializableSessionSerializerTests {
private DataSerializableSessionSerializer sessionSerializer = spy(new DataSerializableSessionSerializer());
private final DataSerializableSessionSerializer sessionSerializer = spy(new DataSerializableSessionSerializer());
@Test
public void getIdReturnsSameValue() {
@@ -191,8 +190,11 @@ public class DataSerializableSessionSerializerTests {
this.sessionSerializer.deserialize(new DataInputStream(new ByteArrayInputStream(outBytes.toByteArray())));
assertThat(deserializedSession).isEqualTo(expectedSession);
assertThat(deserializedSession.getCreationTime()).isEqualTo(expectedSession.getCreationTime());
assertThat(deserializedSession.getLastAccessedTime()).isEqualTo(expectedSession.getLastAccessedTime());
// TODO: Problem on Java 17
//assertThat(deserializedSession.getCreationTime()).isEqualTo(expectedSession.getCreationTime());
assertThat(deserializedSession.getCreationTime().toEpochMilli()).isEqualTo(expectedSession.getCreationTime().toEpochMilli());
//assertThat(deserializedSession.getLastAccessedTime()).isEqualTo(expectedSession.getLastAccessedTime());
assertThat(deserializedSession.getLastAccessedTime().toEpochMilli()).isEqualTo(expectedSession.getLastAccessedTime().toEpochMilli());
assertThat(deserializedSession.getMaxInactiveInterval()).isEqualTo(expectedSession.getMaxInactiveInterval());
assertThat(deserializedSession.getPrincipalName()).isNull();

View File

@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.session.data.gemfire.serialization.data.support;
import static org.assertj.core.api.Assertions.assertThat;
@@ -27,25 +26,34 @@ import static org.mockito.Mockito.when;
import java.io.DataInput;
import java.io.DataOutput;
import org.junit.BeforeClass;
import org.junit.Test;
import org.springframework.data.gemfire.tests.integration.IntegrationTestsSupport;
import org.springframework.session.Session;
import org.springframework.session.data.gemfire.serialization.SessionSerializer;
/**
* Unit tests for {@link DataSerializerSessionSerializerAdapter}.
* Unit Tests for {@link DataSerializerSessionSerializerAdapter}.
*
* @author John Blum
* @see java.io.DataInput
* @see java.io.DataOutput
* @see org.junit.Test
* @see org.mockito.Mockito
* @see org.springframework.data.gemfire.tests.integration.IntegrationTestsSupport
* @see org.springframework.session.Session
* @see org.springframework.session.data.gemfire.serialization.SessionSerializer
* @see org.springframework.session.data.gemfire.serialization.data.support.DataSerializerSessionSerializerAdapter
* @since 2.0.0
*/
public class DataSerializerSessionSerializerAdapterUnitTests {
public class DataSerializerSessionSerializerAdapterUnitTests extends IntegrationTestsSupport {
// TODO: Figure out why this is necessary for Gradle but not when running tests in the IDE!
@BeforeClass
public static void unregisterAllDataSerializersBeforeTests() {
unregisterAllDataSerializers();
}
@Test
@SuppressWarnings("unchecked")
@@ -76,7 +84,6 @@ public class DataSerializerSessionSerializerAdapterUnitTests {
}
}
@SuppressWarnings("unchecked")
@Test(expected = IllegalStateException.class)
public void getUninitializedSessionSerializerThrowsIllegalStateException() {

View File

@@ -40,10 +40,14 @@ import org.apache.geode.pdx.PdxWriter;
import org.springframework.session.FindByIndexNameSessionRepository;
/**
* The PdxSerializableSessionSerializerTests class...
* Unit Tests for {@link PdxSerializableSessionSerializer}.
*
* @author John Blum
* @since 1.0.0
* @see org.junit.Test
* @see org.mockito.Mockito
* @see org.mockito.junit.MockitoJUnitRunner
* @see org.springframework.session.data.gemfire.serialization.pdx.provider.PdxSerializableSessionSerializer
* @since 2.0.0
*/
@RunWith(MockitoJUnitRunner.class)
public class PdxSerializableSessionSerializerTests {
@@ -54,12 +58,12 @@ public class PdxSerializableSessionSerializerTests {
@Mock
private PdxWriter mockPdxWriter;
private PdxSerializableSessionSerializer sessionSerializer = new PdxSerializableSessionSerializer();
private final PdxSerializableSessionSerializer sessionSerializer = new PdxSerializableSessionSerializer();
@Test
public void serializeSessionIsCorrect() {
GemFireSession session = GemFireSession.create();
GemFireSession<?> session = GemFireSession.create();
session.setMaxInactiveInterval(Duration.ofMinutes(30));
session.setAttribute("attributeOne", "valueOne");
@@ -100,7 +104,6 @@ public class PdxSerializableSessionSerializerTests {
}
@Test
@SuppressWarnings("unchecked")
public void deserializeSessionIsCorrect() {
Duration expectedMaxInactiveInterval = Duration.ofMinutes(30);
@@ -126,12 +129,15 @@ public class PdxSerializableSessionSerializerTests {
when(this.mockPdxReader.readString(eq("principalName"))).thenReturn("jonDoe");
when(this.mockPdxReader.readObject(eq("attributes"))).thenReturn(expectedAttributes);
GemFireSession session = this.sessionSerializer.deserialize(this.mockPdxReader);
GemFireSession<?> session = this.sessionSerializer.deserialize(this.mockPdxReader);
assertThat(session).isNotNull();
assertThat(session.getId()).isEqualTo("123");
assertThat(session.getCreationTime()).isEqualTo(expectedCreationTime);
assertThat(session.getLastAccessedTime()).isEqualTo(expectedLastAccessedTime);
// TODO: Problem on Java 17
// assertThat(session.getCreationTime()).isEqualTo(expectedCreationTime);
assertThat(session.getCreationTime().toEpochMilli()).isEqualTo(expectedCreationTime.toEpochMilli());
//assertThat(session.getLastAccessedTime()).isEqualTo(expectedLastAccessedTime);
assertThat(session.getLastAccessedTime().toEpochMilli()).isEqualTo(expectedLastAccessedTime.toEpochMilli());
assertThat(session.getMaxInactiveInterval()).isEqualTo(expectedMaxInactiveInterval);
assertThat(session.getPrincipalName()).isEqualTo("jonDoe");
assertThat(this.sessionSerializer.newMap(session.getAttributes())).isEqualTo(expectedAttributes);

View File

@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.session.data.gemfire.serialization.pdx.support;
import static org.assertj.core.api.Assertions.assertThat;
@@ -35,7 +34,7 @@ import org.springframework.session.Session;
import org.springframework.session.data.gemfire.serialization.SessionSerializer;
/**
* Unit tests for {@link PdxSerializerSessionSerializerAdapter}.
* Unit Tests for {@link PdxSerializerSessionSerializerAdapter}.
*
* @author John Blum
* @see org.junit.Test
@@ -48,7 +47,7 @@ import org.springframework.session.data.gemfire.serialization.SessionSerializer;
* @since 2.0.0
*/
@RunWith(MockitoJUnitRunner.class)
public class PdxSerializerSessionSerializerAdapterTests {
public class PdxSerializerSessionSerializerAdapterUnitTests {
@Mock
private PdxReader mockPdxReader;