From 0f67780f1baaf9e99b2cc67fb410b526ce70e6f9 Mon Sep 17 00:00:00 2001 From: "Christian P. MOMON" Date: Sat, 20 Jul 2024 15:45:35 +0200 Subject: [PATCH] Added tests for HttpAcessLogParser class. --- .../httpaccess/HttpAccessLogParser.java | 17 ++++ .../httpaccess/HttpAccessLogParserTest.java | 83 +++++++++++++++++++ 2 files changed, 100 insertions(+) create mode 100644 test/fr/devinsy/statoolinfos/metrics/httpaccess/HttpAccessLogParserTest.java diff --git a/src/fr/devinsy/statoolinfos/metrics/httpaccess/HttpAccessLogParser.java b/src/fr/devinsy/statoolinfos/metrics/httpaccess/HttpAccessLogParser.java index 9a28334..7189f5f 100644 --- a/src/fr/devinsy/statoolinfos/metrics/httpaccess/HttpAccessLogParser.java +++ b/src/fr/devinsy/statoolinfos/metrics/httpaccess/HttpAccessLogParser.java @@ -84,6 +84,23 @@ public class HttpAccessLogParser return result; } + /** + * Parses the log. + * + * @param line + * the line + * @return the http access log + */ + public static HttpAccessLog parseLog(final String line) + { + HttpAccessLog result; + + result = parseLog(line, COMBINED_PATTERN, DATETIME_FORMATTER); + + // + return result; + } + /** * Parses the log. * diff --git a/test/fr/devinsy/statoolinfos/metrics/httpaccess/HttpAccessLogParserTest.java b/test/fr/devinsy/statoolinfos/metrics/httpaccess/HttpAccessLogParserTest.java new file mode 100644 index 0000000..5145299 --- /dev/null +++ b/test/fr/devinsy/statoolinfos/metrics/httpaccess/HttpAccessLogParserTest.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2021-2024 Christian Pierre MOMON + * + * This file is part of StatoolInfos, simple key value database. + * + * StatoolInfos is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * StatoolInfos is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with StatoolInfos. If not, see . + */ +package fr.devinsy.statoolinfos.metrics.httpaccess; + +import org.apache.logging.log4j.Level; +import org.apache.logging.log4j.core.config.Configurator; +import org.apache.logging.log4j.core.config.DefaultConfiguration; +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import fr.devinsy.statoolinfos.core.StatoolInfosException; + +/** + * The Class HttpAccessLogParserTest. + */ +public class HttpAccessLogParserTest +{ + private static org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(HttpAccessLogParserTest.class); + + /** + * Test 01. + * + * @throws Exception + * the exception + */ + @Test + public void test01() throws Exception + { + // Nominal line. + String line = "172.104.137.47 - - [30/Apr/2023:23:25:15 +0200] \"GET /default.jsp HTTP/1.1\" 302 534 \"-\" \"curl/7.54.0\""; + Assert.assertNotNull(HttpAccessLogParser.parseLog(line)); + + // Line with a \" in request string. + line = "172.104.137.47 - - [30/Apr/2023:23:25:15 +0200] \"GET /def\\\"ault.jsp HTTP/1.1\" 302 534 \"-\" \"curl/7.54.0\""; + Assert.assertNotNull(HttpAccessLogParser.parseLog(line)); + + // Line with many \". + line = "10.141.57.46 - - [28/Apr/2023:13:46:34 +0200] \"GET /?\\\"\\\" HTTP/1.1\" 302 5143 \"https://www.gaagle.com/\\\"\\\"\" \"Mozilliqa\\\"\\\"\""; + Assert.assertNotNull(HttpAccessLogParser.parseLog(line)); + } + + /** + * After class. + * + * @throws StatoolInfosException + * the Juga exception + */ + @AfterClass + public static void afterClass() throws StatoolInfosException + { + } + + /** + * Before class. + * + * @throws StatoolInfosException + * the Juga exception + */ + @BeforeClass + public static void beforeClass() throws StatoolInfosException + { + Configurator.initialize(new DefaultConfiguration()); + Configurator.setRootLevel(Level.DEBUG); + } +}