diff --git a/src/main/antlr4/imports/COMMAND_TERAGREP_MODE.g4 b/src/main/antlr4/imports/COMMAND_TERAGREP_MODE.g4 index d914eb6..e45fdb0 100644 --- a/src/main/antlr4/imports/COMMAND_TERAGREP_MODE.g4 +++ b/src/main/antlr4/imports/COMMAND_TERAGREP_MODE.g4 @@ -81,6 +81,7 @@ COMMAND_TERAGREP_MODE_DOT: '.'; COMMAND_TERAGREP_MODE_TOKENIZER: 'tokenizer'; COMMAND_TERAGREP_MODE_REGEXEXTRACT: 'regexextract'; COMMAND_TERAGREP_MODE_FOREACHBATCH: 'foreachbatch'; +COMMAND_TERAGREP_MODE_CONFIG: 'config'; COMMAND_TERAGREP_MODE_SYSLOG: 'syslog'; COMMAND_TERAGREP_MODE_STREAM: 'stream'; COMMAND_TERAGREP_MODE_LOAD: 'load'; diff --git a/src/main/antlr4/imports/DPLParserTransform_teragrep.g4 b/src/main/antlr4/imports/DPLParserTransform_teragrep.g4 index a3fa440..68341e3 100644 --- a/src/main/antlr4/imports/DPLParserTransform_teragrep.g4 +++ b/src/main/antlr4/imports/DPLParserTransform_teragrep.g4 @@ -46,7 +46,7 @@ parser grammar DPLParserTransform_teragrep; teragrepTransformation - : COMMAND_MODE_TERAGREP ( t_execParameter | t_getParameter) + : COMMAND_MODE_TERAGREP ( t_execParameter | t_getParameter | t_setParameter ) ; t_execParameter @@ -133,7 +133,23 @@ t_listModeParameter ; t_getParameter - : (COMMAND_TERAGREP_MODE_GET | COMMAND_TERAGREP_MODE_SET) (t_getTeragrepVersionParameter | t_getArchiveSummaryParameter) numberType? + : COMMAND_TERAGREP_MODE_GET (t_getTeragrepVersionParameter | t_getArchiveSummaryParameter | COMMAND_TERAGREP_MODE_CONFIG) + ; + +t_setParameter + : COMMAND_TERAGREP_MODE_SET t_setConfigParameter + ; + +t_setConfigParameter + : COMMAND_TERAGREP_MODE_CONFIG t_configKeyParameter t_configValueParameter + ; + +t_configKeyParameter + : stringType + ; + +t_configValueParameter + : stringType ; t_getTeragrepVersionParameter diff --git a/src/test/java/com/teragrep/pth_03/tests/TeragrepSyntaxTests.java b/src/test/java/com/teragrep/pth_03/tests/TeragrepSyntaxTests.java index 7128315..4b7c52e 100644 --- a/src/test/java/com/teragrep/pth_03/tests/TeragrepSyntaxTests.java +++ b/src/test/java/com/teragrep/pth_03/tests/TeragrepSyntaxTests.java @@ -77,7 +77,9 @@ public class TeragrepSyntaxTests { "teragrep_syslog_stream", "teragrep_syslog_stream_host_port", "teragrep_foreachbatch", - "teragrep_foreachbatch_transformStatement" + "teragrep_foreachbatch_transformStatement", + "teragrep_config_set", + "teragrep_config_get" }) public void teragrepSyntaxParseTest(String arg) { String fileName = "src/test/resources/antlr4/commands/teragrep/" + arg + ".txt"; @@ -277,7 +279,7 @@ void syslogStreamTest(String arg) { // includes an eval command in the end of th String syslogPath = "/root/transformStatement/teragrepTransformation/t_execParameter/t_syslogModeParameter"; String evalPath = "/root/transformStatement/transformStatement/evalTransformation"; - NodeList syslogNodes = Assertions.assertDoesNotThrow(() -> (NodeList) pstu.xpathQueryFile(fileName, syslogPath, true)); + NodeList syslogNodes = Assertions.assertDoesNotThrow(() -> (NodeList) pstu.xpathQueryFile(fileName, syslogPath, false)); NodeList evalNodes = Assertions.assertDoesNotThrow(() -> (NodeList) pstu.xpathQueryFile(fileName, evalPath, false)); // Check that 1 found @@ -384,7 +386,7 @@ void testRegexExtractWithParams(String arg) { String regexPath = "/root/transformStatement/teragrepTransformation/t_execParameter/t_regexextractParameter/t_regexParameter"; String inputPath = "/root/transformStatement/teragrepTransformation/t_execParameter/t_regexextractParameter/t_inputParameter"; String outputPath = "/root/transformStatement/teragrepTransformation/t_execParameter/t_regexextractParameter/t_outputParameter"; - NodeList regexextractNodes = Assertions.assertDoesNotThrow(() -> (NodeList) pstu.xpathQueryFile(fileName, regexextractPath, true)); + NodeList regexextractNodes = Assertions.assertDoesNotThrow(() -> (NodeList) pstu.xpathQueryFile(fileName, regexextractPath, false)); NodeList regexNodes = Assertions.assertDoesNotThrow(() -> (NodeList) pstu.xpathQueryFile(fileName, regexPath, false)); NodeList inputNodes = Assertions.assertDoesNotThrow(() -> (NodeList) pstu.xpathQueryFile(fileName, inputPath, false)); NodeList outputNodes = Assertions.assertDoesNotThrow(() -> (NodeList) pstu.xpathQueryFile(fileName, outputPath, false)); @@ -427,4 +429,37 @@ void testTeragrepForEachBatchWithTransformStatement(String arg) { assertEquals(1, febParamNodes.getLength()); assertEquals(1, transformStmtNodes.getLength()); } + + @ParameterizedTest + @ValueSource(strings = { + "teragrep_config_set", + }) + void testTeragrepSetConfig(String arg) { + ParserStructureTestingUtility pstu = new ParserStructureTestingUtility(); + String fileName = "src/test/resources/antlr4/commands/teragrep/" + arg + ".txt"; + + String configKeyPath = "/root/transformStatement/teragrepTransformation/t_setParameter/t_setConfigParameter/t_configKeyParameter"; + String configValuePath = "/root/transformStatement/teragrepTransformation/t_setParameter/t_setConfigParameter/t_configValueParameter"; + NodeList configKeyNodes = Assertions.assertDoesNotThrow(() -> (NodeList) pstu.xpathQueryFile(fileName, configKeyPath, false)); + NodeList configValueNodes = Assertions.assertDoesNotThrow(() -> (NodeList) pstu.xpathQueryFile(fileName, configValuePath, false)); + + assertEquals(1, configKeyNodes.getLength()); + assertEquals(1, configValueNodes.getLength()); + } + + @ParameterizedTest + @ValueSource(strings = { + "teragrep_config_get", + }) + void testTeragrepGetConfig(String arg) { + ParserStructureTestingUtility pstu = new ParserStructureTestingUtility(); + String fileName = "src/test/resources/antlr4/commands/teragrep/" + arg + ".txt"; + + String configGetPath = "/root/transformStatement/teragrepTransformation/t_getParameter/value"; + NodeList configGetNodes = Assertions.assertDoesNotThrow(() -> (NodeList) pstu.xpathQueryFile(fileName, configGetPath, false)); + + Assertions.assertEquals(2, configGetNodes.getLength()); + Assertions.assertEquals("get", configGetNodes.item(0).getTextContent()); + Assertions.assertEquals("config", configGetNodes.item(1).getTextContent()); + } } \ No newline at end of file diff --git a/src/test/resources/antlr4/commands/teragrep/teragrep_config_get.txt b/src/test/resources/antlr4/commands/teragrep/teragrep_config_get.txt new file mode 100644 index 0000000..0cfbd4d --- /dev/null +++ b/src/test/resources/antlr4/commands/teragrep/teragrep_config_get.txt @@ -0,0 +1,46 @@ + +| teragrep get config \ No newline at end of file diff --git a/src/test/resources/antlr4/commands/teragrep/teragrep_config_set.txt b/src/test/resources/antlr4/commands/teragrep/teragrep_config_set.txt new file mode 100644 index 0000000..dd3348e --- /dev/null +++ b/src/test/resources/antlr4/commands/teragrep/teragrep_config_set.txt @@ -0,0 +1,46 @@ + +| teragrep set config dpl.pth_xx.one.two.three "value.foo.bar" \ No newline at end of file