static void testProxyRemoval(void) { celix_status_t status; bundle_pt bundle = NULL; array_list_pt bundleNames = NULL; array_list_pt proxyBundle = NULL; service_reference_pt ref = NULL; arrayList_create(&bundleNames); arrayList_create(&proxyBundle); arrayList_add(bundleNames, (void*) CALCULATOR_PROXY); status = getSpecifiedBundles(clientContext, bundleNames, proxyBundle); CHECK_EQUAL(CELIX_SUCCESS, status); CHECK_EQUAL(arrayList_size(proxyBundle), arrayList_size(bundleNames)); status = bundleContext_getBundleById(clientContext, (long) arrayList_get(proxyBundle, 0), &bundle); CHECK_EQUAL(CELIX_SUCCESS, status); status = bundle_stop(bundle); CHECK_EQUAL(CELIX_SUCCESS, status); status = bundleContext_getServiceReference(clientContext, (char *) CALCULATOR_SERVICE, &ref); CHECK_EQUAL(CELIX_SUCCESS, status); CHECK(ref == NULL); arrayList_destroy(bundleNames); arrayList_destroy(proxyBundle); }
int main(void) { apr_status_t rv = APR_SUCCESS; apr_status_t s = APR_SUCCESS; properties_pt config = NULL; char *autoStart = NULL; apr_pool_t *pool = NULL; bundle_pt fwBundle = NULL; rv = apr_initialize(); if (rv != APR_SUCCESS) { return CELIX_START_ERROR; } apr_pool_t *memoryPool; s = apr_pool_create(&memoryPool, NULL); if (s != APR_SUCCESS) { return CELIX_START_ERROR; } struct framework * framework = NULL; celix_status_t status = CELIX_SUCCESS; status = framework_create(&framework, memoryPool, config); if (status == CELIX_SUCCESS) { status = fw_init(framework); if (status == CELIX_SUCCESS) { // Start the system bundle framework_getFrameworkBundle(framework, &fwBundle); bundle_start(fwBundle); bundle_context_pt context = NULL; bundle_getContext(fwBundle, &context); // do some stuff bundle_pt bundle = NULL; status = CELIX_DO_IF(status, bundleContext_installBundle(context, "../test_bundle1/test_bundle1.zip", &bundle)); status = CELIX_DO_IF(status, bundle_start(bundle)); // Stop the system bundle, sleep a bit to let stuff settle down sleep(5); bundle_stop(fwBundle); framework_destroy(framework); } } if (status != CELIX_SUCCESS) { printf("Problem creating framework\n"); } apr_pool_destroy(memoryPool); apr_terminate(); printf("LAUNCHER: Exit\n"); return 0; }
celix_status_t importRegistrationFactory_close(import_registration_factory_pt registration_factory) { celix_status_t status = CELIX_SUCCESS; if (registration_factory->bundle != NULL) { bundle_stop(registration_factory->bundle); bundle_uninstall(registration_factory->bundle); } return status; }
celix_status_t deploymentAdmin_stopDeploymentPackageBundles(deployment_admin_pt admin, deployment_package_pt target) { celix_status_t status = CELIX_SUCCESS; if (target != NULL) { array_list_pt infos = NULL; deploymentPackage_getBundleInfos(target, &infos); int i; for (i = 0; i < arrayList_size(infos); i++) { bundle_pt bundle = NULL; bundle_info_pt info = arrayList_get(infos, i); deploymentPackage_getBundle(target, info->symbolicName, &bundle); if (bundle != NULL) { bundle_stop(bundle); } else { printf("DEPLOYMENT_ADMIN: Bundle %s not found\n", info->symbolicName); } } } return status; }
static celix_status_t stopStartPermutation(bundle_context_pt context, long* permutation, int size) { celix_status_t status = CELIX_SUCCESS; int y = 0; printf("Test stop/start permutation: "); for (y = 0; (y < size) && (status == CELIX_SUCCESS); y++) { bundle_pt bundle = NULL; status = bundleContext_getBundleById(context, permutation[y], &bundle); if (status == CELIX_SUCCESS) { module_pt module = NULL; const char *name = NULL; status = bundle_getCurrentModule(bundle, &module); if (status == CELIX_SUCCESS) { status = module_getSymbolicName(module, &name); printf("%s (%ld) ", name, permutation[y]); } } } printf("\n"); // stop all bundles if (status == CELIX_SUCCESS) { for (y = 0; (y < size) && (status == CELIX_SUCCESS); y++) { bundle_pt bundle = NULL; status = bundleContext_getBundleById(context, permutation[y], &bundle); if (status == CELIX_SUCCESS) { printf("stop bundle: %ld\n", permutation[y]); status = bundle_stop(bundle); } } } // verify stop state if (status == CELIX_SUCCESS) { for (y = 0; (y < size) && (status == CELIX_SUCCESS); y++) { bundle_pt bundle = NULL; status = bundleContext_getBundleById(context, permutation[y], &bundle); if (status == CELIX_SUCCESS) { bundle_state_e state; status = bundle_getState(bundle, &state); if (state != OSGI_FRAMEWORK_BUNDLE_RESOLVED) { printf("bundle %ld has state %d (should be %d) \n", permutation[y], state, OSGI_FRAMEWORK_BUNDLE_RESOLVED); status = CELIX_ILLEGAL_STATE; } } } } // start all bundles if (status == CELIX_SUCCESS) { for (y = 0; (y < size) && (status == CELIX_SUCCESS); y++) { bundle_pt bundle = NULL; status = bundleContext_getBundleById(context, permutation[y], &bundle); if (status == CELIX_SUCCESS) { printf("start bundle: %ld\n", permutation[y]); status = bundle_start(bundle); } } } // verify started state if (status == CELIX_SUCCESS) { for (y = 0; (y < size) && (status == CELIX_SUCCESS); y++) { bundle_pt bundle = NULL; status = bundleContext_getBundleById(context, permutation[y], &bundle); if (status == CELIX_SUCCESS) { bundle_state_e state; status = bundle_getState(bundle, &state); if (state != OSGI_FRAMEWORK_BUNDLE_ACTIVE) { printf("bundle %ld has state %d (should be %d) \n", permutation[y], state, OSGI_FRAMEWORK_BUNDLE_ACTIVE); status = CELIX_ILLEGAL_STATE; } } } } return status; }