[RJ-Servi] Improve unit tests

  - Avoid error on cleanup
  - Improve messages when duration tests fail

Change-Id: Ic2c801ff3dc34e68fec95c46e9f500e3a428c214
diff --git a/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/AbstractServiTest.java b/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/AbstractServiTest.java
index 82a85b4..999dd3f 100644
--- a/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/AbstractServiTest.java
+++ b/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/AbstractServiTest.java
@@ -136,7 +136,9 @@
 		try {
 			for (final RServi servi : this.servis) {
 				try {
-					servi.close();
+					if (!servi.isClosed()) {
+						servi.close();
+					}
 				}
 				catch (final Throwable e) {
 					exceptions.add(e);
diff --git a/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/JMPoolTest.java b/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/JMPoolTest.java
index 6d09d25..bd83e3e 100644
--- a/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/JMPoolTest.java
+++ b/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/JMPoolTest.java
@@ -245,8 +245,10 @@
 		final long t2= System.nanoTime();
 		final RServi servi2= getServi("test2");
 		assertNotNull(servi2);
-		{	final long waitTime= TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - t2);
-			assertTrue(waitTime < poolConfig.getMaxWaitTime() + NODE_STARTUP_MILLIS);
+		{	final long d2= TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - t2);
+			final long dMax= poolConfig.getMaxWaitTime() + NODE_STARTUP_MILLIS;
+			assertTrue(d2 < dMax,
+					() -> String.format("duration expected: < %1$sms, actual: %2$sms", dMax, d2) );
 		}
 		
 		final long t3= System.nanoTime();
@@ -256,10 +258,11 @@
 			throw new AssertionError("totalCount");
 		}
 		catch (final NoSuchElementException e) {
-			final long waitTime= TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - t3);
-			assertTrue(waitTime > poolConfig.getMaxWaitTime() - 500);
-			assertTrue(waitTime < poolConfig.getMaxWaitTime() + 500);
-			return;
+			final long d3= TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - t3);
+			final long dExpected= poolConfig.getMaxWaitTime();
+			final long dTol= 500;
+			assertTrue(d3 > poolConfig.getMaxWaitTime() - dTol && d3 < poolConfig.getMaxWaitTime() + dTol,
+					() -> String.format("duration expected: %1$sms (±%3$sms), actual: %2$sms", dExpected, d3, dTol));
 		}
 	}
 	
diff --git a/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/LocalNodeTest.java b/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/LocalNodeTest.java
index eb4a2b8..9f55989 100644
--- a/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/LocalNodeTest.java
+++ b/servi/org.eclipse.statet.rj.servi-tests/src/org/eclipse/statet/rj/servi/pool/LocalNodeTest.java
@@ -39,6 +39,7 @@
 import org.eclipse.statet.rj.data.RDataUtils;
 import org.eclipse.statet.rj.data.UnexpectedRDataException;
 import org.eclipse.statet.rj.servi.RServi;
+import org.eclipse.statet.rj.servi.node.RServiNodeConfig;
 
 
 @EnabledIfEnvironmentVariable(named= "STATET_TEST_FILES", matches= ".+")
@@ -190,8 +191,10 @@
 		
 		final long t1= System.nanoTime();
 		this.localR.stop();
-		final long waitTime= TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - t1);
-		assertTrue(waitTime < 11500);
+		final long d1= TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - t1);
+		final long dMax= new RServiNodeConfig().getStartStopTimeout() + 1500;
+		assertTrue(d1 < new RServiNodeConfig().getStartStopTimeout() + 1500,
+				() -> String.format("duration expected: < %1$sms, actual: %2$sms", dMax, d1) );
 	}
 	
 }