annotate test/sematest/TestInterManagerSession.java @ 385:1fca50ce3508

first-working-version
author one@firefly.cr.ie.u-ryukyu.ac.jp
date Mon, 10 Nov 2008 22:18:14 +0900
parents 4b87f89b3afd
children 2cf5392b2a9f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
1 package test.sematest;
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
2
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
3
342
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
4 import java.util.LinkedList;
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
5
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
6 import rep.REP;
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
7 import rep.REPCommand;
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
8 import rep.SessionManager;
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
9 import rep.channel.REPServerSocketChannel;
382
4b87f89b3afd REP Session Manager (Java version)
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 378
diff changeset
10 import rep.gui.SessionManagerEvent;
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
11
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
12 public class TestInterManagerSession extends TestSessionManager {
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
13
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
14 /*
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
15 * All test is performed in localhost, so all session manager
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
16 * should have differenct port number each other.
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
17 * Test Pattern List
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
18 * Connect port for each editor
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
19 * Master/client flag for each editor
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
20 * Editor or slave session manager must be started by
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
21 * master session managers using syncExec.
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
22 */
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
23
335
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
24 public int slavePort[] = {masterPort,masterPort,masterPort};
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
25 public int editorPort[] = {masterPort,masterPort+1,masterPort+2};
342
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
26 public boolean editorMaster[] = {true,false,false,false};
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
27 private LinkedList<REPCommand> editorStartCmds;
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
28
335
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
29 private SessionManagerEvent ev2[] = {
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
30 new SessionManagerEvent() {
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
31 public void exec(SessionManager manager) {
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
32 int i = sessionManagers.length;
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
33 for(SessionManager slave:slaveSessionManagers) {
336
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
34 if (slave.getParentPort()==masterPort) {
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
35 logger.writeLog("Start slave "+slave);
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
36 i = startSessionManager(slave,i,masterPort + i);
336
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
37 }
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
38 }
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
39 }
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
40 },
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
41 new SessionManagerEvent() {
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
42 public void exec(SessionManager manager) {
378
c78569ab5fce *** empty log message ***
kono
parents: 373
diff changeset
43 manager.connectSessionManager(host);
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
44 }
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
45 },
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
46 new SessionManagerEvent() {
364
c965ef2b5fd6 *** empty log message ***
kono
parents: 355
diff changeset
47 public void exec(SessionManager manager) {
c965ef2b5fd6 *** empty log message ***
kono
parents: 355
diff changeset
48 // try to make a loop
c965ef2b5fd6 *** empty log message ***
kono
parents: 355
diff changeset
49 if (false) {
378
c78569ab5fce *** empty log message ***
kono
parents: 373
diff changeset
50 sessionManagers[0].connectSessionManager(host,
364
c965ef2b5fd6 *** empty log message ***
kono
parents: 355
diff changeset
51 manager.getPort());
c965ef2b5fd6 *** empty log message ***
kono
parents: 355
diff changeset
52 }
378
c78569ab5fce *** empty log message ***
kono
parents: 373
diff changeset
53 manager.connectSessionManager(host);
365
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
54 manager.execAfterConnect(
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
55 new SessionManagerEvent() {
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
56 public void exec(SessionManager manager) {
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
57 for(SessionManager m:sessionManagers) {
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
58 startEditor(m);
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
59 }
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
60 for(SessionManager m:slaveSessionManagers) {
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
61 startEditor(m);
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
62 }
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
63 editors[0].setCommand(editorStartCmds);
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
64 }
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
65 }
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
66 );
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
67 }
365
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
68
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
69 }
343
21ad256c25c2 *** empty log message ***
kono
parents: 342
diff changeset
70 };
385
1fca50ce3508 first-working-version
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 382
diff changeset
71 //private int inscnt=2;
342
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
72
365
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
73 private void startEditor(SessionManager m) {
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
74 for(TestEditor editor:editors) {
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
75 if(editor.getPort()==m.getPort()) {
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
76 logger.writeLog("Start client "+editor);
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
77 editor.start();
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
78 }
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
79 }
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
80 }
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
81
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
82 /*
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
83 * Create all editors, master session managers and slave session
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
84 * managers with specified port. All instances are not started yet.
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
85 */
343
21ad256c25c2 *** empty log message ***
kono
parents: 342
diff changeset
86
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
87 public TestInterManagerSession(int sm, int ss, int e) {
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
88 super(sm,ss,e);
343
21ad256c25c2 *** empty log message ***
kono
parents: 342
diff changeset
89
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
90 sessionManagers = new SessionManager[sm];
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
91 slaveSessionManagers = new SessionManager[ss];
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
92 editors = new TestEditor[e];
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
93 for(int i=0;i<sm;i++) {
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
94 sessionManagers[i] = new SessionManager();
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
95 }
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
96 for(int i=0;i<ss;i++) {
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
97 int port = slavePort[i%slavePort.length];
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
98 slaveSessionManagers[i] = new SessionManager();
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
99 slaveSessionManagers[i].setParentPort(port);
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
100 }
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
101 for(int i=0;i<e;i++) {
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
102 int port = editorPort[i%editorPort.length];
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
103 boolean master = editorMaster[i%editorMaster.length];
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
104 // TestEditor extends Thread
373
ab4405cd3351 looks like we are done. Wait for further test.
kono
parents: 365
diff changeset
105 LinkedList<REPCommand>cmds = new LinkedList<REPCommand>();
ab4405cd3351 looks like we are done. Wait for further test.
kono
parents: 365
diff changeset
106 cmds.add(new REPCommand(REP.SMCMD_JOIN,0,0,0,0,""));
385
1fca50ce3508 first-working-version
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 382
diff changeset
107 //if (inscnt-->0) cmds.add(new REPCommand(REP.REPCMD_INSERT,0,0,0,0,"m0"));
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
108 editors[i] = new TestEditor("Editor"+i,host,port,master);
385
1fca50ce3508 first-working-version
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 382
diff changeset
109 //editors[i].setCommand(cmds);
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
110 }
343
21ad256c25c2 *** empty log message ***
kono
parents: 342
diff changeset
111 setupEditor0();
21ad256c25c2 *** empty log message ***
kono
parents: 342
diff changeset
112 }
21ad256c25c2 *** empty log message ***
kono
parents: 342
diff changeset
113
21ad256c25c2 *** empty log message ***
kono
parents: 342
diff changeset
114 private void setupEditor0() {
21ad256c25c2 *** empty log message ***
kono
parents: 342
diff changeset
115 /*
21ad256c25c2 *** empty log message ***
kono
parents: 342
diff changeset
116 * do not startup Editor0 until SessionManagers are ready.
21ad256c25c2 *** empty log message ***
kono
parents: 342
diff changeset
117 * Define pending command and set null command for now.
21ad256c25c2 *** empty log message ***
kono
parents: 342
diff changeset
118 */
342
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
119 LinkedList<REPCommand>cmds = new LinkedList<REPCommand>();
364
c965ef2b5fd6 *** empty log message ***
kono
parents: 355
diff changeset
120 //cmds.add(new REPCommand(REP.SMCMD_JOIN,0,0,0,0,"Editor0-file"));
c965ef2b5fd6 *** empty log message ***
kono
parents: 355
diff changeset
121 cmds.add(new REPCommand(REP.SMCMD_PUT,0,0,0,0,"Editor0-file"));
385
1fca50ce3508 first-working-version
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 382
diff changeset
122 cmds.add(new REPCommand(REP.REPCMD_INSERT,0,0,0,0,"m0"));
1fca50ce3508 first-working-version
one@firefly.cr.ie.u-ryukyu.ac.jp
parents: 382
diff changeset
123 cmds.add(new REPCommand(REP.REPCMD_DELETE,0,0,0,0,"m0"));
342
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
124 editorStartCmds = cmds;
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
125 LinkedList<REPCommand>nullcmds = new LinkedList<REPCommand>();
4b056e46ba83 *** empty log message ***
kono
parents: 336
diff changeset
126 editors[0].setCommand(nullcmds);
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
127 }
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
128
335
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
129 @Override
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
130 public void setSMEvent(SessionManager s,int i) {
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
131 if (i<ev2.length) {
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
132 s.syncExec(ev2[i]);
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
133 }
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
134 return ;
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
135 }
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
136
336
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
137 @Override
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
138 protected void startTest() {
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
139 int i = 0;
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
140 for(SessionManager master:sessionManagers) {
365
c432755c3555 distributed session debug continue... SELECT/SELECT_ACK loop
kono
parents: 364
diff changeset
141 logger.writeLog("Start master "+i+" "+master);
336
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
142 i = startSessionManager(master,i, masterPort + i);
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
143 }
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
144 }
d00cb51ba652 *** empty log message ***
kono
parents: 335
diff changeset
145
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
146 public static void main(String[] args){
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
147 /*
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
148 * set simulation mode
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
149 * isSimulation=true thread base simulation for PathFinder
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
150 * isSimulation=false socket based communication mode
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
151 */
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
152 REPServerSocketChannel.isSimulation = true;
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
153 // At least 3 TestEditors are required.
335
5a78e73ecba5 *** empty log message ***
kono
parents: 334
diff changeset
154 TestInterManagerSession test = new TestInterManagerSession(1, 2, 3);
334
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
155 logger.setLogLevel(5);
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
156 test.startTest();
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
157 }
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
158
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
159
4fae49280699 Test pattern for Inter-Session Manager communication
kono
parents:
diff changeset
160 }