Skip to Content.
Sympa Menu

perfsonar-dev - perfsonar: r4045 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: . ls ma plugins test/ls

Subject: perfsonar development work

List archive

perfsonar: r4045 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: . ls ma plugins test/ls


Chronological Thread 
  • From:
  • To:
  • Subject: perfsonar: r4045 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: . ls ma plugins test/ls
  • Date: Mon, 23 Jun 2008 04:34:00 -0400

Author: nina
Date: 2008-06-23 04:34:00 -0400 (Mon, 23 Jun 2008)
New Revision: 4045

Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSDiscoveryQuery.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/Lookup.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/XQuery.xml

branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/GlobalLSTest.java

branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/LSDiscoveryTest.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/MockLookup.java

branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/TracerouteTest.java
Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/PerfsonarSchema.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSManager.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSQueryMetadata.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSQueryServices.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSXQuery.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/ma/UserData.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/plugins/IUserData.java

branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/LSQueryMetadataTest.java
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/LSTest.java
Log:
Lookup service support (home/global LS)

Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/PerfsonarSchema.java
===================================================================
--- branches/perfsonarui/src/org/perfsonar/perfsonarui/PerfsonarSchema.java
2008-06-23 08:27:13 UTC (rev 4044)
+++ branches/perfsonarui/src/org/perfsonar/perfsonarui/PerfsonarSchema.java
2008-06-23 08:34:00 UTC (rev 4045)
@@ -80,6 +80,8 @@
eventTypes2schema.put("ippm_aggregated", "ippm");
eventTypes2schema.put("ripe", "ippm");
eventTypes2schema.put("bwctl", "bwctl");
+ eventTypes2schema.put("hls", "hls");
+ eventTypes2schema.put("gls", "gls");
eventTypes2schema.put("ls", "ls");
eventTypes2schema.put("as", "as");
eventTypes2schema.put("lg", "lg");

Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSDiscoveryQuery.java

Modified: branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSManager.java
===================================================================
--- branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSManager.java
2008-06-23 08:27:13 UTC (rev 4044)
+++ branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSManager.java
2008-06-23 08:34:00 UTC (rev 4045)
@@ -16,6 +16,8 @@
private LSManager() {
List<IPerfsonarSchema> ls = new ArrayList<IPerfsonarSchema>();
ls.add(PerfsonarSchema.getInstance("ls"));
+ ls.add(PerfsonarSchema.getInstance("hls"));
+ ls.add(PerfsonarSchema.getInstance("gls"));
services = new MAEndpointList(new File("MA.conf"),ls);
}


Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSQueryMetadata.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSQueryMetadata.java
2008-06-23 08:27:13 UTC (rev 4044)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSQueryMetadata.java
2008-06-23 08:34:00 UTC (rev 4045)
@@ -5,8 +5,8 @@

