diff --git a/spring-geode-tests/smoke-tests/spring-initializer/etc/spring-4-apache-geode-initializer.zip b/spring-geode-tests/smoke-tests/spring-initializer/etc/spring-4-apache-geode-initializer.zip new file mode 100644 index 00000000..93479159 Binary files /dev/null and b/spring-geode-tests/smoke-tests/spring-initializer/etc/spring-4-apache-geode-initializer.zip differ diff --git a/spring-geode-tests/smoke-tests/spring-initializer/spring-geode-smoke-tests-initializer.gradle b/spring-geode-tests/smoke-tests/spring-initializer/spring-geode-smoke-tests-initializer.gradle new file mode 100644 index 00000000..f9fcf172 --- /dev/null +++ b/spring-geode-tests/smoke-tests/spring-initializer/spring-geode-smoke-tests-initializer.gradle @@ -0,0 +1,24 @@ +apply plugin: 'io.spring.convention.spring-test' + +description = "Smoke Tests to assert that a Spring for Apache Geode project generated from Spring Initializer is a standard, non-Webapp Spring Boot application." + +repositories { + mavenCentral() + maven { url 'https://repo.spring.io/milestone' } + maven { url 'https://repo.spring.io/snapshot' } +} + +dependencies { + + implementation "org.assertj:assertj-core" + + implementation "org.springframework.geode:spring-geode-starter:$version" + + testImplementation('org.springframework.boot:spring-boot-starter-test') { + exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' + } +} + +test { + useJUnitPlatform() +} diff --git a/spring-geode-tests/smoke-tests/spring-initializer/src/main/java/example/app/InitializerApplication.java b/spring-geode-tests/smoke-tests/spring-initializer/src/main/java/example/app/InitializerApplication.java new file mode 100644 index 00000000..15384651 --- /dev/null +++ b/spring-geode-tests/smoke-tests/spring-initializer/src/main/java/example/app/InitializerApplication.java @@ -0,0 +1,90 @@ +/* + * 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; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.apache.geode.cache.GemFireCache; +import org.apache.geode.cache.Region; +import org.apache.geode.cache.client.ClientRegionShortcut; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.gemfire.client.ClientRegionFactoryBean; +import org.springframework.data.gemfire.config.annotation.EnableLogging; +import org.springframework.web.context.WebApplicationContext; + +/** + * {@link SpringBootApplication Spring Boot application} generated from {@literal Spring Initializer} + * at start.spring.io. + * + * Putting data into and getting data out of an Apache Geode cache {@link Region} is the most basic function. + * + * @author John Blum + * @see org.apache.geode.cache.GemFireCache + * @see org.apache.geode.cache.Region + * @see org.springframework.boot.SpringApplication + * @see org.springframework.boot.WebApplicationType + * @see org.springframework.boot.autoconfigure.SpringBootApplication + * @see org.springframework.boot.builder.SpringApplicationBuilder + * @see org.springframework.context.ConfigurableApplicationContext + * @see org.springframework.context.annotation.Bean + * @see org.springframework.context.annotation.Configuration + * @see org.springframework.data.gemfire.client.ClientRegionFactoryBean + * @see org.springframework.data.gemfire.config.annotation.EnableLogging + * @see org.springframework.web.context.WebApplicationContext + * @since 1.2.0 + */ +@SpringBootApplication +@SuppressWarnings("unused") +public class InitializerApplication { + + public static void main(String[] args) { + + SpringApplication springApplication = + new SpringApplicationBuilder(InitializerApplication.class) .build(); + + assertThat(springApplication).isNotNull(); + assertThat(springApplication.getWebApplicationType()).isEqualTo(WebApplicationType.NONE); + + ConfigurableApplicationContext applicationContext = springApplication.run(args); + + assertThat(applicationContext).isNotNull(); + assertThat(applicationContext).isNotInstanceOf(WebApplicationContext.class); + assertThat(springApplication.getWebApplicationType()).isNotEqualTo(WebApplicationType.SERVLET); + } + + @Configuration + @EnableLogging(logLevel = "error") + static class GeodeConfiguration { + + @Bean("Example") + public ClientRegionFactoryBean exampleRegion(GemFireCache gemfireCache) { + + ClientRegionFactoryBean exampleRegion = new ClientRegionFactoryBean<>(); + + exampleRegion.setCache(gemfireCache); + exampleRegion.setShortcut(ClientRegionShortcut.LOCAL); + + return exampleRegion; + } + } +} diff --git a/spring-geode-tests/smoke-tests/spring-initializer/src/test/java/example/app/InitializerApplicationSmokeTests.java b/spring-geode-tests/smoke-tests/spring-initializer/src/test/java/example/app/InitializerApplicationSmokeTests.java new file mode 100644 index 00000000..ba4087bd --- /dev/null +++ b/spring-geode-tests/smoke-tests/spring-initializer/src/test/java/example/app/InitializerApplicationSmokeTests.java @@ -0,0 +1,58 @@ +/* + * 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; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.gemfire.GemfireTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +/** + * Smoke Tests for {@link InitializerApplication}. + * + * @author John Blum + * @see org.junit.Test + * @see org.springframework.boot.test.context.SpringBootTest + * @see org.springframework.data.gemfire.GemfireTemplate + * @see org.springframework.test.context.junit4.SpringRunner + * @see example.app.InitializerApplication + * @since 1.2.0 + */ +@RunWith(SpringRunner.class) +@SpringBootTest +@SuppressWarnings("unused") +public class InitializerApplicationSmokeTests { + + @Autowired + @Qualifier("exampleTemplate") + private GemfireTemplate exampleTemplate; + + @Test + public void loadsContextAndRegionDataAccessOperationsWork() { + + assertThat(this.exampleTemplate).isNotNull(); + assertThat(this.exampleTemplate.getRegion()).isNotNull(); + assertThat(this.exampleTemplate.getRegion().getName()).isEqualTo("Example"); + assertThat(this.exampleTemplate.put(1, "TEST")).isNull(); + assertThat(this.exampleTemplate.get(1)).isEqualTo("TEST"); + } +} diff --git a/spring-geode-tests/smoke-tests/spring-initializer/src/test/resources/logback.xml b/spring-geode-tests/smoke-tests/spring-initializer/src/test/resources/logback.xml new file mode 100644 index 00000000..de99c52b --- /dev/null +++ b/spring-geode-tests/smoke-tests/spring-initializer/src/test/resources/logback.xml @@ -0,0 +1,22 @@ + + + + + + + + %d %5p %40.40c:%4L - %m%n + + + + + + + + + + + + + +