diff --git a/logging-service/src/main/java/com/vishnu/service/aop/LoggableAspect.java b/logging-service/src/main/java/com/vishnu/service/aop/LoggableMethodExecutionTimeAspect.java similarity index 90% rename from logging-service/src/main/java/com/vishnu/service/aop/LoggableAspect.java rename to logging-service/src/main/java/com/vishnu/service/aop/LoggableMethodExecutionTimeAspect.java index 5fffb8a..d250f6c 100644 --- a/logging-service/src/main/java/com/vishnu/service/aop/LoggableAspect.java +++ b/logging-service/src/main/java/com/vishnu/service/aop/LoggableMethodExecutionTimeAspect.java @@ -14,10 +14,10 @@ * created on : 02/Sep/2020 */ @Aspect -public class LoggableAspect { +public class LoggableMethodExecutionTimeAspect { private final Logger log; - public LoggableAspect(String loggerName){ + public LoggableMethodExecutionTimeAspect(String loggerName){ super(); log = LoggerFactory.getLogger(loggerName); } diff --git a/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/LoggingProperties.java b/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/LoggingProperties.java index 439323c..aea1666 100644 --- a/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/LoggingProperties.java +++ b/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/LoggingProperties.java @@ -8,7 +8,7 @@ * @author : vishnu.g * created on : 02/Sep/2020 */ -@ConfigurationProperties("logging.method.exec") +@ConfigurationProperties("logging.track") public class LoggingProperties { private String loggerName = "AuditLogger"; diff --git a/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/MethodCallCounterAutoConfigure.java b/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/MethodCallCounterAutoConfigure.java index 4ae2e11..ad89ef6 100644 --- a/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/MethodCallCounterAutoConfigure.java +++ b/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/MethodCallCounterAutoConfigure.java @@ -12,7 +12,7 @@ * created on : 03/Sep/2020 */ @Configuration -@ConditionalOnProperty(name = "logging.api.enabled", havingValue = "true", matchIfMissing = true) +@ConditionalOnProperty(name = "logging.track.count.enable", havingValue = "true", matchIfMissing = true) public class MethodCallCounterAutoConfigure { private final LoggingProperties properties; diff --git a/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/LoggingAutoconfigure.java b/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/MethodExecutionTimeAutoConfiguration.java similarity index 59% rename from logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/LoggingAutoconfigure.java rename to logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/MethodExecutionTimeAutoConfiguration.java index 56a5c5d..f61cba6 100644 --- a/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/LoggingAutoconfigure.java +++ b/logging-spring-boot-autoconfigure/src/main/java/com/vishnu/boot/logging/autoconfigure/MethodExecutionTimeAutoConfiguration.java @@ -1,6 +1,6 @@ package com.vishnu.boot.logging.autoconfigure; -import com.vishnu.service.aop.LoggableAspect; +import com.vishnu.service.aop.LoggableMethodExecutionTimeAspect; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -13,18 +13,18 @@ * created on : 02/Sep/2020 */ @Configuration -@ConditionalOnClass(LoggableAspect.class) +@ConditionalOnClass(LoggableMethodExecutionTimeAspect.class) @EnableConfigurationProperties(LoggingProperties.class) -public class LoggingAutoconfigure { +public class MethodExecutionTimeAutoConfiguration { private final LoggingProperties properties; - public LoggingAutoconfigure(LoggingProperties properties) { + public MethodExecutionTimeAutoConfiguration(LoggingProperties properties) { this.properties = properties; } @Bean - public LoggableAspect loggableAspect(){ - return new LoggableAspect(properties.getLoggerName()); + public LoggableMethodExecutionTimeAspect loggableMethodExecutionTimeAspect(){ + return new LoggableMethodExecutionTimeAspect(properties.getLoggerName()); } } diff --git a/logging-spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories b/logging-spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories index 018dffa..2fdc71a 100644 --- a/logging-spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories +++ b/logging-spring-boot-autoconfigure/src/main/resources/META-INF/spring.factories @@ -1 +1,4 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.vishnu.boot.logging.autoconfigure.LoggingAutoconfigure \ No newline at end of file +# Auto configure classes. +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +com.vishnu.boot.logging.autoconfigure.MethodExecutionTimeAutoConfiguration,\ +com.vishnu.boot.logging.autoconfigure.MethodCallCounterAutoConfigure \ No newline at end of file diff --git a/spring-rest-demo/src/main/resources/application.properties b/spring-rest-demo/src/main/resources/application.properties index 2f16a56..a322d1f 100644 --- a/spring-rest-demo/src/main/resources/application.properties +++ b/spring-rest-demo/src/main/resources/application.properties @@ -1 +1,2 @@ -logging.api.enabled=true \ No newline at end of file +logging.track.loggerName=MyLogger +logging.track.count.enable=true \ No newline at end of file diff --git a/spring-rest-demo/src/test/java/com/vishnu/ApiControllerTest.java b/spring-rest-demo/src/test/java/com/vishnu/ApiControllerTest.java new file mode 100644 index 0000000..b44ea63 --- /dev/null +++ b/spring-rest-demo/src/test/java/com/vishnu/ApiControllerTest.java @@ -0,0 +1,36 @@ +/** + * spring-rest-demo : com.vishnu + */ +package com.vishnu; + +import static org.hamcrest.Matchers.containsString; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.test.web.servlet.MockMvc; + + +/** + * spring-rest-demo : com.vishnu + * + * @author vishnu.g + * + * 01-Oct-2020 + */ +@WebMvcTest +public class ApiControllerTest { + + @Autowired + private MockMvc mockMvc; + + @Test + public void shouldReturnDefaultMessage() throws Exception { + this.mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk()) + .andExpect(content().string(containsString("Hello world !!!"))); + } +} diff --git a/spring-rest-demo/src/test/java/com/vishnu/HttpRequestTest.java b/spring-rest-demo/src/test/java/com/vishnu/HttpRequestTest.java new file mode 100644 index 0000000..9a95ced --- /dev/null +++ b/spring-rest-demo/src/test/java/com/vishnu/HttpRequestTest.java @@ -0,0 +1,38 @@ +/** + * spring-rest-demo : com.vishnu + */ +package com.vishnu; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.web.server.LocalServerPort; + +/** + * Test class to have a sanity check, by asserting the behavior of the application. + * + * @author : vishnu.g + * created on : 02/Sep/2020 + */ +@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) +public class HttpRequestTest { + + @LocalServerPort + private int port; + + + private final TestRestTemplate restTemplate; + + public HttpRequestTest(TestRestTemplate restTemplate) { + this.restTemplate = restTemplate; + } + + @Test + public void greetingShouldReturnDefaultMessage() throws Exception { + assertThat(this.restTemplate.getForObject("http://localhost:" + port + "/api", + String.class)).contains("Hello world !!!"); + } +} diff --git a/spring-rest-demo/src/test/java/com/vishnu/SmokeTest.java b/spring-rest-demo/src/test/java/com/vishnu/SmokeTest.java new file mode 100644 index 0000000..0efd4df --- /dev/null +++ b/spring-rest-demo/src/test/java/com/vishnu/SmokeTest.java @@ -0,0 +1,30 @@ +/** + * spring-rest-demo : com.vishnu + */ +package com.vishnu; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import com.vishnu.controllers.ApiController; + +/** + * Simple smoke test class to check the context is creating the controller. + * + * @author : vishnu.g + * created on : 02/Sep/2020 + */ +@SpringBootTest +public class SmokeTest { + + @Autowired + private ApiController controller; + + @Test + public void contextLoads() throws Exception { + assertThat(controller).isNotNull(); + } +}