From b13a7db4bbaa212bba32d3758cdf5c2d8f53e768 Mon Sep 17 00:00:00 2001 From: wesmcouch Date: Tue, 17 Oct 2017 09:28:00 -0400 Subject: [PATCH] WIP --- lambda-selenium-java/build.gradle | 2 + .../testing/lambda/LambdaSeleniumService.java | 2 +- .../testing/lambda/LambdaTestHandler.java | 22 +++++----- .../testing/lambda/LambdaTestSuite.java | 11 +++-- .../testing/lambda/logger/Logger.java | 42 ------------------- .../lambda/logger/LoggerContainer.java | 6 --- .../logger/MockLambdaConsoleLogger.java | 11 ----- .../testing/tests/ExampleTestSuite.java | 8 ++-- 8 files changed, 26 insertions(+), 78 deletions(-) delete mode 100644 lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/Logger.java delete mode 100644 lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/LoggerContainer.java delete mode 100644 lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/MockLambdaConsoleLogger.java diff --git a/lambda-selenium-java/build.gradle b/lambda-selenium-java/build.gradle index c9b1b1c..45c6b73 100644 --- a/lambda-selenium-java/build.gradle +++ b/lambda-selenium-java/build.gradle @@ -25,6 +25,8 @@ dependencies { compile group: 'com.codeborne', name: 'selenide', version: '4.8' compile group: 'com.amazonaws', name: 'aws-lambda-java-events', version: '1.1.0' compile group: 'com.amazonaws', name: 'aws-lambda-java-core', version: '1.1.0' + compile group: 'com.amazonaws', name: 'aws-lambda-java-log4j', version: '1.0.0' + compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.21' compile group: 'com.amazonaws', name: 'aws-java-sdk-lambda', version: '1.11.208' compile group: 'com.amazonaws.serverless', name: 'aws-serverless-java-container-jersey', version: '0.7' compile group: 'org.reflections', name: 'reflections', version: '0.9.10' diff --git a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaSeleniumService.java b/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaSeleniumService.java index a8912a8..81b3fe0 100644 --- a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaSeleniumService.java +++ b/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaSeleniumService.java @@ -3,6 +3,6 @@ import com.amazonaws.services.lambda.invoke.LambdaFunction; public interface LambdaSeleniumService { - @LambdaFunction(functionName = "lambda-selenium-function") + @LambdaFunction(functionName = "lambda-test-function-WesLambdaHandler-NH9NMZGQ546F") TestResult runTest(TestRequest testRequest); } diff --git a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaTestHandler.java b/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaTestHandler.java index aabf53b..a5126c5 100644 --- a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaTestHandler.java +++ b/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaTestHandler.java @@ -1,20 +1,21 @@ package com.blackboard.testing.lambda; -import static com.blackboard.testing.lambda.logger.LoggerContainer.LOGGER; import static java.util.Optional.ofNullable; import com.blackboard.testing.lambda.exceptions.LambdaCodeMismatchException; -import com.blackboard.testing.lambda.logger.Logger; -import com.blackboard.testing.lambda.logger.LoggerContainer; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import java.util.Optional; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runners.BlockJUnit4ClassRunner; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class LambdaTestHandler implements RequestHandler { + private static final Logger logger = LoggerFactory.getLogger(LambdaTestHandler.class); + private static TestResult testResult; public LambdaTestHandler() { @@ -22,7 +23,6 @@ public LambdaTestHandler() { } public TestResult handleRequest(TestRequest testRequest, Context context) { - LoggerContainer.LOGGER = new Logger(context.getLogger()); System.setProperty("target.test.uuid", testRequest.getTestRunUUID()); Optional result = Optional.empty(); @@ -33,15 +33,15 @@ public TestResult handleRequest(TestRequest testRequest, Context context) { result = ofNullable(new JUnitCore().run(runner)); } catch (Exception e) { testResult.setThrowable(e); - LOGGER.log(e); + logger.error("Test Error", e); } if (result.isPresent()) { testResult.setRunCount(result.get().getRunCount()); testResult.setRunTime(result.get().getRunTime()); - LOGGER.log("Run count: " + result.get().getRunCount()); + logger.info("Run count: %s", result.get().getRunCount()); result.get().getFailures().forEach(failure -> { - LOGGER.log(failure.getException()); + logger.error(failure.getMessage(), failure.getException()); testResult.setThrowable(failure.getException()); }); } @@ -50,13 +50,13 @@ public TestResult handleRequest(TestRequest testRequest, Context context) { } private Class getTestClass(TestRequest testRequest) { - LOGGER.log("Running Test: %s::%s", testRequest.getTestClass(), testRequest.getFrameworkMethod()); + logger.info("Running Test: %s::%s", testRequest.getTestClass(), testRequest.getFrameworkMethod()); try { - LOGGER.log(testRequest.getTestClass()); - LOGGER.log(testRequest.getFrameworkMethod()); + logger.info(testRequest.getTestClass()); + logger.info(testRequest.getFrameworkMethod()); return Class.forName(testRequest.getTestClass()); } catch (ClassNotFoundException e) { - LOGGER.log(e); + logger.error("Unable to find class", e); throw new LambdaCodeMismatchException(testRequest.getTestClass()); } } diff --git a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaTestSuite.java b/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaTestSuite.java index 6a5150f..6ed9ce1 100644 --- a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaTestSuite.java +++ b/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/LambdaTestSuite.java @@ -1,6 +1,5 @@ package com.blackboard.testing.lambda; -import static com.blackboard.testing.lambda.logger.LoggerContainer.LOGGER; import static java.util.Optional.ofNullable; import com.blackboard.testing.common.LambdaBaseTest; @@ -18,10 +17,14 @@ import org.junit.runners.BlockJUnit4ClassRunner; import org.junit.runners.model.InitializationError; import org.reflections.Reflections; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; @RunWith(ParallelParameterized.class) public class LambdaTestSuite { + private static final Logger logger = LoggerFactory.getLogger(LambdaTestSuite.class); + private static List getTestClasses(String folderName) { Reflections reflections = new Reflections(folderName); Set> allClasses = reflections.getSubTypesOf(LambdaBaseTest.class); @@ -43,7 +46,7 @@ protected static List getTestRequests(String folderName, Filter fil } }); } catch (InitializationError e) { - LOGGER.log(e); + logger.error("Test Request Initialization Error", e); } }); return requests; @@ -57,13 +60,13 @@ protected void writeAttachments(Map attachments) { try { FileUtils.writeByteArrayToFile(new File(outputDirectory, fileName), bytes); } catch (IOException e) { - LOGGER.log(e); + logger.error("Unable to write screenshots to file", e); } }); } protected void logTestResult(TestRequest request, TestResult result) { - LOGGER.log("Test %s:%s completed.", request.getTestClass(), request.getFrameworkMethod()); + logger.info("Test %s:%s completed.", request.getTestClass(), request.getFrameworkMethod()); if (ofNullable(result.getThrowable()).isPresent()) { throw new RuntimeException(result.getThrowable()); } diff --git a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/Logger.java b/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/Logger.java deleted file mode 100644 index 9885703..0000000 --- a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/Logger.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.blackboard.testing.lambda.logger; - -import static java.util.Optional.ofNullable; - -import com.amazonaws.services.lambda.runtime.LambdaLogger; -import org.glassfish.jersey.internal.util.ExceptionUtils; - -public class Logger { - - private final LambdaLogger lambdaLogger; - private boolean firstMessageLogged = false; - - public Logger(LambdaLogger lambdaLogger) { - this.lambdaLogger = lambdaLogger; - } - - private void logMessage(String message) { - String newLine = ""; - if (!firstMessageLogged) { - newLine += "\n"; - } else { - firstMessageLogged = true; - } - lambdaLogger.log(newLine + ofNullable(message).orElse("null")); - } - - public void log(Object message) { - logMessage(String.format("%s: %s", message.getClass().getSimpleName(), ofNullable(message.toString()).orElse("null"))); - } - - public void log(String message) { - logMessage(message); - } - - public void log(Throwable t) { - logMessage(ExceptionUtils.exceptionStackTraceAsString(t)); - } - - public void log(String format, Object... args) { - logMessage(String.format(format, args)); - } -} diff --git a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/LoggerContainer.java b/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/LoggerContainer.java deleted file mode 100644 index 84a023c..0000000 --- a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/LoggerContainer.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.blackboard.testing.lambda.logger; - -public class LoggerContainer { - - public static Logger LOGGER = new Logger(new MockLambdaConsoleLogger()); -} diff --git a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/MockLambdaConsoleLogger.java b/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/MockLambdaConsoleLogger.java deleted file mode 100644 index 63a3d41..0000000 --- a/lambda-selenium-java/src/main/java/com/blackboard/testing/lambda/logger/MockLambdaConsoleLogger.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.blackboard.testing.lambda.logger; - -import com.amazonaws.services.lambda.runtime.LambdaLogger; - -public class MockLambdaConsoleLogger implements LambdaLogger { - - @Override - public void log(String string) { - System.out.println(string); - } -} diff --git a/lambda-selenium-java/src/test/java/com/blackboard/testing/tests/ExampleTestSuite.java b/lambda-selenium-java/src/test/java/com/blackboard/testing/tests/ExampleTestSuite.java index 58e79ea..448ee2c 100644 --- a/lambda-selenium-java/src/test/java/com/blackboard/testing/tests/ExampleTestSuite.java +++ b/lambda-selenium-java/src/test/java/com/blackboard/testing/tests/ExampleTestSuite.java @@ -1,7 +1,5 @@ package com.blackboard.testing.tests; -import static com.blackboard.testing.lambda.logger.LoggerContainer.LOGGER; - import com.blackboard.testing.lambda.LambdaTestSuite; import com.blackboard.testing.lambda.TestInvoker; import com.blackboard.testing.lambda.TestRequest; @@ -10,9 +8,13 @@ import org.junit.Test; import org.junit.experimental.categories.Categories.CategoryFilter; import org.junit.runners.Parameterized.Parameters; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; public class ExampleTestSuite extends LambdaTestSuite { + private static final Logger logger = LoggerFactory.getLogger(ExampleTestSuite.class); + private static final CategoryFilter filter = CategoryFilter.include(Test.class); private TestRequest testRequest; @@ -22,7 +24,7 @@ public ExampleTestSuite(TestRequest testRequest) { @Parameters(name = "{0}") public static Collection testRequests() { - LOGGER.log("Running " + filter.describe()); + logger.info("Running %s", filter.describe()); return getTestRequests("com.blackboard.testing.tests", filter); }