From e5533fce3774f5209b201cfa7a2464f7451e1135 Mon Sep 17 00:00:00 2001 From: Anders Blomdell <anders.blomdell@control.lth.se> Date: Mon, 13 May 2013 20:50:55 +0200 Subject: [PATCH] Added java to tests --- test/Makefile | 18 ++++++--- test/relay_gen_java.py | 84 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 5 deletions(-) create mode 100755 test/relay_gen_java.py diff --git a/test/Makefile b/test/Makefile index f9882e9..4133a65 100644 --- a/test/Makefile +++ b/test/Makefile @@ -11,17 +11,18 @@ clean: rm -rf gen .PHONY: test_% -test_%: gen/%/c_relay \ - gen/%/cs_code.cs \ +test_%: gen/%/signatures.py \ + gen/%/c_relay \ gen/%/cs_relay.exe \ - gen/%/signatures.py \ + gen/%/java_relay.class \ gen/%/java_code PYTHONPATH=../lib/python ./test_encoder_decoder.py \ --signatures=gen/$*/signatures.py \ --test /bin/tee gen/$*/testdata \ --test gen/$*/c_relay /dev/stdin /dev/stdout \ - --test mono gen/$*/cs_relay.exe /dev/stdin /dev/stdout - + --test mono gen/$*/cs_relay.exe /dev/stdin /dev/stdout \ + --test java \\-cp gen/$*:../lib/java/labcomm.jar java_relay \ + /dev/stdin /dev/stdout .PRECIOUS: gen/%/ gen/%/: mkdir -p $@ @@ -77,3 +78,10 @@ gen/%/java_code: %.lc | gen/%/ mkdir -p $@ $(LABCOMM) --java=$@ $< +.PRECIOUS: gen/%/java_relay.java +gen/%/java_relay.java: gen/%/typeinfo relay_gen_java.py Makefile + ./relay_gen_java.py $< > $@ + +.PRECIOUS: gen/%/java_relay.class +gen/%/java_relay.class: gen/%/java_relay.java gen/%/java_code Makefile + javac -d gen/$* -cp ../lib/java/labcomm.jar:gen/$*/java_code $< diff --git a/test/relay_gen_java.py b/test/relay_gen_java.py new file mode 100755 index 0000000..9c0869b --- /dev/null +++ b/test/relay_gen_java.py @@ -0,0 +1,84 @@ +#!/usr/bin/python + +import re +import sys + +def split_match(pattern, multiline): + def match(s): + m = re.match(pattern, s) + if m: + return m.group(1) + pass + return filter(lambda s: s != None, map(match, multiline.split('\n'))) + + +if __name__ == '__main__': + f = open(sys.argv[1]) + sample = [] + for l in map(lambda s: s.strip(), f): + lang,kind,func,arg = l[1:].split(l[0]) + if lang == 'Java' and kind == 'sample': + sample.append((func, arg)) + pass + pass + result = [] + result.extend(split_match('^[^|]*\|(.*)$', """ + |import java.io.FileInputStream; + |import java.io.FileOutputStream; + |import java.io.IOException; + |import se.lth.control.labcomm.LabCommDecoderChannel; + |import se.lth.control.labcomm.LabCommEncoderChannel; + | + |public class java_relay implements + """)) + for func,arg in sample[0:-1]: + result.append(' %s.Handler,' % func) + pass + result.append(' %s.Handler' % sample[-1][0]) + result.extend(split_match('^[^|]*\|(.*)$', """ + |{ + | LabCommEncoderChannel encoder; + """)) + for func,arg in sample: + if arg == 'void': + result.extend(split_match('^[^|]*\|(.*)$', """ + | public void handle_%(func)s() throws IOException { + | %(func)s.encode(encoder); + | } + """ % { 'func': func})) + pass + else: + result.extend(split_match('^[^|]*\|(.*)$', """ + | public void handle_%(func)s(%(arg)s data) throws IOException { + | %(func)s.encode(encoder, data); + | } + """ % { 'func': func, 'arg': arg})) + pass + pass + result.extend(split_match('^[^|]*\|(.*)$', """ + | public java_relay(String InName, String OutName) throws Exception { + | FileInputStream InFile = new FileInputStream(InName); + | LabCommDecoderChannel d = new LabCommDecoderChannel(InFile); + | FileOutputStream OutFile = new FileOutputStream(OutName); + | encoder = new LabCommEncoderChannel(OutFile); + | + """)) + for func,arg in sample: + result.append(' %s.register(d, this);' % func) + pass + for func,arg in sample: + result.append(' %s.register(encoder);' % func) + pass + result.extend(split_match('^[^|]*\|(.*)$', """ + | try { + | d.run(); + | } catch (java.io.EOFException e) { + | } + | } + | public static void main(String[] arg) throws Exception { + | new java_relay(arg[0], arg[1]); + | } + |} + """)) + print "\n".join(result) + pass -- GitLab