diff --git a/java/org/servalproject/servald/ServalDTests.java b/java/org/servalproject/servald/ServalDTests.java new file mode 100644 index 00000000..43380862 --- /dev/null +++ b/java/org/servalproject/servald/ServalDTests.java @@ -0,0 +1,38 @@ +package org.servalproject.servald; + +import java.lang.reflect.*; +import java.util.Arrays; +import org.servalproject.servald.ServalD; +import org.servalproject.servald.ServalDResult; + +class ServalDTests +{ + public static void main(String[] args) + { + try { + Class cls = new Object() { }.getClass().getEnclosingClass(); + Method m = cls.getMethod(args[0], String[].class); + m.invoke(null, (Object) Arrays.copyOfRange(args, 1, args.length)); + } + catch (Exception e) { + e.printStackTrace(); + System.exit(1); + } + System.exit(0); + } + + public static void repeat(String[] args) + { + int repeat = Integer.decode(args[0]); + ServalD sdi = new ServalD(); + for (int i = 0; i != repeat; ++i) { + ServalDResult res = sdi.command(Arrays.copyOfRange(args, 1, args.length)); + System.out.print(res.status); + for (String s: res.outv) { + System.out.print(":"); + System.out.print(s); + } + System.out.println(""); + } + } +} diff --git a/tests/dna_jni b/tests/dna_jni index bb6aa916..59861778 100755 --- a/tests/dna_jni +++ b/tests/dna_jni @@ -36,6 +36,7 @@ compile_java_classes() { assert [ -r classes/org/servalproject/servald/ServalD.class ] assert [ -r classes/org/servalproject/servald/ServalDResult.class ] assert [ -r classes/org/servalproject/servald/ServalDReentranceError.class ] + assert [ -r classes/org/servalproject/servald/ServalDTests.class ] } # Make sure that the normal echo command-line works, without JNI. @@ -61,5 +62,11 @@ test_Delim() { assertStdoutIs 'Hello,:::world!:::' } -runTests "$@" +doc_Repeat="Serval JNI repeated calls in same process" +test_Repeat() { + executeOk java -classpath "$PWD/classes" org.servalproject.servald.ServalDTests repeat 50 echo 'Hello,' 'world!' + assertStdoutLineCount '==' 50 + assertStdoutGrep --matches=50 '^0:Hello,:world!$' +} +runTests "$@"