perfsonar-dev - [pS-dev] [GEANT/SA2/ps-java-services] r6442 - in trunk: perfsonar-base/apt/src/test/resources perfsona r-base/base/src/test/resources perfsonar-base/ls/src/test/ java/net/geant/perfsonar/ls perfsonar-base/ls/src/test/res ources perfsonar-base/messaging/src/main/java/net/geant/pe rfsonar perfsonar-base/messaging/src/main/java/net/geant/p erfsonar/messaging perfsonar-base/messaging/src/main/java/ net/geant/perfsonar/templates perfsonar-base/messaging/src /test/java/net/geant/perfsonar perfsonar-base/messaging/sr c/test/java/net/geant/perfsonar/messaging perfsonar-base/m essaging/src/test/java/net/geant/perfsonar/templates perfs onar-base/messaging/src/test/resources perfsonar-java-rrd- ma/src/main/java/org/perfsonar/service/measurementArchive/ rrdType/storage/sql/query perfsonar-java-rrd-ma/src/main/j ava/org/perfsonar/service/measurementArchive/servlets perf sonar-java-rrd-ma/src/test/java/org/perfsonar/tests/measur ementArchive/rrdType/storage/sql perfsonar-java-rrd-ma-bas e3/src/main/java/n et/geant/perfsonar/ma/rrd perfsonar-jav a-xml-ls/src/main/java/org/perfsonar/service/lookupservice /dls/client perfsonar-java-xml-ls/src/main/java/org/perfso nar/service/lookupservice/registration perfsonar-java-xml- ls/src/main/java/org/perfsonar/service/utilities perfsonar -java-xml-ls/src/test/java/org/perfsonar/tests/components
Subject: perfsonar development work
List archive
[pS-dev] [GEANT/SA2/ps-java-services] r6442 - in trunk: perfsonar-base/apt/src/test/resources perfsona r-base/base/src/test/resources perfsonar-base/ls/src/test/ java/net/geant/perfsonar/ls perfsonar-base/ls/src/test/res ources perfsonar-base/messaging/src/main/java/net/geant/pe rfsonar perfsonar-base/messaging/src/main/java/net/geant/p erfsonar/messaging perfsonar-base/messaging/src/main/java/ net/geant/perfsonar/templates perfsonar-base/messaging/src /test/java/net/geant/perfsonar perfsonar-base/messaging/sr c/test/java/net/geant/perfsonar/messaging perfsonar-base/m essaging/src/test/java/net/geant/perfsonar/templates perfs onar-base/messaging/src/test/resources perfsonar-java-rrd- ma/src/main/java/org/perfsonar/service/measurementArchive/ rrdType/storage/sql/query perfsonar-java-rrd-ma/src/main/j ava/org/perfsonar/service/measurementArchive/servlets perf sonar-java-rrd-ma/src/test/java/org/perfsonar/tests/measur ementArchive/rrdType/storage/sql perfsonar-java-rrd-ma-bas e3/src/main/java/n et/geant/perfsonar/ma/rrd perfsonar-jav a-xml-ls/src/main/java/org/perfsonar/service/lookupservice /dls/client perfsonar-java-xml-ls/src/main/java/org/perfso nar/service/lookupservice/registration perfsonar-java-xml- ls/src/main/java/org/perfsonar/service/utilities perfsonar -java-xml-ls/src/test/java/org/perfsonar/tests/components
Chronological Thread
- From:
- To:
- Subject: [pS-dev] [GEANT/SA2/ps-java-services] r6442 - in trunk: perfsonar-base/apt/src/test/resources perfsona r-base/base/src/test/resources perfsonar-base/ls/src/test/ java/net/geant/perfsonar/ls perfsonar-base/ls/src/test/res ources perfsonar-base/messaging/src/main/java/net/geant/pe rfsonar perfsonar-base/messaging/src/main/java/net/geant/p erfsonar/messaging perfsonar-base/messaging/src/main/java/ net/geant/perfsonar/templates perfsonar-base/messaging/src /test/java/net/geant/perfsonar perfsonar-base/messaging/sr c/test/java/net/geant/perfsonar/messaging perfsonar-base/m essaging/src/test/java/net/geant/perfsonar/templates perfs onar-base/messaging/src/test/resources perfsonar-java-rrd- ma/src/main/java/org/perfsonar/service/measurementArchive/ rrdType/storage/sql/query perfsonar-java-rrd-ma/src/main/j ava/org/perfsonar/service/measurementArchive/servlets perf sonar-java-rrd-ma/src/test/java/org/perfsonar/tests/measur ementArchive/rrdType/storage/sql perfsonar-java-rrd-ma-bas e3/src/main/java/n et/geant/perfsonar/ma/rrd perfsonar-jav a-xml-ls/src/main/java/org/perfsonar/service/lookupservice /dls/client perfsonar-java-xml-ls/src/main/java/org/perfso nar/service/lookupservice/registration perfsonar-java-xml- ls/src/main/java/org/perfsonar/service/utilities perfsonar -java-xml-ls/src/test/java/org/perfsonar/tests/components
- Date: Fri, 5 Jul 2013 14:05:39 +0100 (BST)
- Authentication-results: sfpop-ironport07.merit.edu; dkim=neutral (message not signed) header.i=none
Author: dante.delvaux
Date: 2013-07-05 14:05:39 +0100 (Fri, 05 Jul 2013)
New Revision: 6442
Removed:
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/StaticMethodTest.java
Modified:
trunk/perfsonar-base/apt/src/test/resources/log4j.xml
trunk/perfsonar-base/base/src/test/resources/log4j.xml
trunk/perfsonar-base/ls/src/test/java/net/geant/perfsonar/ls/LSRegisterTestBase.java
trunk/perfsonar-base/ls/src/test/resources/log4j.xml
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/PerfSONARException.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/SelfTestResult.java
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/XPathConfiguration.java
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/XPathDeserializer.java
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/templates/VelocityEngineSingleton.java
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/AsynchTester.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/MethodThrowsExceptionTest.java
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/templates/TemplateEngineTest.java
trunk/perfsonar-base/messaging/src/test/resources/log4j.xml
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/Interface.java
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDData.java
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDKey.java
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDMAService.java
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDSelect.java
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/ServiceController.java
trunk/perfsonar-java-rrd-ma/src/main/java/org/perfsonar/service/measurementArchive/rrdType/storage/sql/query/QueryGenerator.java
trunk/perfsonar-java-rrd-ma/src/main/java/org/perfsonar/service/measurementArchive/servlets/DbInitializerServlet.java
trunk/perfsonar-java-rrd-ma/src/test/java/org/perfsonar/tests/measurementArchive/rrdType/storage/sql/MysqlMetadataStorageDAOImplTest.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/JoinRequestGenerator.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/UpdateTokenRequestGenerator.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LsTTLParameterStatus.java
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/utilities/ResourceBundle.java
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/ModificationCounterComponentTest.java
Log:
pSbase3:
- better unit testing coverage for net.geant.perfsonar.messaging
- refactoring of net.geant.perfsonar.messaging.Method
Modified: trunk/perfsonar-base/apt/src/test/resources/log4j.xml
===================================================================
--- trunk/perfsonar-base/apt/src/test/resources/log4j.xml 2013-07-01
18:23:56 UTC (rev 6441)
+++ trunk/perfsonar-base/apt/src/test/resources/log4j.xml 2013-07-05
13:05:39 UTC (rev 6442)
@@ -14,6 +14,7 @@
-->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8"/>
+ <param name="Threshold" value="info"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d - [%p] %c{1}[%M]:%L -
%m %n"/>
</layout>
Modified: trunk/perfsonar-base/base/src/test/resources/log4j.xml
===================================================================
--- trunk/perfsonar-base/base/src/test/resources/log4j.xml 2013-07-01
18:23:56 UTC (rev 6441)
+++ trunk/perfsonar-base/base/src/test/resources/log4j.xml 2013-07-05
13:05:39 UTC (rev 6442)
@@ -14,6 +14,7 @@
-->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8"/>
+ <param name="Threshold" value="info"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d - [%p] %c{1}[%M]:%L -
%m %n"/>
</layout>
Modified:
trunk/perfsonar-base/ls/src/test/java/net/geant/perfsonar/ls/LSRegisterTestBase.java
===================================================================
---
trunk/perfsonar-base/ls/src/test/java/net/geant/perfsonar/ls/LSRegisterTestBase.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/ls/src/test/java/net/geant/perfsonar/ls/LSRegisterTestBase.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -54,9 +54,9 @@
public void shouldRegisterToLookupService() throws Exception {
//FIXME: this *sometimes* throws IOExceptions and sometimes the test
fails because no keepAlive are being sent
logger.info("•••• Checking registration to LS.");
- //FIXME: we sleep 5 times we need to do a registration and sending a
keep alives
+ //FIXME: we sleep 8 times we need to do a registration and sending a
keep alives
//that should be enough, but still, the registration thread could
get stuck...
- Thread.sleep(getLSInterval() * 5);
+ Thread.sleep(getLSInterval() * 8);
assertEquals(1, ls.getRegisterCount());
assertTrue("Keep alive should be sent at least 2x but was " +
ls.getKeepAliveCount(),
ls.getKeepAliveCount() >= 2);
Modified: trunk/perfsonar-base/ls/src/test/resources/log4j.xml
===================================================================
--- trunk/perfsonar-base/ls/src/test/resources/log4j.xml 2013-07-01
18:23:56 UTC (rev 6441)
+++ trunk/perfsonar-base/ls/src/test/resources/log4j.xml 2013-07-05
13:05:39 UTC (rev 6442)
@@ -14,6 +14,7 @@
-->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8"/>
+ <param name="Threshold" value="info"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d - [%p] %c{1}[%M]:%L -
%m %n"/>
</layout>
Modified:
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/PerfSONARException.java
===================================================================
---
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/PerfSONARException.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/PerfSONARException.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -5,7 +5,7 @@
/**
* Common Exception class for all PerfSONAR Exceptions.
*
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*
*/
public class PerfSONARException extends Exception {
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-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/InMemoryInstancesListener.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -15,20 +15,22 @@
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 {
protected Logger logger = LoggerFactory.getLogger(getClass());
- private int exceptions = 0;
+ private int exceptionsCount = 0;
+ // 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());
- executeMethod(method, nodeItem.value, instances, expression);
+ executeMethod(method, nodeItem.value, expression);
}
@Override
@@ -39,9 +41,12 @@
@Override
public void onResult(Expression expression, Object result) {
final Method method =
XPathDeserializer.getXPathMethod(expression.getXPath());
- executeMethod(method, (String) result.toString(), instances,
expression);
+ 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()) {
@@ -50,22 +55,24 @@
return result;
}
- private void executeMethod(final Method method, String value, final
Map<Class<?>,
- List<Object>> instances, Expression expr) {
- if (value == null) {
- exceptions++;
- logger.warn("XPath({}) returned null.", expr.getXPath());
+ /**
+ * Wrapper around Method.execute
+ */
+ private void executeMethod(final Method method, String arg, Expression
expr) {
+ if (arg == null) {
+ exceptionsCount++;
+ logger.warn("XPath({}) returned null, no arg to pass to method
[{}].", expr.getXPath(), method.toString());
}
try {
- method.execute(value, instances, logger);
+ method.execute(arg, instances, logger);
} catch (PerfSONARException e) {
- exceptions++;
- logger.warn("Error when trying to execute method({}) from
XPath({}) on {}", method.toString(), expr.getXPath(), value);
+ exceptionsCount++;
+ logger.warn("Error when trying to execute method({}) from
XPath({}) on {}", method.toString(), expr.getXPath(), arg);
}
}
- public int getExceptions() {
- return exceptions;
+ public int getExceptionsCount() {
+ return exceptionsCount;
}
}
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-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/Method.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -11,149 +11,191 @@
import net.geant.perfsonar.PerfSONARException;
/**
- * Method executed when given XPath is evaluated successfully.
+ * This class uses reflection to instantiate object and execute methods
+ * whenever a given XPath is evaluated successfully.
*
* @author <a
href="mailto:">Blazej
Pietrzak</a>
+ * @author Antoine Delvaux - DANTE
*/
public class Method {
private final java.lang.reflect.Method method;
private final java.lang.reflect.Method identifierMethod;
private final Object object;
+ // Count the number of method executions
+ // FIXME: don't we need a counter per Map instance entry???
private int count = 0;
+ /**
+ * Initialises the Method object with a method (and corresponding
object) to be reflected.
+ */
public Method(java.lang.reflect.Method method) {
this(method, null, null);
}
/**
+ * Initialises the Method object with a method (and corresponding
object) to be reflected
+ * and an identifier method to select the correct object to use when
invoking the method.
+ *
* @param method
* method to be executed when XPath evaluates successfully
* @param identifierMethod
- * method providing object unique identifier
+ * method providing object unique identifier, must return a
String!
*/
public Method(java.lang.reflect.Method method, java.lang.reflect.Method
identifierMethod) {
this(method, identifierMethod, null);
}
/**
+ * Initialises the Method object with an object method to be
reflected/invoked
+ * an identifier method to select the correct object to use when
invoking the method
+ * and an already existing object to use with the reflected method.
+ *
* @param method
* method to be executed when XPath evaluates successfully
* @param identifierMethod
- * method providing object unique identifier
+ * method providing object unique identifier, must return a
String!
* @param object
* object on which given method should be executed
*/
public Method(java.lang.reflect.Method method, java.lang.reflect.Method
identifierMethod, Object object) {
+ if (Modifier.isStatic(method.getModifiers())) {
+ // FIXME: what kind of exception should we throw?
+ throw new RuntimeException("Static methods are forbidden for
xPath configuration: " + method.toString());
+ }
+ if (identifierMethod != null && identifierMethod.getReturnType() !=
String.class) {
+ throw new RuntimeException("Identifier methods must return a
String: " + identifierMethod.toString());
+ }
this.method = method;
this.identifierMethod = identifierMethod;
this.object = object;
}
/**
- * Executes the method. It creates object of the method's declaring
class if
- * needed and adds it to instances provided in instances argument.
+ * Executes the method with the given argument (single argument only).
+ * It creates an object of the method's declaring class if needed and
adds it to the List
+ * of instances provided in instances argument. <br/><br/>
*
+ * The execution of the method and any access to the counter are marked
as synchronized,
+ * only one execution can happen at any time.
+ *
* @param arg
- * method argument
+ * method argument (as such if the method parameter type is a
string) or
+ * a string representation of the object to be used as
argument (if the method
+ * parameter type is not a string)
* @param instances
- * list of instances (execution may add new object)
- * @throws PerfSONARException
+ * 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, Logger logger) throws PerfSONARException {
final Object instance;
try {
- instance = getInstance(instances);
+ 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
+ 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);
}
- } catch (InstantiationException e) {
- throw new PerfSONARException(logger, "Cannot get instance from
the instances list.", e);
} catch (IllegalAccessException e) {
- throw new PerfSONARException(logger, "Illegal access to
instance/method: " + toString(), e);
+ throw new PerfSONARException(logger, "Illegal access to method:
" + method.toString(), e);
} catch (IllegalArgumentException e) {
- throw new PerfSONARException(logger, "Illegal arguments passed
to method: " + toString(), e);
+ throw new PerfSONARException(logger, "Illegal arguments passed
to method: " + method.toString(), e);
} catch (InvocationTargetException e) {
- throw new PerfSONARException(logger, "Cannot invoke method: " +
toString(), (Exception) e.getTargetException());
+ throw new PerfSONARException(logger, "Error when invoking
method: " + method.toString(), (Exception) e.getTargetException());
}
- putInstance(instances, instance);
- count++;
- }
-
- private void putInstance(Map<Class<?>, List<Object>> instances, Object
instance) {
+ // After method has been invoked, we store it in the instances Hash
if (instances.get(method.getDeclaringClass()) == null) {
instances.put(method.getDeclaringClass(), new
ArrayList<Object>());
}
if (instances.get(method.getDeclaringClass()).size() < count + 1) {
instances.get(method.getDeclaringClass()).add(instance);
}
+ // And we keep the count correct
+ count++;
}
+ /**
+ * Return the executions counter
+ */
public synchronized int getCount() {
return count;
}
+ /**
+ * Reset the executions counter
+ */
public synchronized void resetCount() {
count = 0;
}
- protected synchronized Object getInstance(Map<Class<?>, List<Object>>
instances) throws InstantiationException,
- IllegalAccessException {
- if (Modifier.isStatic(method.getModifiers())) {
- throw new IllegalStateException("Static methods are forbidden
for xpath configuration: " + method);
- }
-
- if (object != null) {
- return object;
- }
-
- if (instances.get(method.getDeclaringClass()) == null) {
- return method.getDeclaringClass().newInstance();
- }
-
- if (instances.get(method.getDeclaringClass()).size() > count) {
- return instances.get(method.getDeclaringClass()).get(count);
- }
-
- return method.getDeclaringClass().newInstance();
- }
-
- protected Object getReference(Map<Class<?>, List<Object>> instances,
String value) throws IllegalAccessException,
- InvocationTargetException {
- if (identifierMethod == null) {
+ /**
+ * Look for the instance of the class of the identifier method which is
identified
+ * by the given value (as string). The identifier method should return
a String!
+ */
+ private Object getReference(Map<Class<?>, List<Object>> instances,
String id)
+ throws IllegalAccessException, InvocationTargetException {
+ // If we don't have any identifier method or if we don't have any
instance of the class of the identifier method
+ if (identifierMethod == null ||
instances.get(identifierMethod.getDeclaringClass()) == null) {
return null;
}
- if (instances.get(identifierMethod.getDeclaringClass()) == null) {
- return null;
- }
-
+ // For each instance of the class of the identifier method, we look
for the given id
for (Object instance :
instances.get(identifierMethod.getDeclaringClass())) {
try {
- if (identifierMethod.invoke(instance).equals(value)) {
+ if (identifierMethod.invoke(instance).equals(id)) {
+ // We return the first object corresponding to the id
return instance;
}
} catch (NullPointerException ex) {
throw new NullPointerException("Identifier value is not set
for " + instance
- + ". Check xpath for setting identifier or verify
whether xpath for reference is correct.");
+ + ". Check XPath for setting identifier or verify
whether XPath for reference is correct.");
}
}
+ // We haven't found anything
return null;
}
+ /**
+ * Return the parameter type of the method only argument.
+ * Each method used here should only use a single argument! This needs
to be ensured by clients.
+ */
private Class<?> getParameterType() {
return method.getParameterTypes()[0];
}
/**
+ * Returns the name of the method and its execution counter
* @see java.lang.Object#toString()
*/
public String toString() {
Modified:
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/SelfTestResult.java
===================================================================
---
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/SelfTestResult.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/SelfTestResult.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -11,7 +11,7 @@
* This class represents SelfTest results returned by a perfSONAR service
*
* @author Blazej Pietrzak -
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*
*/
public class SelfTestResult implements Comparable<SelfTestResult> {
Modified:
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/XPathConfiguration.java
===================================================================
---
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/XPathConfiguration.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/XPathConfiguration.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -36,21 +36,23 @@
}
public Object intercept(Object obj, Method method, Object[] args,
MethodProxy proxy) throws Throwable {
-
if (RESTRICTED_METHODS.contains(method.getName())) {
// FIXME: add try ... catch and do something or ignore
return proxy.invokeSuper(obj, args);
}
if
(!obj.getClass().getSuperclass().equals(method.getDeclaringClass())) {
+ // There is a type mismatch, better do nothing
return null;
}
if (args.length != 1) {
+ // All XPath methods need one argument
return null;
}
if (this.object != null) {
+ // We have an object this xpath/method should be applied to
XPathDeserializer.putXPath(xpath, object, method);
} else {
XPathDeserializer.putXPath(xpath, method);
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-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/messaging/XPathDeserializer.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -206,12 +206,13 @@
}
}
- if (listener.getExceptions() > 0) {
- throw new PerfSONARException(logger, "Multiple errors (" +
listener.getExceptions() + ") when parsing the incoming stream.");
+ if (listener.getExceptionsCount() > 0) {
+ throw new PerfSONARException(logger, "Multiple errors (" +
listener.getExceptionsCount() + ") when parsing the incoming stream.");
}
- logger.trace("And finnaly we return the generated objects ({}).",
listener.getObjects().size());
- 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/main/java/net/geant/perfsonar/templates/VelocityEngineSingleton.java
===================================================================
---
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/templates/VelocityEngineSingleton.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/main/java/net/geant/perfsonar/templates/VelocityEngineSingleton.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -10,7 +10,7 @@
/**
* Singleton instance of the apache VelocityEngine
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*/
public enum VelocityEngineSingleton {
// We want to ensure this will always be a singleton
Modified:
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/AsynchTester.java
===================================================================
---
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/AsynchTester.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/AsynchTester.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -5,7 +5,7 @@
*
* Reports the errors and exceptions up to the parent thread
*
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*/
public class AsynchTester {
private Thread thread;
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-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/InvalidXPathsTest.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -57,7 +57,7 @@
fail("PerfSONARException was not thrown");
} catch (PerfSONARException ex) {
// TODO: Check that we actually got 2 warnings
- logger.debug("•• Invalid XPath test passed: exception correctly
thrown, we should have at least 2 warnings above.");
+ logger.warn("•• Invalid XPath test passed: exception correctly
thrown, we should have at least 2 warnings above.");
}
}
@@ -70,7 +70,7 @@
deserializer.deserialize(new InputSource(reader));
fail("PerfSONARException was not thrown");
} catch (PerfSONARException ex) {
- logger.debug("•• Null XPath test passed: exception correctly
thrown, we should have at least 1 warning above.");
+ logger.warn("•• Null XPath test passed: exception correctly
thrown, we should have at least 1 warning above.");
}
}
@@ -83,7 +83,7 @@
deserializer.deserialize(new InputSource(reader));
fail("PerfSONARException was not thrown");
} catch (PerfSONARException ex) {
- logger.debug("•• Undeclared prefix test passed: exception
correctly thrown, we should have at least 1 warning above.");
+ 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-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodOnObjectTest.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -1,37 +1,384 @@
package net.geant.perfsonar.messaging;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+import net.geant.perfsonar.AsynchTester;
+import net.geant.perfsonar.PerfSONARException;
import net.geant.perfsonar.mp.sshtelnet.Command;
+import net.geant.perfsonar.mp.sshtelnet.Router;
+import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
+ * @author Antoine Delvaux - DANTE
* @author <a
href="mailto:">Blazej
Pietrzak</a>
*/
public class MethodOnObjectTest {
+ protected Logger logger = LoggerFactory.getLogger(getClass());
+
+ // Singleton counters shared between threads
+ private static final int INITIAL_COUNT = 0;
+ private static final int LOOP_COUNT = 200;
+ private static final int THREADS_COUNT = 100;
+ private static final String OBJECT_NAME = "The Object Name";
+ private static final String OBJECT_NEW_NAME = "my new name";
+
+ private final AtomicInteger count = new AtomicInteger(INITIAL_COUNT);
private final Map<Class<?>, List<Object>> instances = new
Hashtable<Class<?>, List<Object>>();
- private final Command expected = new Command();
+ private final Command expectedObject = new Command();
private Method method;
+
+ private final List<Object> aListOfObjects = new ArrayList<Object>();
+ private Command anObject;
+ /**
+ * Initialises the expected object that we'll test against.
+ * Also initialises the method object using the same object's method
(setName)
+ * and give the expected object as the object the method should be
executed against.
+ */
@Before
- public void givenMethodWithObject() throws Exception {
- expected.setName("object");
- method = new Method(Command.class.getMethod("setName",
String.class), null, expected);
+ public void givenMethodWithObject() throws NoSuchMethodException {
+ expectedObject.setName(OBJECT_NAME);
+ method = new Method(Command.class.getMethod("setName",
String.class), Command.class.getMethod("getId"), expectedObject);
}
+
+ /**
+ * Tidy up and clean after usage
+ */
+ @After
+ public void clearState() {
+ instances.clear();
+ count.set(INITIAL_COUNT);
+ }
+
+ /**
+ * Always be sure to be in a clean state.
+ */
+ @Test
+ public void shouldBeEmpty() {
+ assertTrue(instances.isEmpty());
+ }
+
+ /**
+ * Executes the method and test the object is correctly
instanciated/reflected.
+ */
+ @Test
+ public void shouldReturnObject() throws PerfSONARException {
+ assertTrue(instances.isEmpty());
+ method.execute(OBJECT_NEW_NAME, instances, logger);
+ assertEquals(expectedObject, (Command)
instances.get(Command.class).get(0));
+ }
+
+ /**
+ * Executes the method and check its effect on the object
+ */
+ @Test
+ public void shouldExecute() throws PerfSONARException,
NoSuchMethodException {
+ assertEquals(OBJECT_NAME, expectedObject.getName());
+ method.execute(OBJECT_NEW_NAME, instances, logger);
+ assertEquals(OBJECT_NEW_NAME, expectedObject.getName());
+ }
+
+ /**
+ * Execute the method and test its counter.
+ */
+ @Test
+ public void shouldExecuteMethodOnce() throws PerfSONARException,
NoSuchMethodException {
+ assertTrue(instances.isEmpty());
+ method.execute(OBJECT_NEW_NAME, instances, logger);
+ assertEquals(1, method.getCount());
+ assertFalse(instances.isEmpty());
+ }
+
+ /**
+ * Executes the method twice, but object should only be instanciated
once.
+ */
+ @Test
+ public void shouldReturnOneObject() throws PerfSONARException {
+ assertTrue(instances.isEmpty());
+ method.execute(OBJECT_NEW_NAME, instances, logger);
+ method.execute(OBJECT_NAME, instances, logger);
+ assertEquals(2, method.getCount());
+ assertEquals(1, instances.size());
+ }
+ /**
+ * Initialised without object
+ */
@Test
- public void shouldReturnObject() throws Exception {
- assertTrue(expected == method.getInstance(instances));
+ 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, logger);
+ assertFalse(instances.isEmpty());
+ assertEquals(1, myMethod.getCount());
+ assertEquals(1, instances.size());
}
+
+ /**
+ * Executes the method multiple times and play with the execution counter
+ */
+ @Test
+ public void testExecutionCounter() throws PerfSONARException,
NoSuchMethodException {
+ assertTrue(instances.isEmpty());
+ for (int i = 0; i < LOOP_COUNT; i++) {
+ 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, logger);
+ assertEquals(1, method.getCount());
+ assertEquals(1, instances.size());
+ logger.debug("Method correctly executed and counter reseted: {}",
method.toString());
+ }
+
+ /**
+ * Creates a Method object using the Command.setRouter method
+ * and adds the expectedObject to the instances list
+ */
+ private Method newCommandRouterMethod() throws NoSuchMethodException {
+ // We use the setRouter method which needs a Router object as
parameter
+ Method myMethod = new Method(Command.class.getMethod("setRouter",
Router.class), Router.class.getMethod("getId"));
+ final List<Object> aList = new ArrayList<Object>();
+ aList.add(expectedObject);
+ instances.put(Command.class, aList);
+ return myMethod;
+ }
+
+ /**
+ * Add a Router instance to the instances global Map
+ */
+ private Router addARouter(String id, String name) {
+ Router myRouter = new Router();
+ myRouter.setId(id);
+ myRouter.setName(name);
+ synchronized (instances) {
+ List<Object> list = instances.get(Router.class);
+ if (list == null) {
+ list = new ArrayList<Object>();
+ }
+ list.add(myRouter);
+ instances.put(Router.class, list);
+ }
+ return myRouter;
+ }
+
+ /**
+ * Execute a non String parameter method along with 2 different Objects
in the instances map
+ */
@Test
- public void shouldBeEmpty() {
+ public void shouldExecuteNotStringArg() throws NoSuchMethodException,
PerfSONARException {
+ method = newCommandRouterMethod();
+
+ // We add a Router object it to the instances List
+ final Router myRouter = addARouter("myRouterId", "My Router Name");
+ assertEquals(myRouter, (Router) instances.get(Router.class).get(0));
+ assertEquals("My Router Name", ((Router)
instances.get(Router.class).get(0)).getName());
+ assertEquals(2, instances.size());
+
+ // We invoke the setRouter method on a non existing Router
+ 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());
+ // One for Command, being a single element list
+ assertEquals(1, instances.get(Command.class).size());
+ // And one for Router, being a single element list too
+ assertEquals(1, instances.get(Router.class).size());
+ // But the method has NOT been executed
+ assertEquals(0, method.getCount());
+ // No router has been assigned the Command object through the
Command.setRouter method
+ 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, logger);
+ // Instances size and content has not changed
+ assertEquals(2, instances.size());
+ assertEquals(1, instances.get(Command.class).size());
+ assertEquals(1, instances.get(Router.class).size());
+ // But the method has been executed once
+ assertEquals(1, method.getCount());
+ // The Command object is now linked with the Router instance
+ assertEquals(expectedObject, ((Router)
instances.get(Router.class).get(0)).getCommands().get(0));
+ // And the Router instance has not been altered
+ assertEquals(myRouter, (Router) instances.get(Router.class).get(0));
+ 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, 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());
+ assertEquals(1, instances.get(Router.class).size());
+ // But the method has now been executed twice
+ assertEquals(2, method.getCount());
+
+ logger.debug("•• Method execution with multiple instances and non
string parameter test passed.");
+ }
+
+ /**
+ * Call execute with existing objects in the instances Map
+ */
+ @Test
+ public void shouldExecuteOnObjects() throws PerfSONARException,
NoSuchMethodException {
+ final Method myMethod = new
Method(Command.class.getMethod("setName", String.class));
+ anObject = new Command();
+ anObject.setName("First command");
+ aListOfObjects.add(anObject);
+ anObject = new Command();
+ anObject.setName("Second command");
+ aListOfObjects.add(anObject);
+ anObject = new Command();
+ anObject.setName("Third command");
+ aListOfObjects.add(anObject);
+ assertEquals(3, aListOfObjects.size());
assertTrue(instances.isEmpty());
+
+ instances.put(Command.class, aListOfObjects);
+ assertEquals(1, instances.size());
+ myMethod.execute(OBJECT_NEW_NAME, instances, logger);
+ assertEquals(1, myMethod.getCount());
+ assertEquals(3, aListOfObjects.size());
+ assertEquals(1, instances.size());
+
+ myMethod.execute(OBJECT_NAME, instances, logger);
+ assertEquals(2, myMethod.getCount());
+ assertEquals(3, aListOfObjects.size());
+ assertEquals(1, instances.size());
+
+ myMethod.execute(OBJECT_NEW_NAME, instances, logger);
+ assertEquals(3, myMethod.getCount());
+ assertEquals(3, aListOfObjects.size());
+ assertEquals(1, instances.size());
+
+ myMethod.execute(OBJECT_NAME, instances, logger);
+ assertEquals(4, myMethod.getCount());
+ assertEquals(4, aListOfObjects.size());
+ assertEquals(1, instances.size());
}
+
+ /**
+ * This test for Method.count be exact in any situation
+ */
+ @Test
+ // CHECKSTYLE IGNORE IllegalThrow FOR NEXT 1 LINES
+ public void testThreadedExecutionCounter() throws Throwable {
+ count.set(0);
+ AsynchTester[] testers = new AsynchTester[THREADS_COUNT];
+ logger.info("•••• Testing Method.count with {} threads",
THREADS_COUNT);
+ assertTrue(instances.isEmpty());
+
+ for (int i = count.get(); i < THREADS_COUNT; i++) {
+ testers[i] = new AsynchTester(new Runnable() {
+ public void run() {
+ int last = method.getCount();
+ try {
+ for (int i = 0; i < LOOP_COUNT; i++) {
+ method.execute(OBJECT_NEW_NAME, instances,
logger);
+ final int current = method.getCount();
+ assertTrue(current > last);
+ last = current;
+ }
+ } catch (PerfSONARException e) {
+ logger.error("Error when executing {}",
method.toString());
+ }
+
+ assertEquals(1, instances.size());
+ assertTrue(last >= (count.get() + 1) * LOOP_COUNT);
+ logger.debug("{} finished, {} thread(s) complete, {}
currently running threads.",
+ Thread.currentThread().getName(),
count.incrementAndGet(), Thread.activeCount());
+ }
+ });
+ logger.debug("Starting thread {} and invoking method {} times",
i + 1, LOOP_COUNT);
+ testers[i].start();
+ }
+
+ for (AsynchTester tester : testers) {
+ tester.test();
+ }
+ assertEquals(1, instances.size());
+ assertEquals(THREADS_COUNT * LOOP_COUNT, method.getCount());
+ logger.info("•• Method.count is thread safe.");
+ }
+
+ /**
+ * This test for Method.execute() to be ok in a threaded environment
+ * Play with instances
+ */
+ @Test
+ // CHECKSTYLE IGNORE IllegalThrow FOR NEXT 1 LINES
+ public void testThreadedExecution() throws Throwable {
+ count.set(0);
+ assertTrue(instances.isEmpty());
+ method = newCommandRouterMethod();
+ assertEquals(1, instances.get(Command.class).size());
+ AsynchTester[] testers = new AsynchTester[THREADS_COUNT];
+ logger.info("•••• Testing threaded Method.execute calls with {}
threads", THREADS_COUNT);
+
+ for (int i = count.get(); i < THREADS_COUNT; i++) {
+ testers[i] = new AsynchTester(new Runnable() {
+ public void run() {
+ int current = method.getCount();
+ final String currentId = "Id-" + current;
+ final String currentName = "My Router number " + current;
+ final Router myRouter = addARouter(currentId,
currentName);
+ // Check the router is indeed added to the instance Map
+
assertTrue(instances.get(Router.class).contains(myRouter));
+ // Check the instances count is coherent
+// assertEquals(1, instances.get(Command.class).size());
+ assertTrue(current < instances.get(Router.class).size());
+
+ try {
+ method.execute(currentId, instances, logger);
+ } catch (PerfSONARException e) {
+ logger.error("Error when executing {} {}",
method.toString(), currentId);
+ }
+
+ // We have at least one execution more (but more
executions could have happened in between)
+ assertTrue(current + 1 <= method.getCount());
+ // We should still have a single element List for
Command.class
+ // FIXME: or should we have more? Why do I get 2
instances of the Command class now?
+// assertEquals(1, instances.get(Command.class).size());
+ // And router.Class count must must not have decreased
+ assertTrue(current < instances.get(Router.class).size());
+ // myRouter is still present in the instances list
+
assertTrue(instances.get(Router.class).contains(myRouter));
+ int index =
instances.get(Router.class).indexOf(myRouter);
+ // and its attributes are still the correct ones
+ assertEquals(currentName, ((Router)
instances.get(Router.class).get(index)).getName());
+// assertEquals(expectedObject, ((Router)
instances.get(Router.class).get(index)).getCommands().get(0));
+// assertEquals(OBJECT_NAME, ((Router)
instances.get(Router.class).get(index)).getCommands().get(0).getName());
+ logger.debug("{} finished, {} thread(s) complete, {}
currently running threads.",
+ Thread.currentThread().getName(),
count.incrementAndGet(), Thread.activeCount());
+ }
+ });
+ logger.debug("Starting thread {} and invoking method {} times",
i + 1, LOOP_COUNT);
+ testers[i].start();
+ }
+
+ for (AsynchTester tester : testers) {
+ tester.test();
+ }
+ // We have 2 Classes in the instances Map
+ assertEquals(2, instances.size());
+ assertEquals(THREADS_COUNT, method.getCount());
+ logger.info("•• Method.execute with HashMap instances is thread
safe.");
+ }
+
}
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-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/MethodThrowsExceptionTest.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -23,7 +23,7 @@
private Method method;
private Map<Class<?>, List<Object>> instances = new Hashtable<Class<?>,
List<Object>>();
- public void throwException(String arg) throws Exception {
+ public void throwException(String arg) {
throw new IllegalArgumentException("test exception.");
}
@@ -34,7 +34,7 @@
method.execute("argument", instances, logger);
fail("Exception was not thrown.");
} catch (PerfSONARException ex) {
- logger.debug("Test passed with a PerfSONARException thrown, see
above warning");
+ logger.warn("• Test passed with a PerfSONARException thrown, see
above warning");
}
}
@@ -47,4 +47,12 @@
public void shouldNotIncreaseCounter() {
assertEquals(0, method.getCount());
}
+
+ public static void staticMethod() {
+ }
+
+ @Test(expected = RuntimeException.class)
+ public void shouldThrowRuntimeException() throws PerfSONARException,
NoSuchMethodException {
+ method = new
Method(MethodThrowsExceptionTest.class.getMethod("staticMethod"));
+ }
}
Deleted:
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/StaticMethodTest.java
===================================================================
---
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/StaticMethodTest.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/messaging/StaticMethodTest.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -1,44 +0,0 @@
-package net.geant.perfsonar.messaging;
-
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-/**
- * @author <a
href="mailto:">Blazej
Pietrzak</a>
- */
-public class StaticMethodTest {
- private final Map<Class<?>, List<Object>> instances = new
Hashtable<Class<?>, List<Object>>();
- private Method method;
-
- public static void staticMethod() {
- }
-
- @Before
- public void givenStaticMethod() throws Exception {
- method = new
Method(StaticMethodTest.class.getMethod("staticMethod"));
- }
-
- @After
- public void tearDown() throws Exception {
- method = null;
- }
-
- @Test(expected = IllegalStateException.class)
- public void shouldThrowException() throws Exception {
- assertNull(method.getInstance(instances));
- }
-
- @Test
- public void shouldBeEmpty() {
- assertTrue(instances.isEmpty());
- }
-
-}
Modified:
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/templates/TemplateEngineTest.java
===================================================================
---
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/templates/TemplateEngineTest.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-base/messaging/src/test/java/net/geant/perfsonar/templates/TemplateEngineTest.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -72,11 +72,11 @@
}
// And the file/jar template
assertEquals("Hello John Doe " + myInt + "!",
out.toString());
- logger.debug("{} finished, {} thread(s) complete, {}
currently running threads.",
+ logger.trace("{} finished, {} thread(s) complete, {}
currently running threads.",
Thread.currentThread().getName(),
count.incrementAndGet(), Thread.activeCount());
}
});
- logger.debug("Starting thread {} and evaluating template", i +
1);
+ logger.trace("Starting thread {} and evaluating template", i +
1);
testers[i].start();
}
Modified: trunk/perfsonar-base/messaging/src/test/resources/log4j.xml
===================================================================
--- trunk/perfsonar-base/messaging/src/test/resources/log4j.xml 2013-07-01
18:23:56 UTC (rev 6441)
+++ trunk/perfsonar-base/messaging/src/test/resources/log4j.xml 2013-07-05
13:05:39 UTC (rev 6442)
@@ -14,6 +14,7 @@
-->
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Encoding" value="UTF-8"/>
+ <param name="Threshold" value="info"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d - [%p] %c{1}[%M]:%L -
%m %n"/>
</layout>
@@ -53,6 +54,11 @@
<appender-ref ref="psbase"/>
</logger>
+ <!-- Messaging -->
+<!-- <logger name="net.geant.perfsonar.messaging"> -->
+<!-- <level value="debug"/> -->
+<!-- <appender-ref ref="console"/> -->
+<!-- </logger> -->
<!-- Console logging for everything else -->
<root>
Modified:
trunk/perfsonar-java-rrd-ma/src/main/java/org/perfsonar/service/measurementArchive/rrdType/storage/sql/query/QueryGenerator.java
===================================================================
---
trunk/perfsonar-java-rrd-ma/src/main/java/org/perfsonar/service/measurementArchive/rrdType/storage/sql/query/QueryGenerator.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-rrd-ma/src/main/java/org/perfsonar/service/measurementArchive/rrdType/storage/sql/query/QueryGenerator.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -21,7 +21,7 @@
* This class translate any perfSONAR (nmwg XML) received query into a
native DB query (SQL)
*
* @author Piotr Pikusa
()
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*/
public class QueryGenerator
{
Modified:
trunk/perfsonar-java-rrd-ma/src/main/java/org/perfsonar/service/measurementArchive/servlets/DbInitializerServlet.java
===================================================================
---
trunk/perfsonar-java-rrd-ma/src/main/java/org/perfsonar/service/measurementArchive/servlets/DbInitializerServlet.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-rrd-ma/src/main/java/org/perfsonar/service/measurementArchive/servlets/DbInitializerServlet.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -16,7 +16,7 @@
/**
* This servlet initialise the SQL database used to store metadata.
*
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*
*/
@SuppressWarnings("serial")
Modified:
trunk/perfsonar-java-rrd-ma/src/test/java/org/perfsonar/tests/measurementArchive/rrdType/storage/sql/MysqlMetadataStorageDAOImplTest.java
===================================================================
---
trunk/perfsonar-java-rrd-ma/src/test/java/org/perfsonar/tests/measurementArchive/rrdType/storage/sql/MysqlMetadataStorageDAOImplTest.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-rrd-ma/src/test/java/org/perfsonar/tests/measurementArchive/rrdType/storage/sql/MysqlMetadataStorageDAOImplTest.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -13,7 +13,7 @@
/**
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*
*/
@Ignore
Modified:
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/Interface.java
===================================================================
---
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/Interface.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/Interface.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -6,7 +6,7 @@
import net.geant.perfsonar.annotations.XPath;
/**
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*
*/
public class Interface {
Modified:
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDData.java
===================================================================
---
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDData.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDData.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -4,7 +4,7 @@
import net.geant.perfsonar.annotations.XPath;
/**
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*
*/
public class RRDData {
Modified:
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDKey.java
===================================================================
---
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDKey.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDKey.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -4,7 +4,7 @@
import net.geant.perfsonar.annotations.XPath;
/**
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*
*/
public class RRDKey {
Modified:
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDMAService.java
===================================================================
---
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDMAService.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDMAService.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -9,7 +9,7 @@
* RRD MA perfSONAR service implementation
* Based on psBase3 streaming framework
*
- * @author Antoine Delvaux
<>
+ * @author Antoine Delvaux - DANTE
*
*/
Modified:
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDSelect.java
===================================================================
---
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDSelect.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/RRDSelect.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -4,7 +4,7 @@
import net.geant.perfsonar.annotations.XPath;
/**
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*
*/
public class RRDSelect {
Modified:
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/ServiceController.java
===================================================================
---
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/ServiceController.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-rrd-ma-base3/src/main/java/net/geant/perfsonar/ma/rrd/ServiceController.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -11,7 +11,7 @@
import net.geant.perfsonar.annotations.selftest.SelfTest;
/**
- * @author Antoine Delvaux -
+ * @author Antoine Delvaux - DANTE
*
*/
public class ServiceController {
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/JoinRequestGenerator.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/JoinRequestGenerator.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/JoinRequestGenerator.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -8,7 +8,7 @@
* this class is the proper way to do it. To be confronted with the LS
client API and
* implementations done by SurfNET.
*
- * Commented on 20121006 -
+ * Commented on 20121006 - Antoine Delvaux - DANTE
*
* FIXME: check we need this.
*
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/UpdateTokenRequestGenerator.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/UpdateTokenRequestGenerator.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/dls/client/UpdateTokenRequestGenerator.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -11,7 +11,7 @@
* this class is the proper way to do it. To be confronted with the LS
client API and
* implementations done by SurfNET.
*
- * Commented on 20121006 -
+ * Commented on 20121006 - Antoine Delvaux - DANTE
*
* FIXME: check we need this.
*
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LsTTLParameterStatus.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LsTTLParameterStatus.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/lookupservice/registration/LsTTLParameterStatus.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -5,7 +5,7 @@
/**
* Is it the proper way to do that? Can't we make it a bit more
lightweighted with SummarizationConstants?
*
- * Commented on 20121006 -
+ * Commented on 20121006 - Antoine Delvaux - DANTE
*
* FIXME: check we need this.
*
Modified:
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/utilities/ResourceBundle.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/utilities/ResourceBundle.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-xml-ls/src/main/java/org/perfsonar/service/utilities/ResourceBundle.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -7,7 +7,7 @@
*
* @author Slawomir Trzaszczka
*
- * Commented on 20121006 -
+ * Commented on 20121006 - Antoine Delvaux - DANTE
* This class is only used once and only to read the lsTTL parameter strings
from
* resources/org/perfsonar/resources/resources.properties that actually
should be constants!
* FIXME: to be removed completely, along with the previous file
Modified:
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/ModificationCounterComponentTest.java
===================================================================
---
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/ModificationCounterComponentTest.java
2013-07-01 18:23:56 UTC (rev 6441)
+++
trunk/perfsonar-java-xml-ls/src/test/java/org/perfsonar/tests/components/ModificationCounterComponentTest.java
2013-07-05 13:05:39 UTC (rev 6442)
@@ -80,11 +80,11 @@
for (int i = 0; i < LOOP_COUNT; i++) {
cp.incrementCounter();
- int value = cp.getCounter();
- int diffs = cp.getDiffsBetweenRegistrationCounter();
- assertTrue(value > last);
+ final int current = cp.getCounter();
+ final int diffs =
cp.getDiffsBetweenRegistrationCounter();
+ assertTrue(current > last);
assertTrue(diffs > i);
- last = value;
+ last = current;
}
}
});
- [pS-dev] [GEANT/SA2/ps-java-services] r6442 - in trunk: perfsonar-base/apt/src/test/resources perfsona r-base/base/src/test/resources perfsonar-base/ls/src/test/ java/net/geant/perfsonar/ls perfsonar-base/ls/src/test/res ources perfsonar-base/messaging/src/main/java/net/geant/pe rfsonar perfsonar-base/messaging/src/main/java/net/geant/p erfsonar/messaging perfsonar-base/messaging/src/main/java/ net/geant/perfsonar/templates perfsonar-base/messaging/src /test/java/net/geant/perfsonar perfsonar-base/messaging/sr c/test/java/net/geant/perfsonar/messaging perfsonar-base/m essaging/src/test/java/net/geant/perfsonar/templates perfs onar-base/messaging/src/test/resources perfsonar-java-rrd- ma/src/main/java/org/perfsonar/service/measurementArchive/ rrdType/storage/sql/query perfsonar-java-rrd-ma/src/main/j ava/org/perfsonar/service/measurementArchive/servlets perf sonar-java-rrd-ma/src/test/java/org/perfsonar/tests/measur ementArchive/rrdType/storage/sql perfsonar-java-rrd-ma-bas e3/src/main/java/n et/geant/perfsonar/ma/rrd perfsonar-jav a-xml-ls/src/main/java/org/perfsonar/service/lookupservice /dls/client perfsonar-java-xml-ls/src/main/java/org/perfso nar/service/lookupservice/registration perfsonar-java-xml- ls/src/main/java/org/perfsonar/service/utilities perfsonar -java-xml-ls/src/test/java/org/perfsonar/tests/components, svn-noreply, 07/05/2013
Archive powered by MHonArc 2.6.16.