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

testing types with new local ragconnect, works with initial tests.

parent 0bdcf96b
No related branches found
No related tags found
No related merge requests found
...@@ -6,6 +6,7 @@ buildscript { ...@@ -6,6 +6,7 @@ buildscript {
} }
plugins { plugins {
id 'com.github.ben-manes.versions' version '0.36.0'
id 'java' id 'java'
id 'idea' id 'idea'
id 'application' id 'application'
...@@ -49,16 +50,18 @@ idea.module.generatedSourceDirs += genSrc ...@@ -49,16 +50,18 @@ 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.16'
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.2' implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.14.0'
implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.2' implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.14.0'
implementation group: 'de.tudresden.inf.st', name: 'dumpAstWithPlantuml', version: '0.3.5' implementation group: 'de.tudresden.inf.st', name: 'dumpAstWithPlantuml', version: '0.3.5'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.12.1'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.12.1'
grammar2umlClasspath group: 'de.tudresden.inf.st', name: 'grammar2uml', version: '0.1.1' grammar2umlClasspath group: 'de.tudresden.inf.st', name: 'grammar2uml', version: '0.1.1'
ragconnectClasspath group: 'de.tudresden.inf.st', name: 'ragconnect', version: '0.2.4' // ragconnectClasspath group: 'de.tudresden.inf.st', name: 'ragconnect', version: '0.2.4'
// ragconnectClasspath fileTree(include: ['ragconnect-0.2.5.jar'], dir: '/data/git/jastadd-ragconnect/ragconnect.base/build/libs') ragconnectClasspath fileTree(include: ['ragconnect-0.2.5.jar'], dir: '/data/git/jastadd-ragconnect/ragconnect.base/build/libs')
jastadd2 "org.jastadd:jastadd:2.3.4" // jastadd2 "org.jastadd:jastadd:2.3.4"
// jastadd2 fileTree(include: ['jastadd2.jar'], dir: '/data/git/jastadd-2/') jastadd2 fileTree(include: ['jastadd2.jar'], dir: '/data/git/jastadd-2/')
} }
// Input files for relast // Input files for relast
...@@ -88,7 +91,11 @@ task ragConnect(type: JavaExec) { ...@@ -88,7 +91,11 @@ task ragConnect(type: JavaExec) {
'src/main/jastadd/MinimalModel.relast', 'src/main/jastadd/MinimalModel.relast',
'src/main/jastadd/MinimalModel.connect', 'src/main/jastadd/MinimalModel.connect',
'--logReads', '--logReads',
'--rootNode=A' '--logWrites',
'--verbose',
'--rootNode=A',
'--incremental=param,debug',
"--tracing=cache,flush"
]) ])
} }
...@@ -103,6 +110,7 @@ task relastToJastAdd(type: JavaExec) { ...@@ -103,6 +110,7 @@ task relastToJastAdd(type: JavaExec) {
"--useJastAddNames", "--useJastAddNames",
"--listClass=java.util.ArrayList", "--listClass=java.util.ArrayList",
"--jastAddList=JastAddList", "--jastAddList=JastAddList",
"--serializer=jackson",
"--resolverHelper", "--resolverHelper",
"--file"] "--file"]
+ +
...@@ -161,13 +169,10 @@ jastadd { ...@@ -161,13 +169,10 @@ jastadd {
extraJastAddOptions = [ extraJastAddOptions = [
'--lineColumnNumbers', '--lineColumnNumbers',
'--List=JastAddList', '--List=JastAddList',
// '--incremental=param', '--cache=all',
// '--cache=all', "--flush=full",
// '--tracing=api,flush', "--incremental=param,debug",
"--tracing=cache,flush",
// "--flush=full",
// "--incremental=param,debug",
// "--tracing=cache,flush",
] ]
} }
......
...@@ -2,6 +2,8 @@ receive A.Input ; ...@@ -2,6 +2,8 @@ receive A.Input ;
send A.OutputOnA ; send A.OutputOnA ;
send B.OutputOnB using Transformation ; send B.OutputOnB using Transformation ;
send C.OutputOnC using Transformation ; send C.OutputOnC using Transformation ;
send tree A.D ;
receive tree A.Reading ;
// mapping definitions // mapping definitions
Transformation maps String s to String {: Transformation maps String s to String {:
......
...@@ -8,4 +8,6 @@ aspect Computation { ...@@ -8,4 +8,6 @@ aspect Computation {
syn String C.getOutputOnC() = "c" + input(); syn String C.getOutputOnC() = "c" + input();
inh String C.input(); inh String C.input();
eq A.getC().input() = getInput(); eq A.getC().input() = getInput();
syn D A.getD() = new D().setID("dd" + getInput());
} }
A ::= <Input:String> /<OutputOnA:String>/ B* C* ; A ::= <Input:String> /<OutputOnA:String>/ B* C* /D/ Reading:D ;
B ::= /<OutputOnB:String>/ ; B ::= /<OutputOnB:String>/ ;
C ::= /<OutputOnC:String>/ ; C ::= /<OutputOnC:String>/ ;
D ::= <ID:String> ;
...@@ -2,15 +2,13 @@ package de.tudresden.inf.st.mrc; ...@@ -2,15 +2,13 @@ package de.tudresden.inf.st.mrc;
import de.tudresden.inf.st.jastadd.dumpAst.ast.Dumper; import de.tudresden.inf.st.jastadd.dumpAst.ast.Dumper;
import de.tudresden.inf.st.mrc.ast.*; import de.tudresden.inf.st.mrc.ast.*;
//import de.tudresden.inf.st.mrc.ast.ASTState.Trace.Receiver;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.concurrent.TimeUnit.SECONDS;
...@@ -49,11 +47,22 @@ public class MinimalMain { ...@@ -49,11 +47,22 @@ public class MinimalMain {
// static MinimalReceiver receiver = null; // static MinimalReceiver receiver = null;
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
boolean success;
publisher = new MqttHandler("publisher").setHost("localhost"); publisher = new MqttHandler("publisher").setHost("localhost");
publisher.waitUntilReady(2, SECONDS); publisher.waitUntilReady(2, SECONDS);
publisher.publish("---", ("Start at " + Instant.now()).getBytes()); publisher.publish("---", ("Start at " + Instant.now()).getBytes());
// mainIncremental();
mainTree();
}
private static void mainIncremental() throws Exception {
// byte[] -> bool: input[0] == (byte) 1;
// bool -> byte[]: java.nio.ByteBuffer.allocate(1).put((byte) 1).array();
boolean success;
A normalA = addNewA(true); A normalA = addNewA(true);
// enableTracing(normalA); // enableTracing(normalA);
B b1 = normalA.getB(0); B b1 = normalA.getB(0);
...@@ -79,9 +88,6 @@ public class MinimalMain { ...@@ -79,9 +88,6 @@ public class MinimalMain {
aWithNoDependency.getC(0).connectOutputOnC("mqtt://localhost/aNoDep/c1/out", true); aWithNoDependency.getC(0).connectOutputOnC("mqtt://localhost/aNoDep/c1/out", true);
aWithNoDependency.getC(1).connectOutputOnC("mqtt://localhost/aNoDep/c2/out", false); aWithNoDependency.getC(1).connectOutputOnC("mqtt://localhost/aNoDep/c2/out", false);
// stimulated incremental evaluation
aWithNoDependency.getC(0).getOutputOnC();
Dumper.read(normalA).dumpAsPNG(Paths.get("image.png")); Dumper.read(normalA).dumpAsPNG(Paths.get("image.png"));
describedWait(1, "Publish 2"); describedWait(1, "Publish 2");
...@@ -94,22 +100,16 @@ public class MinimalMain { ...@@ -94,22 +100,16 @@ public class MinimalMain {
publisher.publish(TOPIC_FOR_INPUT, "22".getBytes()); publisher.publish(TOPIC_FOR_INPUT, "22".getBytes());
publisher.publish(TOPIC_FOR_INPUT, "23".getBytes()); publisher.publish(TOPIC_FOR_INPUT, "23".getBytes());
// aWithNoDependency.getC(0).getOutputOnC();
describedWait(2, "Disconnect normalA"); describedWait(2, "Disconnect normalA");
// success = normalA.disconnectInput(TOPIC_URI_FOR_INPUT); success = normalA.disconnectInput(TOPIC_URI_FOR_INPUT);
// logger.info("disconnect success: {}", success); logger.info("disconnect success: {}", success);
describedWait(2, "Publish 4"); describedWait(2, "Publish 4");
// receiver.reset();
publisher.publish(TOPIC_FOR_INPUT, "4".getBytes()); publisher.publish(TOPIC_FOR_INPUT, "4".getBytes());
// describedWait(1, "Print latest attributes");
// logger.info("latest attributes = {}", receiver.latestAttributes);
describedWait(1, "Disconnect aNoDep"); describedWait(1, "Disconnect aNoDep");
// success = aWithNoDependency.disconnectInput(TOPIC_URI_FOR_INPUT); success = aWithNoDependency.disconnectInput(TOPIC_URI_FOR_INPUT);
// logger.info("disconnect success: {}", success); logger.info("disconnect success: {}", success);
describedWait(1, "Publish 6"); describedWait(1, "Publish 6");
publisher.publish(TOPIC_FOR_INPUT, "6".getBytes()); publisher.publish(TOPIC_FOR_INPUT, "6".getBytes());
...@@ -165,6 +165,57 @@ public class MinimalMain { ...@@ -165,6 +165,57 @@ public class MinimalMain {
return result; return result;
} }
private static void testTree() throws IOException, SerializationException, DeserializationException {
A root = new A();
root.setInput("123");
java.io.ByteArrayOutputStream outputStream = new java.io.ByteArrayOutputStream();
{
com.fasterxml.jackson.core.JsonFactory factory = new com.fasterxml.jackson.core.JsonFactory();
com.fasterxml.jackson.core.JsonGenerator generator = factory.createGenerator(outputStream, com.fasterxml.jackson.core.JsonEncoding.UTF8);
root.serialize(generator);
generator.flush();
}
String content = outputStream.toString();
System.out.println(content);
com.fasterxml.jackson.databind.ObjectMapper mapper = new com.fasterxml.jackson.databind.ObjectMapper();
com.fasterxml.jackson.core.JsonFactory factory = new com.fasterxml.jackson.core.JsonFactory();
com.fasterxml.jackson.core.JsonParser parser = factory.createParser(content);
A result = A.deserialize((com.fasterxml.jackson.databind.JsonNode)mapper.readTree(parser));
parser.close();
logger.info("result.getInput() = " + result.getInput());
logger.info("result.getD().getID() = " + result.getD().getID());
}
private static void mainTree() throws IOException, InterruptedException {
String uriString = "mqtt://localhost/normalA/d/out";
A sender = new A();
sender.setInput("123");
sender.ragconnectSetupMqttWaitUntilReady(2, SECONDS);
A receiver = new A();
receiver.ragconnectSetupMqttWaitUntilReady(2, SECONDS);
receiver.connectReading(uriString);
sender.connectOutputOnA("mqtt://localhost/normalA/out", true);
sender.connectD(uriString, true);
describedWait(1, "initial value");
logger.info("receiver.getReading().getID() = " + receiver.getReading().getID());
sender.getD().setID("abc");
describedWait(1, "after setID (does not work)");
logger.info("receiver.getReading().getID() = " + receiver.getReading().getID());
sender.setInput("def");
describedWait(1, "after setInput");
logger.info("receiver.getReading().getID() = " + receiver.getReading().getID());
}
// private static void enableTracing(ASTNode<?> node) { // private static void enableTracing(ASTNode<?> node) {
// if (node.trace().getReceiver() != null && node.trace().getReceiver() instanceof MinimalReceiver) { // if (node.trace().getReceiver() != null && node.trace().getReceiver() instanceof MinimalReceiver) {
// System.out.println("*** receiver already set up ***"); // System.out.println("*** receiver already set up ***");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment