blob: bfdbf48374899bf678a77f650ef88e289e418341 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2010 VMware Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* VMware Inc. - initial contribution
*******************************************************************************/
package org.eclipse.virgo.repository.internal;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.File;
import java.net.URI;
import java.util.Arrays;
import java.util.Collections;
import org.junit.Test;
import org.eclipse.virgo.medic.test.eventlog.MockEventLogger;
import org.eclipse.virgo.repository.ArtifactBridge;
import org.eclipse.virgo.repository.Repository;
import org.eclipse.virgo.repository.RepositoryCreationException;
import org.eclipse.virgo.repository.codec.XMLRepositoryCodec;
import org.eclipse.virgo.repository.configuration.ExternalStorageRepositoryConfiguration;
import org.eclipse.virgo.repository.configuration.ManagedStorageRepositoryConfiguration;
import org.eclipse.virgo.repository.configuration.RemoteRepositoryConfiguration;
import org.eclipse.virgo.repository.configuration.RepositoryConfiguration;
import org.eclipse.virgo.repository.configuration.WatchedStorageRepositoryConfiguration;
import org.eclipse.virgo.repository.internal.RepositoryDumpContributor;
import org.eclipse.virgo.repository.internal.StandardRepositoryFactory;
import org.eclipse.virgo.repository.internal.chain.ChainedRepository;
import org.eclipse.virgo.repository.internal.external.ExternalStorageRepository;
import org.eclipse.virgo.repository.internal.remote.RemoteRepository;
import org.eclipse.virgo.repository.internal.watched.WatchedStorageRepository;
import org.eclipse.virgo.test.stubs.framework.StubBundleContext;
import org.eclipse.virgo.util.osgi.ServiceRegistrationTracker;
public class StandardRepositoryFactoryTests {
MockEventLogger mockEventLogger = new MockEventLogger();
StandardRepositoryFactory factory = new StandardRepositoryFactory(mockEventLogger, new StubBundleContext(), new ServiceRegistrationTracker(), new RepositoryDumpContributor(new XMLRepositoryCodec()));
@Test
public void chainedRepository() throws RepositoryCreationException {
RepositoryConfiguration config = new ExternalStorageRepositoryConfiguration("test", new File("build/externalIndex"),
Collections.<ArtifactBridge> emptySet(), System.getProperty("user.dir") + "/target/external", null);
Repository repository = factory.createRepository(Arrays.asList(config, config));
assertTrue(repository instanceof ChainedRepository);
assertEquals("test-test", repository.getName());
assertFalse("log events were issued", mockEventLogger.getCalled());
}
@Test
public void chainedRepositoryWithBadRepositoryInChain() throws RepositoryCreationException {
RepositoryConfiguration config = new ExternalStorageRepositoryConfiguration("test", new File("build/externalIndex"),
Collections.<ArtifactBridge> emptySet(), System.getProperty("user.dir") + "/target/external", null);
RepositoryConfiguration badConfig = new ManagedStorageRepositoryConfiguration("test", new File("build/managedIndex"),
Collections.<ArtifactBridge> emptySet(), new File("build/managedStorage"), null);
Repository repository = factory.createRepository(Arrays.asList(config, badConfig, config));
assertTrue(repository instanceof ChainedRepository);
assertEquals("test-test", repository.getName());
assertTrue("log events not correctly issued", mockEventLogger.isLogged("RP0100W"));
}
@Test
public void externalStorageRepository() throws RepositoryCreationException {
Repository repository = factory.createRepository(new ExternalStorageRepositoryConfiguration("test", new File("build/externalIndex"),
Collections.<ArtifactBridge> emptySet(), System.getProperty("user.dir") + "/target/external", null));
assertTrue(repository instanceof ExternalStorageRepository);
assertFalse("log events were issued", mockEventLogger.getCalled());
}
@Test
public void watchedStorageRepository() throws RepositoryCreationException {
File watchDir = new File("build/watch");
watchDir.mkdirs();
Repository repository = factory.createRepository(new WatchedStorageRepositoryConfiguration("test", new File("build/watchedIndex"), Collections.<ArtifactBridge> emptySet(),
watchDir.getAbsolutePath(), 1000, null));
assertTrue(repository instanceof WatchedStorageRepository);
assertFalse("log events were issued", mockEventLogger.getCalled());
}
@Test
public void remoteRepository() throws RepositoryCreationException {
Repository repository = factory.createRepository(new RemoteRepositoryConfiguration("test", new File("build/remoteIndex"),
URI.create("http://localhost"), 1000, null, new File("build")));
assertTrue(repository instanceof RemoteRepository);
assertFalse("log events were issued", mockEventLogger.getCalled());
}
@Test(expected = RepositoryCreationException.class)
public void managedStorageRepository() throws RepositoryCreationException {
factory.createRepository(new ManagedStorageRepositoryConfiguration("test", new File("build/managedIndex"),
Collections.<ArtifactBridge> emptySet(), new File("build/managedStorage"), null));
}
@Test(expected = RepositoryCreationException.class)
public void unknownRepository() throws RepositoryCreationException {
factory.createRepository(new StubRepositoryConfiguration());
}
private static class StubRepositoryConfiguration extends RepositoryConfiguration {
StubRepositoryConfiguration() {
super("test", null);
}
}
}