LuceneIndexLocationTest.java
/*******************************************************************************
* Copyright (c) 2021 Eclipse RDF4J contributors.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Distribution License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: BSD-3-Clause
*******************************************************************************/
package org.eclipse.rdf4j.sail.lucene.impl;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import java.io.File;
import java.nio.file.Path;
import java.util.stream.IntStream;
import org.eclipse.rdf4j.model.ValueFactory;
import org.eclipse.rdf4j.model.impl.SimpleValueFactory;
import org.eclipse.rdf4j.repository.RepositoryConnection;
import org.eclipse.rdf4j.repository.RepositoryException;
import org.eclipse.rdf4j.repository.sail.SailRepository;
import org.eclipse.rdf4j.repository.sail.SailRepositoryConnection;
import org.eclipse.rdf4j.sail.Sail;
import org.eclipse.rdf4j.sail.lucene.LuceneSail;
import org.eclipse.rdf4j.sail.memory.MemoryStore;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* This unit test reproduces issue #41
*
* @author Jacek Grzebyta
*/
public class LuceneIndexLocationTest {
private final Logger log = LoggerFactory.getLogger(getClass());
private final String luceneIndexPath = "sail-index";
Sail sail;
SailRepository repository;
RepositoryConnection connection;
private final ValueFactory vf = SimpleValueFactory.getInstance();
/**
* Set up memory storage located within temporary folder
*
*/
@BeforeEach
public void setUp(@TempDir File dataDir) {
sail = new MemoryStore();
LuceneSail lucene = new LuceneSail();
lucene.setBaseSail(sail);
lucene.setParameter(LuceneSail.LUCENE_DIR_KEY, luceneIndexPath);
lucene.setParameter(LuceneSail.INDEX_CLASS_KEY, LuceneSail.DEFAULT_INDEX_CLASS);
repository = new SailRepository(lucene);
repository.setDataDir(dataDir);
try ( // create temporary transaction to load data
SailRepositoryConnection cnx = repository.getConnection()) {
cnx.begin();
IntStream.rangeClosed(0, 50)
.forEach(i -> cnx.add(vf.createStatement(vf.createIRI("urn:subject" + i),
vf.createIRI("urn:predicate:" + i), vf.createLiteral("Value" + i))));
cnx.commit();
}
connection = repository.getConnection();
}
@AfterEach
public void tearDown() throws RepositoryException {
try {
if (connection != null) {
connection.close();
}
} finally {
if (repository != null) {
repository.shutDown();
}
}
}
/**
* Check Lucene index location
*
*/
@Test
public void IndexLocationTest() {
File dataDir = repository.getDataDir();
Path lucenePath = repository.getDataDir().toPath().resolve(luceneIndexPath);
log.info("Lucene index location: {}", lucenePath);
assertEquals(dataDir.getAbsolutePath() + File.separator + luceneIndexPath,
lucenePath.toAbsolutePath().toString());
assertTrue(lucenePath.toFile().exists());
assertTrue(lucenePath.toFile().isDirectory());
}
}