From 2b60f5fcbfd38111da9c397b8943a0905842acf1 Mon Sep 17 00:00:00 2001 From: Fabian Gutierrez Date: Mon, 30 May 2016 10:47:45 +0200 Subject: [PATCH] +doc #20466 akka http javadsl - add debugging directive test (#20651) * akka http javadsl - add debugging directive test * fixes line breaks --- .../DebuggingDirectivesExamplesTest.java | 131 ++++++++++++++++++ .../debugging-directives/logRequest.rst | 2 +- .../debugging-directives/logRequestResult.rst | 2 +- .../debugging-directives/logResult.rst | 2 +- 4 files changed, 134 insertions(+), 3 deletions(-) create mode 100644 akka-docs/rst/java/code/docs/http/javadsl/server/directives/DebuggingDirectivesExamplesTest.java diff --git a/akka-docs/rst/java/code/docs/http/javadsl/server/directives/DebuggingDirectivesExamplesTest.java b/akka-docs/rst/java/code/docs/http/javadsl/server/directives/DebuggingDirectivesExamplesTest.java new file mode 100644 index 0000000000..dee1e78d3d --- /dev/null +++ b/akka-docs/rst/java/code/docs/http/javadsl/server/directives/DebuggingDirectivesExamplesTest.java @@ -0,0 +1,131 @@ +/* + * Copyright (C) 2015-2016 Lightbend Inc. + */ + +package docs.http.javadsl.server.directives; + +import java.util.Arrays; +import java.util.regex.Pattern; + +import org.junit.Test; + +import akka.http.javadsl.model.HttpRequest; +import akka.http.javadsl.model.HttpResponse; +import akka.http.javadsl.model.StatusCodes; +import akka.http.javadsl.model.headers.Host; +import akka.http.javadsl.server.Route; +import akka.http.javadsl.server.RequestContext; +import akka.http.javadsl.testkit.JUnitRouteTest; +import java.util.function.Function; +import java.util.function.BiFunction; +import java.util.function.Consumer; +import akka.http.javadsl.model.Uri; +import akka.http.javadsl.model.headers.Location; +import akka.http.javadsl.server.directives.DebuggingDirectives; +import akka.http.javadsl.server.directives.RouteDirectives; +import akka.event.Logging; +import akka.event.Logging.LogLevel; +import akka.http.javadsl.server.directives.LogEntry; +import java.util.List; +import akka.http.scaladsl.server.Rejection; + +import static akka.event.Logging.InfoLevel; +import java.util.stream.Collectors; +import java.util.Optional; + +public class DebuggingDirectivesExamplesTest extends JUnitRouteTest { + + @Test + public void testLogRequest() { + //#logRequest + // logs request with "get-user" + final Route routeBasicLogRequest = get(() -> + logRequest("get-user", () -> complete("logged"))); + + // logs request with "get-user" as Info + final Route routeBasicLogRequestAsInfo = get(() -> + logRequest("get-user", InfoLevel(), () -> complete("logged"))); + + // logs just the request method at info level + Function requestMethodAsInfo = (request) -> + LogEntry.create(request.method().toString(), InfoLevel()); + + final Route routeUsingFunction = get(() -> + logRequest(requestMethodAsInfo, () -> complete("logged"))); + + // tests: + testRoute(routeBasicLogRequest).run(HttpRequest.GET("/")) + .assertEntity("logged"); + //#logRequest + } + + @Test + public void testLogRequestResult() { + //#logRequestResult + // using logRequestResult + + // handle request to optionally generate a log entry + BiFunction> requestMethodAsInfo = + (request, response) -> + (response.status().isSuccess()) ? + Optional.of( + LogEntry.create( + request.method().toString() + ":" + response.status().intValue(), + InfoLevel())) + : Optional.empty(); // not a successful response + + // handle rejections to optionally generate a log entry + BiFunction, Optional> rejectionsAsInfo = + (request, rejections) -> + (!rejections.isEmpty()) ? + Optional.of( + LogEntry.create( + rejections + .stream() + .map(Rejection::toString) + .collect(Collectors.joining(", ")), + InfoLevel())) + : Optional.empty(); // no rejections + + final Route route = get(() -> logRequestResultOptional( + requestMethodAsInfo, + rejectionsAsInfo, + () -> complete("logged"))); + // tests: + testRoute(route).run(HttpRequest.GET("/")).assertEntity("logged"); + //#logRequestResult + } + + @Test + public void testLogResult() { + //#logResult + // logs result with "get-user" + final Route routeBasicLogResult = get(() -> + logResult("get-user", () -> complete("logged"))); + + // logs result with "get-user" as Info + final Route routeBasicLogResultAsInfo = get(() -> + logResult("get-user", InfoLevel(), () -> complete("logged"))); + + // logs the result and the rejections as LogEntry + Function showSuccessAsInfo = (response) -> + LogEntry.create(String.format("Response code '%d'", response.status().intValue()), + InfoLevel()); + + Function, LogEntry> showRejectionAsInfo = (rejections) -> + LogEntry.create( + rejections + .stream() + .map(rejection->rejection.toString()) + .collect(Collectors.joining(", ")), + InfoLevel()); + + final Route routeUsingFunction = get(() -> + logResult(showSuccessAsInfo, showRejectionAsInfo, () -> complete("logged"))); + // tests: + testRoute(routeBasicLogResult).run(HttpRequest.GET("/")) + .assertEntity("logged"); + //#logResult + } + +} \ No newline at end of file diff --git a/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logRequest.rst b/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logRequest.rst index c5785ba998..6dfc3a6cf2 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logRequest.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logRequest.rst @@ -16,4 +16,4 @@ Use ``logResult`` for logging the response, or ``logRequestResult`` for logging Example ------- -TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 `_. +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/DebuggingDirectivesExamplesTest.java#logRequest diff --git a/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logRequestResult.rst b/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logRequestResult.rst index 87374e53e6..079935e653 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logRequestResult.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logRequestResult.rst @@ -13,4 +13,4 @@ See :ref:`-logRequest-java-` for the general description how these directives wo Example ------- -TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 `_. +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/DebuggingDirectivesExamplesTest.java#logRequestResult diff --git a/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logResult.rst b/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logResult.rst index d11148ef6a..0ebdc96ad1 100644 --- a/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logResult.rst +++ b/akka-docs/rst/java/http/routing-dsl/directives/debugging-directives/logResult.rst @@ -13,4 +13,4 @@ Use ``logRequest`` for logging the request, or ``logRequestResult`` for logging Example ------- -TODO: Example snippets for JavaDSL are subject to community contributions! Help us complete the docs, read more about it here: `write example snippets for Akka HTTP Java DSL #20466 `_. +.. includecode:: ../../../../code/docs/http/javadsl/server/directives/DebuggingDirectivesExamplesTest.java#logResult