/** * Copyright 2014 National University of Ireland, Galway. * * This file is part of the SIREn project. Project and contact information: * * https://github.com/rdelbru/SIREn * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.sindice.siren.solr; import java.io.FileReader; import java.io.IOException; import org.apache.commons.io.IOUtils; import org.apache.solr.SolrTestCaseJ4; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.common.SolrInputDocument; import org.junit.After; /** * Abstract class which instantiates a Solr server and provides helper methods * for testing SIREn functionalities. * <p> * Subclasses must call initCore in a <code>@BeforeClass</code> method. * <p> * The Solr server is reused across unit tests. * <p> * By default, the content of the Solr server is cleared after each unit tests. */ public abstract class SolrServerTestCase extends SolrTestCaseJ4 { protected static final String SOLR_HOME = "./src/test/resources/solr.home/"; public static final String ID_FIELD = "id"; public static final String URL_FIELD = "url"; public static final String JSON_FIELD = "json"; protected static SolrServerWrapper getWrapper() { return new SolrServerWrapper(h.getCoreContainer()); } @Override @After public void tearDown() throws Exception { getWrapper().clear(); super.tearDown(); } protected void addJsonFile(final String id, final String path) throws IOException, SolrServerException { this.addJsonFileWoCommit(id, path); getWrapper().commit(); } protected void addJsonFileWoCommit(final String id, final String path) throws IOException, SolrServerException { final FileReader reader = new FileReader(path); try { final String content = IOUtils.toString(reader); final SolrInputDocument document = new SolrInputDocument(); document.addField(ID_FIELD, id); document.addField(JSON_FIELD, content); getWrapper().add(document); } finally { reader.close(); } } protected void addJsonString(final String id, final String content) throws IOException, SolrServerException { this.addJsonString(id, JSON_FIELD, content); } protected void addJsonString(final String id, final String field, final String content) throws IOException, SolrServerException { this.addJsonStringWoCommit(id, field, content); getWrapper().commit(); } protected void addJsonStringWoCommit(final String id, final String content) throws IOException, SolrServerException { this.addJsonStringWoCommit(id, JSON_FIELD, content); } protected void addJsonStringWoCommit(final String id, final String field, final String content) throws IOException, SolrServerException { final SolrInputDocument document = new SolrInputDocument(); document.addField(ID_FIELD, id); document.addField(field, content); getWrapper().add(document); } protected String[] search(final SolrQuery query, final String retrievedField) throws SolrServerException, IOException { return getWrapper().search(query, retrievedField); } protected long search(final SolrQuery query) throws SolrServerException, IOException { return getWrapper().search(query); } protected void commit() throws SolrServerException, IOException { getWrapper().commit(); } }