/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.texai.kb.journal;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import junit.framework.TestCase;
import org.apache.log4j.Logger;
import org.openrdf.model.impl.ContextStatementImpl;
import org.openrdf.model.impl.URIImpl;
import org.openrdf.model.vocabulary.RDF;
import org.openrdf.repository.RepositoryConnection;
import org.openrdf.repository.RepositoryException;
import org.texai.kb.CacheInitializer;
import org.texai.kb.Constants;
import org.texai.kb.persistence.DistributedRepositoryManager;
/**
*
* @author reed
*/
public class JournalReaderTest extends TestCase {
/** the log4j logger */
private static final Logger LOGGER = Logger.getLogger(JournalReaderTest.class);
/** the test repository name */
private static final String TEST_REPOSITORY_NAME = "Test";
/** the directory containing the test repository */
private static File testRepositoryDirectory;
public JournalReaderTest(String testName) {
super(testName);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
/**
* Test of read method, of class JournalReader.
*/
public void testRead() {
System.out.println("read");
CacheInitializer.initializeCaches();
DistributedRepositoryManager.addTestRepositoryPath(TEST_REPOSITORY_NAME, true);
DistributedRepositoryManager.deleteNamedRepository(TEST_REPOSITORY_NAME);
DistributedRepositoryManager.clearNamedRepository(TEST_REPOSITORY_NAME);
final File directory = new File("./journals/" + TEST_REPOSITORY_NAME);
if (!directory.exists()) {
try {
directory.createNewFile();
} catch (final IOException ex) {
fail(ex.getMessage());
}
}
assert directory.exists() : "./journals/" + TEST_REPOSITORY_NAME + " does not exist";
if (directory.listFiles() != null) {
final File[] files = directory.listFiles();
for (final File file : files) {
if (!file.isHidden()) {
LOGGER.info("deleting file: " + file);
file.delete();
}
}
}
List<JournalRequest> journalRequests = new ArrayList<>();
journalRequests.add(new JournalRequest(
TEST_REPOSITORY_NAME,
Constants.ADD_OPERATION,
new ContextStatementImpl(
new URIImpl(Constants.TERM_ARITY),
RDF.TYPE,
new URIImpl(Constants.TERM_BINARY_PREDICATE),
new URIImpl(Constants.TERM_UNIVERSAL_VOCABULARY_MT))));
JournalWriter journalWriter = new JournalWriter();
journalWriter.setIsUnitTest(true);
journalWriter.write(journalRequests);
journalWriter.commit();
String journalFilePath = journalWriter.getJournalFilePath();
JournalReader instance = new JournalReader();
instance.read(journalFilePath);
try {
final RepositoryConnection repositoryConnection =
DistributedRepositoryManager.getInstance().getRepositoryConnectionForRepositoryName(TEST_REPOSITORY_NAME);
assertEquals(1, repositoryConnection.size());
repositoryConnection.close();
} catch (final RepositoryException ex) {
fail(ex.getMessage());
}
JournalWriter.close();
DistributedRepositoryManager.shutDown();
}
}