import org.perfsonar.perfsonarui.AbstractMARequest;
import org.perfsonar.perfsonarui.AbstractUserData;
+import org.perfsonar.perfsonarui.MetadataListResponseListener;
import org.perfsonar.perfsonarui.ma.UserData;
-import org.perfsonar.perfsonarui.ma.UserDataComparator;
import org.perfsonar.perfsonarui.plugins.IUserData;
import org.perfsonar.perfsonarui.plugins.MAEndpoint;
import org.perfsonar.perfsonarui.plugins.MetaDataList;
@@ -52,6 +52,7 @@
*
*/
public class LSQueryMetadata extends LSXQuery<XQueryParams,MetaDataList> {
+ protected MetadataListResponseListener listener;
protected static String[]xtop = {
"&lt;psui:lookupInformation&gt;\n",
"{\n",
@@ -91,8 +92,9 @@
"}\n",
"&lt;/psui:lookupInformation&gt;\n",
};
- public LSQueryMetadata(MAEndpoint target, XQueryParams parameters) {
+ public LSQueryMetadata(MAEndpoint target, XQueryParams parameters,
MetadataListResponseListener listener) {
super(target,parameters);
+ this.listener = listener;
}
@Override
public String getXQuery(XQueryParams parameters) {
@@ -210,7 +212,8 @@
* </pre>
*/
public MetaDataList parseXQueryResults(String xquery) throws
Exception {
- MetaDataList topoelements = new MetaDataList(new
UserDataComparator());
+ //MetaDataList topoelements = new MetaDataList(new
UserDataComparator());
+ MetaDataList topoelements = listener.getDataList();
Document lsResponse = getDocument(xquery);

NodeList topo =
lsResponse.getDocumentElement().getElementsByTagNameNS(PSUI_namespace,PSUI_TOPOELEMENTS);
@@ -225,22 +228,45 @@
}
//eventtypes
if (endpoint == null) continue;
+ NodeList eventtypes =
((Element)topo.item(i)).getElementsByTagNameNS(AbstractMARequest.NMWG2,"eventType");
+ for (int j=0; j <
eventtypes.getLength(); j++)
+ if
(eventtypes.item(j).getNodeType() == Node.ELEMENT_NODE) {
+ String event =
XML.getTextFrom(eventtypes.item(j));
+
endpoint.setSchema(event);
+
endpoint.setEvent(event, 0);
+
endpoint.setEvent(event, 1);
+ }
+
+ //TODO support for multiple events!
+ String namespace =
endpoint.getEvent(0) + '/';
+
NodeList metadata =
((Element)topo.item(i)).getElementsByTagNameNS(AbstractMARequest.NMWG2,AbstractMARequest.E_METADATA);
for (int j=0; j <
metadata.getLength(); j++)
if
(metadata.item(j).getNodeType() == Node.ELEMENT_NODE) {
- NodeList subject =
((Element)metadata.item(j)).getElementsByTagNameNS("http://ggf.org/ns/nmwg/characteristic/utilization/2.0/",AbstractMARequest.E_SUBJECT);
+
//"http://ggf.org/ns/nmwg/characteristic/utilization/2.0/";
+ NodeList subject =
((Element)metadata.item(j)).getElementsByTagNameNS(namespace,AbstractMARequest.E_SUBJECT);
for (int k=0; k <
subject.getLength(); k++) {
if
(subject.item(k).getNodeType() == Node.ELEMENT_NODE) {

IUserData data = getTopoElement((Element)subject.item(k));
if
(data != null) {
-
data.setEndpoint(endpoint);
-
topoelements.add(data);
+
boolean found = false;
+
//there can be several entries with the same IP ad we need to update the
list
+
String ipaddress = data.getResponse(UserData.C_IFADDRESS);
+
for (int m=0; m < topoelements.size();m++)
+
if
(ipaddress.equals(topoelements.get(m).getQuery(UserData.C_IFADDRESS))) {
+
topoelements.get(m).assign(data);
+
topoelements.get(m).setEndpoint(endpoint);
+
found = true;
+
}
+
/*
+
if (!found) {
+
data.setEndpoint(endpoint);
+
topoelements.add(data);
+
}
+
*/
}
}
-
-
}
-
}

}
}
@@ -251,15 +277,13 @@

NodeList tinterface =
element.getElementsByTagNameNS("http://ggf.org/ns/nmwg/topology/2.0/",AbstractMARequest.E_INTERFACE);
if (tinterface.getLength() == 0) return null;
- IUserData data = new UserData();
+ IUserData data = new AbstractUserData();
for (int k=0; k < tinterface.getLength(); k++)
if (tinterface.item(k).getNodeType() ==
Node.ELEMENT_NODE) {
NodeList details =
((Element)tinterface.item(k)).getChildNodes();
for (int i=0; i < details.getLength(); i++)
if (details.item(i).getNodeType() == Node.ELEMENT_NODE) {

data.setResponse(details.item(i).getLocalName(),
XML.getTextFrom(details.item(i)));
}
-
-
}
return data;
}

Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSQueryServices.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSQueryServices.java
2008-06-23 08:27:13 UTC (rev 4044)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSQueryServices.java
2008-06-23 08:34:00 UTC (rev 4045)
@@ -8,6 +8,11 @@
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

