1 package org.apache.turbine.pipeline;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 import static org.junit.Assert.assertEquals;
25
26 import java.io.StringWriter;
27
28 import org.junit.Ignore;
29 import org.junit.Test;
30
31
32
33
34
35
36
37 public class PipelineTest
38 {
39 private final static int THREADS = 100;
40 private final static int LOOPS = 10000;
41
42
43
44
45 @Test public void testPipeline() throws Exception
46 {
47
48
49 StringWriter writer = new StringWriter();
50 Pipeline pipeline = new TurbinePipeline();
51
52 SimpleValve valve = new SimpleValve();
53 valve.setWriter(writer);
54 valve.setValue("foo");
55 pipeline.addValve(valve);
56 valve = new SimpleValve();
57 valve.setWriter(writer);
58 valve.setValue("bar");
59 pipeline.addValve(valve);
60
61 pipeline.invoke(new DefaultPipelineData());
62
63 assertEquals("foobar", writer.toString());
64 }
65
66
67
68
69 @Ignore("For performance tests only") @Test public void testPipelinePerformance() throws Exception
70 {
71 StringWriter writer = new StringWriter();
72 Pipeline pipeline = new TurbinePipeline();
73
74 SimpleValve valve = new SimpleValve();
75 valve.setWriter(writer);
76 valve.setValue("foo");
77 pipeline.addValve(valve);
78 valve = new SimpleValve();
79 valve.setWriter(writer);
80 valve.setValue("bar");
81 pipeline.addValve(valve);
82
83 Worker[] worker = new Worker[THREADS];
84 long startTime = System.currentTimeMillis();
85
86 for (int i = 0; i < THREADS; i++)
87 {
88 worker[i] = new Worker(pipeline);
89 worker[i].start();
90 }
91
92 for (int i = 0; i < THREADS; i++)
93 {
94 worker[i].join();
95 }
96
97 System.out.println(System.currentTimeMillis() - startTime);
98 }
99
100
101
102
103 protected class Worker extends Thread
104 {
105 Pipeline pipeline;
106
107
108
109
110
111
112 public Worker(Pipeline pipeline)
113 {
114 super();
115 this.pipeline = pipeline;
116 }
117
118 @Override
119 public void run()
120 {
121 PipelineData pd = new DefaultPipelineData();
122
123 for (int idx = 0; idx < LOOPS; idx++)
124 {
125 try
126 {
127 pipeline.invoke(pd);
128 }
129 catch (Exception e)
130 {
131 e.printStackTrace();
132 }
133 }
134 }
135 }
136 }