fr.cnes.sitools.metacatalogue.CswMetadataIndexerTestCase.java Source code

Java tutorial

Introduction

Here is the source code for fr.cnes.sitools.metacatalogue.CswMetadataIndexerTestCase.java

Source

/*******************************************************************************
* Copyright 2010-2014 CNES - CENTRE NATIONAL d'ETUDES SPATIALES
*
* This file is part of SITools2.
*
* SITools2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* SITools2 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with SITools2.  If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
package fr.cnes.sitools.metacatalogue;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import java.io.IOException;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocumentList;
import org.jdom.JDOMException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.restlet.Context;

import fr.cnes.sitools.metacatalogue.common.HarvesterStep;
import fr.cnes.sitools.metacatalogue.common.MetadataContainer;
import fr.cnes.sitools.metacatalogue.csw.extractor.CswMetadataExtractor;
import fr.cnes.sitools.metacatalogue.csw.indexer.CswMetadataIndexer;
import fr.cnes.sitools.metacatalogue.exceptions.ProcessException;
import fr.cnes.sitools.metacatalogue.index.solr.SolRUtils;
import fr.cnes.sitools.metacatalogue.index.solr.SolrMetadataIndexer;
import fr.cnes.sitools.metacatalogue.utils.HarvesterSettings;
import fr.cnes.sitools.model.HarvesterModel;
import fr.cnes.sitools.server.ContextAttributes;

public class CswMetadataIndexerTestCase extends AbstractHarvesterTestCase {

    private int nbFieldsExpected = 1;
    private SolrServer server;

    @Before
    public void setupTest() throws Exception {

        HarvesterSettings settings = (HarvesterSettings) HarvesterSettings.getInstance();
        server = SolRUtils.getEmbeddedSolRServer(settings.getStoreDIR("Tests.SOLR_HOME"), "solr.xml", "geosud");
        server.deleteByQuery("*:*");
        server.commit();

    }

    @After
    public void tearDown() {
        if (server != null) {
            server.shutdown();
        }
    }

    @Test
    public void testOpenSearchMetadataExtractor()
            throws ProcessException, IOException, SolrServerException, JDOMException {

        Context context = initContext();
        context.getAttributes().put(ContextAttributes.INDEXER_SERVER, server);

        String filePath = settings.getRootDirectory() + "/" + settings.getString("Tests.RESOURCES_DIRECTORY")
                + "/csw/geosud.xml";

        MetadataContainer data = getXMLDataFromFile(filePath);

        SolrMetadataIndexer solrIndexer = new SolrMetadataIndexer(context);

        HarvesterModel model = createHarvesterModelForTest("geosud");
        HarvesterStep extractor = new CswMetadataExtractor(model, context);
        HarvesterStep indexer = new CswMetadataIndexer(model, context, solrIndexer);

        extractor.setNext(indexer);
        // execute the process
        extractor.execute(data);
        // simulate the end of the input stream to end the process
        extractor.end();
        // assert that the metadata have been inserted
        assertMetadataInserted();

    }

    private void assertMetadataInserted() throws SolrServerException {
        SolrQuery query = new SolrQuery();
        query.setQuery("*:*");

        QueryResponse rsp = server.query(query);
        assertNotNull(rsp);
        SolrDocumentList listDoc = rsp.getResults();
        assertNotNull(listDoc);
        assertEquals(nbFieldsExpected, listDoc.getNumFound());
    }

    private HarvesterModel createHarvesterModelForTest(String id) {
        HarvesterModel model = new HarvesterModel();
        model.setId(id);
        model.setCatalogType("csw-iso19139-2-Geosud");
        return model;
    }

}