diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2021-11-17 14:32:19 +0100 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2021-11-17 14:32:19 +0100 |
commit | 59cee0c33ae5d3603c509bf6d67fcab06f2aa4b1 (patch) | |
tree | 1190a0d0c6bf76ab1c55869e72f9bc605fc59438 /vespa-testrunner-components | |
parent | eeb6f7854d8aba397b9b3ee76c33a1526a18a8b9 (diff) |
Eliminate duplicate TestRunnerHandler
Diffstat (limited to 'vespa-testrunner-components')
2 files changed, 0 insertions, 190 deletions
diff --git a/vespa-testrunner-components/src/main/java/com/yahoo/vespa/hosted/testrunner/TestRunnerHandler.java b/vespa-testrunner-components/src/main/java/com/yahoo/vespa/hosted/testrunner/TestRunnerHandler.java deleted file mode 100644 index c10ee5416db..00000000000 --- a/vespa-testrunner-components/src/main/java/com/yahoo/vespa/hosted/testrunner/TestRunnerHandler.java +++ /dev/null @@ -1,127 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.testrunner; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.inject.Inject; -import com.yahoo.container.jdisc.HttpRequest; -import com.yahoo.container.jdisc.HttpResponse; -import com.yahoo.container.jdisc.LoggingRequestHandler; -import com.yahoo.io.IOUtils; -import com.yahoo.restapi.MessageResponse; -import com.yahoo.restapi.SlimeJsonResponse; -import com.yahoo.slime.Cursor; -import com.yahoo.slime.JsonFormat; -import com.yahoo.slime.Slime; -import com.yahoo.vespa.testrunner.TestRunner; -import com.yahoo.yolean.Exceptions; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.PrintStream; -import java.util.Collection; -import java.util.concurrent.Executor; -import java.util.logging.Level; -import java.util.logging.LogRecord; - -import static com.yahoo.jdisc.Response.Status; - -/** - * @author valerijf - * @author jvenstad - */ -public class TestRunnerHandler extends LoggingRequestHandler { - - private final com.yahoo.vespa.hosted.testrunner.TestRunner testRunner; - - @Inject - public TestRunnerHandler(Executor executor, com.yahoo.vespa.hosted.testrunner.TestRunner testRunner) { - super(executor); - this.testRunner = testRunner; - } - - @Override - public HttpResponse handle(HttpRequest request) { - try { - switch (request.getMethod()) { - case GET: return handleGET(request); - case POST: return handlePOST(request); - - default: return new MessageResponse(Status.METHOD_NOT_ALLOWED, "Method '" + request.getMethod() + "' is not supported"); - } - } catch (IllegalArgumentException e) { - return new MessageResponse(Status.BAD_REQUEST, Exceptions.toMessageString(e)); - } catch (Exception e) { - log.log(Level.WARNING, "Unexpected error handling '" + request.getUri() + "'", e); - return new MessageResponse(Status.INTERNAL_SERVER_ERROR, Exceptions.toMessageString(e)); - } - } - - private HttpResponse handleGET(HttpRequest request) { - String path = request.getUri().getPath(); - if (path.equals("/tester/v1/log")) { - return new SlimeJsonResponse(logToSlime(testRunner.getLog(request.hasProperty("after") - ? Long.parseLong(request.getProperty("after")) - : -1))); - } else if (path.equals("/tester/v1/status")) { - log.info("Responding with status " + testRunner.getStatus()); - return new MessageResponse(testRunner.getStatus().name()); - } - return new MessageResponse(Status.NOT_FOUND, "Not found: " + request.getUri().getPath()); - } - - private HttpResponse handlePOST(HttpRequest request) throws IOException { - final String path = request.getUri().getPath(); - if (path.startsWith("/tester/v1/run/")) { - String type = lastElement(path); - TestRunner.Suite suite = TestRunner.Suite.valueOf(type.toUpperCase() + "_TEST"); - byte[] config = IOUtils.readBytes(request.getData(), 1 << 16); - testRunner.test(suite, config); - log.info("Started tests of type " + type + " and status is " + testRunner.getStatus()); - return new MessageResponse("Successfully started " + type + " tests"); - } - return new MessageResponse(Status.NOT_FOUND, "Not found: " + request.getUri().getPath()); - } - - private static String lastElement(String path) { - if (path.endsWith("/")) - path = path.substring(0, path.length() - 1); - int lastSlash = path.lastIndexOf("/"); - if (lastSlash < 0) return path; - return path.substring(lastSlash + 1); - } - - static Slime logToSlime(Collection<LogRecord> log) { - Slime slime = new Slime(); - Cursor root = slime.setObject(); - Cursor recordArray = root.setArray("logRecords"); - logArrayToSlime(recordArray, log); - return slime; - } - - static void logArrayToSlime(Cursor recordArray, Collection<LogRecord> log) { - log.forEach(record -> { - Cursor recordObject = recordArray.addObject(); - recordObject.setLong("id", record.getSequenceNumber()); - recordObject.setLong("at", record.getMillis()); - recordObject.setString("type", typeOf(record.getLevel())); - String message = record.getMessage(); - if (record.getThrown() != null) { - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - record.getThrown().printStackTrace(new PrintStream(buffer)); - message += "\n" + buffer; - } - recordObject.setString("message", message); - }); - } - - public static String typeOf(Level level) { - return level.getName().equals("html") ? "html" - : level.intValue() < Level.INFO.intValue() ? "debug" - : level.intValue() < Level.WARNING.intValue() ? "info" - : level.intValue() < Level.SEVERE.intValue() ? "warning" - : "error"; - } - -} diff --git a/vespa-testrunner-components/src/test/java/com/yahoo/vespa/hosted/testrunner/TestRunnerHandlerTest.java b/vespa-testrunner-components/src/test/java/com/yahoo/vespa/hosted/testrunner/TestRunnerHandlerTest.java deleted file mode 100644 index fdc6b633630..00000000000 --- a/vespa-testrunner-components/src/test/java/com/yahoo/vespa/hosted/testrunner/TestRunnerHandlerTest.java +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -package com.yahoo.vespa.hosted.testrunner; - -import com.yahoo.slime.SlimeUtils; -import org.junit.Test; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.time.Instant; -import java.util.Collections; -import java.util.logging.Level; -import java.util.logging.LogRecord; - -import static org.junit.Assert.assertEquals; - -/** - * @author jvenstad - */ -public class TestRunnerHandlerTest { - - @Test - public void logSerialization() throws IOException { - Log log = new Log(); - LogRecord record = log.getLogRecord(); - String trace = log.getTrace(); - assertEquals("{\"logRecords\":[{\"id\":1,\"at\":2,\"type\":\"info\",\"message\":\"Hello.\\n" + trace + "\"}]}", - new String(SlimeUtils.toJsonBytes(TestRunnerHandler.logToSlime(Collections.singletonList(record))))); - } - - private static class Log { - - private final LogRecord record; - private final String trace; - - public Log() { - Exception exception = new RuntimeException(); - record = createRecord(exception); - ByteArrayOutputStream buffer = new ByteArrayOutputStream(); - exception.printStackTrace(new PrintStream(buffer)); - trace = buffer.toString() - .replaceAll("\n", "\\\\n") - .replaceAll("\t", "\\\\t"); - } - - LogRecord getLogRecord() { - return record; - } - - String getTrace() { - return trace; - } - - private static LogRecord createRecord(Exception exception) { - LogRecord record = new LogRecord(Level.INFO, "Hello."); - record.setSequenceNumber(1); - record.setInstant(Instant.ofEpochMilli(2)); - record.setThrown(exception); - return record; - } - } - -} |