1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.yaml.snakeyaml.stress;
18
19 import java.io.IOException;
20
21 import junit.framework.Test;
22 import junit.framework.TestCase;
23 import junit.framework.TestSuite;
24
25 import org.yaml.snakeyaml.Invoice;
26 import org.yaml.snakeyaml.Util;
27 import org.yaml.snakeyaml.Yaml;
28 import org.yaml.snakeyaml.constructor.Constructor;
29
30 public class StressTest extends TestCase {
31 String doc;
32
33 public static void main(String args[]) {
34 junit.textui.TestRunner.run(suite());
35 }
36
37 public static Test suite() {
38 return new TestSuite(StressTest.class);
39 }
40
41 public void setUp() throws IOException {
42 doc = Util.getLocalResource("specification/example2_27.yaml");
43 }
44
45 public void testPerformance() throws IOException {
46 long time1 = System.nanoTime();
47 new Yaml(new Constructor(Invoice.class));
48 long time2 = System.nanoTime();
49 float duration = (time2 - time1) / 1000000;
50 System.out.println("Init was " + duration + " ms.");
51
52 Yaml loader = new Yaml();
53 time1 = System.nanoTime();
54 loader.loadAs(doc, Invoice.class);
55 time2 = System.nanoTime();
56 duration = (time2 - time1) / 1000000;
57 System.out.println("\nSingle load was " + duration + " ms.");
58
59 loader = new Yaml();
60 int[] range = new int[] { 1000, 2000
61 System.out.println("\nOne instance.");
62 for (int number : range) {
63 time1 = System.nanoTime();
64 for (int i = 0; i < number; i++) {
65 loader.loadAs(doc, Invoice.class);
66 }
67 time2 = System.nanoTime();
68 duration = ((time2 - time1) / 1000000) / (float) number;
69 System.out.println("Duration for r=" + number + " was " + duration + " ms/load.");
70
71 if (duration > 3) {
72 System.err.println("!!!!!! Too long. Expected <1 but was " + duration);
73 }
74
75 }
76
77 System.out.println("\nMany instances.");
78 for (int number : range) {
79 time1 = System.nanoTime();
80 for (int i = 0; i < number; i++) {
81 loader = new Yaml();
82 loader.loadAs(doc, Invoice.class);
83 }
84 time2 = System.nanoTime();
85 duration = ((time2 - time1) / 1000000) / (float) number;
86 System.out.println("Duration for r=" + number + " was " + duration + " ms/load.");
87
88 if (duration > 3) {
89 System.err.println("!!!!!! Too long. Expected <1 but was " + duration);
90 }
91
92 }
93 }
94 }