annotate test/sematest/TestSessionManager.java @ 502:49b689b17d06 default tip

merged TestEditor to REPEditor
author suika6039
date Tue, 21 Dec 2010 18:01:15 +0900
parents 5945266c970d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
189
d03e34861a26 *** empty log message ***
pin
parents:
diff changeset
1 package test.sematest;
d03e34861a26 *** empty log message ***
pin
parents:
diff changeset
2
192
6fb97c7a0b42 *** empty log message ***
pin
parents: 189
diff changeset
3 import java.io.IOException;
384
bcdf5476b8e4 restructured-version
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 382
diff changeset
4
189
d03e34861a26 *** empty log message ***
pin
parents:
diff changeset
5 import rep.SessionManager;
192
6fb97c7a0b42 *** empty log message ***
pin
parents: 189
diff changeset
6 import rep.channel.REPLogger;
189
d03e34861a26 *** empty log message ***
pin
parents:
diff changeset
7 import rep.channel.REPServerSocketChannel;
382
4b87f89b3afd REP Session Manager (Java version)
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 336
diff changeset
8 import rep.gui.SessionManagerEvent;
4b87f89b3afd REP Session Manager (Java version)
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 336
diff changeset
9 import rep.gui.SessionManagerGUI;
470
7f0d4e49eaf9 add assert
one
parents: 440
diff changeset
10 import test.Text;
193
311847db7429 *** empty log message ***
pin
parents: 192
diff changeset
11
189
d03e34861a26 *** empty log message ***
pin
parents:
diff changeset
12
d03e34861a26 *** empty log message ***
pin
parents:
diff changeset
13 public class TestSessionManager {
d03e34861a26 *** empty log message ***
pin
parents:
diff changeset
14
192
6fb97c7a0b42 *** empty log message ***
pin
parents: 189
diff changeset
15 static public REPLogger logger = REPLogger.singleton();
335
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
16 public int masterPort = 8766;
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
17 public String host = "localhost";
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
18 public SessionManager sessionManagers[];
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
19 public SessionManager slaveSessionManagers[];
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
20 public TestEditor editors[];
430
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
21 public Runnable finishTest;
189
d03e34861a26 *** empty log message ***
pin
parents:
diff changeset
22
301
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
23 /*
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
24 * All test is performed in localhost, so all session manager
438
146d91b61b36 minor fix
one
parents: 431
diff changeset
25 * should have different port number each other.
301
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
26 */
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
27
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
28 /*
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
29 * Test Pattern List
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
30 * Connect port for each editor
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
31 * Master/client flag for each editor
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
32 * Editor or slave session manager must be started by
303
41f05c8ff02b *** empty log message ***
kono
parents: 301
diff changeset
33 * master session managers using syncExec.
301
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
34 */
335
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
35 public int editorPort[] = {masterPort,masterPort,masterPort};
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
36 public boolean editorMaster[] = {true,false,false,false};
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
37 private SessionManagerEvent ev1[] = {
289
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
38 new SessionManagerEvent() {
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
39 // executed before first select();
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents: 332
diff changeset
40 public void exec(SessionManager manager) {
289
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
41 for(TestEditor editor:editors) {
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
42 editor.start();
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
43 }
292
975383c0548e *** empty log message ***
kono
parents: 291
diff changeset
44 int i = sessionManagers.length;
975383c0548e *** empty log message ***
kono
parents: 291
diff changeset
45 for(SessionManager slave:slaveSessionManagers) {
975383c0548e *** empty log message ***
kono
parents: 291
diff changeset
46 i = startSessionManager(slave,i,masterPort + i);
975383c0548e *** empty log message ***
kono
parents: 291
diff changeset
47 }
430
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
48 new Thread(finishTest).start();
289
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
49 }
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
50 }};
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
51
301
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
52 /*
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
53 * Create all editors, master session managers and slave session
303
41f05c8ff02b *** empty log message ***
kono
parents: 301
diff changeset
54 * managers with specified port. All instances are not started yet.
301
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
55 */
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
56
289
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
57 public TestSessionManager(int sm, int ss, int e) {
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
58 sessionManagers = new SessionManager[sm];
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
59 slaveSessionManagers = new SessionManager[ss];
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
60 editors = new TestEditor[e];
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
61 for(int i=0;i<sm;i++) {
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
62 sessionManagers[i] = new SessionManager();
236
2abd1dc12453 *** empty log message ***
pin
parents: 231
diff changeset
63 }
289
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
64 for(int i=0;i<ss;i++) {
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
65 slaveSessionManagers[i] = new SessionManager();
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
66 }
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
67 for(int i=0;i<e;i++) {
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
68 int port = editorPort[i%editorPort.length];
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
69 boolean master = editorMaster[i%editorMaster.length];
301
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
70 // TestEditor extends Thread
431
1bb59652d89c fixing merge...
one
parents: 430
diff changeset
71 editors[i] = new TestEditor("Editor",host,port,master);
289
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
72 }
236
2abd1dc12453 *** empty log message ***
pin
parents: 231
diff changeset
73 }
2abd1dc12453 *** empty log message ***
pin
parents: 231
diff changeset
74
301
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
75 /*
438
146d91b61b36 minor fix
one
parents: 431
diff changeset
76 * start session manager. sm.init(port,gui) is a mainloop, so
301
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
77 * we need Thread here.
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
78 */
415
648c676bf9df REPSimpleEditor
one
parents: 384
diff changeset
79 public int startSessionManager(final SessionManager sm,int i,int port) {
290
4b773ba03556 *** empty log message ***
kono
parents: 289
diff changeset
80 final SessionManagerGUI gui = new TestGUI(sm);
289
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
81 final int port1 = port;
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
82 logger.writeLog("TestSessionManager.startSessionManager() : start SessionManager");
303
41f05c8ff02b *** empty log message ***
kono
parents: 301
diff changeset
83 // syncExec does not wake selector, do this before run().
336
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
84 sm.setReceivePort(port1);
335
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
85 setSMEvent(sm,i);
289
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
86 Runnable start = new Runnable() {
313
0585fd2410b8 Single Insert Command worked.
kono
parents: 311
diff changeset
87 public void run() {
0585fd2410b8 Single Insert Command worked.
kono
parents: 311
diff changeset
88 try {
491
5945266c970d before unMergedCmds fix , deadlockTimer API
one
parents: 470
diff changeset
89 sm.setDeadlockTime(1000);
313
0585fd2410b8 Single Insert Command worked.
kono
parents: 311
diff changeset
90 sm.init(port1,gui);
0585fd2410b8 Single Insert Command worked.
kono
parents: 311
diff changeset
91 } catch (IOException e) {
0585fd2410b8 Single Insert Command worked.
kono
parents: 311
diff changeset
92 } catch (InterruptedException e) {
0585fd2410b8 Single Insert Command worked.
kono
parents: 311
diff changeset
93 }
289
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
94 }
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
95 };
336
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
96 new Thread(start).start();
289
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
97 return i+1;
189
d03e34861a26 *** empty log message ***
pin
parents:
diff changeset
98 }
d03e34861a26 *** empty log message ***
pin
parents:
diff changeset
99
310
511376c066db *** empty log message ***
kono
parents: 303
diff changeset
100
335
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
101 public void setSMEvent(SessionManager s,int i) {
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
102 if (i<ev1.length) {
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
103 s.syncExec(ev1[i]);
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
104 }
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
105 return ;
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
106 }
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
107
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents: 332
diff changeset
108 protected void startTest() {
310
511376c066db *** empty log message ***
kono
parents: 303
diff changeset
109 int i = 0;
511376c066db *** empty log message ***
kono
parents: 303
diff changeset
110 for(SessionManager master:sessionManagers) {
511376c066db *** empty log message ***
kono
parents: 303
diff changeset
111 i = startSessionManager(master,i, masterPort + i);
511376c066db *** empty log message ***
kono
parents: 303
diff changeset
112 }
511376c066db *** empty log message ***
kono
parents: 303
diff changeset
113 }
511376c066db *** empty log message ***
kono
parents: 303
diff changeset
114
430
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
115 public void finishTest() {
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
116 for(TestEditor editor:editors) {
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
117 try {
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
118 editor.join();
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
119 } catch (InterruptedException e) {
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
120 e.printStackTrace();
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
121 }
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
122 }
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
123
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
124 for(SessionManager slave:slaveSessionManagers) {
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
125 slave.serverStop();
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
126 }
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
127 for(SessionManager master:sessionManagers) {
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
128 master.serverStop();
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
129 }
470
7f0d4e49eaf9 add assert
one
parents: 440
diff changeset
130 Text t = editors[0].text;
7f0d4e49eaf9 add assert
one
parents: 440
diff changeset
131 for(TestEditor editor:editors) {
7f0d4e49eaf9 add assert
one
parents: 440
diff changeset
132 assert (editor.text.equals(t));
7f0d4e49eaf9 add assert
one
parents: 440
diff changeset
133 }
430
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
134 }
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
135
220
216d64cd5f3a *** empty log message ***
pin
parents: 218
diff changeset
136 public static void main(String[] args){
301
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
137 /*
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
138 * set simulation mode
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
139 * isSimulation=true thread base simulation for PathFinder
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
140 * isSimulation=false socket based communication mode
d12aac5ab798 *** empty log message ***
kono
parents: 293
diff changeset
141 */
440
c50cee354f62 merge conflict
one
parents: 438
diff changeset
142 REPServerSocketChannel.isSimulation = true;
332
36faf76a087c *** empty log message ***
kono
parents: 319
diff changeset
143 // At least 3 TestEditors are required.
430
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
144 final TestSessionManager test = new TestSessionManager(1, 0, 3);
220
216d64cd5f3a *** empty log message ***
pin
parents: 218
diff changeset
145 logger.setLogLevel(5);
430
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
146
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
147 test.finishTest = new Runnable() {
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
148 public void run() {
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
149 test.finishTest();
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
150 }
03ab374605a6 Test program termination.
one
parents: 426
diff changeset
151 };
291
9e162e0a114f *** empty log message ***
kono
parents: 290
diff changeset
152 test.startTest();
220
216d64cd5f3a *** empty log message ***
pin
parents: 218
diff changeset
153 }
216d64cd5f3a *** empty log message ***
pin
parents: 218
diff changeset
154
289
d59f4e9e7ad1 *** empty log message ***
kono
parents: 286
diff changeset
155
189
d03e34861a26 *** empty log message ***
pin
parents:
diff changeset
156 }