THRIFT-3360 Improve cross test servers and clients further
This closes #629
diff --git a/lib/java/test/org/apache/thrift/server/ServerTestBase.java b/lib/java/test/org/apache/thrift/server/ServerTestBase.java
index b95779b..bc1fb96 100755
--- a/lib/java/test/org/apache/thrift/server/ServerTestBase.java
+++ b/lib/java/test/org/apache/thrift/server/ServerTestBase.java
@@ -193,31 +193,11 @@
public Map<Long, Map<Numberz,Insanity>> testInsanity(Insanity argument) {
System.out.print("testInsanity()\n");
- Xtruct hello = new Xtruct();
- hello.string_thing = "Hello2";
- hello.byte_thing = 2;
- hello.i32_thing = 2;
- hello.i64_thing = 2;
-
- Xtruct goodbye = new Xtruct();
- goodbye.string_thing = "Goodbye4";
- goodbye.byte_thing = (byte)4;
- goodbye.i32_thing = 4;
- goodbye.i64_thing = (long)4;
-
- Insanity crazy = new Insanity();
- crazy.userMap = new HashMap<Numberz, Long>();
- crazy.userMap.put(Numberz.EIGHT, (long)8);
- crazy.userMap.put(Numberz.FIVE, (long)5);
- crazy.xtructs = new ArrayList<Xtruct>();
- crazy.xtructs.add(goodbye);
- crazy.xtructs.add(hello);
-
HashMap<Numberz,Insanity> first_map = new HashMap<Numberz, Insanity>();
HashMap<Numberz,Insanity> second_map = new HashMap<Numberz, Insanity>();;
- first_map.put(Numberz.TWO, crazy);
- first_map.put(Numberz.THREE, crazy);
+ first_map.put(Numberz.TWO, argument);
+ first_map.put(Numberz.THREE, argument);
Insanity looney = new Insanity();
second_map.put(Numberz.SIX, looney);
diff --git a/lib/java/test/org/apache/thrift/test/TestClient.java b/lib/java/test/org/apache/thrift/test/TestClient.java
index b54461e..aca19c4 100644
--- a/lib/java/test/org/apache/thrift/test/TestClient.java
+++ b/lib/java/test/org/apache/thrift/test/TestClient.java
@@ -39,6 +39,7 @@
import org.apache.thrift.protocol.TCompactProtocol;
import org.apache.thrift.protocol.TSimpleJSONProtocol;
+import java.nio.ByteBuffer;
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
@@ -53,6 +54,13 @@
*
*/
public class TestClient {
+
+ private static int ERR_BASETYPES = 1;
+ private static int ERR_STRUCTS = 2;
+ private static int ERR_CONTAINERS = 4;
+ private static int ERR_EXCEPTIONS = 8;
+ private static int ERR_UNKNOWN = 64;
+
public static void main(String [] args) {
String host = "localhost";
int port = 9090;
@@ -69,8 +77,8 @@
host = args[i].split("=")[1];
host.trim();
} else if (args[i].startsWith("--port")) {
- port = Integer.valueOf(args[i].split("=")[1]);
- } else if (args[i].startsWith("--n") ||
+ port = Integer.valueOf(args[i].split("=")[1]);
+ } else if (args[i].startsWith("--n") ||
args[i].startsWith("--testloops")){
numTests = Integer.valueOf(args[i].split("=")[1]);
} else if (args[i].equals("--timeout")) {
@@ -85,7 +93,7 @@
ssl = true;
} else if (args[i].equals("--help")) {
System.out.println("Allowed options:");
- System.out.println(" --help\t\t\tProduce help message");
+ System.out.println(" --help\t\t\tProduce help message");
System.out.println(" --host=arg (=" + host + ")\tHost to connect");
System.out.println(" --port=arg (=" + port + ")\tPort number to connect");
System.out.println(" --transport=arg (=" + transport_type + ")\n\t\t\t\tTransport: buffered, framed, fastframed, http");
@@ -97,7 +105,7 @@
}
} catch (Exception x) {
System.err.println("Can not parse arguments! See --help");
- System.exit(1);
+ System.exit(ERR_UNKNOWN);
}
try {
@@ -105,7 +113,7 @@
} else if (protocol_type.equals("compact")) {
} else if (protocol_type.equals("json")) {
} else {
- throw new Exception("Unknown protocol type! " + protocol_type);
+ throw new Exception("Unknown protocol type! " + protocol_type);
}
if (transport_type.equals("buffered")) {
} else if (transport_type.equals("framed")) {
@@ -119,7 +127,7 @@
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
- System.exit(1);
+ System.exit(ERR_UNKNOWN);
}
TTransport transport = null;
@@ -146,7 +154,7 @@
}
} catch (Exception x) {
x.printStackTrace();
- System.exit(1);
+ System.exit(ERR_UNKNOWN);
}
TProtocol tProtocol = null;
@@ -166,7 +174,7 @@
long timeMax = 0;
long timeTot = 0;
- int failCount = 0;
+ int returnCode = 0;
for (int test = 0; test < numTests; ++test) {
try {
/**
@@ -180,7 +188,7 @@
} catch (TTransportException ttx) {
ttx.printStackTrace();
System.out.println("Connect failed: " + ttx.getMessage());
- System.exit(1);
+ System.exit(ERR_UNKNOWN);
}
}
@@ -195,7 +203,7 @@
System.out.print(" = void\n");
} catch (TApplicationException tax) {
tax.printStackTrace();
- failCount++;
+ returnCode |= ERR_BASETYPES;
}
/**
@@ -205,8 +213,8 @@
String s = testClient.testString("Test");
System.out.print(" = \"" + s + "\"\n");
if (!s.equals("Test")) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_BASETYPES;
+ System.out.println("*** FAILURE ***\n");
}
/**
@@ -216,8 +224,8 @@
byte i8 = testClient.testByte((byte)1);
System.out.print(" = " + i8 + "\n");
if (i8 != 1) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_BASETYPES;
+ System.out.println("*** FAILURE ***\n");
}
/**
@@ -227,8 +235,8 @@
int i32 = testClient.testI32(-1);
System.out.print(" = " + i32 + "\n");
if (i32 != -1) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_BASETYPES;
+ System.out.println("*** FAILURE ***\n");
}
/**
@@ -238,8 +246,8 @@
long i64 = testClient.testI64(-34359738368L);
System.out.print(" = " + i64 + "\n");
if (i64 != -34359738368L) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_BASETYPES;
+ System.out.println("*** FAILURE ***\n");
}
/**
@@ -249,14 +257,40 @@
double dub = testClient.testDouble(-5.325098235);
System.out.print(" = " + dub + "\n");
if (Math.abs(dub - (-5.325098235)) > 0.001) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_BASETYPES;
+ System.out.println("*** FAILURE ***\n");
}
/**
* BINARY TEST
*/
- System.out.print("TODO: testBinary( ... )");
+ try {
+ System.out.print("testBinary(-128...127) = ");
+ byte[] data = new byte[] {-128, -127, -126, -125, -124, -123, -122, -121, -120, -119, -118, -117, -116, -115, -114, -113, -112, -111, -110, -109, -108, -107, -106, -105, -104, -103, -102, -101, -100, -99, -98, -97, -96, -95, -94, -93, -92, -91, -90, -89, -88, -87, -86, -85, -84, -83, -82, -81, -80, -79, -78, -77, -76, -75, -74, -73, -72, -71, -70, -69, -68, -67, -66, -65, -64, -63, -62, -61, -60, -59, -58, -57, -56, -55, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28, -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -14, -13, -12, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127};
+ ByteBuffer bin = testClient.testBinary(ByteBuffer.wrap(data));
+ bin.mark();
+ byte[] bytes = new byte[bin.limit() - bin.position()];
+ bin.get(bytes);
+ bin.reset();
+ System.out.print("{");
+ boolean first = true;
+ for (int i = 0; i < bytes.length; ++i) {
+ if (first)
+ first = false;
+ else
+ System.out.print(", ");
+ System.out.print(bytes[i]);
+ }
+ System.out.println("}");
+ if (!ByteBuffer.wrap(data).equals(bin)) {
+ returnCode |= ERR_BASETYPES;
+ System.out.println("*** FAILURE ***\n");
+ }
+ } catch (Exception ex) {
+ returnCode |= ERR_BASETYPES;
+ System.out.println("\n*** FAILURE ***\n");
+ ex.printStackTrace(System.out);
+ }
/**
* STRUCT TEST
@@ -268,14 +302,14 @@
out.i32_thing = -3;
out.i64_thing = -5;
Xtruct in = testClient.testStruct(out);
- System.out.print(" = {" + "\"" +
- in.string_thing + "\"," +
- in.byte_thing + ", " +
- in.i32_thing + ", " +
+ System.out.print(" = {" + "\"" +
+ in.string_thing + "\"," +
+ in.byte_thing + ", " +
+ in.i32_thing + ", " +
in.i64_thing + "}\n");
if (!in.equals(out)) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_STRUCTS;
+ System.out.println("*** FAILURE ***\n");
}
/**
@@ -288,15 +322,15 @@
out2.i32_thing = 5;
Xtruct2 in2 = testClient.testNest(out2);
in = in2.struct_thing;
- System.out.print(" = {" + in2.byte_thing + ", {" + "\"" +
- in.string_thing + "\", " +
+ System.out.print(" = {" + in2.byte_thing + ", {" + "\"" +
+ in.string_thing + "\", " +
in.byte_thing + ", " +
in.i32_thing + ", " +
in.i64_thing + "}, " +
in2.i32_thing + "}\n");
if (!in2.equals(out2)) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_STRUCTS;
+ System.out.println("*** FAILURE ***\n");
}
/**
@@ -330,14 +364,48 @@
}
System.out.print("}\n");
if (!mapout.equals(mapin)) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_CONTAINERS;
+ System.out.println("*** FAILURE ***\n");
}
/**
* STRING MAP TEST
- * missing
*/
+ try {
+ Map<String, String> smapout = new HashMap<String, String>();
+ smapout.put("a", "2");
+ smapout.put("b", "blah");
+ smapout.put("some", "thing");
+ for (String key : smapout.keySet()) {
+ if (first) {
+ first = false;
+ } else {
+ System.out.print(", ");
+ }
+ System.out.print(key + " => " + smapout.get(key));
+ }
+ System.out.print("})");
+ Map<String, String> smapin = testClient.testStringMap(smapout);
+ System.out.print(" = {");
+ first = true;
+ for (String key : smapin.keySet()) {
+ if (first) {
+ first = false;
+ } else {
+ System.out.print(", ");
+ }
+ System.out.print(key + " => " + smapout.get(key));
+ }
+ System.out.print("}\n");
+ if (!smapout.equals(smapin)) {
+ returnCode |= ERR_CONTAINERS;
+ System.out.println("*** FAILURE ***\n");
+ }
+ } catch (Exception ex) {
+ returnCode |= ERR_CONTAINERS;
+ System.out.println("*** FAILURE ***\n");
+ ex.printStackTrace(System.out);
+ }
/**
* SET TEST
@@ -370,8 +438,8 @@
}
System.out.print("}\n");
if (!setout.equals(setin)) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_CONTAINERS;
+ System.out.println("*** FAILURE ***\n");
}
/**
@@ -405,8 +473,8 @@
}
System.out.print("}\n");
if (!listout.equals(listin)) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_CONTAINERS;
+ System.out.println("*** FAILURE ***\n");
}
/**
@@ -416,40 +484,40 @@
Numberz ret = testClient.testEnum(Numberz.ONE);
System.out.print(" = " + ret + "\n");
if (ret != Numberz.ONE) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_STRUCTS;
+ System.out.println("*** FAILURE ***\n");
}
System.out.print("testEnum(TWO)");
ret = testClient.testEnum(Numberz.TWO);
System.out.print(" = " + ret + "\n");
if (ret != Numberz.TWO) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_STRUCTS;
+ System.out.println("*** FAILURE ***\n");
}
System.out.print("testEnum(THREE)");
ret = testClient.testEnum(Numberz.THREE);
System.out.print(" = " + ret + "\n");
if (ret != Numberz.THREE) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_STRUCTS;
+ System.out.println("*** FAILURE ***\n");
}
System.out.print("testEnum(FIVE)");
ret = testClient.testEnum(Numberz.FIVE);
System.out.print(" = " + ret + "\n");
if (ret != Numberz.FIVE) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_STRUCTS;
+ System.out.println("*** FAILURE ***\n");
}
System.out.print("testEnum(EIGHT)");
ret = testClient.testEnum(Numberz.EIGHT);
System.out.print(" = " + ret + "\n");
if (ret != Numberz.EIGHT) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_STRUCTS;
+ System.out.println("*** FAILURE ***\n");
}
/**
@@ -459,8 +527,8 @@
long uid = testClient.testTypedef(309858235082523L);
System.out.print(" = " + uid + "\n");
if (uid != 309858235082523L) {
- failCount++;
- System.out.println("FAILURE\n");
+ returnCode |= ERR_BASETYPES;
+ System.out.println("*** FAILURE ***\n");
}
/**
@@ -479,121 +547,174 @@
System.out.print("}, ");
}
System.out.print("}\n");
+ if (mm.size() != 2 || !mm.containsKey(4) || !mm.containsKey(-4)) {
+ returnCode |= ERR_CONTAINERS;
+ System.out.println("*** FAILURE ***\n");
+ } else {
+ Map<Integer, Integer> m1 = mm.get(4);
+ Map<Integer, Integer> m2 = mm.get(-4);
+ if (m1.get(1) != 1 || m1.get(2) != 2 || m1.get(3) != 3 || m1.get(4) != 4 ||
+ m2.get(-1) != -1 || m2.get(-2) != -2 || m2.get(-3) != -3 || m2.get(-4) != -4) {
+ returnCode |= ERR_CONTAINERS;
+ System.out.println("*** FAILURE ***\n");
+ }
+ }
/**
* INSANITY TEST
*/
- insane = new Insanity();
- insane.userMap = new HashMap<Numberz, Long>();
- insane.userMap.put(Numberz.FIVE, (long)5000);
- Xtruct truck = new Xtruct();
- truck.string_thing = "Truck";
- truck.byte_thing = (byte)8;
- truck.i32_thing = 8;
- truck.i64_thing = 8;
- insane.xtructs = new ArrayList<Xtruct>();
- insane.xtructs.add(truck);
- System.out.print("testInsanity()");
- Map<Long,Map<Numberz,Insanity>> whoa =
- testClient.testInsanity(insane);
- System.out.print(" = {");
- for (long key : whoa.keySet()) {
- Map<Numberz,Insanity> val = whoa.get(key);
- System.out.print(key + " => {");
- for (Numberz k2 : val.keySet()) {
- Insanity v2 = val.get(k2);
- System.out.print(k2 + " => {");
- Map<Numberz, Long> userMap = v2.userMap;
- System.out.print("{");
- if (userMap != null) {
- for (Numberz k3 : userMap.keySet()) {
- System.out.print(k3 + " => " + userMap.get(k3) + ", ");
+ boolean insanityFailed = true;
+ try {
+ Xtruct hello = new Xtruct();
+ hello.string_thing = "Hello2";
+ hello.byte_thing = 2;
+ hello.i32_thing = 2;
+ hello.i64_thing = 2;
+
+ Xtruct goodbye = new Xtruct();
+ goodbye.string_thing = "Goodbye4";
+ goodbye.byte_thing = (byte)4;
+ goodbye.i32_thing = 4;
+ goodbye.i64_thing = (long)4;
+
+ insane.userMap = new HashMap<Numberz, Long>();
+ insane.userMap.put(Numberz.EIGHT, (long)8);
+ insane.userMap.put(Numberz.FIVE, (long)5);
+ insane.xtructs = new ArrayList<Xtruct>();
+ insane.xtructs.add(goodbye);
+ insane.xtructs.add(hello);
+
+ System.out.print("testInsanity()");
+ Map<Long,Map<Numberz,Insanity>> whoa =
+ testClient.testInsanity(insane);
+ System.out.print(" = {");
+ for (long key : whoa.keySet()) {
+ Map<Numberz,Insanity> val = whoa.get(key);
+ System.out.print(key + " => {");
+
+ for (Numberz k2 : val.keySet()) {
+ Insanity v2 = val.get(k2);
+ System.out.print(k2 + " => {");
+ Map<Numberz, Long> userMap = v2.userMap;
+ System.out.print("{");
+ if (userMap != null) {
+ for (Numberz k3 : userMap.keySet()) {
+ System.out.print(k3 + " => " + userMap.get(k3) + ", ");
+ }
}
- }
- System.out.print("}, ");
+ System.out.print("}, ");
- List<Xtruct> xtructs = v2.xtructs;
- System.out.print("{");
- if (xtructs != null) {
- for (Xtruct x : xtructs) {
- System.out.print("{" + "\"" + x.string_thing + "\", " + x.byte_thing + ", " + x.i32_thing + ", "+ x.i64_thing + "}, ");
+ List<Xtruct> xtructs = v2.xtructs;
+ System.out.print("{");
+ if (xtructs != null) {
+ for (Xtruct x : xtructs) {
+ System.out.print("{" + "\"" + x.string_thing + "\", " + x.byte_thing + ", " + x.i32_thing + ", "+ x.i64_thing + "}, ");
+ }
}
- }
- System.out.print("}");
+ System.out.print("}");
+ System.out.print("}, ");
+ }
System.out.print("}, ");
}
- System.out.print("}, ");
+ System.out.print("}\n");
+ if (whoa.size() == 2 && whoa.containsKey(1L) && whoa.containsKey(2L)) {
+ Map<Numberz, Insanity> first_map = whoa.get(1L);
+ Map<Numberz, Insanity> second_map = whoa.get(2L);
+ if (first_map.size() == 2 &&
+ first_map.containsKey(Numberz.TWO) &&
+ first_map.containsKey(Numberz.THREE) &&
+ second_map.size() == 1 &&
+ second_map.containsKey(Numberz.SIX) &&
+ insane.equals(first_map.get(Numberz.TWO)) &&
+ insane.equals(first_map.get(Numberz.THREE))) {
+ Insanity six =second_map.get(Numberz.SIX);
+ // Cannot use "new Insanity().equals(six)" because as of now, struct/container
+ // fields with default requiredness have isset=false for local instances and yet
+ // received empty values from other languages like C++ have isset=true .
+ if (six.getUserMapSize() == 0 && six.getXtructsSize() == 0) {
+ // OK
+ insanityFailed = false;
+ }
+ }
+ }
+ } catch (Exception ex) {
+ returnCode |= ERR_STRUCTS;
+ System.out.println("*** FAILURE ***\n");
+ ex.printStackTrace(System.out);
+ insanityFailed = false;
}
- System.out.print("}\n");
+ if (insanityFailed) {
+ returnCode |= ERR_STRUCTS;
+ System.out.println("*** FAILURE ***\n");
+ }
-
/**
* EXECPTION TEST
*/
try {
System.out.print("testClient.testException(\"Xception\") =>");
testClient.testException("Xception");
- System.out.print(" void\nFAILURE\n");
- failCount++;
+ System.out.print(" void\n*** FAILURE ***\n");
+ returnCode |= ERR_EXCEPTIONS;
} catch(Xception e) {
System.out.printf(" {%d, \"%s\"}\n", e.errorCode, e.message);
}
-
+
try {
System.out.print("testClient.testException(\"TException\") =>");
testClient.testException("TException");
- System.out.print(" void\nFAILURE\n");
- failCount++;
+ System.out.print(" void\n*** FAILURE ***\n");
+ returnCode |= ERR_EXCEPTIONS;
} catch(TException e) {
System.out.printf(" {\"%s\"}\n", e.getMessage());
}
-
+
try {
System.out.print("testClient.testException(\"success\") =>");
testClient.testException("success");
System.out.print(" void\n");
}catch(Exception e) {
- System.out.printf(" exception\nFAILURE\n");
- failCount++;
+ System.out.printf(" exception\n*** FAILURE ***\n");
+ returnCode |= ERR_EXCEPTIONS;
}
-
-
+
+
/**
* MULTI EXCEPTION TEST
*/
-
+
try {
System.out.printf("testClient.testMultiException(\"Xception\", \"test 1\") =>");
testClient.testMultiException("Xception", "test 1");
- System.out.print(" result\nFAILURE\n");
- failCount++;
+ System.out.print(" result\n*** FAILURE ***\n");
+ returnCode |= ERR_EXCEPTIONS;
} catch(Xception e) {
System.out.printf(" {%d, \"%s\"}\n", e.errorCode, e.message);
}
-
+
try {
System.out.printf("testClient.testMultiException(\"Xception2\", \"test 2\") =>");
testClient.testMultiException("Xception2", "test 2");
- System.out.print(" result\nFAILURE\n");
- failCount++;
+ System.out.print(" result\n*** FAILURE ***\n");
+ returnCode |= ERR_EXCEPTIONS;
} catch(Xception2 e) {
System.out.printf(" {%d, {\"%s\"}}\n", e.errorCode, e.struct_thing.string_thing);
}
-
+
try {
System.out.print("testClient.testMultiException(\"success\", \"test 3\") =>");
Xtruct result;
result = testClient.testMultiException("success", "test 3");
System.out.printf(" {{\"%s\"}}\n", result.string_thing);
} catch(Exception e) {
- System.out.printf(" exception\nFAILURE\n");
- failCount++;
+ System.out.printf(" exception\n*** FAILURE ***\n");
+ returnCode |= ERR_EXCEPTIONS;
}
-
+
/**
* ONEWAY TEST
*/
@@ -603,9 +724,10 @@
long onewayElapsedMillis = (System.nanoTime() - startOneway) / 1000000;
if (onewayElapsedMillis > 200) {
System.out.println("Oneway test failed: took " +
- Long.toString(onewayElapsedMillis) +
- "ms");
- failCount++;
+ Long.toString(onewayElapsedMillis) +
+ "ms");
+ System.out.printf("*** FAILURE ***\n");
+ returnCode |= ERR_BASETYPES;
} else {
System.out.println("Success - took " +
Long.toString(onewayElapsedMillis) +
@@ -628,8 +750,9 @@
transport.close();
} catch (Exception x) {
+ System.out.printf("*** FAILURE ***\n");
x.printStackTrace();
- failCount++;
+ returnCode |= ERR_UNKNOWN;
}
}
@@ -641,13 +764,14 @@
try {
String json = (new TSerializer(new TSimpleJSONProtocol.Factory())).toString(insane);
- System.out.println("\nFor good meausre here is some JSON:\n" + json);
+ System.out.println("\nSample TSimpleJSONProtocol output:\n" + json);
} catch (TException x) {
+ System.out.println("*** FAILURE ***");
x.printStackTrace();
- System.exit(1);
+ returnCode |= ERR_BASETYPES;
}
- System.exit(failCount);
+ System.exit(returnCode);
}
}
diff --git a/lib/js/test/test.js b/lib/js/test/test.js
index ee14612..0c7d2cb 100755
--- a/lib/js/test/test.js
+++ b/lib/js/test/test.js
@@ -303,45 +303,30 @@
module("Insanity");
+ var crazy = {
+ "userMap":{ "5":5, "8":8 },
+ "xtructs":[{
+ "string_thing":"Goodbye4",
+ "byte_thing":4,
+ "i32_thing":4,
+ "i64_thing":4
+ },
+ {
+ "string_thing":"Hello2",
+ "byte_thing":2,
+ "i32_thing":2,
+ "i64_thing":2
+ }]
+ };
test("testInsanity", function() {
var insanity = {
"1":{
- "2":{
- "userMap":{ "5":5, "8":8 },
- "xtructs":[{
- "string_thing":"Goodbye4",
- "byte_thing":4,
- "i32_thing":4,
- "i64_thing":4
- },
- {
- "string_thing":"Hello2",
- "byte_thing":2,
- "i32_thing":2,
- "i64_thing":2
- }
- ]
- },
- "3":{
- "userMap":{ "5":5, "8":8 },
- "xtructs":[{
- "string_thing":"Goodbye4",
- "byte_thing":4,
- "i32_thing":4,
- "i64_thing":4
- },
- {
- "string_thing":"Hello2",
- "byte_thing":2,
- "i32_thing":2,
- "i64_thing":2
- }
- ]
- }
+ "2":crazy,
+ "3":crazy
},
"2":{ "6":{ "userMap":null, "xtructs":null } }
};
- var res = client.testInsanity(new ThriftTest.Insanity());
+ var res = client.testInsanity(new ThriftTest.Insanity(crazy));
ok(res, JSON.stringify(res));
ok(insanity, JSON.stringify(insanity));