Skip to Content.
Sympa Menu

perfsonar-dev - [pS-dev] [GEANT/SA2/ps-java-services] r6445 - in trunk: perfsonar-base/base/src/main/java/net/geant/pe rfsonar perfsonar-base/base/src/test/java/net/geant/perfso nar/helpers perfsonar-base/ls/src/main/java/net/geant/perf sonar/ls perfsonar-base/ls/src/test/java/net/geant/perfson ar/ls perfsonar-base/messaging/src/main/java/net/geant/per fsonar/messaging perfsonar-base/messaging/src/test/java/ne t/geant/perfsonar/messaging perfsonar-base/sample-service/ src/main/java/net/geant/perfsonar/mp/sshtelnet perfsonar-b ase/sample-service/src/test/java/net/geant/perfsonar/mp/ss htelnet perfsonar-java-rrd-ma-base3/src/test/java/net/gean t/perfsonar/ma/rrd

Subject: perfsonar development work

List archive

[pS-dev] [GEANT/SA2/ps-java-services] r6445 - in trunk: perfsonar-base/base/src/main/java/net/geant/pe rfsonar perfsonar-base/base/src/test/java/net/geant/perfso nar/helpers perfsonar-base/ls/src/main/java/net/geant/perf sonar/ls perfsonar-base/ls/src/test/java/net/geant/perfson ar/ls perfsonar-base/messaging/src/main/java/net/geant/per fsonar/messaging perfsonar-base/messaging/src/test/java/ne t/geant/perfsonar/messaging perfsonar-base/sample-service/ src/main/java/net/geant/perfsonar/mp/sshtelnet perfsonar-b ase/sample-service/src/test/java/net/geant/perfsonar/mp/ss htelnet perfsonar-java-rrd-ma-base3/src/test/java/net/gean t/perfsonar/ma/rrd


Chronological Thread 
  • From:
  • To:
  • Subject: [pS-dev] [GEANT/SA2/ps-java-services] r6445 - in trunk: perfsonar-base/base/src/main/java/net/geant/pe rfsonar perfsonar-base/base/src/test/java/net/geant/perfso nar/helpers perfsonar-base/ls/src/main/java/net/geant/perf sonar/ls perfsonar-base/ls/src/test/java/net/geant/perfson ar/ls perfsonar-base/messaging/src/main/java/net/geant/per fsonar/messaging perfsonar-base/messaging/src/test/java/ne t/geant/perfsonar/messaging perfsonar-base/sample-service/ src/main/java/net/geant/perfsonar/mp/sshtelnet perfsonar-b ase/sample-service/src/test/java/net/geant/perfsonar/mp/ss htelnet perfsonar-java-rrd-ma-base3/src/test/java/net/gean t/perfsonar/ma/rrd
  • Date: Fri, 5 Jul 2013 19:23:09 +0100 (BST)
  • Authentication-results: sfpop-ironport07.merit.edu; dkim=neutral (message not signed) header.i=none

Author: dante.delvaux
Date: 2013-07-05 19:23:09 +0100 (Fri, 05 Jul 2013)
New Revision: 6445

Modified:
trunk/perfsonar-base/base/src/main/java/net/geant/perfsonar/PerfSONAR.java

trunk/perfsonar-base/base/src/test/java/net/geant/perfsonar/helpers/PerfSONARClient.java

trunk/perfsonar-base/ls/src/main/java/net/geant/perfsonar/ls/LSRegistrationTask.java

trunk/perfsonar-base/ls/src/test/java/net/geant/perfsonar/ls/MockLSService.java

trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/DeserializationException.java

trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/InMemoryInstancesListener.java

trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/Method.java

trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/XPathDeserializer.java

trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/InvalidXPathsTest.java

trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodOnObjectTest.java

trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodTest.java

trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodThrowsExceptionTest.java

trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/XPathDeserializerTest.java

trunk/perfsonar-base/sample-service/src/main/java/net/geant/perfsonar/mp/sshtelnet/ConfigurationFileChecker.java

trunk/perfsonar-base/sample-service/src/test/java/net/geant/perfsonar/mp/sshtelnet/SSHTelnetMPTest.java

trunk/perfsonar-java-rrd-ma-base3/src/test/java/net/geant/perfsonar/ma/rrd/RRDMATest.java
Log:
pSbase3: merging DeserializationExceptions and PerfSONARExceptions in
messaging.

Modified:
trunk/perfsonar-base/base/src/main/java/net/geant/perfsonar/PerfSONAR.java
===================================================================
---
trunk/perfsonar-base/base/src/main/java/net/geant/perfsonar/PerfSONAR.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/base/src/main/java/net/geant/perfsonar/PerfSONAR.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -24,6 +24,7 @@
import javax.xml.ws.Provider;

import net.geant.perfsonar.base.Scheduler;
+import net.geant.perfsonar.messaging.DeserializationException;
import net.geant.perfsonar.messaging.XPathDeserializer;
import net.geant.perfsonar.response.EchoRequestHandler;
import net.geant.perfsonar.selftest.SelfTestRunner;
@@ -190,7 +191,7 @@
final List<Object> objects;
try {
objects = (List<Object>)
deserializer.deserialize(toInputSource(request));
- } catch (PerfSONARException ex) {
+ } catch (DeserializationException ex) {
logger.error("Could not deserialize the request: {}",
ex.getMessage());
throw new RuntimeException("Could not deserialize the request.",
ex);
}
@@ -283,6 +284,7 @@

