1
2
3
4
5
6
7 package org.sourceforge.jvb3d.Network;
8
9 import java.awt.GraphicsConfiguration;
10 import java.net.InetSocketAddress;
11
12 import javax.media.j3d.Canvas3D;
13
14 import org.sourceforge.jvb3d.Model.IModelNetwork;
15 import org.sourceforge.jvb3d.Model.Model;
16
17 import com.sun.j3d.utils.universe.SimpleUniverse;
18
19 import junit.framework.TestCase;
20
21 /***
22 * @author Develop
23 *
24 * TODO To change the template for this generated type comment go to Window -
25 * Preferences - Java - Code Style - Code Templates
26 */
27 public class ClientFacadeTest extends TestCase {
28 static IModelNetwork modelInterface;
29
30 class TestClient extends Thread {
31 NetworkClientFacade networkFacade;
32
33 boolean terminated = false;
34
35 String avatar;
36
37 TestClient() {
38 NetworkClientFacadeHolder.setNetworkFacade(new ClientFacade());
39 networkFacade = NetworkClientFacadeHolder.getNetworkFacade();
40 networkFacade.setModelInterface(modelInterface);
41 }
42
43 /***
44 * stawia klienta i wysy³a do serwera update avatara uzytkownika
45 */
46 public void run() {
47 try {
48 avatar = networkFacade.join(new InetSocketAddress(
49 "localhost", 4000));
50 assertEquals("Otrzymano z³y ID klienta od serwera", avatar, "0");
51 networkFacade.sendUpdate("0");
52 terminated = true;
53 } catch (Exception e) {
54 e.printStackTrace();
55 }
56 }
57 }
58
59 class TestServer extends Thread {
60 NetworkServerFacade networkFacade;
61
62 boolean terminated = false;
63
64 TestServer() {
65 NetworkServerFacadeHolder.setNetworkFacade(new ServerFacade());
66 networkFacade = NetworkServerFacadeHolder.getNetworkFacade();
67 networkFacade.setModelInterface(modelInterface);
68 }
69
70 /***
71 * stawia serwer, nas³uchuje klienta, po po³¹czeniu czeka 300 ms, i wysy³a update wszystkich obiektów
72 */
73 public void run() {
74 try {
75 networkFacade.start(4000);
76 Thread.sleep(300);
77 networkFacade.sendAllUpdate();
78 Thread.sleep(700);
79 terminated = true;
80 } catch (Exception e) {
81 e.printStackTrace();
82 }
83 }
84 }
85
86 protected void setUp() throws Exception {
87 super.setUp();
88 GraphicsConfiguration config =
89 SimpleUniverse.getPreferredConfiguration();
90
91 Canvas3D canvas3D = new Canvas3D(config);
92
93 modelInterface = new Model(canvas3D,false);
94 }
95
96
97
98
99 protected void tearDown() throws Exception {
100 modelInterface = null;
101 super.tearDown();
102 }
103
104 /***
105 * uruchamia test klienta i serwera
106 * @throws Exception jeœli coœ pójdzie Ÿle
107 */
108 public void testJoin() throws Exception {
109 TestClient client = new TestClient();
110 TestServer server = new TestServer();
111 server.start();
112 client.start();
113 int i=0;
114 while (i++<10 && !client.terminated && !server.terminated)
115 Thread.sleep(1000);
116 assertTrue("Klient b¹dŸ serwer nie zakoñczy³y dzia³ania", i != 10);
117 }
118 }