1 package org.xmlBlaster.test.cluster;
2
3 import java.util.logging.Logger;
4
5 import junit.framework.TestCase;
6
7 import org.xmlBlaster.engine.ServerScope;
8 import org.xmlBlaster.engine.cluster.ClusterManager;
9 import org.xmlBlaster.engine.cluster.ClusterNode;
10 import org.xmlBlaster.engine.cluster.NodeMasterInfo;
11 import org.xmlBlaster.engine.cluster.NodeParser;
12 import org.xmlBlaster.engine.cluster.NodeStateInfo;
13 import org.xmlBlaster.util.XmlBlasterException;
14 import org.xmlBlaster.util.cluster.NodeId;
15 import org.xmlBlaster.util.cluster.RouteInfo;
16 import org.xmlBlaster.util.qos.address.Address;
17
18 public class NodeParserTest extends TestCase {
19 private static Logger log = Logger.getLogger(NodeParserTest.class.getName());
20
21 private ServerScope serverScope;// = new ServerScope();
22
23 public void setUp() {
24 serverScope = new ServerScope();
25 serverScope.setUseCluster(true);
26 }
27
28 public void tearDown() {
29 serverScope.shutdown();
30 }
31
32 public void testParseConnectQos() {
33 ClusterManager m = new ClusterManager(serverScope, null);
34
35 try {
36 m.init(serverScope, null);
37 String xml =
38 "<clusternode id='avalon'>"
39 + "<connect><qos>"
40 + "<address type='SOCKET'>"
41 + " socket://:7501"
42 + "</address>"
43 + "</qos></connect>"
44 + " </clusternode>";
45 NodeParser nodeParser = new NodeParser(serverScope, new ClusterNode(
46 serverScope, new NodeId("avalon"), null), xml);
47 Address address = nodeParser.getClusterNode().getNodeInfo()
48 .getConnectQosData().getAddress();
49 log.info("Address='" + address.getRawAddress().trim() + "'");
50 assertEquals("socket://:7501", address.getRawAddress().trim());
51 } catch (XmlBlasterException e) {
52 e.printStackTrace();
53 fail(e.toString());
54 }
55 }
56
57 public void testParseConnectQosAttribute() {
58 ClusterManager m = new ClusterManager(serverScope, null);
59
60 try {
61 m.init(serverScope, null);
62
63 String xml =
64 "<clusternode id='avalon'>" + "<connect><qos>"
65 + "<address type='SOCKET'>"
66 + " socket://:7501"
67 + " <attribute name='useRemoteLoginAsTunnel'>true</attribute>"
68 + "</address>"
69 + "</qos></connect>"
70 + "</clusternode>";
71 NodeParser nodeParser = new NodeParser(serverScope, new ClusterNode(
72 serverScope, new NodeId("avalon"), null), xml);
73 log.info(nodeParser.getClusterNode().toXml());
74 Address address = nodeParser.getClusterNode().getNodeInfo()
75 .getConnectQosData().getAddress();
76 log.info("Address='" + address.getRawAddress().trim() + "'");
77 assertEquals("socket://:7501", address.getRawAddress().trim());
78 assertEquals(true, address.getEnv("useRemoteLoginAsTunnel", false)
79 .getValue());
80 } catch (XmlBlasterException e) {
81 e.printStackTrace();
82 fail(e.toString());
83 }
84 }
85
86 public void testParse() {
87 ClusterManager m = new ClusterManager(serverScope, null);
88
89 try {
90 m.init(serverScope, null);
91
92 String xml =
93 "<clusternode id='heron.mycomp.com'> <!-- original xml markup -->\n" +
94 " <connect><qos>\n" +
95 " <address type='IOR'>IOR:09456087000</address>\n" +
96 " <address type='XMLRPC'>http://www.mycomp.com/XMLRPC/</address>\n" +
97 " <callback type='RMI'>rmi://mycomp.com</callback>\n" +
98 " <backupnode>\n" +
99 " <clusternode id='bilbo.mycomp.com'/>\n" +
100 " <clusternode id='aragon.mycomp.com'/>\n" +
101 " </backupnode>\n" +
102 " </qos></connect>\n" +
103 " <disconnect/>\n" +
104 " <master type='DomainToMaster'>\n" +
105 " <key queryType='DOMAIN' domain='RUGBY'/>\n" +
106 " <key queryType='XPATH'>//STOCK</key>\n" +
107 " <filter type='ContentLength'>\n" +
108 " 8000\n" +
109 " </filter>\n" +
110 " <filter type='ContainsChecker' version='7.1' xy='true'>\n" +
111 " bug\n" +
112 " </filter>\n" +
113 " <someOtherPluginfilter>\n" +
114 " <![CDATA[\n" +
115 " ]]>\n" +
116 " </someOtherPluginfilter>\n" +
117 " </master>\n" +
118 " <master type='DomainToMaster' version='1.1' stratum='4' refid='bla' acceptDefault='false' acceptOtherDefault='true' dirtyRead='true'>\n" +
119 " <key queryType='XPATH'>//RUGBY</key>\n" +
120 " </master>\n" +
121 " <state>\n" +
122 " <cpu id='0' idle='40'/>\n" +
123 " <cpu id='1' idle='44'/>\n" +
124 " <ram free='12000'/>\n" +
125 " </state>\n" +
126 "</clusternode>\n";
127
128 NodeParser nodeParser = new NodeParser(serverScope, new ClusterNode(
129 serverScope, new NodeId("avalon"), null), xml);
130 ClusterNode clusterNode = nodeParser.getClusterNode();
131 log.info(clusterNode.toXml());
132
133 Address address = clusterNode.getNodeInfo()
134 .getConnectQosData().getAddress();
135 assertEquals("IOR:09456087000", address.getRawAddress().trim());
136 assertEquals(false, address.getEnv("useRemoteLoginAsTunnel", false)
137 .getValue());
138
139 NodeMasterInfo[] masters = clusterNode.getNodeMasterInfos();
140 assertEquals(2, masters.length);
141
142 assertEquals("DomainToMaster", masters[0].getType());
143 assertEquals("1.0", masters[0].getVersion());
144 assertEquals(0, masters[0].getStratum());
145 assertEquals(null, masters[0].getRefId());
146 assertEquals(NodeMasterInfo.DEFAULT_acceptDefault, masters[0].isAcceptDefault()); // true
147 assertEquals(NodeMasterInfo.DEFAULT_acceptOtherDefault, masters[0].isAcceptOtherDefault()); // false
148 assertEquals(RouteInfo.DEFAULT_dirtyRead, masters[0].isDirtyRead()); // false
149 assertEquals(2, masters[0].getAccessFilterArr().length);
150 assertEquals(2, masters[0].getKeyMappings().length);
151 assertEquals("RUGBY", masters[0].getKeyMappings()[0].getDomain().trim());
152 assertEquals("//STOCK", masters[0].getKeyMappings()[1].getQueryString().trim());
153
154 assertEquals("DomainToMaster", masters[1].getType());
155 assertEquals("1.1", masters[1].getVersion());
156 assertEquals(4, masters[1].getStratum());
157 assertEquals("bla", masters[1].getRefId());
158 assertEquals(false, masters[1].isAcceptDefault());
159 assertEquals(true, masters[1].isAcceptOtherDefault());
160 assertEquals(true, masters[1].isDirtyRead());
161 assertEquals(0, masters[1].getAccessFilterArr().length);
162 assertEquals(1, masters[1].getKeyMappings().length);
163 assertEquals("//RUGBY", masters[1].getKeyMappings()[0].getQueryString().trim());
164
165 } catch (XmlBlasterException e) {
166 e.printStackTrace();
167 fail(e.toString());
168 }
169 }
170
171 public void testParseState() {
172 ClusterManager m = new ClusterManager(serverScope, null);
173
174 try {
175 m.init(serverScope, null);
176
177 String xml =
178 "<clusternode id='heron.mycomp.com'>\n" +
179 " <master stratum='1' refid='frodo' type='DomainPlugin' version='2.0' acceptDefault='false' acceptOtherDefault='true'>\n" +
180 " My own rule\n" +
181 " </master>\n" +
182 " <state>\n" +
183 " <cpu id='0' idle='60'/>\n" +
184 " <cpu id='1' idle='58'/>\n" +
185 " <ram free='10657'/>\n" +
186 " </state>\n" +
187 "</clusternode>\n";
188
189 NodeParser nodeParser = new NodeParser(serverScope, new ClusterNode(
190 serverScope, new NodeId("avalon"), null), xml);
191 ClusterNode clusterNode = nodeParser.getClusterNode();
192 log.info(clusterNode.toXml());
193 NodeStateInfo state = clusterNode.getNodeStateInfo();
194 assertEquals(10657, state.getFreeRam());
195 assertEquals(59, state.getAvgCpuIdle());
196
197 } catch (XmlBlasterException e) {
198 e.printStackTrace();
199 fail(e.toString());
200 }
201 }
202 }
syntax highlighted by Code2HTML, v. 0.9.1