public void stop() {
scheduler.stopAll();
+ // FIXME: Can we really clear all configuration now or will we
generate errors in the still running threads?
Configuration.clearConfiguration();
SelfTestRunner.clearConfiguration();
XPathDeserializer.clearConfiguration();

Modified:
trunk/perfsonar-base/base/src/test/java/net/geant/perfsonar/helpers/PerfSONARClient.java
===================================================================
---
trunk/perfsonar-base/base/src/test/java/net/geant/perfsonar/helpers/PerfSONARClient.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/base/src/test/java/net/geant/perfsonar/helpers/PerfSONARClient.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -6,7 +6,7 @@
import javax.xml.transform.stream.StreamSource;

import net.geant.perfsonar.PerfSONAR;
-import net.geant.perfsonar.PerfSONARException;
+import net.geant.perfsonar.messaging.DeserializationException;
import net.geant.perfsonar.messaging.SelfTestResult;
import net.geant.perfsonar.messaging.XPathDeserializer;
import net.geant.perfsonar.mp.sshtelnet.Command;
@@ -30,14 +30,14 @@
}

@SuppressWarnings("unchecked")
- public List<SelfTestResult> selfTest(String id) throws SAXException,
PerfSONARException {
+ public List<SelfTestResult> selfTest(String id) throws SAXException,
DeserializationException {
final Response response = new
Response(invoke(NMWG.toSelfTestRequest(id)));
final XPathDeserializer deserializer = new XPathDeserializer();
return deserializer.getObjects(SelfTestResult.class,
(List<Object>) deserializer.deserialize(new
InputSource(response.getReader())));
}

- public SelfTestResult selfTest(String id, String testName) throws
PerfSONARException, SAXException {
+ public SelfTestResult selfTest(String id, String testName) throws
DeserializationException, SAXException {
final Response response = new
Response(invoke(NMWG.toSelfTestRequest(id, testName)));
final XPathDeserializer deserializer = new XPathDeserializer();
logger.debug("Response received:\n{}", response.toString());

Modified:
trunk/perfsonar-base/ls/src/main/java/net/geant/perfsonar/ls/LSRegistrationTask.java
===================================================================
---
trunk/perfsonar-base/ls/src/main/java/net/geant/perfsonar/ls/LSRegistrationTask.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/ls/src/main/java/net/geant/perfsonar/ls/LSRegistrationTask.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -24,6 +24,7 @@
import net.geant.perfsonar.NMWGMessage;
import net.geant.perfsonar.PerfSONAR;
import net.geant.perfsonar.PerfSONARException;
+import net.geant.perfsonar.messaging.DeserializationException;
import net.geant.perfsonar.messaging.XPathDeserializer;
import net.geant.perfsonar.templates.TemplateEngine;
import net.sf.cglib.proxy.Enhancer;
@@ -127,7 +128,7 @@
if (msg.getKey() != null) {
keys.put(address, msg.getKey());
}
- } catch (PerfSONARException e) {
+ } catch (DeserializationException e) {
logger.warn("Could not deserialize response message from
{}", address);
}
} else {

Modified:
trunk/perfsonar-base/ls/src/test/java/net/geant/perfsonar/ls/MockLSService.java
===================================================================
---
trunk/perfsonar-base/ls/src/test/java/net/geant/perfsonar/ls/MockLSService.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/ls/src/test/java/net/geant/perfsonar/ls/MockLSService.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -10,8 +10,8 @@
import javax.xml.ws.WebServiceProvider;

import net.geant.perfsonar.NMWGMessage;
-import net.geant.perfsonar.PerfSONARException;
import net.geant.perfsonar.templates.NMWG;
+import net.geant.perfsonar.messaging.DeserializationException;
import net.geant.perfsonar.messaging.XPathDeserializer;

import org.xml.sax.InputSource;
@@ -40,7 +40,7 @@
lsRegisterCount++;
}
return new StreamSource(NMWG.toLSResponse(msg.getId()));
- } catch (PerfSONARException ex) {
+ } catch (DeserializationException ex) {
fail(ex.getMessage());
}
return null;

Modified:
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/DeserializationException.java
===================================================================
---
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/DeserializationException.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/DeserializationException.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -42,13 +42,13 @@
return text.toString();
}

- private static void toString(StringBuffer text, Throwable t) {
- text.append(t.getMessage());
- text.append("\n");
- StringWriter out = new StringWriter();
- t.printStackTrace(new PrintWriter(out));
- text.append(out.toString());
- }
+ private static void toString(StringBuffer text, Throwable t) {
+ text.append(t.getMessage());
+ text.append("\n");
+ StringWriter out = new StringWriter();
+ t.printStackTrace(new PrintWriter(out));
+ text.append(out.toString());
+ }

