From 5a7f81e3a49837fe94d052fde70e6fbbef8bd25b Mon Sep 17 00:00:00 2001 From: rschoene <rene.schoene@tu-dresden.de> Date: Fri, 29 May 2020 16:35:44 +0200 Subject: [PATCH] Simple logging for reads and writes (untested). --- ros2rag.base/src/main/jastadd/backend/Configuration.jadd | 4 ++++ ros2rag.base/src/main/jastadd/backend/Generation.jadd | 9 +++++++++ .../main/java/org/jastadd/ros2rag/compiler/Compiler.java | 8 +++++++- ros2rag.tests/build.gradle | 3 ++- 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 ros2rag.base/src/main/jastadd/backend/Configuration.jadd diff --git a/ros2rag.base/src/main/jastadd/backend/Configuration.jadd b/ros2rag.base/src/main/jastadd/backend/Configuration.jadd new file mode 100644 index 0000000..711ba25 --- /dev/null +++ b/ros2rag.base/src/main/jastadd/backend/Configuration.jadd @@ -0,0 +1,4 @@ +aspect Configuration { + public static boolean ASTNode.loggingEnabledForReads = false; + public static boolean ASTNode.loggingEnabledForWrites = false; +} diff --git a/ros2rag.base/src/main/jastadd/backend/Generation.jadd b/ros2rag.base/src/main/jastadd/backend/Generation.jadd index e827c68..7a134ec 100644 --- a/ros2rag.base/src/main/jastadd/backend/Generation.jadd +++ b/ros2rag.base/src/main/jastadd/backend/Generation.jadd @@ -162,6 +162,11 @@ aspect AspectGeneration { .append(connectMethod()).append("(String topic) {\n"); sb.append(ind(2)).append(mqttUpdaterAttribute()).append("().newConnection(topic, message -> {\n"); String lastResult = generateMappingApplication(sb, 3, "message"); + if (loggingEnabledForReads) { + sb.append(ind(3)).append("System.out.println(\"[Read] \" + topic + \" -> ") + .append(getToken().getName()).append(" = \" + ").append(lastResult) + .append(");\n"); + } sb.append(ind(3)).append("set").append(getToken().getName()).append("(").append(lastResult).append(");\n"); sb.append(ind(2)).append("});\n"); sb.append(ind(1)).append("}\n\n"); @@ -198,6 +203,10 @@ aspect AspectGeneration { // write method sb.append(ind(1)).append("protected void ").append(parentTypeName).append(".") .append(writeMethod()).append("() {\n"); + if (loggingEnabledForWrites) { + sb.append(ind(2)).append("System.out.println(\"[Write] ").append(getToken().getName()) + .append(" = \" + ").append(lastValue()).append(" + \" -> ").append(writeTopic()).append("\");\n"); + } // _mqttUpdater().publish(${writeTopic()}, ${lastValue()}); sb.append(ind(2)).append(mqttUpdaterAttribute()).append("().publish(") .append(writeTopic()).append(", ").append(lastValue()).append(");\n"); diff --git a/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/Compiler.java b/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/Compiler.java index af1076e..ad4298d 100644 --- a/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/Compiler.java +++ b/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/Compiler.java @@ -25,6 +25,8 @@ public class Compiler { private StringOption optionInputRos2Rag; private FlagOption optionHelp; private FlagOption optionVerbose; + private FlagOption optionLogReads; + private FlagOption optionLogWrites; private ArrayList<Option<?>> options; private CommandLine commandLine; @@ -143,7 +145,9 @@ public class Compiler { optionRootNode = addOption(new StringOption("rootNode", "root node in the base grammar.")); optionInputRos2Rag = addOption(new StringOption("inputRos2Rag", "ros2rag definition file.")); optionHelp = addOption(new FlagOption("help", "Print usage and exit.")); - optionVerbose = addOption(new FlagOption("verbose", "Print more messages.")); + optionVerbose = addOption(new FlagOption("verbose", "Print more messages while compiling.")); + optionLogReads = addOption(new FlagOption("logReads", "Enable logging for every read.")); + optionLogWrites = addOption(new FlagOption("logWrites", "Enable logging for every write.")); } private <OptionType extends Option<?>> OptionType addOption(OptionType option) { @@ -179,6 +183,8 @@ public class Compiler { } ros2Rag.treeResolveAll(); ros2Rag.additionalRelations().forEach(inputGrammar::addDeclaration); + ASTNode.loggingEnabledForReads = optionLogReads.isSet(); + ASTNode.loggingEnabledForWrites = optionLogWrites.isSet(); return ros2Rag; } diff --git a/ros2rag.tests/build.gradle b/ros2rag.tests/build.gradle index 6c939f9..aacd38d 100644 --- a/ros2rag.tests/build.gradle +++ b/ros2rag.tests/build.gradle @@ -68,7 +68,8 @@ task preprocessExampleTest(type: JavaExec, group: 'verification') { args '--outputDir=src/test/02-after-ros2rag/example', '--inputGrammar=src/test/01-input/example/Example.relast', '--inputRos2Rag=src/test/01-input/example/Example.ros2rag', - '--rootNode=Model' + '--rootNode=Model', + '--logReads', '--logWrites' } task compileExampleTest(type: RelastTest) { -- GitLab