Mercurial > hg > RemoteEditor > REPSessionManager
view test/sematest/TestInterManagerSession.java @ 334:4fae49280699
Test pattern for Inter-Session Manager communication
author | kono |
---|---|
date | Sun, 12 Oct 2008 14:38:58 +0900 |
parents | |
children | 5a78e73ecba5 |
line wrap: on
line source
package test.sematest; import rep.SessionManager; import rep.SessionManagerEvent; import rep.channel.REPServerSocketChannel; public class TestInterManagerSession extends TestSessionManager { /* * All test is performed in localhost, so all session manager * should have differenct port number each other. * Test Pattern List * Connect port for each editor * Master/client flag for each editor * Editor or slave session manager must be started by * master session managers using syncExec. */ int slavePort[] = {masterPort,masterPort,masterPort}; int editorPort[] = {masterPort,masterPort+1,masterPort+2}; boolean editorMaster[] = {true,false,false,false}; SessionManagerEvent ev1[] = { new SessionManagerEvent() { // event for master // executed before first select(); public void exec(SessionManager manager) { for(TestEditor editor:editors) { if(editor.getPort()==masterPort) editor.start(); } int i = sessionManagers.length; for(SessionManager slave:slaveSessionManagers) { if (slave.getParentPort()==masterPort) i = startSessionManager(slave,i,masterPort + i); } } }, new SessionManagerEvent() { // executed before first select(); // event for slave public void exec(SessionManager manager) { manager.connectSession(host); for(TestEditor editor:editors) { if(editor.getPort()==masterPort+1) editor.start(); } } }, new SessionManagerEvent() { // executed before first select(); // event for slave public void exec(SessionManager manager) { manager.connectSession(host); for(TestEditor editor:editors) { if(editor.getPort()==masterPort+2) editor.start(); } } } }; /* * Create all editors, master session managers and slave session * managers with specified port. All instances are not started yet. */ public TestInterManagerSession(int sm, int ss, int e) { super(sm,ss,e); sessionManagers = new SessionManager[sm]; slaveSessionManagers = new SessionManager[ss]; editors = new TestEditor[e]; for(int i=0;i<sm;i++) { sessionManagers[i] = new SessionManager(); } for(int i=0;i<ss;i++) { int port = slavePort[i%slavePort.length]; slaveSessionManagers[i] = new SessionManager(); slaveSessionManagers[i].setParentPort(port); } for(int i=0;i<e;i++) { int port = editorPort[i%editorPort.length]; boolean master = editorMaster[i%editorMaster.length]; // TestEditor extends Thread editors[i] = new TestEditor("Editor"+i,host,port,master); } } public static void main(String[] args){ /* * set simulation mode * isSimulation=true thread base simulation for PathFinder * isSimulation=false socket based communication mode */ REPServerSocketChannel.isSimulation = true; // At least 3 TestEditors are required. TestInterManagerSession test = new TestInterManagerSession(1, 0, 3); logger.setLogLevel(5); test.startTest(); } }