annotate test/editortest/TestSessionManager2.java @ 416:b7f42fc75a36

(no commit message)
author one
date Wed, 31 Dec 2008 14:47:39 +0900
parents 784a4d67e6a5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
414
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
1 package test.editortest;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
2
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
3 import java.io.IOException;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
4
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
5 import rep.SessionManager;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
6 import rep.channel.REPLogger;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
7 import rep.channel.REPServerSocketChannel;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
8 import rep.gui.SessionManagerEvent;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
9 import rep.gui.SessionManagerGUI;
416
b7f42fc75a36 (no commit message)
one
parents: 414
diff changeset
10 import rep.handler.Editor;
414
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
11 import test.sematest.TestGUI;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
12
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
13
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
14 public class TestSessionManager2 {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
15
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
16 static public REPLogger logger = REPLogger.singleton();
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
17 public int masterPort = 8766;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
18 public String host = "localhost";
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
19 public SessionManager sessionManagers[];
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
20 public SessionManager slaveSessionManagers[];
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
21 public TestEditor2 editors[];
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
22
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
23 /*
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
24 * All test is performed in localhost, so all session manager
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
25 * should have differenct port number each other.
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
26 */
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
27
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
28 /*
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
29 * Test Pattern List
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
30 * Connect port for each editor
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
31 * Master/client flag for each editor
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
32 * Editor or slave session manager must be started by
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
33 * master session managers using syncExec.
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
34 */
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
35 public int editorPort[] = {masterPort,masterPort,masterPort};
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
36 public boolean editorMaster[] = {true,false,false,false};
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
37 private SessionManagerEvent ev1[] = {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
38 new SessionManagerEvent() {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
39 // executed before first select();
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
40 public void exec(SessionManager manager) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
41 for(TestEditor2 editor:editors) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
42 editor.start();
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
43 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
44 int i = sessionManagers.length;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
45 for(SessionManager slave:slaveSessionManagers) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
46 i = startSessionManager(slave,i,masterPort + i);
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
47 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
48 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
49 }};
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
50
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
51 /*
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
52 * Create all editors, master session managers and slave session
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
53 * managers with specified port. All instances are not started yet.
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
54 */
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
55
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
56 public TestSessionManager2(int sm, int ss, int e) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
57 sessionManagers = new SessionManager[sm];
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
58 slaveSessionManagers = new SessionManager[ss];
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
59 editors = new TestEditor2[e];
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
60 for(int i=0;i<sm;i++) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
61 sessionManagers[i] = new SessionManager();
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
62 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
63 for(int i=0;i<ss;i++) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
64 slaveSessionManagers[i] = new SessionManager();
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
65 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
66 for(int i=0;i<e;i++) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
67 int port = editorPort[i%editorPort.length];
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
68 boolean master = editorMaster[i%editorMaster.length];
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
69 // TestEditor extends Thread
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
70 editors[i] = new TestEditor2("Editor"+i,host,port,master);
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
71 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
72 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
73
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
74 /*
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
75 * start session manager. sm.init(port,guit) is a mainloop, so
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
76 * we need Thread here.
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
77 */
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
78 public int startSessionManager(final SessionManager sm,int i,int port) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
79 final SessionManagerGUI gui = new TestGUI(sm);
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
80 final int port1 = port;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
81 logger.writeLog("TestSessionManager.startSessionManager() : start SessionManager");
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
82 // syncExec does not wake selector, do this before run().
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
83 sm.setReceivePort(port1);
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
84 setSMEvent(sm,i);
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
85 Runnable start = new Runnable() {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
86 public void run() {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
87 try {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
88 sm.init(port1,gui);
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
89 } catch (IOException e) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
90 } catch (InterruptedException e) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
91 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
92 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
93 };
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
94 new Thread(start).start();
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
95 return i+1;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
96 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
97
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
98
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
99 public void setSMEvent(SessionManager s,int i) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
100 if (i<ev1.length) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
101 s.syncExec(ev1[i]);
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
102 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
103 return ;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
104 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
105
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
106 protected void startTest() {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
107 int i = 0;
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
108 for(SessionManager master:sessionManagers) {
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
109 i = startSessionManager(master,i, masterPort + i);
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
110 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
111 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
112
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
113 public static void main(String[] args){
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
114 /*
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
115 * set simulation mode
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
116 * isSimulation=true thread base simulation for PathFinder
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
117 * isSimulation=false socket based communication mode
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
118 */
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
119 REPServerSocketChannel.isSimulation = false;
416
b7f42fc75a36 (no commit message)
one
parents: 414
diff changeset
120 Editor.noMergeMode = false;
414
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
121 // At least 3 TestEditors are required.
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
122 TestSessionManager2 test = new TestSessionManager2(1, 0, 3);
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
123 logger.setLogLevel(5);
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
124 test.startTest();
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
125 }
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
126
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
127
784a4d67e6a5 (no commit message)
one
parents:
diff changeset
128 }