/******************************************************************************* * Copyright (c) 2006-2012 * Software Technology Group, Dresden University of Technology * DevBoost GmbH, Berlin, Amtsgericht Charlottenburg, HRB 140026 * * 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: * Software Technology Group - TU Dresden, Germany; * DevBoost GmbH - Berlin, Germany * - initial API and implementation ******************************************************************************/ package org.reuseware.sokan.test.all; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.junit.BeforeClass; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.reuseware.sokan.index.emodeler.EModeler; import org.reuseware.sokan.index.emodeler.EModelerManager; import org.reuseware.sokan.index.indexer.Indexer; import org.reuseware.sokan.index.indexer.IndexerConfiguration; import org.reuseware.sokan.index.persister.PersistencyManager; import org.reuseware.sokan.index.solr.SolrPersister; import org.reuseware.sokan.index.util.IndexUtil; import org.reuseware.sokan.test.exampleindexer.emodeler.TestEModeler; import org.reuseware.sokan.test.exampleindexer.indexer.DependentIndexer; import org.reuseware.sokan.test.exampleindexer.indexer.FacetIndexer; import org.reuseware.sokan.test.exampleindexer.indexer.GeneratingIndexer; import org.reuseware.sokan.test.exampleindexer.indexer.ReuseIndexer; import org.reuseware.sokan.test.index.emodeler.FacetInstEModeler; import org.reuseware.sokan.test.index.emodeler.FacetOtherEModeler; import org.reuseware.sokan.test.index.indexer.DependencyIndexer; import org.reuseware.sokan.test.index.indexer.FacetColorIndexer; import org.reuseware.sokan.test.index.indexer.FacetSizeIndexer; import org.reuseware.sokan.test.index.indexer.FacetTypeIndexer; import org.reuseware.sokan.test.index.indexer.MultiValueIndexer; import org.reuseware.sokan.test.index.tests.DependencyManagerTestCase; import org.reuseware.sokan.test.index.tests.IndexNotifyDeltaTestCase; import org.reuseware.sokan.test.index.tests.IndexUtilTestCase; import org.reuseware.sokan.test.index.tests.MultiValueTestCase; import org.reuseware.sokan.test.indexer.complex.A10Indexer; import org.reuseware.sokan.test.indexer.complex.A11Indexer; import org.reuseware.sokan.test.indexer.complex.A12Indexer; import org.reuseware.sokan.test.indexer.complex.A13Indexer; import org.reuseware.sokan.test.indexer.complex.A9Indexer; import org.reuseware.sokan.test.indexer.complex.B10Indexer; import org.reuseware.sokan.test.indexer.complex.B11Indexer; import org.reuseware.sokan.test.indexer.complex.B12Indexer; import org.reuseware.sokan.test.indexer.complex.B13Indexer; import org.reuseware.sokan.test.indexer.complex.B9Indexer; import org.reuseware.sokan.test.indexer.complex.C10Indexer; import org.reuseware.sokan.test.indexer.complex.C11Indexer; import org.reuseware.sokan.test.indexer.complex.C12Indexer; import org.reuseware.sokan.test.indexer.complex.C13Indexer; import org.reuseware.sokan.test.indexer.complex.C9Indexer; import org.reuseware.sokan.test.indexer.complex.D10Indexer; import org.reuseware.sokan.test.indexer.complex.D12Indexer; import org.reuseware.sokan.test.indexer.complex.D13Indexer; import org.reuseware.sokan.test.indexer.complex.D9Indexer; import org.reuseware.sokan.test.indexer.complex.E12Indexer; import org.reuseware.sokan.test.indexer.complex.E13Indexer; import org.reuseware.sokan.test.indexer.complex.E9Indexer; import org.reuseware.sokan.test.indexer.complex.F12Indexer; import org.reuseware.sokan.test.indexer.complex.F13Indexer; import org.reuseware.sokan.test.indexer.complex.G13Indexer; import org.reuseware.sokan.test.indexer.complex.H13Indexer; import org.reuseware.sokan.test.indexer.complex.I13Indexer; import org.reuseware.sokan.test.indexer.complex.J13Indexer; import org.reuseware.sokan.test.indexer.complex.K13Indexer; import org.reuseware.sokan.test.indexer.list.A3Indexer; import org.reuseware.sokan.test.indexer.list.A4Indexer; import org.reuseware.sokan.test.indexer.list.A5Indexer; import org.reuseware.sokan.test.indexer.list.A6Indexer; import org.reuseware.sokan.test.indexer.list.A7Indexer; import org.reuseware.sokan.test.indexer.list.B3Indexer; import org.reuseware.sokan.test.indexer.list.B4Indexer; import org.reuseware.sokan.test.indexer.list.B5Indexer; import org.reuseware.sokan.test.indexer.list.B6Indexer; import org.reuseware.sokan.test.indexer.list.B7Indexer; import org.reuseware.sokan.test.indexer.list.C6Indexer; import org.reuseware.sokan.test.indexer.list.C7Indexer; import org.reuseware.sokan.test.indexer.loop.CreateIndexLoopIndexer; import org.reuseware.sokan.test.indexer.loop.DependencyLoopIndexer; import org.reuseware.sokan.test.indexer.tests.IndexerSorterTestCase; import org.reuseware.sokan.test.indexer.tests.MultiPhaseCommitTestCase; import org.reuseware.sokan.test.indexer.tree.A8Indexer; import org.reuseware.sokan.test.indexer.tree.B8Indexer; import org.reuseware.sokan.test.indexer.tree.C8Indexer; import org.reuseware.sokan.test.indexer.tree.D8Indexer; import org.reuseware.sokan.test.indexer.trivial.A1Indexer; import org.reuseware.sokan.test.indexer.trivial.A2Indexer; import org.reuseware.sokan.test.misc.cases.IDContainmentTestCase; import org.reuseware.sokan.test.misc.cases.IndexNotifyTestCase; import org.reuseware.sokan.test.misc.cases.ResourceCacheTestCase; import org.reuseware.sokan.test.util.SorterDataBuilder; import org.reuseware.sokan.test.util.TestData; import org.reuseware.sokan.test.util.TestDataBuilder; @RunWith(Suite.class) @Suite.SuiteClasses( { // SolrSchemaTest.class, PreconditionTestCase.class, IDContainmentTestCase.class, DependencyManagerTestCase.class, IndexerSorterTestCase.class, ResourceCacheTestCase.class, IndexUtilTestCase.class, MultiPhaseCommitTestCase.class, MultiValueTestCase.class, IndexNotifyTestCase.class, IndexNotifyDeltaTestCase.class }) public class AllTestsSuiteTest { @BeforeClass public static void setUp() throws IOException { deleteDirectory(new File("tmp")); deleteDirectory(new File(".metadata")); IndexUtil.INSTANCE.setPersistencyManager( new PersistencyManager(new SolrPersister())); pluginXMLExampleIndexer(); pluginXMLIndex(); pluginXMLIndexer(); TestDataBuilder.INSTANCE.build(); SorterDataBuilder.INSTANCE.build(); } private static boolean deleteDirectory(File path) { if (path.exists()) { File[] files = path.listFiles(); for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { deleteDirectory(files[i]); } else { files[i].delete(); } } } return (path.delete()); } private static void newIndexer( Indexer indexer, Indexer[] dependencies) { String id = indexer.getClass().getCanonicalName(); List<String> depIDs = new ArrayList<String>(); for(Indexer depIndexer : dependencies) { String depID = null; if (depIndexer == null) { depID = "Foo"; } else { depID = depIndexer.getClass().getCanonicalName(); } depIDs.add(depID); } TestData.INSTANCE.addIndexer( new IndexerConfiguration(indexer, id, depIDs)); } private static void newEModeler(EModeler modeler) { EModelerManager.getEModelers().add(modeler); } private static void pluginXMLExampleIndexer() { Indexer facetIndexer = new FacetIndexer(); Indexer depIndexer = new DependentIndexer(); Indexer reuseIndexer = new ReuseIndexer(); Indexer genIndexer = new GeneratingIndexer(); EModeler testEModeler = new TestEModeler(); newIndexer(facetIndexer, new Indexer[]{depIndexer}); newIndexer(reuseIndexer, new Indexer[]{}); newIndexer(depIndexer, new Indexer[]{reuseIndexer}); newIndexer(genIndexer, new Indexer[]{}); newEModeler(testEModeler); } private static void pluginXMLIndex() { Indexer depIndexer = new DependencyIndexer(); Indexer colorIndexer = new FacetColorIndexer(); Indexer sizeIndexer = new FacetSizeIndexer(); Indexer typeIndexer = new FacetTypeIndexer(); Indexer multiValueIndexer = new MultiValueIndexer(); EModeler instEModeler = new FacetInstEModeler(); EModeler otheEModeler = new FacetOtherEModeler(); newIndexer(depIndexer, new Indexer[]{}); newIndexer(colorIndexer, new Indexer[]{}); newIndexer(sizeIndexer, new Indexer[]{}); newIndexer(typeIndexer, new Indexer[]{}); newIndexer(multiValueIndexer, new Indexer[]{}); newEModeler(instEModeler); newEModeler(otheEModeler); } private static void pluginXMLIndexer() { Indexer a1Indexer = new A1Indexer(); Indexer a2Indexer = new A2Indexer(); newIndexer(a1Indexer, new Indexer[]{}); newIndexer(a2Indexer, new Indexer[]{a2Indexer}); Indexer a3Indexer = new A3Indexer(); Indexer b3Indexer = new B3Indexer(); newIndexer(a3Indexer, new Indexer[]{}); newIndexer(b3Indexer, new Indexer[]{a3Indexer}); Indexer a4Indexer = new A4Indexer(); Indexer b4Indexer = new B4Indexer(); newIndexer(a4Indexer, new Indexer[]{b4Indexer,b4Indexer}); newIndexer(b4Indexer, new Indexer[]{}); Indexer a5Indexer = new A5Indexer(); Indexer b5Indexer = new B5Indexer(); newIndexer(a5Indexer, new Indexer[]{b5Indexer}); newIndexer(b5Indexer, new Indexer[]{a5Indexer}); Indexer a6Indexer = new A6Indexer(); Indexer b6Indexer = new B6Indexer(); Indexer c6Indexer = new C6Indexer(); newIndexer(a6Indexer, new Indexer[]{c6Indexer}); newIndexer(b6Indexer, new Indexer[]{c6Indexer}); newIndexer(c6Indexer, new Indexer[]{b6Indexer}); Indexer a7Indexer = new A7Indexer(); Indexer b7Indexer = new B7Indexer(); Indexer c7Indexer = new C7Indexer(); newIndexer(a7Indexer, new Indexer[]{b7Indexer}); newIndexer(b7Indexer, new Indexer[]{a7Indexer,c7Indexer}); newIndexer(c7Indexer, new Indexer[]{b6Indexer}); Indexer a8Indexer = new A8Indexer(); Indexer b8Indexer = new B8Indexer(); Indexer c8Indexer = new C8Indexer(); Indexer d8Indexer = new D8Indexer(); newIndexer(a8Indexer, new Indexer[]{d8Indexer,b8Indexer,c8Indexer}); newIndexer(b8Indexer, new Indexer[]{}); newIndexer(c8Indexer, new Indexer[]{}); newIndexer(d8Indexer, new Indexer[]{}); Indexer a9Indexer = new A9Indexer(); Indexer b9Indexer = new B9Indexer(); Indexer c9Indexer = new C9Indexer(); Indexer d9Indexer = new D9Indexer(); Indexer e9Indexer = new E9Indexer(); newIndexer(a9Indexer, new Indexer[]{b9Indexer}); newIndexer(b9Indexer, new Indexer[]{}); newIndexer(c9Indexer, new Indexer[]{b9Indexer}); newIndexer(d9Indexer, new Indexer[]{c9Indexer,e9Indexer,a9Indexer}); newIndexer(e9Indexer, new Indexer[]{b9Indexer}); Indexer a10Indexer = new A10Indexer(); Indexer b10Indexer = new B10Indexer(); Indexer c10Indexer = new C10Indexer(); Indexer d10Indexer = new D10Indexer(); newIndexer(a10Indexer, new Indexer[]{b10Indexer}); newIndexer(b10Indexer, new Indexer[]{a10Indexer}); newIndexer(c10Indexer, new Indexer[]{b10Indexer,d10Indexer}); newIndexer(d10Indexer, new Indexer[]{c10Indexer}); Indexer a11Indexer = new A11Indexer(); Indexer b11Indexer = new B11Indexer(); Indexer c11Indexer = new C11Indexer(); newIndexer(a11Indexer, new Indexer[]{b11Indexer,c11Indexer}); newIndexer(b11Indexer, new Indexer[]{a11Indexer,c11Indexer}); newIndexer(c11Indexer, new Indexer[]{b11Indexer,a11Indexer}); Indexer a12Indexer = new A12Indexer(); Indexer b12Indexer = new B12Indexer(); Indexer c12Indexer = new C12Indexer(); Indexer d12Indexer = new D12Indexer(); Indexer e12Indexer = new E12Indexer(); Indexer f12Indexer = new F12Indexer(); newIndexer(a12Indexer, new Indexer[]{f12Indexer}); newIndexer(b12Indexer, new Indexer[]{}); newIndexer(c12Indexer, new Indexer[]{d12Indexer}); newIndexer(d12Indexer, new Indexer[]{e12Indexer}); newIndexer(e12Indexer, new Indexer[]{c12Indexer,b12Indexer}); newIndexer(f12Indexer, new Indexer[]{e12Indexer}); Indexer a13Indexer = new A13Indexer(); Indexer b13Indexer = new B13Indexer(); Indexer c13Indexer = new C13Indexer(); Indexer d13Indexer = new D13Indexer(); Indexer e13Indexer = new E13Indexer(); Indexer f13Indexer = new F13Indexer(); Indexer g13Indexer = new G13Indexer(); Indexer h13Indexer = new H13Indexer(); Indexer i13Indexer = new I13Indexer(); Indexer j13Indexer = new J13Indexer(); Indexer k13Indexer = new K13Indexer(); newIndexer(a13Indexer, new Indexer[]{j13Indexer}); newIndexer(b13Indexer, new Indexer[]{j13Indexer}); newIndexer(c13Indexer, new Indexer[]{f13Indexer}); newIndexer(d13Indexer, new Indexer[]{b13Indexer}); newIndexer(e13Indexer, new Indexer[]{null}); newIndexer(f13Indexer, new Indexer[]{b13Indexer,d13Indexer}); newIndexer(g13Indexer, new Indexer[]{j13Indexer}); newIndexer(h13Indexer, new Indexer[]{a13Indexer}); newIndexer(i13Indexer, new Indexer[]{k13Indexer}); newIndexer(j13Indexer, new Indexer[]{c13Indexer}); newIndexer(k13Indexer, new Indexer[]{h13Indexer,a13Indexer}); Indexer createLoopIndexer = new CreateIndexLoopIndexer(); Indexer dependLoopIndexer = new DependencyLoopIndexer(); newIndexer(createLoopIndexer, new Indexer[]{}); newIndexer(dependLoopIndexer, new Indexer[]{}); } }