You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pd...@apache.org on 2015/08/25 12:36:36 UTC
svn commit: r1697645 - in /felix/sandbox/pderop/dependencymanager.ds:
cnf/localrepo/ cnf/releaserepo/ org.apache.felix.dependencymanager.ds.itest/
org.apache.felix.dependencymanager.ds.itest/.settings/
org.apache.felix.dependencymanager.ds.itest/resour...
Author: pderop
Date: Tue Aug 25 10:36:36 2015
New Revision: 1697645
URL: http://svn.apache.org/r1697645
Log:
- Added an integration test which seems to reproduce the FELIX-4984 issue.
- Use java8 to build and test ds and ds.itest bundles.
Added:
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/resource/integration_test_FELIX_4984.xml (with props)
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/Felix4984Test.java
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/components/felix4984/
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/components/felix4984/A.java
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/components/felix4984/B.java
Modified:
felix/sandbox/pderop/dependencymanager.ds/cnf/localrepo/index.xml
felix/sandbox/pderop/dependencymanager.ds/cnf/localrepo/index.xml.sha
felix/sandbox/pderop/dependencymanager.ds/cnf/releaserepo/index.xml
felix/sandbox/pderop/dependencymanager.ds/cnf/releaserepo/index.xml.sha
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/.classpath
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/.settings/org.eclipse.jdt.core.prefs
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/bnd.bnd
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/.classpath
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/.settings/org.eclipse.jdt.core.prefs
felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/bnd.bnd
Modified: felix/sandbox/pderop/dependencymanager.ds/cnf/localrepo/index.xml
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/cnf/localrepo/index.xml?rev=1697645&r1=1697644&r2=1697645&view=diff
==============================================================================
Binary files - no diff available.
Modified: felix/sandbox/pderop/dependencymanager.ds/cnf/localrepo/index.xml.sha
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/cnf/localrepo/index.xml.sha?rev=1697645&r1=1697644&r2=1697645&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager.ds/cnf/localrepo/index.xml.sha (original)
+++ felix/sandbox/pderop/dependencymanager.ds/cnf/localrepo/index.xml.sha Tue Aug 25 10:36:36 2015
@@ -1 +1 @@
-09508d85b244a8bc12c264912ea8c22b7a2cd08c6d69faad52bef65e8a878fd6
\ No newline at end of file
+2a8ebeeec6f4b6073630917f331500803f99bac52abb24ce957a629a3ab22395
\ No newline at end of file
Modified: felix/sandbox/pderop/dependencymanager.ds/cnf/releaserepo/index.xml
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/cnf/releaserepo/index.xml?rev=1697645&r1=1697644&r2=1697645&view=diff
==============================================================================
Binary files - no diff available.
Modified: felix/sandbox/pderop/dependencymanager.ds/cnf/releaserepo/index.xml.sha
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/cnf/releaserepo/index.xml.sha?rev=1697645&r1=1697644&r2=1697645&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager.ds/cnf/releaserepo/index.xml.sha (original)
+++ felix/sandbox/pderop/dependencymanager.ds/cnf/releaserepo/index.xml.sha Tue Aug 25 10:36:36 2015
@@ -1 +1 @@
-a6f4a564b3787f32f554f3f0194723c10ce3c28b37e2c1ce3ecf35a0a81eb3a8
\ No newline at end of file
+eb94b8048aa20ec498f20529c2cad6c489c7e2614041671131b3284b91b9b1da
\ No newline at end of file
Modified: felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/.classpath
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/.classpath?rev=1697645&r1=1697644&r2=1697645&view=diff
==============================================================================
Binary files - no diff available.
Modified: felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/.settings/org.eclipse.jdt.core.prefs?rev=1697645&r1=1697644&r2=1697645&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/.settings/org.eclipse.jdt.core.prefs (original)
+++ felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/.settings/org.eclipse.jdt.core.prefs Tue Aug 25 10:36:36 2015
@@ -1,10 +1,10 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
-org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
Modified: felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/bnd.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/bnd.bnd?rev=1697645&r1=1697644&r2=1697645&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/bnd.bnd (original)
+++ felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/bnd.bnd Tue Aug 25 10:36:36 2015
@@ -4,7 +4,7 @@
osgi.enterprise;version=5.0,\
${junit},\
biz.aQute.bndlib;version=2.4
--runee: JavaSE-1.7
+-runee: JavaSE-1.8
-runfw: org.apache.felix.framework;version=5.0.1
-runsystempackages: \
sun.reflect
@@ -27,7 +27,4 @@ Test-Cases: \
biz.aQute.bndlib;version=2.4.0
Include-Resource: resource=resource
Export-Package: \
- org.apache.felix.scr.integration.*
-
-javac.source: 1.7
-javac.target: 1.7
\ No newline at end of file
+ org.apache.felix.scr.integration.*
\ No newline at end of file
Added: felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/resource/integration_test_FELIX_4984.xml
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/resource/integration_test_FELIX_4984.xml?rev=1697645&view=auto
==============================================================================
Binary file - no diff available.
Propchange: felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/resource/integration_test_FELIX_4984.xml
------------------------------------------------------------------------------
svn:mime-type = application/xml
Added: felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/Felix4984Test.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/Felix4984Test.java?rev=1697645&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/Felix4984Test.java (added)
+++ felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/Felix4984Test.java Tue Aug 25 10:36:36 2015
@@ -0,0 +1,94 @@
+package org.apache.felix.scr.integration;
+
+import org.apache.felix.scr.integration.components.felix4984.A;
+import org.apache.felix.scr.integration.components.felix4984.B;
+import org.junit.Test;
+import org.osgi.framework.Bundle;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceReference;
+import org.osgi.service.component.runtime.dto.ComponentConfigurationDTO;
+import org.osgi.service.log.LogService;
+
+import junit.framework.TestCase;
+
+public class Felix4984Test extends ComponentTestBase
+{
+ public Felix4984Test()
+ {
+ super("/resource/integration_test_FELIX_4984.xml", "felix4984");
+ ignoredWarnings = new String[] {
+ "\\[.*\\] Circular reference detected, getService returning null",
+ "FrameworkEvent: ERROR\\norg.osgi.framework.ServiceException: Service factory returned null.",
+ "FrameworkEvent: ERROR\\norg.osgi.framework.ServiceException: ServiceFactory.getService\\(\\) resulted in a cycle.",
+ "\\[.*\\] Cannot create component instance due to failure to bind reference b",
+ "\\[.*\\] Failed creating the component instance; see log for reason",
+ "\\[.*\\] Could not get service from ref \\[org.apache.felix.scr.integration.components.felix4984.A\\]",
+ "\\[.*\\] Could not get service from ref \\[org.apache.felix.scr.integration.components.felix4984.B\\]",
+ "running test iteration .*",
+ "A\\.setB(.*)"
+ };
+ //DS_LOGLEVEL = "debug";
+ //WRITE_LOGS_TO_FILE = true;
+ }
+
+ /**
+ * A > 1.1 > B > 0..n > A
+ * This test validates that A is bound to one B instance. See FELIX-4984 for more informations.
+ */
+ @Test
+ public void test_A11_B0n_delayed_B_first_ABoundToAtMostOneB() throws Exception
+ {
+ Bundle bundle = findABBundle(bundleContext);
+ bundle.stop();
+
+ for (int i = 0; i < 1000; i ++) {
+ getLog().log(LogService.LOG_WARNING, "running test iteration #" + i + " ...");
+ bundle.start();
+
+ String componentNameA = "felix4984.A.1.1.dynamic";
+ ComponentConfigurationDTO componentA = findComponentConfigurationByName( componentNameA, ComponentConfigurationDTO.SATISFIED );
+
+ String componentNameB = "felix4984.B.0.n.dynamic";
+ final ComponentConfigurationDTO componentB = findComponentConfigurationByName( componentNameB, ComponentConfigurationDTO.SATISFIED);
+
+ ServiceReference[] serviceReferencesB = bundleContext.getServiceReferences( B.class.getName(), "(service.pid=" + componentNameB + ")" );
+ TestCase.assertEquals( 1, serviceReferencesB.length );
+ ServiceReference serviceReferenceB = serviceReferencesB[0];
+ Object serviceB = bundleContext.getService( serviceReferenceB );
+ assertNotNull( serviceB );
+
+ ServiceReference[] serviceReferencesA = bundleContext.getServiceReferences( A.class.getName(), "(service.pid=" + componentNameA + ")" );
+ TestCase.assertEquals( 1, serviceReferencesA.length );
+ ServiceReference serviceReferenceA = serviceReferencesA[0];
+ Object serviceA = bundleContext.getService( serviceReferenceA );
+ assertNotNull( serviceA );
+
+ A a = getServiceFromConfiguration(componentA, A.class);
+ assertABoundToOneB(a);
+
+ bundle.stop();
+
+ for ( String message: log.foundWarnings() )
+ {
+ TestCase.fail( "unexpected warning or error logged: " + message );
+ }
+ }
+ }
+
+ private Bundle findABBundle(BundleContext ctx) {
+ for (Bundle b : ctx.getBundles()) {
+ if (b.getSymbolicName().equals("simplecomponent")) {
+ return b;
+ }
+ }
+ throw new IllegalStateException("bundle \"simplecomponent\" not found");
+ }
+
+ private void assertABoundToOneB(A a) {
+ if (a.getBs().size() != 1) {
+ getLog().log(LogService.LOG_WARNING, "detected problem ...");
+ a.dumpStackTracesWhenBWasBound();
+ }
+ assertEquals( 1, a.getBs().size());
+ }
+}
Added: felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/components/felix4984/A.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/components/felix4984/A.java?rev=1697645&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/components/felix4984/A.java (added)
+++ felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/components/felix4984/A.java Tue Aug 25 10:36:36 2015
@@ -0,0 +1,38 @@
+package org.apache.felix.scr.integration.components.felix4984;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.felix.scr.integration.ComponentTestBase;
+import org.osgi.service.log.LogService;
+
+public class A
+{
+ private List<B> bs = new ArrayList<B>();
+ private List<Exception> bsStackTraces = new ArrayList<>();
+
+ private void setB(B b)
+ {
+ ComponentTestBase.getLog().log(LogService.LOG_WARNING, "A.setB(" + b + ")");
+ bs.add( b );
+ bsStackTraces.add(new Exception());
+ }
+
+ private void unsetB(B b)
+ {
+ bs.remove( b );
+ bsStackTraces.remove(bsStackTraces.size()-1);
+ }
+
+ public List<B> getBs()
+ {
+ return bs;
+ }
+
+ public void dumpStackTracesWhenBWasBound() {
+ ComponentTestBase.getLog().log(LogService.LOG_WARNING, "Stack traces when B was bound:");
+ for (Exception e : bsStackTraces) {
+ ComponentTestBase.getLog().log(LogService.LOG_WARNING, "stack trace:", e);
+ }
+ }
+}
Added: felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/components/felix4984/B.java
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/components/felix4984/B.java?rev=1697645&view=auto
==============================================================================
--- felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/components/felix4984/B.java (added)
+++ felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds.itest/src/org/apache/felix/scr/integration/components/felix4984/B.java Tue Aug 25 10:36:36 2015
@@ -0,0 +1,24 @@
+package org.apache.felix.scr.integration.components.felix4984;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class B
+{
+ private List<A> as = new ArrayList<A>();
+
+ private void setA(A a)
+ {
+ as.add( a );
+ }
+
+ private void unsetA(A a)
+ {
+ as.remove( a );
+ }
+
+ public List<A> getAs()
+ {
+ return as;
+ }
+}
Modified: felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/.classpath
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/.classpath?rev=1697645&r1=1697644&r2=1697645&view=diff
==============================================================================
Binary files - no diff available.
Modified: felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/.settings/org.eclipse.jdt.core.prefs?rev=1697645&r1=1697644&r2=1697645&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/.settings/org.eclipse.jdt.core.prefs (original)
+++ felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/.settings/org.eclipse.jdt.core.prefs Tue Aug 25 10:36:36 2015
@@ -1,14 +1,14 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.compiler.source=1.8
org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
Modified: felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/bnd.bnd
URL: http://svn.apache.org/viewvc/felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/bnd.bnd?rev=1697645&r1=1697644&r2=1697645&view=diff
==============================================================================
--- felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/bnd.bnd (original)
+++ felix/sandbox/pderop/dependencymanager.ds/org.apache.felix.dependencymanager.ds/bnd.bnd Tue Aug 25 10:36:36 2015
@@ -59,7 +59,4 @@ DynamicImport-Package: \
Include-Resource: \
@kxml2-2.2.2.jar!/org/kxml2/io/KXmlParser.class|org/xmlpull/v1/XmlPull**
-javac.source: 1.7
-javac.target: 1.7
-