/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.apache.jena.tdb;
import org.apache.jena.atlas.junit.BaseTest ;
import org.apache.jena.atlas.lib.FileOps ;
import org.apache.jena.sparql.core.DatasetGraph ;
import org.apache.jena.sparql.core.Quad ;
import org.apache.jena.sparql.sse.SSE ;
import org.apache.jena.tdb.TDBFactory ;
import org.apache.jena.tdb.base.file.Location ;
import org.apache.jena.tdb.sys.TDBMaker ;
import org.apache.jena.tdb.transaction.DatasetGraphTransaction ;
import org.junit.After ;
import org.junit.Before ;
import org.junit.Test ;
public class TestTDBFactory extends BaseTest
{
String DIR = ConfigTest.getCleanDir() ;
static Quad quad1 = SSE.parseQuad("(_ <s> <p> 1)") ;
static Quad quad2 = SSE.parseQuad("(_ <s> <p> 1)") ;
@Before public void before()
{
StoreConnection.reset() ;
FileOps.clearDirectory(DIR) ;
}
@After public void after()
{
FileOps.clearDirectory(DIR) ;
}
@Test public void testTDBFactory1()
{
TDBMaker.reset() ;
DatasetGraph dg1 = TDBFactory.createDatasetGraph(Location.mem("FOO")) ;
DatasetGraph dg2 = TDBFactory.createDatasetGraph(Location.mem("FOO")) ;
dg1.add(quad1) ;
assertTrue(dg2.contains(quad1)) ;
}
@Test public void testTDBFactory2()
{
TDBMaker.reset() ;
// The unnamed location is unique each time.
DatasetGraph dg1 = TDBFactory.createDatasetGraph(Location.mem()) ;
DatasetGraph dg2 = TDBFactory.createDatasetGraph(Location.mem()) ;
dg1.add(quad1) ;
assertFalse(dg2.contains(quad1)) ;
}
@Test public void testTDBMakerTxn1()
{
TDBMaker.reset() ;
DatasetGraph dg1 = TDBMaker.createDatasetGraphTransaction(Location.create(DIR)) ;
DatasetGraph dg2 = TDBMaker.createDatasetGraphTransaction(Location.create(DIR)) ;
DatasetGraph dgBase1 = ((DatasetGraphTransaction)dg1).getBaseDatasetGraph() ;
DatasetGraph dgBase2 = ((DatasetGraphTransaction)dg2).getBaseDatasetGraph() ;
assertSame(dgBase1, dgBase2) ;
}
@Test public void testTDBMakerTxn2()
{
// Named memory locations
TDBMaker.reset() ;
DatasetGraph dg1 = TDBMaker.createDatasetGraphTransaction(Location.mem("FOO")) ;
DatasetGraph dg2 = TDBMaker.createDatasetGraphTransaction(Location.mem("FOO")) ;
DatasetGraph dgBase1 = ((DatasetGraphTransaction)dg1).getBaseDatasetGraph() ;
DatasetGraph dgBase2 = ((DatasetGraphTransaction)dg2).getBaseDatasetGraph() ;
assertSame(dgBase1, dgBase2) ;
}
@Test public void testTDBMakerTxn3()
{
// Un-named memory locations
TDBMaker.reset() ;
DatasetGraph dg1 = TDBMaker.createDatasetGraphTransaction(Location.mem()) ;
DatasetGraph dg2 = TDBMaker.createDatasetGraphTransaction(Location.mem()) ;
DatasetGraph dgBase1 = ((DatasetGraphTransaction)dg1).getBaseDatasetGraph() ;
DatasetGraph dgBase2 = ((DatasetGraphTransaction)dg2).getBaseDatasetGraph() ;
assertNotSame(dgBase1, dgBase2) ;
}
@Test public void testTDBFresh01() {
boolean b = TDBFactory.inUseLocation(DIR) ;
assertFalse("Expect false before any creation attempted", b) ;
}
@Test public void testTDBFresh02() {
boolean b = TDBFactory.inUseLocation(DIR) ;
assertFalse("Expect false before any creation attempted", b) ;
TDBFactory.createDataset(DIR) ;
b = TDBFactory.inUseLocation(DIR) ;
assertTrue("Expected true after creation attempted", b) ;
StoreConnection.expel(Location.create(DIR), true);
}
@Test public void testTDBFresh03() {
boolean b = TDBFactory.inUseLocation(DIR) ;
assertFalse("Expect true before any creation attempted", b) ;
TDBFactory.createDataset(DIR) ;
b = TDBFactory.inUseLocation(DIR) ;
assertTrue("Expected true after creation attempted", b) ;
StoreConnection.expel(Location.create(DIR), true);
b = TDBFactory.inUseLocation(DIR) ;
assertTrue("Expected true even after StoreConenction reset", b) ;
}
@Test public void testTDBFresh11() {
Location loc = Location.mem() ;
boolean b = TDBFactory.inUseLocation(loc) ;
assertFalse("Expect false before any creation attempted", b) ;
}
@Test public void testTDBFresh22() {
Location loc = Location.mem() ;
boolean b = TDBFactory.inUseLocation(loc) ;
TDBFactory.createDataset(loc) ;
b = TDBFactory.inUseLocation(loc) ;
assertFalse("Expected false for a unique memory location", b) ;
}
@Test public void testTDBFresh23() {
Location loc = Location.mem("FOO") ;
boolean b = TDBFactory.inUseLocation(loc) ;
TDBFactory.createDataset(loc) ;
b = TDBFactory.inUseLocation(loc) ;
assertTrue("Expected true for a named memory location", b) ;
}
}