[CAMEL-8948] More reliable CamelBlueprintTestSupport tests - always wait for BlueprintEvent.CREATED
(cherry picked from commit dc23d6a458a6abd4c633586af6048ee03c09cf71) Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/b6fba462 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/b6fba462 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/b6fba462 Branch: refs/heads/camel-2.15.x Commit: b6fba462384593465fe6f57972b4f164db4dccb9 Parents: 9ff5aad Author: Grzegorz Grzybek <gr.grzy...@gmail.com> Authored: Fri Jul 10 15:00:10 2015 +0200 Committer: Grzegorz Grzybek <gr.grzy...@gmail.com> Committed: Tue Jul 21 09:43:27 2015 +0200 ---------------------------------------------------------------------- .../test/blueprint/CamelBlueprintHelper.java | 3 ++- .../blueprint/CamelBlueprintTestSupport.java | 20 ++++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/b6fba462/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java ---------------------------------------------------------------------- diff --git a/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java b/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java index 0c14be6..126f68a 100644 --- a/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java +++ b/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintHelper.java @@ -185,7 +185,8 @@ public final class CamelBlueprintHelper { .getOsgiService(bundleContext, ConfigurationAdmin.class); if (configAdmin != null) { // ensure we update - Configuration config = configAdmin.getConfiguration(pid); + // we *have to* use "null" as 2nd arg to have correct bundle location for Configuration object + Configuration config = configAdmin.getConfiguration(pid, null); LOG.info("Updating ConfigAdmin {} by overriding properties {}", config, props); config.update(props); } http://git-wip-us.apache.org/repos/asf/camel/blob/b6fba462/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java ---------------------------------------------------------------------- diff --git a/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java b/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java index fc88f56..f69e157 100644 --- a/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java +++ b/components/camel-test-blueprint/src/main/java/org/apache/camel/test/blueprint/CamelBlueprintTestSupport.java @@ -157,6 +157,19 @@ public abstract class CamelBlueprintTestSupport extends CamelTestSupport { config.update(props); latch.await(CamelBlueprintHelper.DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS); + } else { + // let's wait for BP container to start + final CountDownLatch latch = new CountDownLatch(1); + answer.registerService(BlueprintListener.class, new BlueprintListener() { + @Override + public void blueprintEvent(BlueprintEvent event) { + if (event.getType() == BlueprintEvent.CREATED && event.getBundle().getSymbolicName().equals(symbolicName)) { + latch.countDown(); + } + } + }, null); + + latch.await(CamelBlueprintHelper.DEFAULT_TIMEOUT, TimeUnit.MILLISECONDS); } return answer; @@ -182,13 +195,12 @@ public abstract class CamelBlueprintTestSupport extends CamelTestSupport { super.setUp(); + // we don't have to wait for BP container's OSGi service - we've already waited + // for BlueprintEvent.CREATED + // start context when we are ready log.debug("Staring CamelContext: {}", context.getName()); context.start(); - - // must wait for blueprint container to be published then the namespace parser is complete and we are ready for testing - log.debug("Waiting for BlueprintContainer to be published with symbolicName: {}", symbolicName); - getOsgiService(BlueprintContainer.class, "(osgi.blueprint.container.symbolicname=" + symbolicName + ")"); } /**