/** * This file is part of General Entity Annotator Benchmark. * * General Entity Annotator Benchmark is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * General Entity Annotator Benchmark is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with General Entity Annotator Benchmark. If not, see <http://www.gnu.org/licenses/>. */ package org.aksw.gerbil; import java.io.Closeable; import java.util.concurrent.Semaphore; import org.aksw.gerbil.annotator.AnnotatorConfiguration; import org.aksw.gerbil.database.SimpleLoggingDAO4Debugging; import org.aksw.gerbil.dataset.DatasetConfiguration; import org.aksw.gerbil.dataset.check.EntityCheckerManager; import org.aksw.gerbil.datatypes.ExperimentTaskConfiguration; import org.aksw.gerbil.datatypes.ExperimentType; import org.aksw.gerbil.evaluate.EvaluatorFactory; import org.aksw.gerbil.matching.Matching; import org.aksw.gerbil.semantic.sameas.SameAsRetriever; import org.aksw.gerbil.semantic.sameas.SameAsRetrieverDecorator; import org.aksw.gerbil.semantic.sameas.impl.MultipleSameAsRetriever; import org.aksw.gerbil.test.EntityCheckerManagerSingleton4Tests; import org.aksw.gerbil.test.SameAsRetrieverSingleton4Tests; import org.aksw.gerbil.web.config.AdapterManager; import org.aksw.gerbil.web.config.AnnotatorsConfig; import org.aksw.gerbil.web.config.DatasetsConfig; import org.aksw.gerbil.web.config.RootConfig; import org.aksw.simba.topicmodeling.concurrent.overseers.pool.DefeatableOverseer; import org.aksw.simba.topicmodeling.concurrent.tasks.Task; import org.aksw.simba.topicmodeling.concurrent.tasks.TaskObserver; import org.apache.commons.io.IOUtils; import org.junit.Assert; import org.junit.Ignore; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Ignore public class SingleRunTest implements TaskObserver { private static final Logger LOGGER = LoggerFactory.getLogger(SingleRunTest.class); private static final String ANNOTATOR_NAME = "DBpedia Spotlight"; private static final String DATASET_NAME = "MSNBC"; private static final ExperimentType EXPERIMENT_TYPE = ExperimentType.A2KB; private static final Matching MATCHING = Matching.WEAK_ANNOTATION_MATCH; private static final boolean USE_SAME_AS_RETRIEVAL = false; private static final boolean USE_ENTITY_CHECKING = false; private static final SameAsRetriever SAME_AS_RETRIEVER = USE_SAME_AS_RETRIEVAL ? SameAsRetrieverSingleton4Tests.getInstance() : null; private static final EntityCheckerManager ENTITY_CHECKER_MANAGER = USE_ENTITY_CHECKING ? EntityCheckerManagerSingleton4Tests.getInstance() : null; public static void main(String[] args) throws Exception { SingleRunTest test = new SingleRunTest(); test.run(); } private Semaphore mutex = new Semaphore(0); @Test public void runTest() throws Exception { run(); } public void run() throws Exception { AdapterManager adapterManager = new AdapterManager(); adapterManager.setAnnotators(AnnotatorsConfig.annotators()); adapterManager.setDatasets(DatasetsConfig.datasets(ENTITY_CHECKER_MANAGER, SAME_AS_RETRIEVER)); AnnotatorConfiguration annotatorConfig = adapterManager.getAnnotatorConfig(ANNOTATOR_NAME, EXPERIMENT_TYPE); Assert.assertNotNull(annotatorConfig); DatasetConfiguration datasetConfig = adapterManager.getDatasetConfig(DATASET_NAME, EXPERIMENT_TYPE); Assert.assertNotNull(datasetConfig); DefeatableOverseer overseer = RootConfig.createOverseer(); overseer.addObserver(this); ExperimentTaskConfiguration taskConfigs[] = new ExperimentTaskConfiguration[] { new ExperimentTaskConfiguration(annotatorConfig, datasetConfig, EXPERIMENT_TYPE, MATCHING) }; Experimenter experimenter = new Experimenter(overseer, new SimpleLoggingDAO4Debugging(), SAME_AS_RETRIEVER, new EvaluatorFactory(), taskConfigs, "SingleRunTest"); experimenter.run(); mutex.acquire(); closeHttpRetriever(SAME_AS_RETRIEVER); overseer.shutdown(); } private void closeHttpRetriever(SameAsRetriever retriever) { if (retriever instanceof SameAsRetrieverDecorator) { closeHttpRetriever(((SameAsRetrieverDecorator) retriever).getDecorated()); } else if (retriever instanceof MultipleSameAsRetriever) { for (SameAsRetriever decorated : ((MultipleSameAsRetriever) retriever).getRetriever()) { closeHttpRetriever(decorated); } } if (retriever instanceof Closeable) { IOUtils.closeQuietly((Closeable) retriever); } } @Override public void reportTaskFinished(Task task) { mutex.release(); } @Override public void reportTaskThrowedException(Task task, Throwable t) { LOGGER.error("Task throwed exception.", t); Assert.assertNull(t); mutex.release(); } }