package biz.aQute.remote;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.framework.Constants;
import org.osgi.framework.dto.BundleDTO;
import org.osgi.framework.launch.Framework;
import aQute.lib.io.IO;
import aQute.remote.util.JMXBundleDeployer;
import junit.framework.TestCase;
public class RemoteJMXTest extends TestCase {
private Map<String,Object> configuration;
private Framework framework;
private File tmp;
@Override
protected void setUp() throws Exception {
tmp = IO.getFile("generated/tmp");
tmp.mkdirs();
configuration = new HashMap<String,Object>();
configuration.put(Constants.FRAMEWORK_STORAGE_CLEAN, Constants.FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT);
configuration.put(Constants.FRAMEWORK_STORAGE, new File(tmp, "fwstorage").getAbsolutePath());
configuration.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA, "org.osgi.framework.launch;version=1.4");
framework = new org.apache.felix.framework.FrameworkFactory().newFramework(configuration);
framework.init();
framework.start();
BundleContext context = framework.getBundleContext();
String[] bundles = {
"../cnf/repo/osgi.cmpn/osgi.cmpn-4.3.1.jar", "testdata/slf4j-simple-1.7.12.jar",
"testdata/slf4j-api-1.7.12.jar", "testdata/org.apache.aries.util-1.1.0.jar",
"testdata/org.apache.aries.jmx-1.1.1.jar", "generated/biz.aQute.remote.test.jmx.jar"
};
for (String bundle : bundles) {
String location = "reference:" + IO.getFile(bundle).toURI().toString();
Bundle b = context.installBundle(location);
if (!bundle.contains("slf4j-simple")) {
b.start();
}
}
super.setUp();
}
@Override
protected void tearDown() throws Exception {
framework.stop();
framework.waitForStop(10000);
IO.delete(tmp);
super.tearDown();
}
public void testJMXBundleDeployer() throws Exception {
JMXBundleDeployer jmxBundleDeployer = new JMXBundleDeployer();
long bundleId = jmxBundleDeployer.deploy("biz.aQute.remote.agent",
IO.getFile("generated/biz.aQute.remote.agent.jar"));
assertTrue(bundleId > 0);
BundleDTO agentBundle = null;
long state = -1;
for (BundleDTO bundle : jmxBundleDeployer.listBundles()) {
if (bundle.symbolicName.equals("biz.aQute.remote.agent")) {
agentBundle = bundle;
state = bundle.state;
}
}
assertNotNull(agentBundle);
assertEquals(Bundle.ACTIVE, state);
}
}