From f968ac8d8c4c9627776983b6ea80c36ddc9d6b0a Mon Sep 17 00:00:00 2001 From: John Blum Date: Mon, 12 Aug 2019 18:29:14 -0700 Subject: [PATCH] Add Integration Tests for the Near Caching Sample Code. --- .../spring-geode-samples-caching-near.gradle | 20 +++-- ...lientCacheApplicationIntegrationTests.java | 84 +++++++++++++++++++ 2 files changed, 95 insertions(+), 9 deletions(-) create mode 100644 spring-geode-samples/caching/near/src/test/java/example/app/near/caching/client/BootGeodeNearCachingClientCacheApplicationIntegrationTests.java diff --git a/spring-geode-samples/caching/near/spring-geode-samples-caching-near.gradle b/spring-geode-samples/caching/near/spring-geode-samples-caching-near.gradle index 2c347ba5..eb97ee95 100644 --- a/spring-geode-samples/caching/near/spring-geode-samples-caching-near.gradle +++ b/spring-geode-samples/caching/near/spring-geode-samples-caching-near.gradle @@ -8,27 +8,29 @@ description = "Spring Geode Sample demonstrating Spring's Cache Abstraction usin dependencies { + compile project(":apache-geode-extensions") compile project(":spring-geode-starter") - compile project(":apache-geode-extensions") + compile "org.assertj:assertj-core" + compile "org.projectlombok:lombok" compile ("org.springframework.boot:spring-boot-starter-web") { exclude group: "org.apache.logging.log4j", module: "log4j-to-slf4j" } - compile "org.assertj:assertj-core" - compile "org.projectlombok:lombok" - runtime "javax.cache:cache-api" - runtime "org.springframework.boot:spring-boot-starter-jetty" runtime "org.springframework.shell:spring-shell" - testCompile "org.springframework.boot:spring-boot-starter-test" - - testCompile("org.springframework.data:spring-data-geode-test") { - exclude group: "org.apache.logging.log4j", module: "log4j-core" + runtime("org.springframework.boot:spring-boot-starter-jetty") { + exclude group: "org.apache.logging.log4j", module: "log4j-to-slf4j" } + testCompile("org.springframework.boot:spring-boot-starter-test") { + exclude group: "org.apache.logging.log4j", module: "log4j-to-slf4j" + } + + testCompile "org.springframework.data:spring-data-geode-test" + } bootJar { diff --git a/spring-geode-samples/caching/near/src/test/java/example/app/near/caching/client/BootGeodeNearCachingClientCacheApplicationIntegrationTests.java b/spring-geode-samples/caching/near/src/test/java/example/app/near/caching/client/BootGeodeNearCachingClientCacheApplicationIntegrationTests.java new file mode 100644 index 00000000..5b5cce03 --- /dev/null +++ b/spring-geode-samples/caching/near/src/test/java/example/app/near/caching/client/BootGeodeNearCachingClientCacheApplicationIntegrationTests.java @@ -0,0 +1,84 @@ +/* + * Copyright 2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +package example.app.near.caching.client; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.IOException; + +import org.apache.geode.cache.client.ClientCache; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.gemfire.tests.integration.ForkingClientServerIntegrationTestsSupport; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import example.app.near.caching.client.model.Person; +import example.app.near.caching.client.service.YellowPagesService; +import example.app.near.caching.server.BootGeodeNearCachingCacheServerApplication; + +/** + * Integration Tests for the Spring Boot, {@link ClientCache} application example for {@literal Near Caching}. + * + * @author John Blum + * @see org.apache.geode.cache.client.ClientCache + * @see org.springframework.boot.test.context.SpringBootTest + * @see org.springframework.data.gemfire.tests.integration.ForkingClientServerIntegrationTestsSupport + * @see org.springframework.test.context.ActiveProfiles + * @see org.springframework.test.context.junit4.SpringRunner + * @see example.app.near.caching.client.model.Person + * @see example.app.near.caching.client.service.YellowPagesService + * @see example.app.near.caching.server.BootGeodeNearCachingCacheServerApplication + * @since 1.1.0 + */ +@ActiveProfiles("client") +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK) +public class BootGeodeNearCachingClientCacheApplicationIntegrationTests + extends ForkingClientServerIntegrationTestsSupport { + + @BeforeClass + public static void startGemFireServer() throws IOException { + + startGemFireServer(BootGeodeNearCachingCacheServerApplication.class, + "-Dspring.profiles.active=server"); + } + + @Autowired + private YellowPagesService yellowPagesService; + + @Test + public void cachingIsInEffect() { + + assertThat(this.yellowPagesService.isCacheMiss()).isFalse(); + + Person jonDoe = this.yellowPagesService.find("JonDoe"); + + assertThat(jonDoe).isNotNull(); + assertThat(jonDoe.getName()).isEqualTo("JonDoe"); + assertThat(this.yellowPagesService.isCacheMiss()).isTrue(); + + Person jonDoeCopy = this.yellowPagesService.find(jonDoe.getName()); + + assertThat(jonDoeCopy).isEqualTo(jonDoe); + assertThat(this.yellowPagesService.isCacheMiss()).isFalse(); + } +}