1 |
1 |
2 /* @test |
2 /* @test |
3 * @summary Test JSON parser for a random json node tree |
3 * @summary Test JSON parser for a random json node tree |
4 * @modules java.management.rest/com.oracle.jmx.remote.rest.json |
4 * @library /test/lib |
5 * java.management.rest/com.oracle.jmx.remote.rest.json.parser |
5 * @modules jdk.management.rest/jdk.internal.management.remote.rest.json |
|
6 * jdk.management.rest/jdk.internal.management.remote.rest.json.parser |
6 * @build JsonParserTest |
7 * @build JsonParserTest |
7 * @run main JsonParserTest |
8 * @run main JsonParserTest |
8 */ |
9 */ |
9 |
10 |
10 import com.oracle.jmx.remote.rest.json.parser.JSONParser; |
11 import jdk.internal.management.remote.rest.json.JSONElement; |
11 import com.oracle.jmx.remote.rest.json.parser.ParseException; |
12 import jdk.internal.management.remote.rest.json.parser.JSONParser; |
|
13 import jdk.internal.management.remote.rest.json.parser.ParseException; |
12 |
14 |
13 import java.util.*; |
15 import java.util.*; |
14 |
16 |
15 /** |
17 /** |
16 * Below class tests JSON parser for a randomly generated JSON string. |
18 * Thisclass tests the JSON parser for a randomly generated JSON string. |
17 * The Json string is generated by converting a randomly generated tree into a string |
19 * Json strings are generated by walking a randomly generated tree of JSON Nodes. |
18 * Each node in the tree is either a json Object, array or a primitive. |
20 * Each node in the tree is either a json Object, an array or a primitive. |
19 * Primitive node generates string, number, boolean or null as a string. |
21 * Primitive node generates string, number, boolean or null as a string. |
20 * Json Number is generated according to the syntax graph as in json.org |
22 * Json Number is generated according to the syntax graph as specified in json.org |
21 * Json string is generated along with all the control characters, and by escaping |
23 * Json string is generated inclusive of all the control characters. |
22 * only backslash and double quote characters. |
24 * Only backslash and double quote characters are escaped via backslash. |
23 */ |
25 */ |
24 public class JsonParserTest { |
26 public class JsonParserTest { |
25 |
27 |
26 static final Random RANDOM = new Random(System.currentTimeMillis()); |
28 static final Random RANDOM = jdk.test.lib.Utils.getRandomInstance(); |
27 static int maxChildrenPerNode; |
29 static int maxChildrenPerNode; |
28 |
30 |
29 public static void main(String[] args) throws ParseException { |
31 public static void main(String[] args) throws ParseException { |
30 |
32 |
31 for(int i=0; i<100; i++) { |
33 for(int i=0; i<100; i++) { |
38 } else { |
40 } else { |
39 node = JsonNodeGenerator.ObjectGenerator.generate(totalNodes); |
41 node = JsonNodeGenerator.ObjectGenerator.generate(totalNodes); |
40 } |
42 } |
41 String str = node.toJsonString(); |
43 String str = node.toJsonString(); |
42 JSONParser parser = new JSONParser(str); |
44 JSONParser parser = new JSONParser(str); |
43 com.oracle.jmx.remote.rest.json.JSONElement parse = parser.parse(); |
45 JSONElement parse = parser.parse(); |
44 parse.toJsonString(); |
46 parse.toJsonString(); |
45 System.out.println("Finished iteration : " + i + ", Node count :" + totalNodes); |
47 System.out.println("Finished iteration : " + i + ", Node count :" + totalNodes); |
46 } |
48 } |
47 } |
49 } |
48 } |
50 } |