Skip to content
Snippets Groups Projects
Commit ca46468e authored by René Schöne's avatar René Schöne
Browse files

Testing disconnect.

parent 91ddd251
No related branches found
No related tags found
No related merge requests found
...@@ -8,3 +8,6 @@ ...@@ -8,3 +8,6 @@
/build/ /build/
/src/gen /src/gen
/src/gen-res /src/gen-res
/*.png
uml.md
gradle.properties
...@@ -17,9 +17,17 @@ mainClassName = 'de.tudresden.inf.st.mrc.MinimalMain' ...@@ -17,9 +17,17 @@ mainClassName = 'de.tudresden.inf.st.mrc.MinimalMain'
repositories { repositories {
jcenter() jcenter()
// maven {
// name "gitlab-maven"
// url "https://git-st.inf.tu-dresden.de/api/v4/groups/jastadd/-/packages/maven"
// }
maven { maven {
name "gitlab-maven" name "gitlab-maven-ragconnect"
url "https://gitlab.example.com/api/v4/groups/jastadd/-/packages/maven" url "https://git-st.inf.tu-dresden.de/api/v4/projects/708/packages/maven"
}
maven {
name "gitlab-maven-relast2uml"
url "https://git-st.inf.tu-dresden.de/api/v4/projects/679/packages/maven"
} }
} }
...@@ -28,6 +36,7 @@ apply plugin: 'jastadd' ...@@ -28,6 +36,7 @@ apply plugin: 'jastadd'
configurations { configurations {
baseRuntimeClasspath baseRuntimeClasspath
ragconnectClasspath ragconnectClasspath
grammar2umlClasspath
} }
run { run {
...@@ -39,18 +48,34 @@ sourceSets.main.java.srcDir genSrc ...@@ -39,18 +48,34 @@ sourceSets.main.java.srcDir genSrc
idea.module.generatedSourceDirs += genSrc idea.module.generatedSourceDirs += genSrc
dependencies { dependencies {
implementation fileTree(include: ['dumpAst2uml.jar'], dir: 'libs') // implementation fileTree(include: ['dumpAst2uml.jar'], dir: 'libs')
implementation group: 'org.fusesource.mqtt-client', name: 'mqtt-client', version: '1.15' implementation group: 'org.fusesource.mqtt-client', name: 'mqtt-client', version: '1.15'
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.2' implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.2'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.2' implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.2'
ragconnectClasspath group: 'de.tudresden.inf.st', name: 'ragconnect.base', version: '0.2.3' implementation group: 'de.tudresden.inf.st', name: 'dumpAstWithPlantuml', version: '0.3.5'
grammar2umlClasspath group: 'de.tudresden.inf.st', name: 'grammar2uml', version: '0.1.1'
jastadd2 "org.jastadd:jastadd:2.3.4" // ragconnectClasspath group: 'de.tudresden.inf.st', name: 'ragconnect', version: '0.2.4'
ragconnectClasspath fileTree(include: ['ragconnect-0.2.4.jar'], dir: '/data/git/jastadd-ragconnect/ragconnect.base/build/libs')
// jastadd2 "org.jastadd:jastadd:2.3.4"
jastadd2 fileTree(include: ['jastadd2.jar'], dir: '/data/git/jastadd-2/')
} }
// Input files for relast // Input files for relast
def relastFiles = ["src/gen/jastadd/MinimalModel.relast", "src/gen/jastadd/RagConnect.relast"] def relastFiles = ["src/gen/jastadd/MinimalModel.relast", "src/gen/jastadd/RagConnect.relast"]
task grammar2uml(type: JavaExec) {
main = 'de.tudresden.inf.st.jastadd.grammar2uml.compiler.Compiler'
classpath = configurations.grammar2umlClasspath
// classpath = configurations.implementation
args([
'--verbose',
]
+
relastFiles)
}
// phases: ragConnect -> RelAst -> JastAdd // phases: ragConnect -> RelAst -> JastAdd
// phase: ragConnect // phase: ragConnect
task ragConnect(type: JavaExec) { task ragConnect(type: JavaExec) {
...@@ -132,7 +157,17 @@ jastadd { ...@@ -132,7 +157,17 @@ jastadd {
// jastaddOptions = ["--lineColumnNumbers", "--visitCheck=true", "--rewrite=cnta", "--cache=all"] // jastaddOptions = ["--lineColumnNumbers", "--visitCheck=true", "--rewrite=cnta", "--cache=all"]
// default options are: '--rewrite=cnta', '--safeLazy', '--visitCheck=false', '--cacheCycle=false' // default options are: '--rewrite=cnta', '--safeLazy', '--visitCheck=false', '--cacheCycle=false'
extraJastAddOptions = ["--lineColumnNumbers", '--List=JastAddList'] extraJastAddOptions = [
'--lineColumnNumbers',
'--List=JastAddList',
// '--incremental=param',
// '--cache=all',
// '--tracing=api,flush',
//
// "--flush=full",
// "--incremental=param,debug",
"--tracing=api",
]
} }
cleanGen.doFirst { cleanGen.doFirst {
......
package de.tudresden.inf.st.mrc; package de.tudresden.inf.st.mrc;
import de.tudresden.inf.st.jastadd.dumpAst.ast.Dumper;
import de.tudresden.inf.st.mrc.ast.A; import de.tudresden.inf.st.mrc.ast.A;
import de.tudresden.inf.st.mrc.ast.B; import de.tudresden.inf.st.mrc.ast.B;
import de.tudresden.inf.st.mrc.ast.MqttHandler;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Paths;
import java.util.Scanner; import java.util.Scanner;
import java.util.concurrent.TimeUnit;
/** /**
* Minimal main. * Minimal main.
...@@ -12,30 +18,82 @@ import java.util.Scanner; ...@@ -12,30 +18,82 @@ import java.util.Scanner;
* @author rschoene - Initial contribution * @author rschoene - Initial contribution
*/ */
public class MinimalMain { public class MinimalMain {
public static void main(String[] args) throws IOException { private static final Logger logger = LogManager.getLogger(MinimalMain.class);
A a = new A(); private static final String TOPIC_FOR_INPUT = "topic/for/input";
// set some default value for input private static final String TOPIC_URI_FOR_INPUT = "mqtt://localhost/" + TOPIC_FOR_INPUT;
a.setInput(""); private static MqttHandler publisher;
B b1 = new B();
B b2 = new B(); public static void main(String[] args) throws Exception {
a.addB(b1); publisher = new MqttHandler("publisher").setHost("localhost");
a.addB(b2); publisher.waitUntilReady(2, TimeUnit.SECONDS);
publisher.publish("---", "---".getBytes());
A normalA = addNewA();
enableTracing(normalA);
B b1 = normalA.getB(0);
B b2 = normalA.getB(1);
// a.OutputOnA -> a.Input // a.OutputOnA -> a.Input
a.addDependencyA(a); normalA.addDependencyA(normalA);
// b1.OutputOnB -> a.Input // b1.OutputOnB -> a.Input
b1.addDependencyB(a); b1.addDependencyB(normalA);
// b2.OutputOnB -> a.Input // b2.OutputOnB -> a.Input
b2.addDependencyB(a); b2.addDependencyB(normalA);
normalA.connectInput(TOPIC_URI_FOR_INPUT);
normalA.connectOutputOnA("mqtt://localhost/normalA/out", true);
b1.connectOutputOnB("mqtt://localhost/normalA/b1/out", true);
b2.connectOutputOnB("mqtt://localhost/normalA/b2/out", false);
A aWithNoDependency = addNewA();
enableTracing(aWithNoDependency);
aWithNoDependency.connectInput(TOPIC_URI_FOR_INPUT);
aWithNoDependency.connectOutputOnA("mqtt://localhost/aNoDep/out", true);
aWithNoDependency.getB(0).connectOutputOnB("mqtt://localhost/aNoDep/b1/out", true);
aWithNoDependency.getB(1).connectOutputOnB("mqtt://localhost/aNoDep/b2/out", false);
// stimulated incremental evaluation
aWithNoDependency.getB(0).getOutputOnB();
Dumper.read(normalA).dumpAsPNG(Paths.get("images.png"));
a.connectInput("mqtt://localhost/topic/for/input"); waitAndRun(1, "Publish 2", () -> publisher.publish(TOPIC_FOR_INPUT, "2".getBytes()));
a.connectOutputOnA("mqtt://localhost/a/out", true); waitAndRun(2, "Disconnect normalA", () -> {
b1.connectOutputOnB("mqtt://localhost/b1/out", true); try {
b2.connectOutputOnB("mqtt://localhost/b2/out", false); boolean success = normalA.disconnectInput(TOPIC_URI_FOR_INPUT);
System.out.println("disconnect success: " + success);
} catch (IOException e) {
e.printStackTrace();
}
});
waitAndRun(3, "Publish 4", () -> publisher.publish(TOPIC_FOR_INPUT, "4".getBytes()));
// while (true) {} // while (true) {}
System.out.println("[Enter] to exit"); // System.out.println("[Enter] to exit");
Scanner scanner = new Scanner(System.in); // Scanner scanner = new Scanner(System.in);
scanner.nextLine(); // scanner.nextLine();
Thread.sleep(6);
}
private static void waitAndRun(long seconds, String description, Runnable runnable) throws InterruptedException {
Thread.sleep(seconds);
System.out.println(description);
publisher.publish("---", description.getBytes());
runnable.run();
}
private static A addNewA() {
A result = new A();
result.setInput("1");
B b1 = new B();
B b2 = new B();
result.addB(b1);
result.addB(b2);
return result;
}
private static void enableTracing(A a) {
a.trace().setReceiver((event, node, attribute, params, value) -> logger.info("event: {}, node: {}, attribute: {}, params: {}, value: {},", event, node, attribute, params, value));
} }
} }
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
</Console> </Console>
</Appenders> </Appenders>
<Loggers> <Loggers>
<Root level="info"> <Root level="debug">
<AppenderRef ref="Console"/> <AppenderRef ref="Console"/>
</Root> </Root>
</Loggers> </Loggers>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment