def test_init_bundle_loader_with_running_framework(delete_framework): """ Tests that creating a Loader instance with an already running Pelix framework will work and enforce a correct configuration of the framework. """ framework = pelix.framework.create_framework(()) assert framework.get_bundle_by_name("pelix.ipopo.core") is None assert FrameworkFactory.is_framework_running() # Creating a loader instance where existing framework misses # pelix.ipopo.core bundle. # This bundle is expected to be added to the framework at Loader # initialization loader = BundleLoader() assert framework is loader.framework assert loader.framework.get_bundle_by_name("pelix.ipopo.core") is not None del loader # Same as above, but now, existing framework HAS pelix.ipopo.core bundle loader = BundleLoader() assert framework is loader.framework assert loader.framework.get_bundle_by_name("pelix.ipopo.core") is not None del loader # Framework outlives the Loader assert FrameworkFactory.is_framework_running()
def delete_framework(): """ Ensures framework is deleted before and after running tests""" if FrameworkFactory.is_framework_running(): FrameworkFactory.get_framework().delete(True) yield if FrameworkFactory.is_framework_running(): FrameworkFactory.get_framework().delete(True)
def test_init_bundle_loader_from_scratch(delete_framework): """ Tests that creating a Loader instance will start a correctly configured Pelix framework """ assert not FrameworkFactory.is_framework_running() loader = BundleLoader() _ = loader.framework # a first call for initiating the framework framework = FrameworkFactory.get_framework() assert FrameworkFactory.is_framework_running() assert framework is loader.framework assert framework.get_bundle_by_name("pelix.ipopo.core") is not None # Framework outlives the Loader del loader assert FrameworkFactory.is_framework_running() # Another instance gets back the framework loader = BundleLoader() assert framework is loader.framework
def framework(self) -> Framework: """ The currently running Pelix framework instance, or a new one if none is running (anyway, the framework instance will continue after deletion of this BundleLoader instance) """ if FrameworkFactory.is_framework_running(): self._framework = FrameworkFactory.get_framework() # Do not use self.context, because it will call back this. context = self._framework.get_bundle_context() if not context.get_service_reference(SERVICE_IPOPO): self._framework.install_bundle(SERVICE_IPOPO) else: self._framework = pelix.framework.create_framework(()) self._framework.install_bundle(SERVICE_IPOPO) self._framework.start() return self._framework
def test_pelix_framework_is_started(): """ Tests that Pelix framework is automatically started """ assert FrameworkFactory.is_framework_running()