blob: c42e94fa4c1677ea592f781ca730fc655669c18f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.osgi;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.karaf.features.Feature;
import org.junit.Test;
import org.ops4j.pax.exam.Configuration;
import org.ops4j.pax.exam.CoreOptions;
import org.ops4j.pax.exam.Option;
import org.ops4j.pax.exam.karaf.options.KarafDistributionOption;
import org.osgi.framework.Bundle;
import org.osgi.framework.Constants;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
/**
* Pax Exam test class to check if all features could be resolved and installed.
*/
public class IgniteKarafFeaturesInstallationTest extends AbstractIgniteKarafTest {
/** Number of features expected to exist. */
private static final int EXPECTED_FEATURES = 25;
/** */
private static final String CAMEL_REPO_URI = "mvn:org.apache.camel.karaf/apache-camel/" +
System.getProperty("camelVersion") + "/xml/features";
/**
* Container configuration.
*
* @return The configuration.
*/
@Configuration
public Option[] config() {
List<Option> options = new ArrayList<>(Arrays.asList(baseConfig()));
options.add(KarafDistributionOption.features(CAMEL_REPO_URI));
return CoreOptions.options(options.toArray(new Option[0]));
}
/**
* @throws Exception
*/
@Test
public void testAllBundlesActiveAndFeaturesInstalled() throws Exception {
// Asssert all bundles except fragments are ACTIVE.
for (Bundle b : bundleCtx.getBundles()) {
System.out.println(String.format("Checking state of bundle [symbolicName=%s, state=%s]",
b.getSymbolicName(), b.getState()));
if (b.getHeaders().get(Constants.FRAGMENT_HOST) == null)
assertTrue(b.getState() == Bundle.ACTIVE);
}
// Check that according to the FeaturesService, all Ignite features except ignite-log4j are installed.
Feature[] features = featuresSvc.getFeatures(IGNITE_FEATURES_NAME_REGEX);
assertNotNull(features);
assertEquals(EXPECTED_FEATURES, features.length);
for (Feature f : features) {
if (IGNORED_FEATURES.contains(f.getName()))
continue;
boolean installed = featuresSvc.isInstalled(f);
System.out.println(String.format("Checking if feature is installed [featureName=%s, installed=%s]",
f.getName(), installed));
assertTrue(installed);
assertEquals(PROJECT_VERSION.replaceAll("-", "."), f.getVersion().replaceAll("-", "."));
}
}
/**
* @return Features list.
*/
@Override protected List<String> featuresToInstall() {
return Arrays.asList("ignite-all", "ignite-hibernate");
}
}