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