From 8793e7b96fe53cf12bd4d11bae8935b544cc94b1 Mon Sep 17 00:00:00 2001 From: John Blum Date: Tue, 6 Nov 2018 12:27:57 -0800 Subject: [PATCH] Refactor all client/server Integration Tests to fork Apache Geode/Pivotal GemFire servers using the STDG test framework. Remove all test resource clean up logic. Remove all waits for the cache instance to be completely destroyed by Apache Geode/Pivotal GemFire. --- ...ionsSessionRepositoryIntegrationTests.java | 143 +++---------- ...essionAttributesDeltaIntegrationTests.java | 165 +++----------- ...gionSessionOperationsIntegrationTests.java | 198 ++--------------- ...ionsSessionRepositoryIntegrationTests.java | 202 +++--------------- ...rializerConfigurationIntegrationTests.java | 17 +- ...lizationConfigurationIntegrationTests.java | 23 +- ...lizationConfigurationIntegrationTests.java | 23 +- ...guredAsDataSerializerIntegrationTests.java | 19 +- ...iguredAsPdxSerializerIntegrationTests.java | 22 +- ...NoServerConfigurationIntegrationTests.java | 21 +- 10 files changed, 165 insertions(+), 668 deletions(-) diff --git a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerGemFireOperationsSessionRepositoryIntegrationTests.java b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerGemFireOperationsSessionRepositoryIntegrationTests.java index 868ff9b..3fd9f94 100644 --- a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerGemFireOperationsSessionRepositoryIntegrationTests.java +++ b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerGemFireOperationsSessionRepositoryIntegrationTests.java @@ -17,20 +17,13 @@ package org.springframework.session.data.gemfire; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.data.gemfire.util.ArrayUtils.asArray; -import java.io.File; import java.io.IOException; -import java.net.InetSocketAddress; -import java.text.DateFormat; -import java.text.SimpleDateFormat; import java.time.Duration; import java.time.Instant; -import java.util.Date; import java.util.concurrent.TimeUnit; import org.junit.After; -import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -39,20 +32,13 @@ import org.junit.runner.RunWith; import org.apache.geode.cache.DataPolicy; import org.apache.geode.cache.Region; import org.apache.geode.cache.RegionAttributes; -import org.apache.geode.cache.client.ClientCache; import org.apache.geode.cache.client.ClientRegionShortcut; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; -import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.data.gemfire.config.annotation.CacheServerApplication; -import org.springframework.data.gemfire.config.annotation.CacheServerConfigurer; import org.springframework.data.gemfire.config.annotation.ClientCacheApplication; -import org.springframework.data.gemfire.config.annotation.ClientCacheConfigurer; -import org.springframework.data.gemfire.support.ConnectionEndpoint; import org.springframework.session.Session; import org.springframework.session.data.gemfire.config.annotation.web.http.EnableGemFireHttpSession; import org.springframework.session.data.gemfire.support.GemFireUtils; @@ -64,9 +50,7 @@ import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.util.FileSystemUtils; import org.springframework.util.ObjectUtils; -import org.springframework.util.SocketUtils; /** * Integration tests testing the functionality of Apache Geode / Pivotal GemFire backed Spring Sessions @@ -101,17 +85,10 @@ import org.springframework.util.SocketUtils; ClientServerGemFireOperationsSessionRepositoryIntegrationTests.TestGemFireClientConfiguration.class) @DirtiesContext @WebAppConfiguration -public class ClientServerGemFireOperationsSessionRepositoryIntegrationTests - extends AbstractGemFireIntegrationTests { +public class ClientServerGemFireOperationsSessionRepositoryIntegrationTests extends AbstractGemFireIntegrationTests { private static final int MAX_INACTIVE_INTERVAL_IN_SECONDS = 1; - private static final DateFormat TIMESTAMP = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); - - private static File processWorkingDirectory; - - private static Process gemfireServer; - private static final String TEST_SESSION_REGION_NAME = "TestClientServerSessions"; @Autowired @@ -120,55 +97,16 @@ public class ClientServerGemFireOperationsSessionRepositoryIntegrationTests @BeforeClass public static void startGemFireServer() throws IOException { - - long t0 = System.currentTimeMillis(); - - int port = SocketUtils.findAvailableTcpPort(); - - System.err.printf("Starting a Pivotal GemFire Server running on host [%1$s] listening on port [%2$d]%n", - TestGemFireServerConfiguration.SERVER_HOSTNAME, port); - - System.setProperty("spring.session.data.gemfire.port", String.valueOf(port)); - - String processWorkingDirectoryPathname = - String.format("gemfire-client-server-tests-%1$s", TIMESTAMP.format(new Date())); - - processWorkingDirectory = createDirectory(processWorkingDirectoryPathname); - - gemfireServer = run(TestGemFireServerConfiguration.class, processWorkingDirectory, - String.format("-Dspring.session.data.gemfire.port=%1$d", port)); - - assertThat(waitForCacheServerToStart(TestGemFireServerConfiguration.SERVER_HOSTNAME, port)) - .isTrue(); - - System.err.printf("GemFire Server [startup time = %1$d ms]%n", System.currentTimeMillis() - t0); - } - - @AfterClass - public static void stopGemFireServer() { - - if (gemfireServer != null) { - - gemfireServer.destroy(); - - System.err.printf("GemFire Server [exit code = %1$d]%n", - waitForProcessToStop(gemfireServer, processWorkingDirectory)); - } - - if (Boolean.valueOf(System.getProperty("spring.session.data.gemfire.fork.clean", Boolean.TRUE.toString()))) { - FileSystemUtils.deleteRecursively(processWorkingDirectory); - } - - assertThat(waitForClientCacheToClose(DEFAULT_WAIT_DURATION)).isTrue(); + startGemFireServer(TestGemFireServerConfiguration.class); } @Before public void setup() { - assertThat(GemFireUtils.isClient(gemfireCache)).isTrue(); + assertThat(GemFireUtils.isClient(this.gemfireCache)).isTrue(); Region springSessionGemFireRegion = - gemfireCache.getRegion(TEST_SESSION_REGION_NAME); + this.gemfireCache.getRegion(TEST_SESSION_REGION_NAME); assertThat(springSessionGemFireRegion).isNotNull(); @@ -264,70 +202,39 @@ public class ClientServerGemFireOperationsSessionRepositoryIntegrationTests assertThat(deletedSession).isNull(); } - @ClientCacheApplication(logLevel = "warning", pingInterval = 5000, readTimeout = 2500, retryAttempts = 1, - subscriptionEnabled = true) - @EnableGemFireHttpSession(regionName = TEST_SESSION_REGION_NAME, poolName = "DEFAULT", + @ClientCacheApplication( + logLevel = "error", + pingInterval = 5000, + readTimeout = 2500, + retryAttempts = 1, + subscriptionEnabled = true + ) + @EnableGemFireHttpSession( + regionName = TEST_SESSION_REGION_NAME, + poolName = "DEFAULT", clientRegionShortcut = ClientRegionShortcut.CACHING_PROXY, - maxInactiveIntervalInSeconds = MAX_INACTIVE_INTERVAL_IN_SECONDS) + maxInactiveIntervalInSeconds = MAX_INACTIVE_INTERVAL_IN_SECONDS + ) @SuppressWarnings("unused") static class TestGemFireClientConfiguration { - @Bean - static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { - return new PropertySourcesPlaceholderConfigurer(); - } - - @Bean - ClientCacheConfigurer clientCacheDefaultPoolPortConfigurer( - @Value("${spring.session.data.gemfire.port:" + DEFAULT_GEMFIRE_SERVER_PORT + "}") int port) { - - return (beanName, clientCacheFactoryBean) -> - clientCacheFactoryBean.setServers(asArray(new ConnectionEndpoint("localhost", port))); - } - @Bean public SessionEventListener sessionEventListener() { return new SessionEventListener(); } - - // used for debugging purposes - @SuppressWarnings("resource") - public static void main(String[] args) { - - ConfigurableApplicationContext applicationContext = new AnnotationConfigApplicationContext( - TestGemFireClientConfiguration.class); - - applicationContext.registerShutdownHook(); - - ClientCache clientCache = applicationContext.getBean(ClientCache.class); - - for (InetSocketAddress server : clientCache.getCurrentServers()) { - System.err.printf("GemFire Server [host: %1$s, port: %2$d]%n", - server.getHostName(), server.getPort()); - } - } } - @CacheServerApplication(name = "ClientServerGemFireOperationsSessionRepositoryIntegrationTests", logLevel = "warning") - @EnableGemFireHttpSession(regionName = TEST_SESSION_REGION_NAME, - maxInactiveIntervalInSeconds = MAX_INACTIVE_INTERVAL_IN_SECONDS) + @CacheServerApplication( + name = "ClientServerGemFireOperationsSessionRepositoryIntegrationTests", + logLevel = "error" + ) + @EnableGemFireHttpSession( + regionName = TEST_SESSION_REGION_NAME, + maxInactiveIntervalInSeconds = MAX_INACTIVE_INTERVAL_IN_SECONDS + ) @SuppressWarnings("unused") static class TestGemFireServerConfiguration { - static final String SERVER_HOSTNAME = "localhost"; - - @Bean - static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { - return new PropertySourcesPlaceholderConfigurer(); - } - - @Bean - CacheServerConfigurer cacheServerPortConfigurer( - @Value("${spring.session.data.gemfire.port:" + DEFAULT_GEMFIRE_SERVER_PORT + "}") int port) { - - return (beanName, cacheServerFactoryBean) -> cacheServerFactoryBean.setPort(port); - } - @SuppressWarnings("resource") public static void main(String[] args) throws IOException { @@ -335,8 +242,6 @@ public class ClientServerGemFireOperationsSessionRepositoryIntegrationTests new AnnotationConfigApplicationContext(TestGemFireServerConfiguration.class); applicationContext.registerShutdownHook(); - - writeProcessControlFile(WORKING_DIRECTORY); } } } diff --git a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerHttpSessionAttributesDeltaIntegrationTests.java b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerHttpSessionAttributesDeltaIntegrationTests.java index 77d0ff8..79d8063 100644 --- a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerHttpSessionAttributesDeltaIntegrationTests.java +++ b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerHttpSessionAttributesDeltaIntegrationTests.java @@ -18,38 +18,20 @@ package org.springframework.session.data.gemfire; import static org.assertj.core.api.Assertions.assertThat; -import java.io.File; import java.io.IOException; -import java.net.InetSocketAddress; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Collections; -import java.util.Date; -import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; -import org.apache.geode.cache.client.ClientCache; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.data.gemfire.config.annotation.CacheServerApplication; -import org.springframework.data.gemfire.config.annotation.CacheServerConfigurer; import org.springframework.data.gemfire.config.annotation.ClientCacheApplication; -import org.springframework.data.gemfire.config.annotation.ClientCacheConfigurer; -import org.springframework.data.gemfire.support.ConnectionEndpoint; import org.springframework.session.Session; import org.springframework.session.data.gemfire.config.annotation.web.http.EnableGemFireHttpSession; import org.springframework.session.data.gemfire.config.annotation.web.http.GemFireHttpSessionConfiguration; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.util.FileSystemUtils; -import org.springframework.util.SocketUtils; /** * Integration tests testing the addition/removal of HTTP Session Attributes @@ -72,68 +54,27 @@ import org.springframework.util.SocketUtils; * @since 1.3.1 */ @RunWith(SpringRunner.class) -@ContextConfiguration(classes = - ClientServerHttpSessionAttributesDeltaIntegrationTests.SpringSessionDataGemFireClientConfiguration.class) +@ContextConfiguration( + classes = ClientServerHttpSessionAttributesDeltaIntegrationTests.SpringSessionDataGemFireClientConfiguration.class +) public class ClientServerHttpSessionAttributesDeltaIntegrationTests extends AbstractGemFireIntegrationTests { private static final int MAX_INACTIVE_INTERVAL_IN_SECONDS = 1; - private static final DateFormat TIMESTAMP = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); - - private static File processWorkingDirectory; - - private static Process gemfireServer; - @BeforeClass public static void startGemFireServer() throws IOException { - - long t0 = System.currentTimeMillis(); - - int port = SocketUtils.findAvailableTcpPort(); - - System.err.printf("Starting a Pivotal GemFire Server running on host [%1$s] listening on port [%2$d]%n", - SpringSessionDataGemFireServerConfiguration.SERVER_HOSTNAME, port); - - System.setProperty("spring.session.data.gemfire.port", String.valueOf(port)); - - String processWorkingDirectoryPathname = - String.format("gemfire-client-server-tests-%1$s", TIMESTAMP.format(new Date())); - - processWorkingDirectory = createDirectory(processWorkingDirectoryPathname); - - gemfireServer = run(SpringSessionDataGemFireServerConfiguration.class, processWorkingDirectory, - String.format("-Dspring.session.data.gemfire.port=%1$d", port)); - - assertThat(waitForCacheServerToStart(SpringSessionDataGemFireServerConfiguration.SERVER_HOSTNAME, port)) - .isTrue(); - - System.err.printf("GemFire Server [startup time = %1$d ms]%n", System.currentTimeMillis() - t0); - } - - @AfterClass - public static void stopGemFireServer() { - - if (gemfireServer != null) { - gemfireServer.destroy(); - System.err.printf("GemFire Server [exit code = %1$d]%n", - waitForProcessToStop(gemfireServer, processWorkingDirectory)); - } - - if (Boolean.valueOf(System.getProperty("spring.session.data.gemfire.fork.clean", Boolean.TRUE.toString()))) { - FileSystemUtils.deleteRecursively(processWorkingDirectory); - } - - unregisterAllDataSerializers(); - assertThat(waitForClientCacheToClose(DEFAULT_WAIT_DURATION)).isTrue(); + startGemFireServer(SpringSessionDataGemFireServerConfiguration.class); } @Test - public void sessionCreationAndAccessIsSuccessful() { + public void sessionDeltaOperationsAreCorrect() { Session session = save(touch(createSession())); assertThat(session).isNotNull(); + assertThat(session.getId()).isNotEmpty(); assertThat(session.isExpired()).isFalse(); + assertThat(session.getAttributeNames()).isEmpty(); session.setAttribute("attrOne", 1); session.setAttribute("attrTwo", 2); @@ -143,104 +84,56 @@ public class ClientServerHttpSessionAttributesDeltaIntegrationTests extends Abst Session loadedSession = get(session.getId()); assertThat(loadedSession).isNotNull(); - assertThat(loadedSession.isExpired()).isFalse(); assertThat(loadedSession).isNotSameAs(session); assertThat(loadedSession.getId()).isEqualTo(session.getId()); + assertThat(loadedSession.isExpired()).isFalse(); assertThat(loadedSession.getAttribute("attrOne")).isEqualTo(1); assertThat(loadedSession.getAttribute("attrTwo")).isEqualTo(2); loadedSession.removeAttribute("attrTwo"); + assertThat(loadedSession.getAttributeNames()).containsOnly("attrOne"); assertThat(loadedSession.getAttributeNames()).doesNotContain("attrTwo"); - assertThat(loadedSession.getAttributeNames()).hasSize(1); save(touch(loadedSession)); Session reloadedSession = get(loadedSession.getId()); assertThat(reloadedSession).isNotNull(); - assertThat(reloadedSession.isExpired()).isFalse(); assertThat(reloadedSession).isNotSameAs(loadedSession); + assertThat(reloadedSession.isExpired()).isFalse(); assertThat(reloadedSession.getId()).isEqualTo(loadedSession.getId()); - assertThat(reloadedSession.getAttributeNames()).hasSize(1); + assertThat(reloadedSession.getAttributeNames()).containsOnly("attrOne"); assertThat(reloadedSession.getAttributeNames()).doesNotContain("attrTwo"); assertThat(reloadedSession.getAttribute("attrOne")).isEqualTo(1); } - @ClientCacheApplication - @EnableGemFireHttpSession(poolName = "DEFAULT", sessionSerializerBeanName = - GemFireHttpSessionConfiguration.SESSION_DATA_SERIALIZER_BEAN_NAME) - @SuppressWarnings("unused") - static class SpringSessionDataGemFireClientConfiguration { + @ClientCacheApplication( + logLevel = "error", + subscriptionEnabled = true + ) + @EnableGemFireHttpSession( + poolName = "DEFAULT", + sessionSerializerBeanName = GemFireHttpSessionConfiguration.SESSION_DATA_SERIALIZER_BEAN_NAME + ) + static class SpringSessionDataGemFireClientConfiguration { } - @Bean - static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { - return new PropertySourcesPlaceholderConfigurer(); - } - - @Bean ClientCacheConfigurer clientCachePoolPortConfigurer( - @Value("${spring.session.data.gemfire.port:" + DEFAULT_GEMFIRE_SERVER_PORT + "}") int port) { - - return (beanName, clientCacheFactoryBean) -> { - - clientCacheFactoryBean.setServers(Collections.singleton( - new ConnectionEndpoint(SpringSessionDataGemFireServerConfiguration.SERVER_HOSTNAME, port))); - - clientCacheFactoryBean.setSubscriptionEnabled(true); - }; - } - - // used for debugging purposes - @SuppressWarnings("resource") - public static void main(String[] args) { - - ConfigurableApplicationContext applicationContext = - new AnnotationConfigApplicationContext(SpringSessionDataGemFireClientConfiguration.class); - - applicationContext.registerShutdownHook(); - - ClientCache clientCache = applicationContext.getBean(ClientCache.class); - - for (InetSocketAddress server : clientCache.getCurrentServers()) { - System.err.printf("GemFire Server [host: %1$s, port: %2$d]%n", - server.getHostName(), server.getPort()); - } - } - } - - @CacheServerApplication(name = "ClientServerHttpSessionAttributesDeltaIntegrationTests") - @EnableGemFireHttpSession(maxInactiveIntervalInSeconds = MAX_INACTIVE_INTERVAL_IN_SECONDS, - sessionSerializerBeanName = GemFireHttpSessionConfiguration.SESSION_DATA_SERIALIZER_BEAN_NAME) - @SuppressWarnings("unused") + @CacheServerApplication( + name = "ClientServerHttpSessionAttributesDeltaIntegrationTests", + logLevel = "error" + ) + @EnableGemFireHttpSession( + maxInactiveIntervalInSeconds = MAX_INACTIVE_INTERVAL_IN_SECONDS, + sessionSerializerBeanName = GemFireHttpSessionConfiguration.SESSION_DATA_SERIALIZER_BEAN_NAME + ) static class SpringSessionDataGemFireServerConfiguration { - static final String SERVER_HOSTNAME = "localhost"; - - @Bean - static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { - return new PropertySourcesPlaceholderConfigurer(); - } - - @Bean - CacheServerConfigurer cacheServerPortConfigurer( - @Value("${spring.session.data.gemfire.port:" + DEFAULT_GEMFIRE_SERVER_PORT + "}") int port) { - - return (beanName, cacheServerFactoryBean) -> { - cacheServerFactoryBean.setAutoStartup(true); - cacheServerFactoryBean.setBindAddress(SERVER_HOSTNAME); - cacheServerFactoryBean.setPort(port); - }; - } - - @SuppressWarnings("resource") - public static void main(String[] args) throws IOException { + public static void main(String[] args) { AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(SpringSessionDataGemFireServerConfiguration.class); applicationContext.registerShutdownHook(); - - writeProcessControlFile(WORKING_DIRECTORY); } } } diff --git a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerProxyRegionSessionOperationsIntegrationTests.java b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerProxyRegionSessionOperationsIntegrationTests.java index d42079b..028e5c6 100644 --- a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerProxyRegionSessionOperationsIntegrationTests.java +++ b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/ClientServerProxyRegionSessionOperationsIntegrationTests.java @@ -18,36 +18,18 @@ package org.springframework.session.data.gemfire; import static org.assertj.core.api.Assertions.assertThat; -import java.io.File; import java.io.IOException; -import java.net.InetSocketAddress; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Collections; -import java.util.Date; -import java.util.Properties; import java.util.concurrent.TimeUnit; -import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; -import org.apache.geode.cache.Cache; -import org.apache.geode.cache.GemFireCache; -import org.apache.geode.cache.client.ClientCache; - import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; -import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; -import org.springframework.data.gemfire.CacheFactoryBean; -import org.springframework.data.gemfire.client.ClientCacheFactoryBean; -import org.springframework.data.gemfire.client.PoolFactoryBean; -import org.springframework.data.gemfire.server.CacheServerFactoryBean; -import org.springframework.data.gemfire.support.ConnectionEndpoint; +import org.springframework.data.gemfire.config.annotation.CacheServerApplication; +import org.springframework.data.gemfire.config.annotation.ClientCacheApplication; import org.springframework.session.Session; import org.springframework.session.data.gemfire.config.annotation.web.http.EnableGemFireHttpSession; import org.springframework.session.events.AbstractSessionEvent; @@ -56,8 +38,6 @@ import org.springframework.session.events.SessionDeletedEvent; import org.springframework.session.events.SessionExpiredEvent; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.util.FileSystemUtils; -import org.springframework.util.SocketUtils; /** * The ClientServerProxyRegionSessionOperationsIntegrationTests class... @@ -66,61 +46,19 @@ import org.springframework.util.SocketUtils; * @since 1.0.0 */ @RunWith(SpringRunner.class) -@ContextConfiguration(classes = - ClientServerProxyRegionSessionOperationsIntegrationTests.SpringSessionDataGemFireClientConfiguration.class) +@ContextConfiguration( + classes = ClientServerProxyRegionSessionOperationsIntegrationTests.SpringSessionDataGemFireClientConfiguration.class +) public class ClientServerProxyRegionSessionOperationsIntegrationTests extends AbstractGemFireIntegrationTests { private static final int MAX_INACTIVE_INTERVAL_IN_SECONDS = 1; - private static final DateFormat TIMESTAMP = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); - - private static File processWorkingDirectory; - - private static Process gemfireServer; - - @Autowired + @Autowired @SuppressWarnings("all") private SessionEventListener sessionEventListener; @BeforeClass public static void startGemFireServer() throws IOException { - - long t0 = System.currentTimeMillis(); - - int port = SocketUtils.findAvailableTcpPort(); - - System.err.printf("Starting a Pivotal GemFire Server running on host [%1$s] listening on port [%2$d]%n", - SpringSessionDataGemFireServerConfiguration.SERVER_HOSTNAME, port); - - System.setProperty("spring.session.data.gemfire.port", String.valueOf(port)); - - String processWorkingDirectoryPathname = - String.format("gemfire-client-server-tests-%1$s", TIMESTAMP.format(new Date())); - - processWorkingDirectory = createDirectory(processWorkingDirectoryPathname); - - gemfireServer = run(SpringSessionDataGemFireServerConfiguration.class, processWorkingDirectory, - String.format("-Dspring.session.data.gemfire.port=%1$d", port)); - - assertThat(waitForCacheServerToStart(SpringSessionDataGemFireServerConfiguration.SERVER_HOSTNAME, port)) - .isTrue(); - - System.err.printf("GemFire Server [startup time = %1$d ms]%n", System.currentTimeMillis() - t0); - } - - @AfterClass - public static void stopGemFireServer() { - - if (gemfireServer != null) { - gemfireServer.destroy(); - System.err.printf("GemFire Server [exit code = %1$d]%n", - waitForProcessToStop(gemfireServer, processWorkingDirectory)); - } - - if (Boolean.valueOf(System.getProperty("spring.session.data.gemfire.fork.clean", Boolean.TRUE.toString()))) { - FileSystemUtils.deleteRecursively(processWorkingDirectory); - } - - assertThat(waitForClientCacheToClose(DEFAULT_WAIT_DURATION)).isTrue(); + startGemFireServer(SpringSessionDataGemFireServerConfiguration.class); } @Test @@ -190,127 +128,31 @@ public class ClientServerProxyRegionSessionOperationsIntegrationTests extends Ab assertThat(sessionEvent.getSessionId()).isEqualTo(session.getId()); } - @EnableGemFireHttpSession + @ClientCacheApplication( + logLevel = "error", + pingInterval = 5000, + readTimeout = 2000, + retryAttempts = 1, + subscriptionEnabled = true + ) + @EnableGemFireHttpSession(poolName = "DEFAULT") @SuppressWarnings("unused") static class SpringSessionDataGemFireClientConfiguration { - @Bean - static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { - return new PropertySourcesPlaceholderConfigurer(); - } - - Properties gemfireProperties() { - - Properties gemfireProperties = new Properties(); - - gemfireProperties.setProperty("log-level", GEMFIRE_LOG_LEVEL); - - return gemfireProperties; - } - - @Bean - ClientCacheFactoryBean gemfireCache() { - - ClientCacheFactoryBean clientCacheFactory = new ClientCacheFactoryBean(); - - clientCacheFactory.setClose(true); - clientCacheFactory.setProperties(gemfireProperties()); - - return clientCacheFactory; - } - - @Bean - PoolFactoryBean gemfirePool(@Value("${spring.session.data.gemfire.port:" - + DEFAULT_GEMFIRE_SERVER_PORT + "}") int port) { - - PoolFactoryBean poolFactory = new PoolFactoryBean(); - - poolFactory.setKeepAlive(false); - poolFactory.setPingInterval(TimeUnit.SECONDS.toMillis(5)); - poolFactory.setReadTimeout(2000); // 2 seconds - poolFactory.setRetryAttempts(1); - poolFactory.setSubscriptionEnabled(true); - - poolFactory.setServers(Collections.singletonList(new ConnectionEndpoint( - SpringSessionDataGemFireServerConfiguration.SERVER_HOSTNAME, port))); - - return poolFactory; - } - @Bean public SessionEventListener sessionEventListener() { return new SessionEventListener(); } - // used for debugging purposes - @SuppressWarnings("resource") - public static void main(String[] args) { - - ConfigurableApplicationContext applicationContext = - new AnnotationConfigApplicationContext(SpringSessionDataGemFireClientConfiguration.class); - - applicationContext.registerShutdownHook(); - - ClientCache clientCache = applicationContext.getBean(ClientCache.class); - - for (InetSocketAddress server : clientCache.getCurrentServers()) { - System.err.printf("GemFire Server [host: %1$s, port: %2$d]%n", - server.getHostName(), server.getPort()); - } - } } + @CacheServerApplication( + name = "ClientServerProxyRegionSessionOperationsIntegrationTests", + logLevel = "error" + ) @EnableGemFireHttpSession(maxInactiveIntervalInSeconds = MAX_INACTIVE_INTERVAL_IN_SECONDS) - @SuppressWarnings("unused") static class SpringSessionDataGemFireServerConfiguration { - static final String SERVER_HOSTNAME = "localhost"; - - @Bean - static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { - return new PropertySourcesPlaceholderConfigurer(); - } - - Properties gemfireProperties() { - - Properties gemfireProperties = new Properties(); - - gemfireProperties.setProperty("name", name()); - gemfireProperties.setProperty("mcast-port", "0"); - gemfireProperties.setProperty("log-level", GEMFIRE_LOG_LEVEL); - - return gemfireProperties; - } - - String name() { - return ClientServerProxyRegionSessionOperationsIntegrationTests.class.getName(); - } - - @Bean - CacheFactoryBean gemfireCache() { - - CacheFactoryBean gemfireCache = new CacheFactoryBean(); - - gemfireCache.setClose(true); - gemfireCache.setProperties(gemfireProperties()); - - return gemfireCache; - } - - @Bean - CacheServerFactoryBean gemfireCacheServer(GemFireCache gemfireCache, - @Value("${spring.session.data.gemfire.port:" + DEFAULT_GEMFIRE_SERVER_PORT + "}") int port) { - - CacheServerFactoryBean cacheServerFactory = new CacheServerFactoryBean(); - - cacheServerFactory.setCache((Cache) gemfireCache); - cacheServerFactory.setAutoStartup(true); - cacheServerFactory.setBindAddress(SERVER_HOSTNAME); - cacheServerFactory.setPort(port); - - return cacheServerFactory; - } - @SuppressWarnings("resource") public static void main(String[] args) throws IOException { @@ -318,8 +160,6 @@ public class ClientServerProxyRegionSessionOperationsIntegrationTests extends Ab new AnnotationConfigApplicationContext(SpringSessionDataGemFireServerConfiguration.class); context.registerShutdownHook(); - - writeProcessControlFile(WORKING_DIRECTORY); } } } diff --git a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationTests.java b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationTests.java index 9fa03e3..80a12e4 100644 --- a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationTests.java +++ b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationTests.java @@ -18,38 +18,26 @@ package org.springframework.session.data.gemfire; import static org.assertj.core.api.Assertions.assertThat; -import java.io.File; import java.io.IOException; -import java.net.InetSocketAddress; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Properties; import java.util.concurrent.TimeUnit; -import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import org.junit.runner.RunWith; -import org.apache.geode.cache.Cache; import org.apache.geode.cache.DataPolicy; -import org.apache.geode.cache.GemFireCache; import org.apache.geode.cache.Region; import org.apache.geode.cache.RegionAttributes; -import org.apache.geode.cache.client.ClientCache; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; -import org.springframework.data.gemfire.CacheFactoryBean; -import org.springframework.data.gemfire.client.ClientCacheFactoryBean; import org.springframework.data.gemfire.client.PoolFactoryBean; -import org.springframework.data.gemfire.server.CacheServerFactoryBean; +import org.springframework.data.gemfire.config.annotation.CacheServerApplication; +import org.springframework.data.gemfire.config.annotation.ClientCacheApplication; import org.springframework.data.gemfire.support.ConnectionEndpoint; import org.springframework.session.Session; import org.springframework.session.data.gemfire.config.annotation.web.http.EnableGemFireHttpSession; @@ -61,8 +49,6 @@ import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.web.WebAppConfiguration; -import org.springframework.util.FileSystemUtils; -import org.springframework.util.SocketUtils; /** * Integration test to test the functionality of a Pivotal GemFire cache client in a Spring Session application @@ -86,8 +72,9 @@ import org.springframework.util.SocketUtils; * @since 1.3.0 */ @RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = - MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationTests.SpringSessionGemFireClientConfiguration.class) +@ContextConfiguration( + classes = MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationTests.SpringSessionDataGemFireClientConfiguration.class +) @DirtiesContext @WebAppConfiguration public class MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationTests @@ -95,56 +82,14 @@ public class MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationT private static final int MAX_INACTIVE_INTERVAL_IN_SECONDS = 1; - private static final DateFormat TIMESTAMP = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss"); - - private static File processWorkingDirectory; - - private static Process gemfireServer; - private static final String SPRING_SESSION_GEMFIRE_REGION_NAME = "TestMultiPoolClientServerSessions"; - @Autowired + @Autowired @SuppressWarnings("all") private SessionEventListener sessionEventListener; @BeforeClass public static void startGemFireServer() throws IOException { - - final long t0 = System.currentTimeMillis(); - - final int port = SocketUtils.findAvailableTcpPort(); - - System.err.printf("Starting a Pivotal GemFire Server on [%1$s] listening on port [%2$d]%n", - SpringSessionGemFireServerConfiguration.SERVER_HOSTNAME, port); - - System.setProperty("spring.session.data.gemfire.port", String.valueOf(port)); - - String processWorkingDirectoryPathname = String.format("gemfire-multipool-client-server-tests-%1$s", - TIMESTAMP.format(new Date())); - - processWorkingDirectory = createDirectory(processWorkingDirectoryPathname); - - gemfireServer = run(SpringSessionGemFireServerConfiguration.class, processWorkingDirectory, - String.format("-Dspring.session.data.gemfire.port=%1$d", port)); - - assertThat(waitForCacheServerToStart(SpringSessionGemFireServerConfiguration.SERVER_HOSTNAME, port)).isTrue(); - - System.err.printf("GemFire Server [startup time = %1$d ms]%n", System.currentTimeMillis() - t0); - } - - @AfterClass - public static void stopGemFireServerAndDeleteArtifacts() { - - if (gemfireServer != null) { - gemfireServer.destroyForcibly(); - System.err.printf("GemFire Server [exit code = %1$d]%n", - waitForProcessToStop(gemfireServer, processWorkingDirectory)); - } - - if (Boolean.valueOf(System.getProperty("spring.session.data.gemfire.fork.clean", Boolean.TRUE.toString()))) { - FileSystemUtils.deleteRecursively(processWorkingDirectory); - } - - assertThat(waitForClientCacheToClose(DEFAULT_WAIT_DURATION)).isTrue(); + startGemFireServer(SpringSessionDataGemFireServerConfiguration.class); } @Before @@ -196,43 +141,20 @@ public class MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationT assertThat(expiredSession).isNull(); } - @EnableGemFireHttpSession(regionName = SPRING_SESSION_GEMFIRE_REGION_NAME, poolName = "serverPool", - maxInactiveIntervalInSeconds = MAX_INACTIVE_INTERVAL_IN_SECONDS) + @ClientCacheApplication(logLevel = "error") + @EnableGemFireHttpSession( + regionName = SPRING_SESSION_GEMFIRE_REGION_NAME, + poolName = "serverPool", + maxInactiveIntervalInSeconds = MAX_INACTIVE_INTERVAL_IN_SECONDS + ) @SuppressWarnings("unused") - static class SpringSessionGemFireClientConfiguration { + static class SpringSessionDataGemFireClientConfiguration { @Bean PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { return new PropertySourcesPlaceholderConfigurer(); } - @Bean - Properties gemfireProperties() { - - Properties gemfireProperties = new Properties(); - - gemfireProperties.setProperty("name", name()); - gemfireProperties.setProperty("log-level", GEMFIRE_LOG_LEVEL); - - return gemfireProperties; - } - - String name() { - return SpringSessionGemFireClientConfiguration.class.getName(); - } - - @Bean - ClientCacheFactoryBean gemfireCache() { - - ClientCacheFactoryBean gemfireCache = new ClientCacheFactoryBean(); - - gemfireCache.setClose(true); - gemfireCache.setPoolName("gemfirePool"); - gemfireCache.setProperties(gemfireProperties()); - - return gemfireCache; - } - @Bean PoolFactoryBean gemfirePool() { @@ -250,22 +172,20 @@ public class MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationT } @Bean - PoolFactoryBean serverPool(@Value("${spring.session.data.gemfire.port:" - + DEFAULT_GEMFIRE_SERVER_PORT + "}") int port) { + PoolFactoryBean serverPool(@Value("${" + GEMFIRE_CACHE_SERVER_PORT_PROPERTY + "}") int port) { PoolFactoryBean poolFactory = new PoolFactoryBean(); poolFactory.setFreeConnectionTimeout(5000); // 5 seconds poolFactory.setKeepAlive(false); - poolFactory.setMaxConnections(SpringSessionGemFireServerConfiguration.MAX_CONNECTIONS); + poolFactory.setMaxConnections(50); + poolFactory.setMinConnections(1); poolFactory.setPingInterval(TimeUnit.SECONDS.toMillis(5)); poolFactory.setReadTimeout(2000); // 2 seconds poolFactory.setRetryAttempts(1); poolFactory.setSubscriptionEnabled(true); poolFactory.setThreadLocalConnections(false); - - poolFactory.addServers(newConnectionEndpoint( - SpringSessionGemFireServerConfiguration.SERVER_HOSTNAME, port)); + poolFactory.addServers(newConnectionEndpoint("localhost", port)); return poolFactory; } @@ -274,90 +194,26 @@ public class MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationT public AbstractGemFireIntegrationTests.SessionEventListener sessionEventListener() { return new AbstractGemFireIntegrationTests.SessionEventListener(); } - - // used for debugging purposes - @SuppressWarnings("resource") - public static void main(final String[] args) { - - ConfigurableApplicationContext applicationContext = new AnnotationConfigApplicationContext( - SpringSessionGemFireClientConfiguration.class); - - applicationContext.registerShutdownHook(); - - ClientCache clientCache = applicationContext.getBean(ClientCache.class); - - for (InetSocketAddress server : clientCache.getCurrentServers()) { - System.err.printf("GemFire Server [host: %1$s, port: %2$d]%n", - server.getHostName(), server.getPort()); - } - } } - @EnableGemFireHttpSession(regionName = SPRING_SESSION_GEMFIRE_REGION_NAME, - maxInactiveIntervalInSeconds = MAX_INACTIVE_INTERVAL_IN_SECONDS) - @SuppressWarnings("unused") - static class SpringSessionGemFireServerConfiguration { - - static final int MAX_CONNECTIONS = 50; - static final String SERVER_HOSTNAME = "localhost"; - - @Bean - static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { - return new PropertySourcesPlaceholderConfigurer(); - } - - @Bean - Properties gemfireProperties() { - - Properties gemfireProperties = new Properties(); - - gemfireProperties.setProperty("name", name()); - gemfireProperties.setProperty("mcast-port", "0"); - gemfireProperties.setProperty("log-file", "server.log"); - gemfireProperties.setProperty("log-level", GEMFIRE_LOG_LEVEL); - - return gemfireProperties; - } - - String name() { - return SpringSessionGemFireServerConfiguration.class.getName(); - } - - @Bean - CacheFactoryBean gemfireCache() { - - CacheFactoryBean gemfireCache = new CacheFactoryBean(); - - gemfireCache.setClose(true); - gemfireCache.setProperties(gemfireProperties()); - - return gemfireCache; - } - - @Bean - CacheServerFactoryBean gemfireCacheServer(GemFireCache gemfireCache, - @Value("${spring.session.data.gemfire.port:" + DEFAULT_GEMFIRE_SERVER_PORT + "}") int port) { - - CacheServerFactoryBean cacheServerFactory = new CacheServerFactoryBean(); - - cacheServerFactory.setAutoStartup(true); - cacheServerFactory.setBindAddress(SERVER_HOSTNAME); - cacheServerFactory.setCache((Cache) gemfireCache); - cacheServerFactory.setMaxConnections(MAX_CONNECTIONS); - cacheServerFactory.setPort(port); - - return cacheServerFactory; - } + @CacheServerApplication( + name = "MultiPoolClientServerGemFireOperationsSessionRepositoryIntegrationTests", + maxConnections = 50, + logLevel = "error" + ) + @EnableGemFireHttpSession( + regionName = SPRING_SESSION_GEMFIRE_REGION_NAME, + maxInactiveIntervalInSeconds = MAX_INACTIVE_INTERVAL_IN_SECONDS + ) + static class SpringSessionDataGemFireServerConfiguration { @SuppressWarnings("resource") public static void main(final String[] args) throws IOException { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext( - SpringSessionGemFireServerConfiguration.class); + SpringSessionDataGemFireServerConfiguration.class); context.registerShutdownHook(); - - writeProcessControlFile(WORKING_DIRECTORY); } } } diff --git a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/CompositePdxSerializerConfigurationIntegrationTests.java b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/CompositePdxSerializerConfigurationIntegrationTests.java index fbdfea4..2ded33b 100644 --- a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/CompositePdxSerializerConfigurationIntegrationTests.java +++ b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/CompositePdxSerializerConfigurationIntegrationTests.java @@ -19,7 +19,6 @@ package org.springframework.session.data.gemfire.serialization; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; -import org.junit.AfterClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -76,12 +75,6 @@ public class CompositePdxSerializerConfigurationIntegrationTests extends Abstrac @Qualifier(GemFireHttpSessionConfiguration.SESSION_PDX_SERIALIZER_BEAN_NAME) private SessionSerializer pdxSerializableSessionSerializer; - @AfterClass - public static void tearDown() { - unregisterAllDataSerializers(); - assertThat(waitForClientCacheToClose(DEFAULT_WAIT_DURATION)).isTrue(); - } - @Test public void gemfireCachePdxSerializerIsACompositePdxSerializer() { @@ -97,8 +90,14 @@ public class CompositePdxSerializerConfigurationIntegrationTests extends Abstrac assertThat(this.configuredSessionSerializer).isSameAs(this.pdxSerializableSessionSerializer); } - @ClientCacheApplication(name = "CompositePdxSerializerConfigurationIntegrationTests", logLevel = "warning") - @EnableGemFireHttpSession(clientRegionShortcut = ClientRegionShortcut.LOCAL, poolName = "DEFAULT") + @ClientCacheApplication( + name = "CompositePdxSerializerConfigurationIntegrationTests", + logLevel = "error" + ) + @EnableGemFireHttpSession( + clientRegionShortcut = ClientRegionShortcut.LOCAL, + poolName = "DEFAULT" + ) @SuppressWarnings("all") static class TestConfiguration { diff --git a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/DataSerializationConfigurationIntegrationTests.java b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/DataSerializationConfigurationIntegrationTests.java index f119de5..4c8ecc1 100644 --- a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/DataSerializationConfigurationIntegrationTests.java +++ b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/DataSerializationConfigurationIntegrationTests.java @@ -18,7 +18,6 @@ package org.springframework.session.data.gemfire.serialization; import static org.assertj.core.api.Assertions.assertThat; -import org.junit.AfterClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -65,12 +64,6 @@ public class DataSerializationConfigurationIntegrationTests extends AbstractGemF @Autowired private GemFireCache gemfireCache; - @AfterClass - public static void tearDown() { - unregisterAllDataSerializers(); - assertThat(waitForClientCacheToClose(DEFAULT_WAIT_DURATION)).isTrue(); - } - @Test public void gemfireCachePdxSerializerIsNull() { assertThat(this.gemfireCache.getPdxSerializer()).isNull(); @@ -82,9 +75,15 @@ public class DataSerializationConfigurationIntegrationTests extends AbstractGemF } - @ClientCacheApplication(name = "DataSerializationConfigurationIntegrationTests", logLevel = "warning") - @EnableGemFireHttpSession(clientRegionShortcut = ClientRegionShortcut.LOCAL, poolName = "DEFAULT", - sessionSerializerBeanName = GemFireHttpSessionConfiguration.SESSION_DATA_SERIALIZER_BEAN_NAME) - static class TestConfiguration { - } + @ClientCacheApplication( + name = "DataSerializationConfigurationIntegrationTests", + logLevel = "error" + ) + @EnableGemFireHttpSession( + clientRegionShortcut = ClientRegionShortcut.LOCAL, + poolName = "DEFAULT", + sessionSerializerBeanName = GemFireHttpSessionConfiguration.SESSION_DATA_SERIALIZER_BEAN_NAME + ) + static class TestConfiguration { } + } diff --git a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/PdxSerializationConfigurationIntegrationTests.java b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/PdxSerializationConfigurationIntegrationTests.java index 27117bc..d07023a 100644 --- a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/PdxSerializationConfigurationIntegrationTests.java +++ b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/PdxSerializationConfigurationIntegrationTests.java @@ -18,7 +18,6 @@ package org.springframework.session.data.gemfire.serialization; import static org.assertj.core.api.Assertions.assertThat; -import org.junit.AfterClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -65,12 +64,6 @@ public class PdxSerializationConfigurationIntegrationTests extends AbstractGemFi @Autowired private GemFireCache gemfireCache; - @AfterClass - public static void tearDown() { - unregisterAllDataSerializers(); - assertThat(waitForClientCacheToClose(DEFAULT_WAIT_DURATION)).isTrue(); - } - @Test public void gemfireCachePdxSerializerIsSetToPdxSerializableSessionSerializer() { assertThat(this.gemfireCache.getPdxSerializer()).isSameAs(this.pdxSerializableSessionSerialzer); @@ -82,10 +75,16 @@ public class PdxSerializationConfigurationIntegrationTests extends AbstractGemFi } - @ClientCacheApplication(name = "PdxSerializationConfigurationIntegrationTests", logLevel = "warning") - @EnableGemFireHttpSession(clientRegionShortcut = ClientRegionShortcut.LOCAL, poolName = "DEFAULT", - sessionSerializerBeanName = GemFireHttpSessionConfiguration.SESSION_PDX_SERIALIZER_BEAN_NAME) + @ClientCacheApplication( + name = "PdxSerializationConfigurationIntegrationTests", + logLevel = "error" + ) + @EnableGemFireHttpSession( + clientRegionShortcut = ClientRegionShortcut.LOCAL, + poolName = "DEFAULT", + sessionSerializerBeanName = GemFireHttpSessionConfiguration.SESSION_PDX_SERIALIZER_BEAN_NAME + ) @SuppressWarnings("all") - static class TestConfiguration { - } + static class TestConfiguration { } + } diff --git a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/SessionSerializerConfiguredAsDataSerializerIntegrationTests.java b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/SessionSerializerConfiguredAsDataSerializerIntegrationTests.java index cbd438e..8080b27 100644 --- a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/SessionSerializerConfiguredAsDataSerializerIntegrationTests.java +++ b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/SessionSerializerConfiguredAsDataSerializerIntegrationTests.java @@ -19,7 +19,6 @@ package org.springframework.session.data.gemfire.serialization; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; -import org.junit.AfterClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -75,12 +74,6 @@ public class SessionSerializerConfiguredAsDataSerializerIntegrationTests extends @Qualifier("dataSerializerSessionSerializer") private SessionSerializer dataSerializerSessionSerializer; - @AfterClass - public static void tearDown() { - unregisterAllDataSerializers(); - assertThat(waitForClientCacheToClose(DEFAULT_WAIT_DURATION)).isTrue(); - } - @Test public void gemfireCachePdxSerializerIsNull() { assertThat(this.gemfireCache.getPdxSerializer()).isNull(); @@ -96,9 +89,15 @@ public class SessionSerializerConfiguredAsDataSerializerIntegrationTests extends assertThat(this.configuredSessionSerializer).isSameAs(this.customSessionSerializer); } - @ClientCacheApplication(name = "SessionSerializerConfiguredAsPdxSerializerIntegrationTests", logLevel = "warning") - @EnableGemFireHttpSession(clientRegionShortcut = ClientRegionShortcut.LOCAL, poolName = "DEFAULT", - sessionSerializerBeanName = "customSessionSerializer") + @ClientCacheApplication( + name = "SessionSerializerConfiguredAsDataSerializerIntegrationTests", + logLevel = "error" + ) + @EnableGemFireHttpSession( + clientRegionShortcut = ClientRegionShortcut.LOCAL, + poolName = "DEFAULT", + sessionSerializerBeanName = "customSessionSerializer" + ) static class TestConfiguration { @Bean diff --git a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/SessionSerializerConfiguredAsPdxSerializerIntegrationTests.java b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/SessionSerializerConfiguredAsPdxSerializerIntegrationTests.java index 295a254..19ad660 100644 --- a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/SessionSerializerConfiguredAsPdxSerializerIntegrationTests.java +++ b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/SessionSerializerConfiguredAsPdxSerializerIntegrationTests.java @@ -19,7 +19,6 @@ package org.springframework.session.data.gemfire.serialization; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; -import org.junit.AfterClass; import org.junit.Test; import org.junit.runner.RunWith; @@ -45,6 +44,7 @@ import org.springframework.test.context.junit4.SpringRunner; * @author John Blum * @see org.apache.geode.cache.GemFireCache * @see org.apache.geode.pdx.PdxSerializer + * @see org.springframework.context.annotation.Bean * @see org.springframework.data.gemfire.config.annotation.ClientCacheApplication * @see org.springframework.session.data.gemfire.AbstractGemFireIntegrationTests * @see org.springframework.session.data.gemfire.config.annotation.web.http.EnableGemFireHttpSession @@ -70,15 +70,11 @@ public class SessionSerializerConfiguredAsPdxSerializerIntegrationTests extends @Qualifier("customSessionSerializer") private SessionSerializer customSessionSerializer; - @AfterClass - public static void tearDown() { - unregisterAllDataSerializers(); - assertThat(waitForClientCacheToClose(DEFAULT_WAIT_DURATION)).isTrue(); - } - @Test public void gemfireCachePdxSerializerIsPdxSerializerSessionSerializerAdapter() { + assertThat(this.gemfireCache.getPdxSerializer()).isInstanceOf(PdxSerializerSessionSerializerAdapter.class); + assertThat(((PdxSerializerSessionSerializerAdapter) this.gemfireCache.getPdxSerializer()).getSessionSerializer()) .isSameAs(this.customSessionSerializer); } @@ -88,9 +84,15 @@ public class SessionSerializerConfiguredAsPdxSerializerIntegrationTests extends assertThat(this.configuredSessionSerializer).isSameAs(this.customSessionSerializer); } - @ClientCacheApplication(name = "SessionSerializerConfiguredAsPdxSerializerIntegrationTests", logLevel = "warning") - @EnableGemFireHttpSession(clientRegionShortcut = ClientRegionShortcut.LOCAL, poolName = "DEFAULT", - sessionSerializerBeanName = "customSessionSerializer") + @ClientCacheApplication( + name = "SessionSerializerConfiguredAsPdxSerializerIntegrationTests", + logLevel = "error" + ) + @EnableGemFireHttpSession( + clientRegionShortcut = ClientRegionShortcut.LOCAL, + poolName = "DEFAULT", + sessionSerializerBeanName = "customSessionSerializer" + ) static class TestConfiguration { @Bean diff --git a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/pdx/SessionSerializationWithPdxRequiresNoServerConfigurationIntegrationTests.java b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/pdx/SessionSerializationWithPdxRequiresNoServerConfigurationIntegrationTests.java index 7e99b2d..f751ebe 100644 --- a/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/pdx/SessionSerializationWithPdxRequiresNoServerConfigurationIntegrationTests.java +++ b/spring-session-data-geode/src/integration-test/java/org/springframework/session/data/gemfire/serialization/pdx/SessionSerializationWithPdxRequiresNoServerConfigurationIntegrationTests.java @@ -55,7 +55,7 @@ import org.springframework.util.SocketUtils; /** * Integration tests asserting that a GemFire/Geode Server does not require any Spring Session Data GemFire/Geode - * dependencies or any transitive dependencies when PDX serialization is in effect. + * dependencies or any transitive dependencies when PDX serialization is used. * * /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/bin/java -server -ea * -Dgemfire.log-level=FINEST -Dgemfire.Query.VERBOSE=false -Dspring.session.data.gemfire.cache.server.port=34095 @@ -84,9 +84,16 @@ import org.springframework.util.SocketUtils; * @author John Blum * @see org.junit.Test * @see org.apache.geode.cache.server.CacheServer + * @see org.springframework.context.annotation.Bean + * @see org.springframework.context.support.PropertySourcesPlaceholderConfigurer * @see org.springframework.data.gemfire.config.annotation.ClientCacheApplication * @see org.springframework.data.gemfire.config.annotation.ClientCacheConfigurer * @see org.springframework.session.data.gemfire.AbstractGemFireIntegrationTests + * @see org.springframework.session.data.gemfire.GemFireOperationsSessionRepository + * @see org.springframework.session.data.gemfire.config.annotation.web.http.EnableGemFireHttpSession + * @see org.springframework.session.data.gemfire.server.GemFireServer + * @see org.springframework.test.context.ContextConfiguration + * @see org.springframework.test.context.junit4.SpringRunner * @since 2.0.0 */ @RunWith(SpringRunner.class) @@ -113,7 +120,7 @@ public class SessionSerializationWithPdxRequiresNoServerConfigurationIntegration int port = SocketUtils.findAvailableTcpPort(); - System.err.printf("Starting a Pivotal GemFire Server running on host [localhost] listening on port [%d]%n", port); + System.err.printf("Starting a Pivotal GemFire Server on host [localhost], listening on port [%d]%n", port); System.setProperty("spring.session.data.gemfire.cache.server.port", String.valueOf(port)); @@ -130,7 +137,7 @@ public class SessionSerializationWithPdxRequiresNoServerConfigurationIntegration processWorkingDirectory, String.format("-Dspring.session.data.gemfire.cache.server.port=%d", port), String.format("-Dgemfire.log-level=%s", GEMFIRE_LOG_LEVEL)); - assertThat(waitForCacheServerToStart("localhost", port)).isTrue(); + assertThat(waitForServerToStart("localhost", port)).isTrue(); System.err.printf("GemFire Server [startup time = %d ms]%n", System.currentTimeMillis() - t0); } @@ -149,8 +156,6 @@ public class SessionSerializationWithPdxRequiresNoServerConfigurationIntegration if (Boolean.valueOf(System.getProperty("spring.session.data.gemfire.fork.clean", Boolean.TRUE.toString()))) { FileSystemUtils.deleteRecursively(processWorkingDirectory); } - - assertThat(waitForClientCacheToClose(DEFAULT_WAIT_DURATION)).isTrue(); } @Test @@ -184,7 +189,7 @@ public class SessionSerializationWithPdxRequiresNoServerConfigurationIntegration @ClientCacheApplication(logLevel = GEMFIRE_LOG_LEVEL, subscriptionEnabled = true) @EnableGemFireHttpSession(poolName = "DEFAULT") - static class GemFireCacheClientConfiguration { + static class GemFireClientConfiguration { @Bean static PropertySourcesPlaceholderConfigurer propertyPlaceholderConfigurer() { @@ -192,8 +197,8 @@ public class SessionSerializationWithPdxRequiresNoServerConfigurationIntegration } @Bean - ClientCacheConfigurer clientCachePoolPortConfigurer( - @Value("${spring.session.data.gemfire.cache.server.port:" + CacheServer.DEFAULT_PORT + "}") int cacheServerPort) { + ClientCacheConfigurer clientCachePoolPortConfigurer(@Value("${spring.session.data.gemfire.cache.server.port:" + + CacheServer.DEFAULT_PORT + "}") int cacheServerPort) { return (beanName, clientCacheFactoryBean) -> clientCacheFactoryBean.setServers(Collections.singletonList( new ConnectionEndpoint("localhost", cacheServerPort)));