private static String toString(List<Throwable> exceptions) {
final StringBuffer text = new StringBuffer();

Modified:
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/InMemoryInstancesListener.java
===================================================================
---
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/InMemoryInstancesListener.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/InMemoryInstancesListener.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -6,29 +6,37 @@
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

+import net.geant.perfsonar.PerfSONARException;
import javax.xml.xpath.XPathException;

+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import jlibs.xml.sax.dog.NodeItem;
import jlibs.xml.sax.dog.expr.Expression;
import jlibs.xml.sax.dog.expr.InstantEvaluationListener;

/**
- * Creates objects from XPath events and stores them in memory.
+ * Collects objects created from XPath events and stores them in memory.
*
* @author <a
href="mailto:">Blazej
Pietrzak</a>
*/
public class InMemoryInstancesListener extends InstantEvaluationListener {
- private final Map<Class<?>, List<Object>> instances = new
ConcurrentHashMap<Class<?>, List<Object>>();
+ protected Logger logger = LoggerFactory.getLogger(getClass());
private final List<Throwable> exceptions = new ArrayList<Throwable>();

+ // Hash containing objects instances created when parsing the XML stream
+ // FIXME: do we need ConcurrentHashMap or a regular Hashmap would be ok?
+ private final Map<Class<?>, List<Object>> instances = new
ConcurrentHashMap<Class<?>, List<Object>>();
+
@Override
public void onNodeHit(Expression expression, NodeItem nodeItem) {
final Method method =
XPathDeserializer.getXPathMethod(expression.getXPath());
if (method == null) {
- exceptions.add(new XPathException("No method for XPath
expression: " + expression.getXPath()));
- return;
- }
- executeMethod(method, nodeItem.value, instances, expression);
+ exceptions.add(new XPathException("No method for XPath
expression: " + expression.getXPath()));
+ return;
+ }
+ executeMethod(method, nodeItem.value, expression);
}

@Override
@@ -40,12 +48,15 @@
public void onResult(Expression expression, Object result) {
final Method method =
XPathDeserializer.getXPathMethod(expression.getXPath());
if (method == null) {
- exceptions.add(new XPathException("No method for XPath
expression: " + expression.getXPath()));
- return;
- }
- executeMethod(method, (String) result.toString(), instances,
expression);
+ exceptions.add(new XPathException("No method for XPath
expression: " + expression.getXPath()));
+ return;
+ }
+ executeMethod(method, (String) result.toString(), expression);
}

+ /**
+ * Return all the objects created
+ */
public List<?> getObjects() {
final List<Object> result = new ArrayList<Object>();
for (List<Object> temp : instances.values()) {
@@ -54,20 +65,24 @@
return result;
}

- private void executeMethod(final Method method, String value, final
Map<Class<?>, List<Object>> instances,
- Expression expr) {
- if (value == null) {
+ /**
+ * Wrapper around Method.execute
+ */
+ private void executeMethod(final Method method, String arg, Expression
expr) {
+ if (arg == null) {
exceptions.add(new XPathException("XPath(" + expr.getXPath() +
") returned null."));
- return;
+ logger.warn("XPath({}) returned null, no arg to pass to method
[{}].", expr.getXPath(), method.toString());
}
try {
- method.execute(value, instances);
- } catch (Throwable ex) {
- exceptions.add(ex);
+ method.execute(arg, instances, logger);
+ } catch (PerfSONARException e) {
+ exceptions.add(e);
+ logger.warn("Error when trying to execute method({}) from
XPath({}) on {}", method.toString(), expr.getXPath(), arg);
}
}

public List<Throwable> getExceptions() {
return Collections.unmodifiableList(exceptions);
}
+
}

Modified:
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/Method.java
===================================================================
---
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/Method.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/Method.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -6,6 +6,10 @@
import java.util.List;
import java.util.Map;

+import org.slf4j.Logger;
+
+import net.geant.perfsonar.PerfSONARException;
+
/**
* This class uses reflection to instantiate object and execute methods
* whenever a given XPath is evaluated successfully.
@@ -81,37 +85,55 @@
* parameter type is not a string)
* @param instances
* list of instances of method's declaring class (execution
may add new object to this list)
+ * @param logger
+ * the logger to use if anything needs to be written to log
*/
- public synchronized void execute(String arg, Map<Class<?>, List<Object>>
instances) throws Exception {
+ public synchronized void execute(String arg, Map<Class<?>, List<Object>>
instances, Logger logger) throws PerfSONARException {
final Object instance;
-
- if (object != null) {
- // If object is assigned, we use it
- instance = object;
- } else if (instances.get(method.getDeclaringClass()) != null
- && instances.get(method.getDeclaringClass()).size() > count)
{
- // If instances contains more objects than have been executed,
we return the next object to be used
- instance = instances.get(method.getDeclaringClass()).get(count);
- } else {
- // Otherwise, we create a new instance of the method's declaring
class FIXME: Why???
- instance = method.getDeclaringClass().newInstance();
- }
+ try {
+ if (object != null) {
+ // If object is assigned, we use it
+ instance = object;
+ } else if (instances.get(method.getDeclaringClass()) != null
+ && instances.get(method.getDeclaringClass()).size() >
count) {
+ // If instances contains more objects than have been
executed, we return the next object to be used
+ instance =
instances.get(method.getDeclaringClass()).get(count);
+ } else {
+ // Otherwise, we create a new instance of the method's
declaring class FIXME: Why???
+ try {
+ instance = method.getDeclaringClass().newInstance();
+ } catch (InstantiationException e) {
+ throw new PerfSONARException(logger, "Cannot instanciate
object of method [" + method.toString() + "].", e);
+ } catch (IllegalAccessException e) {
+ throw new PerfSONARException(logger, "Illegal access to
class of method [" + method.toString() + "]", e);
+ }
+ }

- if (getParameterType().equals(String.class)) {
- // If the method parameter type is a String it means the arg
we've been given should
- // be fed as such to the invoked method
- method.invoke(instance, arg);
- } else {
- // Otherwise, the arg is just the name of the object reference
- // We need to get the actual object before invoking the method
- final Object reference = getReference(instances, arg);
- if (reference == null) {
- return;
+ if (getParameterType().equals(String.class)) {
+ // If the method parameter type is a String it means the arg
we've been given should
+ // be fed as such to the invoked method
+ logger.trace("Trying to invoke {} for {}", method, instance);
+ method.invoke(instance, arg);
+ } else {
+ // Otherwise, the arg is just the name of the object
reference
+ // We need to get the actual object before invoking the
method
+ final Object reference = getReference(instances, arg);
+ if (reference == null) {
+ logger.warn("Reference to instance object not found,
cannot invoke.");
+ return;
+ }
+ logger.trace("Trying to invoke {} for {}", method, instance);
+ method.invoke(instance, reference);
}
- method.invoke(instance, reference);
+ } catch (IllegalAccessException e) {
+ throw new PerfSONARException(logger, "Illegal access to method:
" + method.toString(), e);
+ } catch (IllegalArgumentException e) {
+ throw new PerfSONARException(logger, "Illegal arguments passed
to method: " + method.toString(), e);
+ } catch (InvocationTargetException e) {
+ throw new PerfSONARException(logger, "Error when invoking
method: " + method.toString(), (Exception) e.getTargetException());
}

- // After method has been invoked, we store it in the instances Hash
+ // After method has been invoked, we store it in the instances Map
if (instances.get(method.getDeclaringClass()) == null) {
instances.put(method.getDeclaringClass(), new
ArrayList<Object>());
}

Modified:
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/XPathDeserializer.java
===================================================================
---
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/XPathDeserializer.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/XPathDeserializer.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -17,6 +17,8 @@

import org.jaxen.saxpath.SAXPathException;
import org.jaxen.saxpath.XPathSyntaxException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.xml.sax.InputSource;

/**
@@ -93,6 +95,8 @@
* @author <a
href="mailto:">Blazej
Pietrzak</a>
*/
public class XPathDeserializer {
+ protected Logger logger = LoggerFactory.getLogger(getClass());
+
private static final DefaultNamespaceContext CONTEXT = new
DefaultNamespaceContext();
private static final Map<String, Method> XPATHS = new
ConcurrentHashMap<String, Method>();
private static final Map<Class<?>, java.lang.reflect.Method> IDENTIFIERS
= new ConcurrentHashMap<Class<?>, java.lang.reflect.Method>();
@@ -126,6 +130,7 @@
XPATHS.put(xpath, new Method(method,
IDENTIFIERS.get(method.getParameterTypes()[0]), object));
}

+ //FIXME: why is this one synchronized and other methods not?
public static synchronized void putXPath(String xpath,
java.lang.reflect.Method method) {
XPATHS.put(xpath, new Method(method,
IDENTIFIERS.get(method.getParameterTypes()[0])));
}
@@ -153,21 +158,8 @@
public XPathDeserializer() {
}

- public static String validate(String xpath) {
- final XMLDog dog = new XMLDog(CONTEXT);
- try {
- dog.addXPath(xpath);
- } catch (XPathSyntaxException ex) {
- return "Invalid XPath: " + ex.getMultilineMessage();
- } catch (SAXPathException ex) {
- return "Invalid XPath: " + ex.getMessage();
- }
-
- return null;
- }
-
/**
- * Deserializes objects from xml stream using streaming XPath
expressions.
+ * Deserializes objects from XML stream using streaming XPath
expressions.
*
* @throws DeserializationException
* list of exceptions thrown while deserializing
@@ -175,13 +167,18 @@
public List<?> deserialize(InputSource reader) throws
DeserializationException {
final XMLDog dog = new XMLDog(CONTEXT);
final List<Throwable> exceptions = new ArrayList<Throwable>();
+
+ // First we add all XPaths we know about
+ logger.trace("First we add all XPaths we know about.");
for (Iterator<String> iter =
XPathDeserializer.getXPaths().iterator(); iter.hasNext();) {
try {
dog.addXPath(iter.next());
} catch (XPathSyntaxException ex) {
exceptions.add(new XPathException("Invalid XPath: " +
ex.getMultilineMessage()));
+ logger.warn("Invalid XPath: {}", ex.getMultilineMessage());
} catch (SAXPathException ex) {
exceptions.add(new XPathException("Invalid XPath: " +
ex.getMessage()));
+ logger.warn("Invalid XPath: {}", ex.getMessage());
}
}

@@ -189,22 +186,23 @@
throw new DeserializationException(exceptions);
}

- final Event event = dog.createEvent(); // must be after all
expressions
- // are added.
+ // Then setup the event listener to collect the objects created when
parsing
+ final Event event = dog.createEvent(); // must be after all
expressions are added.
event.setXMLBuilder(new DOMBuilder());
-
final InMemoryInstancesListener listener = new
InMemoryInstancesListener();
-
event.setListener(listener);

+ // Parse the incoming XML stream
+ logger.trace("Then we parse the incoming XML stream with XMLDog.");
try {
dog.sniff(event, reader, false/* useSTAX */);
} catch (XPathException ex) {
+ logger.warn("XPath error during parsing of input: {}",
ex.getMessage());
throw new DeserializationException(ex);
} finally {
- final Iterator<Method> iter = XPATHS.values().iterator();
- while (iter.hasNext()) {
- Method method = iter.next();
+ final Iterator<Method> iter = XPATHS.values().iterator();
+ while (iter.hasNext()) {
+ Method method = iter.next();
method.resetCount();
}
}
@@ -213,7 +211,9 @@
throw new DeserializationException(listener.getExceptions());
}

- return listener.getObjects();
+ final List<?> objects = listener.getObjects();
+ logger.trace("And finnaly we return the generated objects ({}).",
objects.size());
+ return objects;
}

@SuppressWarnings("unchecked")

Modified:
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/InvalidXPathsTest.java
===================================================================
---
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/InvalidXPathsTest.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/InvalidXPathsTest.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -13,7 +13,6 @@

import javax.xml.xpath.XPathException;

-import net.geant.perfsonar.PerfSONARException;
import net.geant.perfsonar.mp.sshtelnet.Command;
import net.geant.perfsonar.mp.sshtelnet.Router;
import net.geant.perfsonar.templates.NMWG;
@@ -59,12 +58,13 @@

try {
deserializer.deserialize(new InputSource(reader));
- fail("PerfSONARException was not thrown");
+ fail("DeserializationException was not thrown");
} catch (DeserializationException ex) {
- Iterator<Throwable> iter = ex.iterator();
- assertEquals(XPathException.class, iter.next().getClass());
- assertEquals(XPathException.class,
iter.next().getClass());
- assertFalse(iter.hasNext());
+ Iterator<Throwable> iter = ex.iterator();
+ assertEquals(XPathException.class, iter.next().getClass());
+ assertEquals(XPathException.class, iter.next().getClass());
+ assertFalse(iter.hasNext());
+ logger.warn("•• Invalid XPath test passed: exception correctly
thrown, we should have at least 2 warnings above.");
}
}

@@ -78,8 +78,9 @@
fail("DeserializationException was not thrown");
} catch (DeserializationException ex) {
final Iterator<Throwable> iter = ex.iterator();
- assertEquals(XPathException.class,
iter.next().getClass());
- assertFalse(iter.hasNext());
+ assertEquals(XPathException.class, iter.next().getClass());
+ assertFalse(iter.hasNext());
+ logger.warn("•• Null XPath test passed: exception correctly
thrown, we should have at least 1 warning above.");
}
}

@@ -93,8 +94,9 @@
fail("DeserializationException was not thrown");
} catch (DeserializationException ex) {
final Iterator<Throwable> iter = ex.iterator();
- assertEquals(XPathException.class,
iter.next().getClass());
- assertFalse(iter.hasNext());
+ assertEquals(XPathException.class, iter.next().getClass());
+ assertFalse(iter.hasNext());
+ logger.warn("•• Undeclared prefix test passed: exception
correctly thrown, we should have at least 1 warning above.");
}
}
}

Modified:
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodOnObjectTest.java
===================================================================
---
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodOnObjectTest.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodOnObjectTest.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -75,9 +75,9 @@
* Executes the method and test the object is correctly
instanciated/reflected.
*/
@Test
- public void shouldReturnObject() throws Exception {
+ public void shouldReturnObject() throws PerfSONARException {
assertTrue(instances.isEmpty());
- method.execute(OBJECT_NEW_NAME, instances);
+ method.execute(OBJECT_NEW_NAME, instances, logger);
assertEquals(expectedObject, (Command)
instances.get(Command.class).get(0));
}

@@ -85,9 +85,9 @@
* Executes the method and check its effect on the object
*/
@Test
- public void shouldExecute() throws Exception {
+ public void shouldExecute() throws PerfSONARException,
NoSuchMethodException {
assertEquals(OBJECT_NAME, expectedObject.getName());
- method.execute(OBJECT_NEW_NAME, instances);
+ method.execute(OBJECT_NEW_NAME, instances, logger);
assertEquals(OBJECT_NEW_NAME, expectedObject.getName());
}

@@ -95,9 +95,9 @@
* Execute the method and test its counter.
*/
@Test
- public void shouldExecuteMethodOnce() throws Exception {
+ public void shouldExecuteMethodOnce() throws PerfSONARException,
NoSuchMethodException {
assertTrue(instances.isEmpty());
- method.execute(OBJECT_NEW_NAME, instances);
+ method.execute(OBJECT_NEW_NAME, instances, logger);
assertEquals(1, method.getCount());
assertFalse(instances.isEmpty());
}
@@ -106,10 +106,10 @@
* Executes the method twice, but object should only be instanciated
once.
*/
@Test
- public void shouldReturnOneObject() throws Exception {
+ public void shouldReturnOneObject() throws PerfSONARException {
assertTrue(instances.isEmpty());
- method.execute(OBJECT_NEW_NAME, instances);
- method.execute(OBJECT_NAME, instances);
+ method.execute(OBJECT_NEW_NAME, instances, logger);
+ method.execute(OBJECT_NAME, instances, logger);
assertEquals(2, method.getCount());
assertEquals(1, instances.size());
}
@@ -118,10 +118,10 @@
* Initialised without object
*/
@Test
- public void shouldExecuteAndInstanciate() throws Exception {
+ public void shouldExecuteAndInstanciate() throws NoSuchMethodException,
PerfSONARException {
final Method myMethod = new
Method(Command.class.getMethod("setName", String.class));
assertTrue(instances.isEmpty());
- myMethod.execute(OBJECT_NAME, instances);
+ myMethod.execute(OBJECT_NAME, instances, logger);
assertFalse(instances.isEmpty());
assertEquals(1, myMethod.getCount());
assertEquals(1, instances.size());
@@ -131,18 +131,18 @@
* Executes the method multiple times and play with the execution counter
*/
@Test
- public void testExecutionCounter() throws Exception {
+ public void testExecutionCounter() throws PerfSONARException,
NoSuchMethodException {
assertTrue(instances.isEmpty());

for (int i = 0; i < LOOP_COUNT; i++) {
- method.execute(OBJECT_NAME, instances);
+ method.execute(OBJECT_NAME, instances, logger);
}
assertEquals(1, instances.size());
assertEquals(LOOP_COUNT, method.getCount());
logger.debug("Method correctly executed {} times: {}", count.get(),
method.toString());
method.resetCount();
assertEquals(0, method.getCount());
- method.execute(OBJECT_NEW_NAME, instances);
+ method.execute(OBJECT_NEW_NAME, instances, logger);
assertEquals(1, method.getCount());
assertEquals(1, instances.size());
logger.debug("Method correctly executed and counter reseted: {}",
method.toString());
@@ -183,7 +183,7 @@
* Execute a non String parameter method along with 2 different Objects
in the instances map
*/
@Test
- public void shouldExecuteNotStringArg() throws Exception {
+ public void shouldExecuteNotStringArg() throws NoSuchMethodException,
PerfSONARException {
method = newCommandRouterMethod();

// We add a Router object it to the instances List
@@ -193,7 +193,7 @@
assertEquals(2, instances.size());

// We invoke the setRouter method on a non existing Router
- method.execute("a wrong id", instances);
+ method.execute("a wrong id", instances, logger);
logger.warn("• Partial test passed: a warning about instance not
found should have printed above");
// The instances Map still got 2 entries
assertEquals(2, instances.size());
@@ -207,7 +207,7 @@
assertEquals(new ArrayList<Object>(), ((Router)
instances.get(Router.class).get(0)).getCommands());

// We invoke the setRouter method on the myRouterId Router
- method.execute("myRouterId", instances);
+ method.execute("myRouterId", instances, logger);
// Instances size and content has not changed
assertEquals(2, instances.size());
assertEquals(1, instances.get(Command.class).size());
@@ -221,7 +221,7 @@
assertEquals("My Router Name", ((Router)
instances.get(Router.class).get(0)).getName());

// If we execute once more, the instances shouldn't change
- method.execute("myRouterId", instances);
+ method.execute("myRouterId", instances, logger);
assertEquals(2, instances.size());
// FIXME: or should it? Why do I get 2 instances of the Command
class now?
// assertEquals(1, instances.get(Command.class).size());
@@ -236,7 +236,7 @@
* Call execute with existing objects in the instances Map
*/
@Test
- public void shouldExecuteOnObjects() throws Exception {
+ public void shouldExecuteOnObjects() throws PerfSONARException,
NoSuchMethodException {
final Method myMethod = new
Method(Command.class.getMethod("setName", String.class));
anObject = new Command();
anObject.setName("First command");
@@ -252,22 +252,22 @@

instances.put(Command.class, aListOfObjects);
assertEquals(1, instances.size());
- myMethod.execute(OBJECT_NEW_NAME, instances);
+ myMethod.execute(OBJECT_NEW_NAME, instances, logger);
assertEquals(1, myMethod.getCount());
assertEquals(3, aListOfObjects.size());
assertEquals(1, instances.size());

- myMethod.execute(OBJECT_NAME, instances);
+ myMethod.execute(OBJECT_NAME, instances, logger);
assertEquals(2, myMethod.getCount());
assertEquals(3, aListOfObjects.size());
assertEquals(1, instances.size());

- myMethod.execute(OBJECT_NEW_NAME, instances);
+ myMethod.execute(OBJECT_NEW_NAME, instances, logger);
assertEquals(3, myMethod.getCount());
assertEquals(3, aListOfObjects.size());
assertEquals(1, instances.size());

- myMethod.execute(OBJECT_NAME, instances);
+ myMethod.execute(OBJECT_NAME, instances, logger);
assertEquals(4, myMethod.getCount());
assertEquals(4, aListOfObjects.size());
assertEquals(1, instances.size());
@@ -290,12 +290,12 @@
int last = method.getCount();
try {
for (int i = 0; i < LOOP_COUNT; i++) {
- method.execute(OBJECT_NEW_NAME, instances);
+ method.execute(OBJECT_NEW_NAME, instances,
logger);
final int current = method.getCount();
assertTrue(current > last);
last = current;
}
- } catch (Exception e) {
+ } catch (PerfSONARException e) {
logger.error("Error when executing {}",
method.toString());
}

@@ -347,8 +347,8 @@
// assertEquals(1,
instances.get(Command.class).size());

try {
- method.execute(currentId, instances);
- } catch (Exception e) {
+ method.execute(currentId, instances, logger);
+ } catch (PerfSONARException e) {
logger.error("Error when executing {} {}",
method.toString(), currentId);
}
}

Modified:
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodTest.java
===================================================================
---
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodTest.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodTest.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -34,7 +34,7 @@
private final Map<Class<?>, List<Object>> expected = new
Hashtable<Class<?>, List<Object>>();

@Before
- public void givenMethods() throws Exception {
+ public void givenMethods() throws PerfSONARException,
NoSuchMethodException {
new Command();
eventTypeMethod = createCommandMethod("setEventType", String.class);
commandNameMethod = createCommandMethod("setName", String.class);
@@ -77,20 +77,20 @@
return new Method(Command.class.getMethod(methodName, params),
Command.class.getMethod("getId"));
}

- private void whenExecutingMethods(final Map<Class<?>, List<Object>>
instances) throws Exception {
+ private void whenExecutingMethods(final Map<Class<?>, List<Object>>
instances) throws PerfSONARException {
// We call router.setId("router2");
- routerIdMethod.execute("router2", instances);
+ routerIdMethod.execute("router2", instances, logger);
// We call router.setName("router");
- routerNameMethod.execute("router", instances);
+ routerNameMethod.execute("router", instances, logger);
// We call setCurrentRouter(getReference("router2"));
- currentRouterMethod.execute("router2", instances);
+ currentRouterMethod.execute("router2", instances, logger);
// We call command1.setEventType("testing1");
- eventTypeMethod.execute("testing1", instances);
+ eventTypeMethod.execute("testing1", instances, logger);
// We call command1.setName("test1");
- commandNameMethod.execute("test1", instances);
+ commandNameMethod.execute("test1", instances, logger);
// We call command2.setName("test2");
- commandNameMethod.execute("test2", instances);
+ commandNameMethod.execute("test2", instances, logger);
// We call command2.setEventType("testing2");
- eventTypeMethod.execute("testing2", instances);
+ eventTypeMethod.execute("testing2", instances, logger);
}
}

Modified:
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodThrowsExceptionTest.java
===================================================================
---
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodThrowsExceptionTest.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodThrowsExceptionTest.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -31,9 +31,10 @@
public void whenMethodThrowsException() throws NoSuchMethodException {
method = new Method(getClass().getMethod("throwException",
String.class));
try {
- method.execute("argument", instances);
+ method.execute("argument", instances, logger);
fail("Exception was not thrown.");
- } catch (Exception ex) {
+ } catch (PerfSONARException ex) {
+ logger.warn("• Test passed with a PerfSONARException thrown, see
above warning");
}
}


Modified:
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/XPathDeserializerTest.java
===================================================================
---
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/XPathDeserializerTest.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/XPathDeserializerTest.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -13,7 +13,6 @@
import java.util.Arrays;
import java.util.List;

-import net.geant.perfsonar.PerfSONARException;
import net.geant.perfsonar.mp.sshtelnet.Command;
import net.geant.perfsonar.mp.sshtelnet.Router;
import net.geant.perfsonar.mp.sshtelnet.RouterReference;
@@ -87,7 +86,7 @@

@SuppressWarnings("unchecked")
@Test
- public void shouldReturnRouters() throws Exception {
+ public void shouldReturnRouters() throws UnknownHostException,
DeserializationException {
final List<Object> actual = (List<Object>)
deserializer.deserialize(new InputSource(reader));

assertEquals(Arrays.asList(Command.PING_IPV6,
Command.SHOW_ENVIRONMENT),

Modified:
trunk/perfsonar-base/sample-service/src/main/java/net/geant/perfsonar/mp/sshtelnet/ConfigurationFileChecker.java
===================================================================
---
trunk/perfsonar-base/sample-service/src/main/java/net/geant/perfsonar/mp/sshtelnet/ConfigurationFileChecker.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/sample-service/src/main/java/net/geant/perfsonar/mp/sshtelnet/ConfigurationFileChecker.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -8,8 +8,8 @@
import java.io.FileInputStream;
import java.io.FileNotFoundException;

-import net.geant.perfsonar.PerfSONARException;
import net.geant.perfsonar.ls.LSRegistrationTask;
+import net.geant.perfsonar.messaging.DeserializationException;
import net.geant.perfsonar.messaging.Helper;
import net.geant.perfsonar.messaging.XPathDeserializer;

@@ -47,8 +47,9 @@
XPathDeserializer deserializer = new XPathDeserializer();
try {
deserializer.deserialize(new InputSource(new
FileInputStream(file)));
- } catch (PerfSONARException ex) {
- logger.error("Couldn't deserialize the configuration file:
{}", ex.getMessage());
+ } catch (DeserializationException ex) {
+ logger.error("Couldn't deserialize the configuration file,
enable debug logging for more info.");
+ logger.debug(ex.getMessage());
} catch (FileNotFoundException ex) {
logger.error("Configuration file not found: {}",
ex.getMessage());
}

Modified:
trunk/perfsonar-base/sample-service/src/test/java/net/geant/perfsonar/mp/sshtelnet/SSHTelnetMPTest.java
===================================================================
---
trunk/perfsonar-base/sample-service/src/test/java/net/geant/perfsonar/mp/sshtelnet/SSHTelnetMPTest.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-base/sample-service/src/test/java/net/geant/perfsonar/mp/sshtelnet/SSHTelnetMPTest.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -13,9 +13,9 @@
import java.util.Arrays;
import java.util.List;

-import net.geant.perfsonar.PerfSONARException;
import net.geant.perfsonar.helpers.PerfSONARClient;
import net.geant.perfsonar.helpers.Response;
+import net.geant.perfsonar.messaging.DeserializationException;
import net.geant.perfsonar.messaging.XPathDeserializer;
import net.geant.perfsonar.templates.NMWG;

@@ -83,7 +83,7 @@

@Test
public void checkMetadataKey()
- throws PerfSONARException, SAXException, UnknownHostException,
InstantiationException, IllegalAccessException {
+ throws DeserializationException, SAXException,
UnknownHostException, InstantiationException, IllegalAccessException {
logger.info("•••• Checking metadata key request");
configureResponseDeserialization();

@@ -171,7 +171,7 @@

@Test
public void checkSetupDataRequest()
- throws PerfSONARException, SAXException, UnknownHostException,
InstantiationException, IllegalAccessException {
+ throws DeserializationException, SAXException,
UnknownHostException, InstantiationException, IllegalAccessException {
logger.info("•••• Checking setup data request");

final Command command1 = new Command(Command.SHOW_ENVIRONMENT,
"host1");

Modified:
trunk/perfsonar-java-rrd-ma-base3/src/test/java/net/geant/perfsonar/ma/rrd/RRDMATest.java
===================================================================
---
trunk/perfsonar-java-rrd-ma-base3/src/test/java/net/geant/perfsonar/ma/rrd/RRDMATest.java
2013-07-05 15:50:43 UTC (rev 6444)
+++
trunk/perfsonar-java-rrd-ma-base3/src/test/java/net/geant/perfsonar/ma/rrd/RRDMATest.java
2013-07-05 18:23:09 UTC (rev 6445)
@@ -9,15 +9,14 @@
import java.util.List;

import net.geant.perfsonar.Configuration;
-import net.geant.perfsonar.PerfSONARException;
import net.geant.perfsonar.templates.NMWGRRDMA;
import net.geant.perfsonar.helpers.PerfSONARClient;
import net.geant.perfsonar.helpers.Response;
+import net.geant.perfsonar.messaging.DeserializationException;
import net.geant.perfsonar.messaging.SelfTestResult;

import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -54,7 +53,7 @@
}

@Test
- public void checkConfig() throws Exception {
+ public void checkConfig() throws NoSuchMethodException {
logger.info("•••• Checking RRDMA configuration");
assertEquals(ServiceController.class.getMethod("getRRDFile",
Interface.class),
Configuration.getHandler("MetadataKeyRequest"));
@@ -62,7 +61,7 @@
}

@Test
- public void checkSelfTestMetadata() throws PerfSONARException,
SAXException {
+ public void checkSelfTestMetadata() throws DeserializationException,
SAXException {
logger.info("•••• Checking self test metadata request");
SelfTestResult expectedResult = new SelfTestResult("metadata-test",
"Fetching metadata from DB is correct.", "success", "RRD_MA", "MA");
SelfTestResult result = client.selfTest(REQUEST_ID, "metadata-test");
@@ -71,7 +70,7 @@
}

@Test
- public void checkSelfTestRRDFetch() throws PerfSONARException,
SAXException {
+ public void checkSelfTestRRDFetch() throws DeserializationException,
SAXException {
logger.info("•••• Checking self test rrd fetch request");
SelfTestResult expectedResult = new SelfTestResult("rrd-fetch-test",
"Fetching data from RRD file is correct.", "success", "RRD_MA", "MA");
SelfTestResult result = client.selfTest(REQUEST_ID,
"rrd-fetch-test");
@@ -80,7 +79,7 @@
}

@Test
- public void checkSelfTest() throws PerfSONARException, SAXException {
+ public void checkSelfTest() throws DeserializationException,
SAXException {
logger.info("•••• Checking full self test request");
List<SelfTestResult> expectedResults = Arrays.asList(
success("rrd-fetch-test", "Fetching data from RRD file is
correct.", "RRD_MA", "MA"),



  • [pS-dev] [GEANT/SA2/ps-java-services] r6445 - in trunk: perfsonar-base/base/src/main/java/net/geant/pe rfsonar perfsonar-base/base/src/test/java/net/geant/perfso nar/helpers perfsonar-base/ls/src/main/java/net/geant/perf sonar/ls perfsonar-base/ls/src/test/java/net/geant/perfson ar/ls perfsonar-base/messaging/src/main/java/net/geant/per fsonar/messaging perfsonar-base/messaging/src/test/java/ne t/geant/perfsonar/messaging perfsonar-base/sample-service/ src/main/java/net/geant/perfsonar/mp/sshtelnet perfsonar-b ase/sample-service/src/test/java/net/geant/perfsonar/mp/ss htelnet perfsonar-java-rrd-ma-base3/src/test/java/net/gean t/perfsonar/ma/rrd, svn-noreply, 07/05/2013

Archive powered by MHonArc 2.6.16.

Top of Page