+/**
+ * Retrieves supported event types of a service
+ * @author Nina Jeliazkova

+ *
+ */
public class LSQueryServices extends LSXQuery<MAEndpoint,MAEndpointList> {
protected static final String xquery_for = "for $y in
/nmwg:store/nmwg:metadata\n";
protected static final String xquery_return = "return
$y/perfsonar:subject\n";

Modified: branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSXQuery.java
===================================================================
--- branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSXQuery.java
2008-06-23 08:27:13 UTC (rev 4044)
+++ branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/LSXQuery.java
2008-06-23 08:34:00 UTC (rev 4045)
@@ -23,6 +23,7 @@
import javax.xml.rpc.ServiceException;

import org.apache.axis.message.SOAPBodyElement;
+import org.perfsonar.perfsonarui.PSLogger;
import org.perfsonar.perfsonarui.PerfsonarResponseEvent;
import org.perfsonar.perfsonarui.PerfsonarSchema;
import org.perfsonar.perfsonarui.plugins.IPerfsonarRequest;
@@ -42,15 +43,20 @@
* @author Nina Jeliazkova
*/
public abstract class LSXQuery<Parameters,Results> {
+ protected static PSLogger logger = new PSLogger(LSXQuery.class);
//TODO parameterize
protected static ExecutorService executor =
Executors.newFixedThreadPool(10);
protected static final String PSUI_LOOKUPINFO="lookupInformation";
protected static final String PSUI_SERVICEINFO="serviceInfo";
protected static final String PSUI_TOPOELEMENTS="topoelements";
+ protected static final String PSUI_LS="lookupService";

+
protected static final String PSUI_EVENTTYPES="eventTypes";
protected static final String
PSUI_namespace="http://ggf.org/ns/nmwg/tools/org/perfsonar-ui/1.0/";;
+ protected static final String
NMTL3_namespace="http://ogf.org/schema/network/topology/l3/20070828/";;

+
protected final static String XPATH_NAMESPACE_DECLARATIONS =
"declare namespace nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\";;
\n" +
"declare namespace
nmwgt=\"http://ggf.org/ns/nmwg/topology/2.0/\";; \n" +
@@ -92,7 +98,8 @@

StringBuilder builder = new StringBuilder(XML_FIRST_PART).
append(xquery).append(XML_LAST_PART);
- //System.out.println(builder.toString());
+ System.out.println(builder.toString());
+ logger.debug(builder.toString());
byte[] data;
try {
data = builder.toString().getBytes("ISO-8859-1");
@@ -166,12 +173,15 @@
try {
String message = execute();
System.out.println(message);
+ logger.debug(message);
Results results =
parseXQueryResults(message);
if (listener != null)
listener.callCompleted(null);
return results;

} catch (Exception e) {
+ System.out.println(target);
+ e.printStackTrace();
target.setEnabled(false);
if (listener != null) {
listener.callException(new
PerfsonarResponseEvent((IPerfsonarRequest) null,(IUserData)null,e));

Added: branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/Lookup.java

Added: branches/perfsonarui/src/org/perfsonar/perfsonarui/ls/XQuery.xml

Modified: branches/perfsonarui/src/org/perfsonar/perfsonarui/ma/UserData.java
===================================================================
--- branches/perfsonarui/src/org/perfsonar/perfsonarui/ma/UserData.java
2008-06-23 08:27:13 UTC (rev 4044)
+++ branches/perfsonarui/src/org/perfsonar/perfsonarui/ma/UserData.java
2008-06-23 08:34:00 UTC (rev 4045)
@@ -36,9 +36,6 @@
*/
public class UserData extends AbstractUserData {

- public final static String C_HOSTNAME="hostName";
- public final static String C_IFNAME = "ifName";
- public final static String C_IFADDRESS = "ifAddress";
public final static String C_DIRECTION="direction";
public final static String[] C_DIRECTIONS={"in","out"};
/*

Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/plugins/IUserData.java
===================================================================
--- branches/perfsonarui/src/org/perfsonar/perfsonarui/plugins/IUserData.java
2008-06-23 08:27:13 UTC (rev 4044)
+++ branches/perfsonarui/src/org/perfsonar/perfsonarui/plugins/IUserData.java
2008-06-23 08:34:00 UTC (rev 4045)
@@ -30,6 +30,9 @@
*
*/
public interface IUserData extends Comparable, Serializable {
+ public final static String C_HOSTNAME="hostName";
+ public final static String C_IFNAME = "ifName";
+ public final static String C_IFADDRESS = "ifAddress";

public final static String C_KEY="key";
public final static String C_DATAID="id";

Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/GlobalLSTest.java

Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/LSDiscoveryTest.java

Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/LSQueryMetadataTest.java
===================================================================
---
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/LSQueryMetadataTest.java
2008-06-23 08:27:13 UTC (rev 4044)
+++
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/LSQueryMetadataTest.java
2008-06-23 08:34:00 UTC (rev 4045)
@@ -5,6 +5,7 @@
import java.util.concurrent.Future;

import org.perfsonar.perfsonarui.AbstractUserData;
+import org.perfsonar.perfsonarui.MetadataListResponseListener;
import org.perfsonar.perfsonarui.ls.LSQueryMetadata;
import org.perfsonar.perfsonarui.ls.XQueryParams;
import org.perfsonar.perfsonarui.ma.UserData;
@@ -18,9 +19,14 @@

*/
public class LSQueryMetadataTest extends LSTest<LSQueryMetadata> {
-
+ @Override
+ protected void setUp() throws Exception {
+ testLS =
"http://loco4.man.poznan.pl:8080/xml-ls-home/services/LookupService";;
+ super.setUp();
+ }
public void test() throws Exception {

+ query = createQuery();
Future<MetaDataList> futureResult = query.getResults(null);
//this is blocking call, runs the query in a separate thread
MetaDataList xqueryResult = futureResult.get();
@@ -62,72 +68,28 @@
params.setMetadata(list);
return new LSQueryMetadata(
new MAEndpoint(testLS),
- params
+ params,
+ new MetadataListResponseListener(list)
);
}

protected String getTestResults() {
- return
- "<psui:lookupInformation
xmlns:psui=\"http://ggf.org/ns/nmwg/tools/org/perfsonar-ui/1.0/\";>\n"+
- "<psui:topoelements>\n"+
- " <psservice:service
xmlns:psservice=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/\";
id=\"localhost.17bd84e6:11a1fa5e10d:7d5c\">\n"+
- " <psservice:serviceName>perfSONAR Java RRD
MA</psservice:serviceName>\n"+
- "
<psservice:accessPoint>http://uran.acad.bg:8080/geant2_java-rrd-ma/services/MeasurementArchiveService</psservice:accessPoint>\n"+
- " <psservice:serviceType>ma</psservice:serviceType>\n"+
- " <psservice:serviceDescription>perfSONAR JavaRRD
MA</psservice:serviceDescription>\n"+
- " <psservice:serviceVersion>3.0</psservice:serviceVersion>\n"+
- " <psservice:organization>IPP-BAS</psservice:organization>\n"+
- "
<psservice:contactEmail>user@domain</psservice:contactEmail>\n"+
- " </psservice:service>\n"+
- " <nmwg:metadata xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\";
id=\"meta45\">\n"+
- " <netutil:subject
xmlns:netutil=\"http://ggf.org/ns/nmwg/characteristic/utilization/2.0/\";
id=\"subj45\">\n"+
- " <nmwgt:interface
xmlns:nmwgt=\"http://ggf.org/ns/nmwg/topology/2.0/\";>\n"+
- " <nmwgt:hostName>PoP-SOF</nmwgt:hostName>\n"+
- " <nmwgt:ifName>Fa0/4</nmwgt:ifName>\n"+
- "
<nmwgt:ifDescription>SW-nexus==hotspot-A-SOF</nmwgt:ifDescription>\n"+
- " <nmwgt:ifAddress
type=\"ipv4\">194.141.0.10</nmwgt:ifAddress>\n"+
- " <nmwgt:direction>out</nmwgt:direction>\n"+
- " <nmwgt:capacity>100000000</nmwgt:capacity>\n"+
- " </nmwgt:interface>\n"+
- " </netutil:subject>\n"+
- "
<nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>\n"+
- " </nmwg:metadata>\n"+
- " <nmwg:metadata xmlns:nmwg=\"http://ggf.org/ns/nmwg/base/2.0/\";
id=\"meta14\">\n"+
- " <netutil:subject
xmlns:netutil=\"http://ggf.org/ns/nmwg/characteristic/utilization/2.0/\";
id=\"subj14\">\n"+
- " <nmwgt:interface
xmlns:nmwgt=\"http://ggf.org/ns/nmwg/topology/2.0/\";>\n"+
- " <nmwgt:hostName>PoP-SOF</nmwgt:hostName>\n"+
- " <nmwgt:ifName>Fa0/3</nmwgt:ifName>\n"+
- "
<nmwgt:ifDescription>SW-nexus==BAS-SOF</nmwgt:ifDescription>\n"+
- " <nmwgt:ifAddress
type=\"ipv4\">194.141.0.10</nmwgt:ifAddress>\n"+
- " <nmwgt:direction>out</nmwgt:direction>\n"+
- " <nmwgt:capacity>100000000</nmwgt:capacity>\n"+
- " </nmwgt:interface>\n"+
- " </netutil:subject>\n"+
- "
<nmwg:eventType>http://ggf.org/ns/nmwg/characteristic/utilization/2.0</nmwg:eventType>\n"+
- " </nmwg:metadata>\n"+
- "</psui:topoelements>\n"+
- "<psui:topoelements>\n"+
- " <psservice:service
xmlns:psservice=\"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/\";
id=\"localhost.17bd84e6:11a29f2f532:-775a\">\n"+
- " <psservice:serviceName>perfSONAR Java SQL
MA</psservice:serviceName>\n"+
- "
<psservice:accessPoint>http://uran.acad.bg:8080/geant2_java-sql-ma/services/MeasurementArchiveService</psservice:accessPoint>\n"+
- " <psservice:serviceType>ma</psservice:serviceType>\n"+
- " <psservice:serviceDescription>perfSONAR Java SQL
MA</psservice:serviceDescription>\n"+
- " <psservice:serviceVersion>2.0</psservice:serviceVersion>\n"+
- " <psservice:organization>IPP-BAS</psservice:organization>\n"+
- "
<psservice:contactEmail>user@domain</psservice:contactEmail>\n"+
- " </psservice:service>\n"+
- "</psui:topoelements>\n"+
- "</psui:lookupInformation>\n";
+ return MockLookup.gethLSResults();
}

public void testParseXQuery() throws Exception {
+ query = createQuery();
MetaDataList interfaces =
query.parseXQueryResults(getTestResults());
assertNotNull(interfaces);
System.out.println(interfaces);
assertEquals(2,interfaces.size());
assertNotNull(interfaces.get(0).getEndpoint());
assertNotNull(interfaces.get(1).getEndpoint());
-
assertSame(interfaces.get(0).getEndpoint(),interfaces.get(1).getEndpoint());
+
assertEquals("http://ggf.org/ns/nmwg/characteristic/utilization/2.0",interfaces.get(0).getEndpoint().getEvent(0));
+
assertEquals("http://schemas.perfsonar.net/2.0",interfaces.get(0).getEndpoint().getSchema().toString());

+ System.out.println(interfaces.get(0).getEndpoint());
+ System.out.println(interfaces.get(1).getEndpoint());
+
assertEquals(interfaces.get(0).getEndpoint(),interfaces.get(1).getEndpoint());


/*

Modified:
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/LSTest.java
===================================================================
--- branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/LSTest.java
2008-06-23 08:27:13 UTC (rev 4044)
+++ branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/LSTest.java
2008-06-23 08:34:00 UTC (rev 4045)
@@ -6,7 +6,8 @@

public abstract class LSTest<Q extends LSXQuery> extends TestCase {
//protected String testLS =
"http://sonar1.amsterdam.surfnet.nl:8080/xml-ls/services/LookupService";;
- protected String testLS =
"PIONIER-LS,http://ls.perfsonar.pionier.net.pl:8080/xml-ls/services/LookupService,ls,,ls,ls";;
+ //protected String testLS =
"PIONIER-LS,http://ls.perfsonar.pionier.net.pl:8080/xml-ls/services/LookupService,ls,,ls,ls";;
+ protected String testLS =
"http://uran.acad.bg:8080/xml-ls-home/services/LookupService";;

//http://sonar1.amsterdam.surfnet.nl:8080/xml-ls/services/LookupService
//protected String testLS =
"BREN-LS,http://uran.acad.bg:8080/XML-LS/services/LookupService,ls,,ls,ls";;
//protected String testLS =
"ISTF-LS,http://selena.acad.bg:8070/axis/services/LookupService,ls,,ls,ls";;

Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/MockLookup.java

Added:
branches/perfsonarui/src/org/perfsonar/perfsonarui/test/ls/TracerouteTest.java



  • perfsonar: r4045 - in branches/perfsonarui/src/org/perfsonar/perfsonarui: . ls ma plugins test/ls, svnlog, 06/23/2008

Archive powered by MHonArc 2.6.16.

Top of Page