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
Branches noetic/feature/tags
No related tags found
No related merge requests found
......@@ -6,6 +6,7 @@ buildscript {
}
plugins {
id 'com.github.ben-manes.versions' version '0.36.0'
id 'java'
id 'idea'
id 'application'
......@@ -49,16 +50,18 @@ idea.module.generatedSourceDirs += genSrc
dependencies {
// implementation fileTree(include: ['dumpAst2uml.jar'], dir: 'libs')
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-core', version: '2.11.2'
implementation group: 'org.fusesource.mqtt-client', name: 'mqtt-client', version: '1.16'
implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.14.0'
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: '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'
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')
jastadd2 "org.jastadd:jastadd:2.3.4"
// jastadd2 fileTree(include: ['jastadd2.jar'], dir: '/data/git/jastadd-2/')
// 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')
// jastadd2 "org.jastadd:jastadd:2.3.4"
jastadd2 fileTree(include: ['jastadd2.jar'], dir: '/data/git/jastadd-2/')
}
// Input files for relast
......@@ -88,7 +91,11 @@ task ragConnect(type: JavaExec) {
'src/main/jastadd/MinimalModel.relast',
'src/main/jastadd/MinimalModel.connect',
'--logReads',
'--rootNode=A'
'--logWrites',
'--verbose',
'--rootNode=A',
'--incremental=param,debug',
"--tracing=cache,flush"
])
}
......@@ -103,6 +110,7 @@ task relastToJastAdd(type: JavaExec) {
"--useJastAddNames",
"--listClass=java.util.ArrayList",
"--jastAddList=JastAddList",
"--serializer=jackson",
"--resolverHelper",
"--file"]
+
......@@ -161,13 +169,10 @@ jastadd {
extraJastAddOptions = [
'--lineColumnNumbers',
'--List=JastAddList',
// '--incremental=param',
// '--cache=all',
// '--tracing=api,flush',
// "--flush=full",
// "--incremental=param,debug",
// "--tracing=cache,flush",
'--cache=all',
"--flush=full",
"--incremental=param,debug",
"--tracing=cache,flush",
]
}
......
......@@ -2,6 +2,8 @@ receive A.Input ;
send A.OutputOnA ;
send B.OutputOnB using Transformation ;
send C.OutputOnC using Transformation ;
send tree A.D ;
receive tree A.Reading ;
// mapping definitions
Transformation maps String s to String {:
......
......@@ -8,4 +8,6 @@ aspect Computation {
syn String C.getOutputOnC() = "c" + input();
inh String C.input();
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>/ ;
C ::= /<OutputOnC:String>/ ;
D ::= <ID:String> ;
......@@ -2,15 +2,13 @@ package de.tudresden.inf.st.mrc;
import de.tudresden.inf.st.jastadd.dumpAst.ast.Dumper;
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.Logger;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.file.Paths;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import static java.util.concurrent.TimeUnit.SECONDS;
......@@ -49,11 +47,22 @@ public class MinimalMain {
// static MinimalReceiver receiver = null;
public static void main(String[] args) throws Exception {
boolean success;
publisher = new MqttHandler("publisher").setHost("localhost");
publisher.waitUntilReady(2, SECONDS);
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);
// enableTracing(normalA);
B b1 = normalA.getB(0);
......@@ -79,9 +88,6 @@ public class MinimalMain {
aWithNoDependency.getC(0).connectOutputOnC("mqtt://localhost/aNoDep/c1/out", true);
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"));
describedWait(1, "Publish 2");
......@@ -94,22 +100,16 @@ public class MinimalMain {
publisher.publish(TOPIC_FOR_INPUT, "22".getBytes());
publisher.publish(TOPIC_FOR_INPUT, "23".getBytes());
// aWithNoDependency.getC(0).getOutputOnC();
describedWait(2, "Disconnect normalA");
// success = normalA.disconnectInput(TOPIC_URI_FOR_INPUT);
// logger.info("disconnect success: {}", success);
success = normalA.disconnectInput(TOPIC_URI_FOR_INPUT);
logger.info("disconnect success: {}", success);
describedWait(2, "Publish 4");
// receiver.reset();
publisher.publish(TOPIC_FOR_INPUT, "4".getBytes());
// describedWait(1, "Print latest attributes");
// logger.info("latest attributes = {}", receiver.latestAttributes);
describedWait(1, "Disconnect aNoDep");
// success = aWithNoDependency.disconnectInput(TOPIC_URI_FOR_INPUT);
// logger.info("disconnect success: {}", success);
success = aWithNoDependency.disconnectInput(TOPIC_URI_FOR_INPUT);
logger.info("disconnect success: {}", success);
describedWait(1, "Publish 6");
publisher.publish(TOPIC_FOR_INPUT, "6".getBytes());
......@@ -165,6 +165,57 @@ public class MinimalMain {
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) {
// if (node.trace().getReceiver() != null && node.trace().getReceiver() instanceof MinimalReceiver) {
// 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