You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ml...@apache.org on 2018/05/02 06:19:41 UTC
polygene-java git commit: issue report with composite method
invocation
Repository: polygene-java
Updated Branches:
refs/heads/tbml/invoke-issue [created] fe8ed3e01
issue report with composite method invocation
Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/fe8ed3e0
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/fe8ed3e0
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/fe8ed3e0
Branch: refs/heads/tbml/invoke-issue
Commit: fe8ed3e01bd81f1fd4cc921e1277c6c947f2c343
Parents: 77b6806
Author: tbml <ti...@adleritech.com>
Authored: Wed May 2 08:15:41 2018 +0200
Committer: tbml <ti...@adleritech.com>
Committed: Wed May 2 08:15:41 2018 +0200
----------------------------------------------------------------------
.../CompositeMethodInvocationTest.java | 55 ++++++++++++++++++++
1 file changed, 55 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/polygene-java/blob/fe8ed3e0/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeMethodInvocationTest.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeMethodInvocationTest.java b/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeMethodInvocationTest.java
new file mode 100644
index 0000000..44d4ea3
--- /dev/null
+++ b/core/runtime/src/test/java/org/apache/polygene/runtime/composite/CompositeMethodInvocationTest.java
@@ -0,0 +1,55 @@
+package org.apache.polygene.runtime.composite;
+
+import org.apache.polygene.api.injection.scope.Service;
+import org.apache.polygene.api.mixin.Mixins;
+import org.apache.polygene.api.service.ServiceComposite;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.test.AbstractPolygeneTest;
+import org.junit.jupiter.api.Test;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+public class CompositeMethodInvocationTest extends AbstractPolygeneTest {
+
+ @Service
+ MyService srv;
+
+ /**
+ * To correct, change instance pool type in CompositeMethodModel
+ * AtomicInstancePool -> SynchronizedCompositeMethodInstancePool
+ */
+ @Test
+ public void corruptedMethodInvocation() throws InterruptedException {
+ srv.dummy(); // to avoid concurrent activation (it can have own issues)
+
+ ExecutorService exe = Executors.newFixedThreadPool(10);
+ for (int i = 0; i < 10; i++) {
+ exe.execute(() -> {
+ while (true) {
+ srv.dummy();
+ }
+ });
+ }
+ exe.awaitTermination(10, TimeUnit.MINUTES);
+ }
+
+ @Override
+ public void assemble(ModuleAssembly module) throws AssemblyException {
+ module.services(MyService.class);
+ }
+
+ @Mixins(Impl.class)
+ public interface MyService extends ServiceComposite {
+ void dummy();
+ }
+
+ public abstract static class Impl implements MyService {
+ @Override
+ public void dummy() {
+ }
+ }
+
+}