perfsonar-dev - [pS-dev] [GEANT/SA2/ps-java-services] r5902 - in trunk/perfsonar-java-xml-ls: log4j/development packaging src/main/java/org/perfsonar/service/lookupservice src/test/java/org/perfsonar/tests/actions src/test/java/org/perfsonar/tests/suite
Subject: perfsonar development work
List archive
[pS-dev] [GEANT/SA2/ps-java-services] r5902 - in trunk/perfsonar-java-xml-ls: log4j/development packaging src/main/java/org/perfsonar/service/lookupservice src/test/java/org/perfsonar/tests/actions src/test/java/org/perfsonar/tests/suite
Chronological Thread
- From:
- To:
- Subject: [pS-dev] [GEANT/SA2/ps-java-services] r5902 - in trunk/perfsonar-java-xml-ls: log4j/development packaging src/main/java/org/perfsonar/service/lookupservice src/test/java/org/perfsonar/tests/actions src/test/java/org/perfsonar/tests/suite
- Date: Mon, 12 Mar 2012 20:30:02 +0000 (GMT)
Author: dante.delvaux
Date: 2012-03-12 20:30:02 +0000 (Mon, 12 Mar 2012)
New Revision: 5902
Added:
trunk/perfsonar-java-xml-ls/packaging/jar/
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryActionTests.java
Modified:
trunk/perfsonar-java-xml-ls/log4j/development/log4j.properties
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryQueryGeneratorTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/RegistrationActionTests.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/suite/LSTestSuite.java
Log:
Improving unit testing coverage for discovery queries, refs PSSERVICES-558
Modified: trunk/perfsonar-java-xml-ls/log4j/development/log4j.properties
===================================================================
--- trunk/perfsonar-java-xml-ls/log4j/development/log4j.properties
2012-03-08 11:28:26 UTC (rev 5901)
+++ trunk/perfsonar-java-xml-ls/log4j/development/log4j.properties
2012-03-12 20:30:02 UTC (rev 5902)
@@ -2,14 +2,14 @@
#log4j.logger.org.perfsonar=INFO
#log4j.logger.org.perfsonar.service.lookupservice=INFO
-log4j.logger.org.perfsonar.service.lookupservice.DiscoveryQueryGenerator=TRACE
+#log4j.logger.org.perfsonar.service.lookupservice.DiscoveryQueryGenerator=TRACE
#log4j.logger.org.perfsonar.service.lookupservice.LSRegisterServiceEngine=TRACE
#log4j.logger.org.perfsonar.service.lookupservice.LSQueryServiceEngine=DEBUG
-#log4j.logger.org.perfsonar.service.lookupservice.LSQueryAction=DEBUG
+#log4j.logger.org.perfsonar.service.lookupservice.LSDiscoveryAction=DEBUG
#log4j.logger.org.perfsonar.service.lookupservice.components=DEBUG
#log4j.logger.org.perfsonar.service.lookupservice.components.XMLDBComponent=TRACE
#log4j.logger.org.perfsonar.service.lookupservice.storage=DEBUG
-log4j.logger.org.perfsonar.tests=DEBUG
+log4j.logger.org.perfsonar.tests=INFO
#log4j.logger.org.perfsonar.base2.service.configuration=DEBUG
#log4j.logger.org.exist.xmldb=DEBUG
#log4j.logger.org.exist.protocolhandler.xmlrpc=DEBUG
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
2012-03-08 11:28:26 UTC (rev 5901)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/LSQueryServiceEngine.java
2012-03-12 20:30:02 UTC (rev 5902)
@@ -102,26 +102,26 @@
}
}
- // check eventType
+ // Dispatch on eventType
if (isLookupQuery(eventType)) {
- logger.debug("EventType [" + eventType
- + "] accepted, taking RAW LSQuery
action");
-
- LSQueryAction queryAction = new LSQueryAction(dao);
// process QUERY
+ logger.debug("EventType [" + eventType + "] accepted,
taking RAW LSQuery action");
+
+ // Perform a plain query
+ LSQueryAction queryAction = new LSQueryAction(dao);
queryAction.performQuery(serviceRequest,
serviceResponse,
requestMessage, subject, lsOutput);
} else if (isLookupDiscovery(eventType)) {
- logger.debug("EventType [" + eventType
- + "] accepted, taking LSDiscovery
action");
- LSDiscoveryAction discovery = new
LSDiscoveryAction(dao); // process
-
+ logger.debug("EventType [" + eventType + "] accepted,
taking LSDiscovery action");
+
+ // Perform a discovery query
+ LSDiscoveryAction discovery = new
LSDiscoveryAction(dao);
logger.debug("subject:" + subject);
-
discovery.performAction(serviceRequest,
serviceResponse,
requestMessage, metadataWithSubject,
subject);
} else {
+ logger.warn("Unsupported query message eventType: " +
eventType);
throw new PerfSONARException("error/unsupported query
message",
"Unsupported query message");
}
Added:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryActionTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryActionTests.java
(rev 0)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryActionTests.java
2012-03-12 20:30:02 UTC (rev 5902)
@@ -0,0 +1,118 @@
+/**
+ *
+ */
+package org.perfsonar.tests.actions;
+
+
+import java.util.Collection;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+import org.perfsonar.base2.service.exceptions.PerfSONARException;
+import org.perfsonar.base2.service.requesthandler.ServiceMessage;
+import org.perfsonar.base2.xml.Element;
+import org.perfsonar.base2.xml.nmwg.Data;
+import org.perfsonar.base2.xml.nmwg.EventType;
+import org.perfsonar.base2.xml.nmwg.Message;
+import org.perfsonar.base2.xml.nmwg.Metadata;
+import org.perfsonar.base2.xml.nmwg.Parameters;
+import org.perfsonar.service.lookupservice.DiscoveryQueryGenerator;
+import org.perfsonar.service.lookupservice.LSQueryServiceEngine;
+import org.perfsonar.service.lookupservice.LSRegisterServiceEngine;
+
+import junit.framework.TestCase;
+
+/**
+ * @author Antoine Delvaux - DANTE
+ *
+ */
+public class DiscoveryActionTests extends TestCase {
+
+ private static final Logger logger =
Logger.getLogger(DiscoveryActionTests.class);
+
+ private Element getQueryRequest(String eventTypeStr, Element subject)
{
+ logger.debug("Creating a query request");
+
+ Message msg = new Message();
+ msg.setType("LSQueryRequest");
+
+ Metadata meta = new Metadata();
+ meta.setId("meta");
+
+ EventType eventType = new EventType();
+ eventType.setText(eventTypeStr);
+
+ Parameters params = new Parameters();
+
+ Data data = new Data();
+ data.setMetadataIdRef(meta.getId());
+
+ meta.addChild(subject);
+ meta.addChild(eventType);
+ meta.addChild(params);
+ msg.addChild(meta);
+ msg.addChild(data);
+
+ return msg;
+ }
+
+ /**
+ * Test the full summarisation query process:
+ *
+ * - register some services
+ * - generate an discovery query
+ * - ask the queryServiceEngine to perform the query
+ * - check response from DB
+ *
+ * @throws PerfSONARException
+ */
+ @Test
+ public void testPerformAction() throws PerfSONARException {
+ logger.info("•••• Testing Query Action: discovery query");
+
+ // Register a service so we can test it exists in the summary
+ LSRegisterServiceEngine regEngine = new
LSRegisterServiceEngine();
+ RegistrationActionTests regTest = new
RegistrationActionTests();
+ ServiceMessage registrationRequest = new
ServiceMessage(regTest.getRegistrationRequest(true, true, true, "600", true));
+ ServiceMessage serviceResponse = new ServiceMessage();
+ regEngine.takeAction(registrationRequest, serviceResponse);
+
+ // Build the discovery query
+ DiscoveryQueryGeneratorTests discGenTest = new
DiscoveryQueryGeneratorTests();
+ Element subject = new Element("subject", "summary",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/lookup/summarization/2.0/");
+ subject.addChild(discGenTest.buildAddressElement("1.1.1.1"));
+
subject.addChild(discGenTest.buildDomainElement("test.router.geant.net"));
+
subject.addChild(discGenTest.buildEventTypeElement("http://ggf.org/ns/nmwg/characteristic/utilization/2.0"));
+ // TODO: Summary parameters are to be tested, not sure how we
must register them though
+// Element parameters =
discGenTest.addKeywordParameterElement(discGenTest.buildParametersElement(),
"GEANT");
+// parameters =
discGenTest.addEventTypeParameterElement(parameters,
"http://ggf.org/ns/nmwg/characteristic/errors/2.0");
+// subject.addChild(parameters);
+
+ DiscoveryQueryGenerator dqg = new
DiscoveryQueryGenerator(subject);
+ assertNotNull(dqg);
+
+ // Ask the query service to perform the discovery request
(which is a dispatch inside the query service)
+ ServiceMessage serviceRequest = new
ServiceMessage(getQueryRequest("http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/summary/2.0",
subject));
+ LSQueryServiceEngine queryEngine = new LSQueryServiceEngine();
+ queryEngine.takeAction(serviceRequest, serviceResponse);
+
+ // Check eventType
+ Collection<Element> metadata =
serviceResponse.getElement().getChildren("metadata");
+ Element eventType =
metadata.iterator().next().getChildren("eventType").iterator().next();
+
assertTrue(eventType.getText().contains("http://ogf.org/ns/nmwg/tools/org/perfsonar/service/lookup/discovery/summary/2.0"));
+
+ // Check result
+
logger.debug(serviceResponse.getElement().getChildren("data").iterator().next());
+ assertNotNull("No data/metadata part was returned",
serviceResponse.getElement().getChildren("data").iterator().next().getChildren("metadata"));
+ Collection<Element> dataSubject =
serviceResponse.getElement().getChildren("data").iterator().next().getChildren("metadata").iterator().next().getChildren("subject");
+ Collection<Element> serviceResults =
dataSubject.iterator().next().getChildren("service");
+
assertTrue(serviceResults.iterator().next().getChildren("serviceName").iterator().next().getText().contains(RegistrationActionTests.testingServiceName));
+
assertTrue(serviceResults.iterator().next().getChildren("accessPoint").iterator().next().getText().contains(RegistrationActionTests.testingAccessPoint));
+
assertTrue(serviceResults.iterator().next().getChildren("serviceType").iterator().next().getText().contains(RegistrationActionTests.testingServiceType));
+
assertTrue(serviceResults.iterator().next().getChildren("serviceDescription").iterator().next().getText().contains(RegistrationActionTests.testingServiceDescription));
+
assertTrue(serviceResults.iterator().next().getChildren("organization").iterator().next().getText().contains(RegistrationActionTests.testingOrganization));
+
assertTrue(serviceResults.iterator().next().getChildren("contactEmail").iterator().next().getText().contains(RegistrationActionTests.testingContactEmail));
+
assertTrue(serviceResults.iterator().next().getChildren("serviceVersion").iterator().next().getText().contains(RegistrationActionTests.testingServiceVersion));
+ }
+
+}
Property changes on:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryActionTests.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryQueryGeneratorTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryQueryGeneratorTests.java
2012-03-08 11:28:26 UTC (rev 5901)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/DiscoveryQueryGeneratorTests.java
2012-03-12 20:30:02 UTC (rev 5902)
@@ -18,14 +18,14 @@
private static final Logger logger =
Logger.getLogger(DiscoveryQueryGeneratorTests.class);
- private Element buildAddressElement(String ip) {
+ public Element buildAddressElement(String ip) {
Element address = new Element("address", "nmtb",
"http://ogf.org/schema/network/topology/base/20070828/");
address.addAttribute("type", "ipv4");
address.setText(ip);
return address;
}
- private Element buildDomainElement(String dom) {
+ public Element buildDomainElement(String dom) {
Element domain = new Element("domain", "nmtb",
"http://ogf.org/schema/network/topology/base/20070828/");
Element domainName = new Element();
domainName.setName("name");
@@ -34,18 +34,18 @@
return domain;
}
- private Element buildEventTypeElement(String et) {
+ public Element buildEventTypeElement(String et) {
Element eventType = new Element("eventType", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
eventType.setText(et);
return eventType;
}
- private Element buildParametersElement() {
+ public Element buildParametersElement() {
Element parameters = new Element("parameters", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
return parameters;
}
- private Element addKeywordParameterElement(Element parameters, String
val) {
+ public Element addKeywordParameterElement(Element parameters, String
val) {
Element parameter = new Element("parameter", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
parameter.addAttribute("name", "keyword");
parameter.setText(val);
@@ -53,7 +53,7 @@
return parameters;
}
- private Element addEventTypeParameterElement(Element parameters,
String val) {
+ public Element addEventTypeParameterElement(Element parameters,
String val) {
Element parameter = new Element("parameter", "nmwg",
"http://ggf.org/ns/nmwg/base/2.0/");
parameter.addAttribute("name", "eventType");
parameter.setText(val);
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/RegistrationActionTests.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/RegistrationActionTests.java
2012-03-08 11:28:26 UTC (rev 5901)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/actions/RegistrationActionTests.java
2012-03-12 20:30:02 UTC (rev 5902)
@@ -20,9 +20,35 @@
public class RegistrationActionTests extends TestCase {
private static final Logger logger =
Logger.getLogger(RegistrationActionTests.class);
+
+ // The namespace used for the elements
+ public static final String nsPSService =
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/";
+ public static final String nsNMWGT =
"http://ggf.org/ns/nmwg/topology/2.0/";
+
+ // Some testing data to be registered
public static final String dataValue = "The value of someData";
public static final String dataName = "someData";
+ // The interface data to be registered
+ public static final String testingHostName = "test.router.geant.net";
+ public static final String testingIfName = "en1";
+ public static final String testingDescription = "a testing interface
description";
+ public static final String testingAddress = "1.1.1.1" ;
+ public static final String testingDirection = "out";
+ public static final String testingCapacity = "10000000000";
+ public static final String testingEventType =
"http://ggf.org/ns/nmwg/characteristic/utilization/2.0";
+ public static final String testinKeyword = "GEANT";
+
+ // The service definition data to be registered
+ public static final String testingServiceName = "Java RRD MA";
+ public static final String testingAccessPoint =
"http://test.register.geant.net:8080/perfsonar-java-rrd-ma/services/MeasurementArchiveService";
+ public static final String testingServiceType = "MA";
+ public static final String testingServiceDescription = "Java RRD MA,
perfSONAR project, 229.148.249.60";
+ public static final String testingOrganization = "GEANT";
+ public static final String testingContactEmail =
"";
+ public static final String testingServiceVersion = "1.5";
+
+
/**
* Creates an empty Message with the given TTL
* @param lsTTL Time To Live parameter of the request
@@ -64,28 +90,28 @@
Subject subject = new Subject();
subject.setId("id");
- Element service = new Element("service", "psservice",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
+ Element service = new Element("service", "psservice",
nsPSService);
- Element serviceName = new Element("serviceName", "psservice",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
- serviceName.setText("Java RRD MA");
+ Element serviceName = new Element("serviceName", "psservice",
nsPSService);
+ serviceName.setText(testingServiceName);
- Element accessPoint = new Element("accessPoint", "psservice",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
-
accessPoint.setText("http://test.register.geant.net:8080/perfsonar-java-rrd-ma/services/MeasurementArchiveService");
+ Element accessPoint = new Element("accessPoint", "psservice",
nsPSService);
+ accessPoint.setText(testingAccessPoint);
- Element serviceType = new Element("serviceType", "psservice",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
- serviceType.setText("MA");
+ Element serviceType = new Element("serviceType", "psservice",
nsPSService);
+ serviceType.setText(testingServiceType);
- Element serviceDescription = new
Element("serviceDescription", "psservice",
"http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
- serviceDescription.setText("Java RRD MA, perfSONAR project,
229.148.249.60");
+ Element serviceDescription = new
Element("serviceDescription", "psservice", nsPSService);
+ serviceDescription.setText(testingServiceDescription);
- Element organization = new Element("organization",
"psservice", "http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
- organization.setText("GEANT");
+ Element organization = new Element("organization",
"psservice", nsPSService);
+ organization.setText(testingOrganization);
- Element contactEmail = new Element("contactEmail",
"psservice", "http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
-
contactEmail.setText("");
+ Element contactEmail = new Element("contactEmail",
"psservice", nsPSService);
+ contactEmail.setText(testingContactEmail);
- Element serviceVersion = new Element("serviceVersion",
"psservice", "http://ggf.org/ns/nmwg/tools/org/perfsonar/service/1.0/");
- serviceVersion.setText("1.5");
+ Element serviceVersion = new Element("serviceVersion",
"psservice", nsPSService);
+ serviceVersion.setText(testingServiceVersion);
if (containsServiceName) {
service.addChild(serviceName);
@@ -111,16 +137,57 @@
Data data = new Data();
data.setMetadataIdRef(meta.getId());
- // nmwg:metadata
+ // The nmwg:metadata
Metadata metaInData = new Metadata();
+
+ // The perfsonar:subject element
Subject mdSubject = new Subject("perfsonar");
+
+ // Containing an nmwgt:interface topology element
+ Element iface = new Element("interface", "nmwgt",
nsNMWGT);
+ Element hostName = new Element("hostName", "nmwgt",
nsNMWGT);
+ hostName.setText(testingHostName);
+ Element ifName = new Element("ifName", "nmwgt",
nsNMWGT);
+ ifName.setText(testingIfName);
+ Element ifDescription = new Element("ifDescription",
"nmwgt", nsNMWGT);
+ ifDescription.setText(testingDescription);
+ Element ifAddress = new Element("ifAddress", "nmwgt",
nsNMWGT);
+ ifAddress.setText(testingAddress);
+ Element direction = new Element("direction", "nmwgt",
nsNMWGT);
+ direction.setText(testingDirection);
+ Element capacity = new Element("capacity", "nmwgt",
nsNMWGT);
+ capacity.setText(testingCapacity);
+
+ iface.addChild(hostName);
+ iface.addChild(ifName);
+ iface.addChild(ifDescription);
+ iface.addChild(ifAddress);
+ iface.addChild(direction);
+ iface.addChild(capacity);
+
+ // And add a random element
Element someData = new Element();
someData.setName(dataName);
someData.setText(dataValue);
// Building data element
+ mdSubject.addChild(iface);
mdSubject.addChild(someData);
metaInData.addChild(mdSubject);
+
+ // Subject eventType
+ Element et = new EventType();
+ et.setText(testingEventType);
+ metaInData.addChild(et);
+
+ // Keyword parameters
+ Parameters params = new Parameters();
+ Parameter param = new Parameter();
+ param.setName("keyword");
+ params.addChild(param);
+ metaInData.addChild(params);
+
+ // Adding the metaInData element
data.addChild(metaInData);
// And adding everything to the message
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/suite/LSTestSuite.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/suite/LSTestSuite.java
2012-03-08 11:28:26 UTC (rev 5901)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/suite/LSTestSuite.java
2012-03-12 20:30:02 UTC (rev 5902)
@@ -45,8 +45,6 @@
suite.addTestSuite(DataSourceComponentTest.class);
suite.addTestSuite(ModificationCounterComponentTest.class);
suite.addTestSuite(XMLDBComponentTest.class);
-
- suite.addTestSuite(DiscoveryQueryGeneratorTests.class);
// DAO - FIXME: threading issue
suite.addTestSuite(XQueryExistDAOImplTests.class);
@@ -54,9 +52,11 @@
suite.addTestSuite(SummarizationDaoTests.class);
// Actions
+ suite.addTestSuite(DiscoveryQueryGeneratorTests.class);
suite.addTestSuite(EchoActionTests.class);
suite.addTestSuite(RegistrationActionTests.class);
suite.addTestSuite(QueryActionTests.class);
+ suite.addTestSuite(DiscoveryActionTests.class);
suite.addTestSuite(DeregistrationActionTests.class);
// Summarization
- [pS-dev] [GEANT/SA2/ps-java-services] r5902 - in trunk/perfsonar-java-xml-ls: log4j/development packaging src/main/java/org/perfsonar/service/lookupservice src/test/java/org/perfsonar/tests/actions src/test/java/org/perfsonar/tests/suite, svn-noreply, 03/12/2012
Archive powered by MHonArc 2.6.16.