Package aQute.bnd.deployer.repository

Source Code of aQute.bnd.deployer.repository.TestMultipleLocalIndexGeneration

package aQute.bnd.deployer.repository;

import java.io.*;
import java.util.*;

import junit.framework.*;

import org.osgi.impl.bundle.bindex.*;

import test.lib.*;
import aQute.bnd.osgi.*;
import aQute.bnd.service.*;
import aQute.bnd.service.RepositoryPlugin.PutResult;
import aQute.lib.io.*;

public class TestMultipleLocalIndexGeneration extends TestCase {

  private static Processor      reporter;
  private static LocalIndexedRepo  repo;
  private static File        outputDir;
  private static MockRegistry    registry;

  protected void setUp() throws Exception {
    // Ensure output directory exists and is empty
    outputDir = IO.getFile("generated/testoutput");
    IO.deleteWithException(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|R5");
    repo.setProperties(config);

    // Add the BundleIndexer plugin
    registry = new MockRegistry();
    BundleIndexerImpl obrIndexer = new BundleIndexerImpl();
    registry.addPlugin(obrIndexer);
    repo.setRegistry(registry);

    repo.setReporter(reporter);
  }

  @Override
  protected void tearDown() throws Exception {
    IO.deleteWithException(outputDir);

    assertEquals(0, reporter.getErrors().size());
    assertEquals(0, reporter.getWarnings().size());
  }

  public static void testInitiallyEmpty() throws Exception {
    List<String> list = repo.list(".*");
    assertNotNull(list);
    assertEquals(0, list.size());
  }

  public static 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(
            "generated/testoutput/name.njbartlett.osgi.emf.minimal/name.njbartlett.osgi.emf.minimal-2.6.1.jar")
            .getAbsolutePath(), deployedFile.getAbsolutePath());

    File r5IndexFile = IO.getFile("generated/testoutput/index.xml.gz");
    assertTrue(r5IndexFile.exists());

    File obrIndexFile = IO.getFile("generated/testoutput/repository.xml");
    assertTrue(obrIndexFile.exists());

    AbstractIndexedRepo checkRepo;
    File[] files;

    checkRepo = createRepoForIndex(r5IndexFile);
    files = checkRepo.get("name.njbartlett.osgi.emf.minimal", null);
    assertNotNull(files);
    assertEquals(1, files.length);
    assertEquals(deployedFile.getAbsoluteFile(), files[0]);

    checkRepo = createRepoForIndex(obrIndexFile);
    files = checkRepo.get("name.njbartlett.osgi.emf.minimal", null);
    assertNotNull(files);
    assertEquals(1, files.length);
    assertEquals(deployedFile.getAbsoluteFile(), files[0]);
  }

  public static void testReadMixedRepoTypes() throws Exception {
    FixedIndexedRepo repo = new FixedIndexedRepo();
    Map<String,String> config = new HashMap<String,String>();
    config.put("locations",
        IO.getFile("testdata/fullobr.xml").toURI() + "," + IO.getFile("testdata/minir5.xml").toURI());
    repo.setProperties(config);

    File[] files;

    files = repo.get("name.njbartlett.osgi.emf.minimal", "[2.6,2.7)");
    assertEquals(1, files.length);
    assertEquals(IO.getFile("testdata/bundles/name.njbartlett.osgi.emf.minimal-2.6.1.jar").getAbsoluteFile(),
        files[0]);

    files = repo.get("dummybundle", null);
    assertEquals(1, files.length);
    assertEquals(IO.getFile("testdata/bundles/dummybundle.jar").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());
    newRepo.setProperties(config);

    return newRepo;
  }
}
TOP

Related Classes of aQute.bnd.deployer.repository.TestMultipleLocalIndexGeneration

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.