package aQute.bnd.deployer.repository; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import aQute.bnd.osgi.Processor; import aQute.bnd.service.RepositoryPlugin; import aQute.bnd.service.RepositoryPlugin.PutResult; import aQute.lib.io.IO; import junit.framework.TestCase; public class TestLocalObrGeneration extends TestCase { private LocalIndexedRepo repo; private File outputDir; private Processor reporter; protected void setUp() throws Exception { // Ensure output directory exists and is empty outputDir = IO.getFile("generated/tmp/test/" + getName()); IO.delete(outputDir); if (!outputDir.exists() && !outputDir.mkdirs()) { throw new IOException("Could not create directory " + outputDir); } // Setup the repo reporter = new Processor(); repo = new LocalIndexedRepo(); Map<String,String> config = new HashMap<String,String>(); config.put("local", outputDir.getAbsolutePath()); config.put("type", "OBR"); repo.setProperties(config); repo.setReporter(reporter); } @Override protected void tearDown() throws Exception { IO.deleteWithException(outputDir); assertEquals(0, reporter.getErrors().size()); assertEquals(0, reporter.getWarnings().size()); } public void testInitiallyEmpty() throws Exception { List<String> list = repo.list(".*"); assertNotNull(list); assertEquals(0, list.size()); } public void testDeployBundle() throws Exception { PutResult r = repo.put( new BufferedInputStream( new FileInputStream("testdata/bundles/name.njbartlett.osgi.emf.minimal-2.6.1.jar")), new RepositoryPlugin.PutOptions()); File deployedFile = new File(r.artifact); assertEquals( IO.getFile(outputDir, "name.njbartlett.osgi.emf.minimal/name.njbartlett.osgi.emf.minimal-2.6.1.jar") .getAbsolutePath(), deployedFile.getAbsolutePath()); File indexFile = IO.getFile(outputDir, "repository.xml"); assertTrue(indexFile.exists()); assertTrue(IO.collect(indexFile).length() > 0); AbstractIndexedRepo repo2 = createRepoForIndex(indexFile); File[] files = repo2.get("name.njbartlett.osgi.emf.minimal", null); assertNotNull(files); assertEquals(1, files.length); assertEquals(deployedFile.getAbsoluteFile(), files[0]); } // UTILS private static AbstractIndexedRepo createRepoForIndex(File index) { FixedIndexedRepo newRepo = new FixedIndexedRepo(); Map<String,String> config = new HashMap<String,String>(); config.put("locations", index.getAbsoluteFile().toURI().toString()); config.put("type", "OBR"); newRepo.setProperties(config); return newRepo; } }