You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2018/02/14 14:33:34 UTC

[isis] 01/06: ISIS-1852: fixes unit test

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 0d749cec1c964b903150988d5e1457bda65f185e
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Feb 14 13:56:23 2018 +0000

    ISIS-1852: fixes unit test
    
    the algorithm was wrong, I think
---
 .../core/runtime/services/ServiceInstantiator.java |  2 +-
 .../runtime/services/ServiceInstantiatorTest.java  | 47 ++++++++++++----------
 2 files changed, 26 insertions(+), 23 deletions(-)

diff --git a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
index 77adb02..1643c2d 100644
--- a/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
+++ b/core/runtime/src/main/java/org/apache/isis/core/runtime/services/ServiceInstantiator.java
@@ -160,7 +160,7 @@ public final class ServiceInstantiator {
             	// Allow serviceByThread to be propagated from the thread that starts the request 
             	// to any child-threads, hence InheritableThreadLocal.
             	private InheritableThreadLocal<T> serviceByThread = new InheritableThreadLocal<>();
-                
+
                 @Override
                 public Object invoke(final Object proxied, final Method proxyMethod, final Method proxiedMethod, final Object[] args) throws Throwable {
 
diff --git a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/ServiceInstantiatorTest.java b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/ServiceInstantiatorTest.java
index d12766e..6bf03e7 100644
--- a/core/runtime/src/test/java/org/apache/isis/core/runtime/services/ServiceInstantiatorTest.java
+++ b/core/runtime/src/test/java/org/apache/isis/core/runtime/services/ServiceInstantiatorTest.java
@@ -16,26 +16,30 @@
  */
 package org.apache.isis.core.runtime.services;
 
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-
+import java.util.Collections;
+import java.util.List;
 import java.util.concurrent.BrokenBarrierException;
 import java.util.concurrent.CyclicBarrier;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.enterprise.context.RequestScoped;
 
-import org.apache.isis.core.commons.config.IsisConfigurationDefault;
-import org.apache.isis.core.metamodel.services.ServicesInjector;
-import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+import com.google.common.collect.Lists;
+
 import org.jmock.auto.Mock;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 
+import org.apache.isis.core.commons.config.IsisConfigurationDefault;
+import org.apache.isis.core.metamodel.services.ServicesInjector;
+import org.apache.isis.core.unittestsupport.jmocking.JUnitRuleMockery2;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+
 public class ServiceInstantiatorTest {
 
 	@Rule
@@ -139,7 +143,8 @@ public class ServiceInstantiatorTest {
 		final AccumulatingCalculator calculator = 
 				serviceInstantiator.createInstance(AccumulatingCalculator.class);
 
-		final AtomicInteger counter = new AtomicInteger();
+
+		final List<Integer> interimTotals = Collections.synchronizedList(Lists.newArrayList());
 
 		final int n = 100;
 		final int nThreads = 8;
@@ -151,21 +156,17 @@ public class ServiceInstantiatorTest {
 		for(int i=1;i<=n;++i) {
 			final int j=i;
 
-			execService.submit(new Runnable() {
-
-				@Override
-				public void run() {
-					try {
+			execService.submit(() -> {
+                try {
 
-						// access the request scoped calculator on a child thread of 'main'
-						calculator.add(j);
-						counter.addAndGet(calculator.getTotal());
+                    // access the request scoped calculator on a child thread of 'main'
+                    calculator.add(j);
+                    interimTotals.add(calculator.getTotal());
 
-					} catch (Exception e) {
-						System.err.println(e.getMessage());
-					} 
-				}
-			});
+                } catch (Exception e) {
+                    System.err.println(e.getMessage());
+                }
+            });
 
 		}
 
@@ -175,7 +176,9 @@ public class ServiceInstantiatorTest {
 
 		((RequestScopedService)calculator).__isis_endRequest();
 
-		assertThat(counter.intValue(), is(n*(n+1)/2));
+		assertThat(interimTotals.size(), is(n));
+		final Integer maxTotal = Collections.max(interimTotals);
+		assertThat(maxTotal, is(n*(n+1)/2));
 	}
 
 	public static class SingletonCalculator {

-- 
To stop receiving notification emails like this one, please contact
danhaywood@apache.org.