package Sirius.navigator.plugin;
import Sirius.navigator.plugin.interfaces.PluginSupport;
import Sirius.navigator.resource.PropertyManager;
import com.tngtech.java.junit.dataprovider.DataProvider;
import com.tngtech.java.junit.dataprovider.DataProviderRunner;
import com.tngtech.java.junit.dataprovider.UseDataProvider;
import java.util.Iterator;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import org.junit.FixMethodOrder;
import org.junit.Ignore;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
/**
*
* @author pd
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@RunWith(DataProviderRunner.class)
public class PluginFactoryTest {
private final static Logger LOGGER = Logger.getLogger(PluginFactoryTest.class);
private static boolean propertyManagerInitialised = false;
public PluginFactoryTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
try {
LOGGER.info("Configuring PropertyManager");
PropertyManager.getManager().configure(
PluginFactoryTest.class.getResource("/client/config/navigator.cfg").toString(),
null,
PluginFactoryTest.class.getResource("/client/plugins").toString(),
PluginFactoryTest.class.getResource("/client/search").toString(),
PluginFactoryTest.class.getResource("/client/profiles").toString());
propertyManagerInitialised = true;
} catch (final Exception ex) {
LOGGER.fatal(ex.getMessage(), ex);
throw ex;
}
}
@AfterClass
public static void tearDownClass() {
}
@Before
public void setUp() throws Exception {
assertTrue("propertyManager initialised", propertyManagerInitialised);
if (!PluginRegistry.getRegistry().getPluginDescriptors().hasNext()) {
try {
LOGGER.info("preloading plugins!");
PluginRegistry.getRegistry().preloadPlugins();
} catch (final Exception ex) {
LOGGER.fatal(ex.getMessage(), ex);
throw ex;
}
}
}
@After
public void tearDown() {
}
@Test
public void test010printProperties() {
LOGGER.info("BasePath: " + PropertyManager.getManager().getBasePath());
LOGGER.info("PluginPath: " + PropertyManager.getManager().getPluginPath());
LOGGER.info("ProfilesPath: " + PropertyManager.getManager().getProfilesPath());
LOGGER.info("SearchFormPath: " + PropertyManager.getManager().getSearchFormPath());
PropertyManager.getManager().print();
}
@Test
public void test020printPluginPaths() {
LOGGER.info("PluginListAvailable: " + PropertyManager.getManager().isPluginListAvailable());
final Iterator pluginIterator = PropertyManager.getManager().getPluginList();
while (pluginIterator.hasNext()) {
LOGGER.info(pluginIterator.next());
}
}
@Test
public void test030printPluginDescriptors() throws Exception {
assertTrue(PluginRegistry.getRegistry().getPluginDescriptors().hasNext());
final Iterator pluginDescriptorIterator = PluginRegistry.getRegistry().getPluginDescriptors();
while (pluginDescriptorIterator.hasNext()) {
final PluginDescriptor pluginDescriptor = (PluginDescriptor) pluginDescriptorIterator.next();
LOGGER.info(pluginDescriptor.getId() + ": " + pluginDescriptor.getName());
assertNotNull(PluginRegistry.getRegistry().getPluginDescriptor(pluginDescriptor.getId()));
assertEquals(pluginDescriptor, PluginRegistry.getRegistry().getPluginDescriptor(pluginDescriptor.getId()));
}
}
@Test
@UseDataProvider("getPluginIds")
@Ignore
public void test040loadPlugin(final String pluginId) throws Exception {
try {
LOGGER.info("loadPlugin: " + pluginId);
assertNotNull(PluginRegistry.getRegistry().getPluginDescriptor(pluginId));
LOGGER.info("loading plugin '" + pluginId + "' from " + PluginRegistry.getRegistry().getPluginDescriptor(pluginId).getPluginPath());
PluginRegistry.getRegistry().loadPlugin(pluginId);
final PluginSupport plugin = PluginRegistry.getRegistry().getPlugin(pluginId);
assertNotNull(plugin);
} catch (final Exception ex) {
LOGGER.fatal(ex.getMessage(), ex);
throw ex;
}
}
@DataProvider
public final static String[] getPluginIds() throws Exception {
return new String[]{"cismap"};
}
}