Integrate new StoreParams into database creation. Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/0bf29773 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/0bf29773 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/0bf29773
Branch: refs/heads/eliminate-assignments Commit: 0bf297734e4d61a52460b76c351bafad097ad466 Parents: f53761d Author: Andy Seaborne <a...@apache.org> Authored: Sat Nov 8 16:19:10 2014 +0000 Committer: Andy Seaborne <a...@apache.org> Committed: Sat Nov 8 16:19:10 2014 +0000 ---------------------------------------------------------------------- .../com/hp/hpl/jena/tdb/StoreConnection.java | 2 +- .../java/com/hp/hpl/jena/tdb/setup/Build.java | 6 +- .../hpl/jena/tdb/setup/DatasetBuilderStd.java | 107 ++++++-------- .../com/hp/hpl/jena/tdb/setup/StoreParams.java | 11 ++ .../hp/hpl/jena/tdb/setup/StoreParamsCodec.java | 14 +- .../hp/hpl/jena/tdb/setup/StoreParamsConst.java | 8 +- .../hp/hpl/jena/tdb/setup/TestStoreParams.java | 22 +-- .../jena/tdb/setup/TestStoreParamsChoose.java | 26 ++-- .../jena/tdb/setup/TestStoreParamsCreate.java | 138 +++++++++++++++---- .../jena/tdb/transaction/TestTransRestart.java | 2 +- 10 files changed, 209 insertions(+), 127 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java index 5935a9a..dbf9865 100644 --- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java +++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/StoreConnection.java @@ -230,7 +230,7 @@ public class StoreConnection return sConn ; } - /** Make a StoreConnection based on any StoreParams at eh location or the system defaults. */ + /** Make a StoreConnection based on any StoreParams at the location or the system defaults. */ public static StoreConnection make(Location location) { return make(location, null) ; } http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java index 558846a..b23d804 100644 --- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java +++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/Build.java @@ -49,7 +49,7 @@ public class Build // XXX replace with: // return DatasetBuilderStd.stdBuilder().makeTupleIndex(location, indexName, primary, indexOrder) ; // All this to BuilderDB. - StoreParamsBuilder spb = StoreParamsBuilder.create() ; + StoreParamsBuilder spb = StoreParams.builder() ; spb.blockReadCacheSize(readCacheSize) ; spb.blockWriteCacheSize(writeCacheSize) ; RecordFactory recordFactory = new RecordFactory(dftKeyLength, dftValueLength) ; @@ -78,7 +78,7 @@ public class Build String indexNode2Id, int node2NodeIdCacheSize, String indexId2Node, int nodeId2NodeCacheSize, int sizeNodeMissCacheSize) { - StoreParamsBuilder spb = StoreParamsBuilder.create() ; + StoreParamsBuilder spb = StoreParams.builder() ; spb.indexNode2Id(indexNode2Id).node2NodeIdCacheSize(node2NodeIdCacheSize) ; spb.indexId2Node(indexId2Node).nodeId2NodeCacheSize(nodeId2NodeCacheSize) ; DatasetBuilderStd dbBuild = DatasetBuilderStd.stdBuilder() ; @@ -125,7 +125,7 @@ public class Build * @see StoreParams * @see StoreParamsDynamic */ - static StoreParams fixStoreParams(Location location, boolean isNew, StoreParams pApp, StoreParams pLoc, StoreParams pDft) { + static StoreParams decideStoreParams(Location location, boolean isNew, StoreParams pApp, StoreParams pLoc, StoreParams pDft) { StoreParams p = null ; if ( pLoc != null ) { // pLoc so use it, modify by pApp. http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java index 3dd02e6..7b6e60c 100644 --- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java +++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/DatasetBuilderStd.java @@ -19,16 +19,12 @@ package com.hp.hpl.jena.tdb.setup ; import java.io.File ; -import java.io.IOException ; +import java.io.FileFilter ; import java.util.Collections ; import java.util.HashMap ; import java.util.Map ; -import java.util.Properties ; -import org.apache.jena.atlas.io.IO ; import org.apache.jena.atlas.lib.ColumnMap ; -import org.apache.jena.atlas.lib.FileOps ; -import org.apache.jena.atlas.lib.PropertyUtils ; import org.apache.jena.atlas.lib.StrUtils ; import org.slf4j.Logger ; @@ -81,34 +77,50 @@ public class DatasetBuilderStd implements DatasetBuilder { * The parameters for a store have 3 inputs: the parameters provided, * any parameters * - * - * - * @param location Where to create the database. - * @param params Store parameters to use (null means use default). + * @param location Where to create the database. + * @param appParams Store parameters to use (null means use default). {See {@linkplain StoreParams}). * @return DatasetGraphTDB */ - public static DatasetGraphTDB create(Location location, StoreParams params) { - StoreParams $params = paramsForLocation(location) ; - // ---- Experimental - if ( ! location.isMem() && params != null ) { - if ( FileOps.existsAnyFiles(location.getDirectoryPath()) ) - $params = StoreParamsBuilder.modify($params, params) ; - else - $params = params ; - params = null ; - } - - // ---- - if ( params != null ) - log.warn("StoreParams != null (experimental)") ; + public static DatasetGraphTDB create(Location location, StoreParams appParams) { + StoreParams locParams = StoreParamsCodec.read(location) ; + StoreParams dftParams = StoreParams.getDftStoreParams() ; + // This can write the chosen parameters if necessary (new database, appParams != null, locParams == null) + boolean newArea = isNewDatabaseArea(location) ; + StoreParams params = Build.decideStoreParams(location, newArea, appParams, locParams, dftParams) ; DatasetBuilderStd x = new DatasetBuilderStd() ; x.standardSetup() ; - DatasetGraphTDB dsg = x.build(location, $params) ; - // Write params. - //if ( params != StoreParams.getDftStoreParams() ) - + DatasetGraphTDB dsg = x.build(location, params) ; return dsg ; } + + /** Look at a directory and see if it is a new area */ + private static boolean isNewDatabaseArea(Location location) { + if ( location.isMem() ) + return true ; + File d = new File(location.getDirectoryPath()) ; + if ( !d.exists() ) + return true ; + FileFilter ff = fileFilterNewDB ; + File[] entries = d.listFiles(ff) ; + return entries.length == 0 ; + } + + static FileFilter fileFilterNewDB = new FileFilter() { + @Override + public boolean accept(File pathname) { + String fn = pathname.getName() ; + if ( fn.equals(".") || fn.equals("..") ) + return false ; + if ( pathname.isDirectory() ) + return true ; + + if ( fn.equals(StoreParamsConst.TDB_CONFIG_FILE) ) + return false ; + return true ; + } + } ; + + public static DatasetGraphTDB create(StoreParams params) { // Memory version? @@ -147,38 +159,7 @@ public class DatasetBuilderStd implements DatasetBuilder { set(nodeTableBuilder, tupleIndexBuilder) ; } - private static StoreParams paramsForLocation(Location location) { - if ( location.exists(DB_CONFIG_FILE) ) { - log.debug("Existing configuration file found") ; - Properties properties = new Properties() ; - try { - PropertyUtils.loadFromFile(properties, DB_CONFIG_FILE) ; - } catch (IOException ex) { IO.exception(ex) ; throw new TDBException("Bad configuration file", ex) ; } - } - return StoreParams.getDftStoreParams() ; - } - -// private void checkIfConfig(Location location) { -// } - - private void checkIfNew(Location location) { - if ( location.isMem() ) { - return ; - } - - if ( FileOps.existsAnyFiles(location.getDirectoryPath()) ) { - - } - if ( location.exists(DB_CONFIG_FILE) ) { - log.debug("Existing config file") ; - return ; - } - - } - - private void checkConfiguration() { } - private static void checkLocation(Location location) { if ( location.isMem() ) return ; @@ -200,7 +181,6 @@ public class DatasetBuilderStd implements DatasetBuilder { BlockMgrBuilder blockMgrBuilder = new BuilderStdIndex.BlockMgrBuilderStd() ; IndexBuilder indexBuilderNT = new BuilderStdIndex.IndexBuilderStd(blockMgrBuilder, blockMgrBuilder) ; NodeTableBuilder nodeTableBuilder = new BuilderStdDB.NodeTableBuilderStd(indexBuilderNT, objectFileBuilder) ; - set(blockMgrBuilder, nodeTableBuilder) ; } @@ -209,7 +189,6 @@ public class DatasetBuilderStd implements DatasetBuilder { // Ensure that there is global synchronization synchronized (DatasetBuilderStd.class) { log.debug("Build database: "+location.getDirectoryPath()) ; - checkIfNew(location) ; checkLocation(location) ; return _build(location, params, true, null) ; } @@ -360,10 +339,10 @@ public class DatasetBuilderStd implements DatasetBuilder { } protected NodeTable makeNodeTableNoCache(Location location, String indexNode2Id, String indexId2Node, StoreParams params) { - StoreParamsBuilder spb = StoreParamsBuilder.create(params) ; - spb.node2NodeIdCacheSize(-1) ; - spb.nodeId2NodeCacheSize(-1) ; - spb.nodeMissCacheSize(-1) ; + StoreParamsBuilder spb = StoreParams.builder(params) + .node2NodeIdCacheSize(-1) + .nodeId2NodeCacheSize(-1) + .nodeMissCacheSize(-1) ; return makeNodeTable$(location, indexNode2Id, indexId2Node, spb.build()) ; } http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java index 81873dc..105e44c 100644 --- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java +++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParams.java @@ -73,6 +73,17 @@ public class StoreParams implements IndexParams, StoreParamsDynamic /*package*/ final Item<String> prefixNode2Id ; /*package*/ final Item<String> prefixId2Node ; + /** Build StoreParams, starting from system defaults. + * + * @return StoreParamsBuilder + */ + public static StoreParamsBuilder builder() { return StoreParamsBuilder.create() ; } + + /** Build StoreParams, starting from given default values. + * + * @return StoreParamsBuilder + */ + public static StoreParamsBuilder builder(StoreParams params) { return StoreParamsBuilder.create(params) ; } /*package*/ StoreParams(Item<FileMode> fileMode, Item<Integer> blockSize, Item<Integer> blockReadCacheSize, Item<Integer> blockWriteCacheSize, http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java index 49cdd44..dbf6022 100644 --- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java +++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsCodec.java @@ -43,8 +43,10 @@ import java.io.FileOutputStream ; import java.io.IOException ; import java.io.OutputStream ; +import org.apache.jena.atlas.AtlasException ; import org.apache.jena.atlas.io.IO ; import org.apache.jena.atlas.json.JSON ; +import org.apache.jena.atlas.json.JsonParseException; import org.apache.jena.atlas.json.JsonArray ; import org.apache.jena.atlas.json.JsonBuilder ; import org.apache.jena.atlas.json.JsonObject ; @@ -78,10 +80,14 @@ public class StoreParamsCodec { return read(location.getPath(TDB_CONFIG_FILE)) ; } - /** Read from a file */ + /** Read from a file, if possible. */ public static StoreParams read(String filename) { - JsonObject obj = JSON.read(filename) ; - return StoreParamsCodec.decode(obj) ; + try { + JsonObject obj = JSON.read(filename) ; + return StoreParamsCodec.decode(obj) ; + } + catch (JsonParseException ex) { return null ; } + catch (AtlasException ex) { return null ; } } public static JsonObject encodeToJson(StoreParams params) { @@ -126,7 +132,7 @@ public class StoreParamsCodec { } public static StoreParams decode(JsonObject json) { - StoreParamsBuilder builder = StoreParamsBuilder.create() ; + StoreParamsBuilder builder = StoreParams.builder() ; for ( String key : json.keys() ) { String short_key = unkey(key) ; http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java index a06f42b..f81dbe8 100644 --- a/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java +++ b/jena-tdb/src/main/java/com/hp/hpl/jena/tdb/setup/StoreParamsConst.java @@ -92,10 +92,10 @@ public class StoreParamsConst { // because StoreParamsBuilder uses these constants. /** The system default parameters for on-disk databases. */ - static StoreParams dftStoreParams = StoreParamsBuilder.create().build() ; + static StoreParams dftStoreParams = StoreParams.builder().build() ; /** The system default parameters for in-memory databases. */ - static StoreParams dftMemStoreParams = StoreParamsBuilder.create() + static StoreParams dftMemStoreParams = StoreParams.builder() .fileMode(FileMode.direct) // Small block caches, mainly so it behaves like a direct on-disk database. .blockReadCacheSize(10) @@ -106,7 +106,7 @@ public class StoreParamsConst { .build() ; /** The "small store" parameters. */ - static StoreParams smallStoreParams = StoreParamsBuilder.create() + static StoreParams smallStoreParams = StoreParams.builder() .fileMode(FileMode.direct) .blockReadCacheSize(100) .blockWriteCacheSize(100) @@ -114,7 +114,5 @@ public class StoreParamsConst { .nodeId2NodeCacheSize(10000) .nodeMissCacheSize(100) .build() ; - - } http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java index 64655a1..4a6164a 100644 --- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java +++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParams.java @@ -34,17 +34,17 @@ public class TestStoreParams extends BaseTest { @Test public void store_params_02() { StoreParams input = StoreParams.getDftStoreParams() ; - StoreParams sp = StoreParamsBuilder.create(input).build() ; + StoreParams sp = StoreParams.builder(input).build() ; assertEqualsStoreParams(StoreParams.getDftStoreParams(), sp) ; } @Test public void store_params_03() { - StoreParams sp = StoreParamsBuilder.create().build() ; + StoreParams sp = StoreParams.builder().build() ; assertEqualsStoreParams(StoreParams.getDftStoreParams(), sp) ; } @Test public void store_params_04() { - StoreParams params = StoreParamsBuilder.create().build() ; + StoreParams params = StoreParams.builder().build() ; StoreParams params2 = roundTrip(params) ; assertEqualsStoreParams(params,params2) ; } @@ -52,7 +52,7 @@ public class TestStoreParams extends BaseTest { // ---- @Test public void store_params_10() { - StoreParams params = StoreParamsBuilder.create().fileMode(FileMode.direct).blockSize(1024).build() ; + StoreParams params = StoreParams.builder().fileMode(FileMode.direct).blockSize(1024).build() ; StoreParams params2 = roundTrip(params) ; assertEqualsStoreParams(params,params2) ; assertEquals(params.getFileMode(), params2.getFileMode()) ; @@ -62,7 +62,7 @@ public class TestStoreParams extends BaseTest { @Test public void store_params_11() { String xs = "{ \"tdb.block_size\": 2048 }" ; JsonObject x = JSON.parse(xs) ; - StoreParams paramsExpected = StoreParamsBuilder.create().blockSize(2048).build() ; + StoreParams paramsExpected = StoreParams.builder().blockSize(2048).build() ; StoreParams paramsActual = StoreParamsCodec.decode(x) ; assertEqualsStoreParams(paramsExpected,paramsActual) ; } @@ -70,7 +70,7 @@ public class TestStoreParams extends BaseTest { @Test public void store_params_12() { String xs = "{ \"tdb.file_mode\": \"direct\" , \"tdb.block_size\": 2048 }" ; JsonObject x = JSON.parse(xs) ; - StoreParams paramsExpected = StoreParamsBuilder.create().blockSize(2048).fileMode(FileMode.direct).build() ; + StoreParams paramsExpected = StoreParams.builder().blockSize(2048).fileMode(FileMode.direct).build() ; StoreParams paramsActual = StoreParamsCodec.decode(x) ; assertEqualsStoreParams(paramsExpected,paramsActual) ; } @@ -95,16 +95,16 @@ public class TestStoreParams extends BaseTest { // Check that setting gets recorded and propagated. @Test public void store_params_20() { - StoreParams params = StoreParamsBuilder.create().blockReadCacheSize(0).build(); + StoreParams params = StoreParams.builder().blockReadCacheSize(0).build(); assertTrue(params.isSetBlockReadCacheSize()) ; assertFalse(params.isSetBlockWriteCacheSize()) ; } @Test public void store_params_21() { - StoreParams params1 = StoreParamsBuilder.create().blockReadCacheSize(0).build(); + StoreParams params1 = StoreParams.builder().blockReadCacheSize(0).build(); assertTrue(params1.isSetBlockReadCacheSize()) ; assertFalse(params1.isSetBlockWriteCacheSize()) ; - StoreParams params2 = StoreParamsBuilder.create(params1).blockWriteCacheSize(0).build(); + StoreParams params2 = StoreParams.builder(params1).blockWriteCacheSize(0).build(); assertTrue(params2.isSetBlockReadCacheSize()) ; assertTrue(params2.isSetBlockWriteCacheSize()) ; assertFalse(params2.isSetNodeMissCacheSize()) ; @@ -112,11 +112,11 @@ public class TestStoreParams extends BaseTest { // Modify @Test public void store_params_22() { - StoreParams params1 = StoreParamsBuilder.create() + StoreParams params1 = StoreParams.builder() .blockReadCacheSize(0) .blockWriteCacheSize(1) .build(); - StoreParams params2 = StoreParamsBuilder.create() + StoreParams params2 = StoreParams.builder() .blockReadCacheSize(5) .build(); StoreParams params3 = StoreParamsBuilder.modify(params1, params2) ; http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java index fb50f33..8e985ae 100644 --- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java +++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsChoose.java @@ -27,38 +27,38 @@ import com.hp.hpl.jena.tdb.base.file.Location ; //TestParamsCreate /** This test suite uses on-diskstructures and can be slow */ public class TestStoreParamsChoose extends BaseTest { - static final StoreParams pApp = StoreParamsBuilder.create() + static final StoreParams pApp = StoreParams.builder() .blockSize(12) // Not dynamic .nodeMissCacheSize(12) // Dynamic .build(); - static final StoreParams pLoc = StoreParamsBuilder.create() + static final StoreParams pLoc = StoreParams.builder() .blockSize(0) .nodeMissCacheSize(0).build(); static final StoreParams pDft = StoreParams.getDftStoreParams() ; @Test public void params_choose_new_1() { - StoreParams p = Build.fixStoreParams(Location.mem(), true, null, null, pDft) ; + StoreParams p = Build.decideStoreParams(Location.mem(), true, null, null, pDft) ; // New store, no pLoc, no pApp so pDft. assertTrue(StoreParams.sameValues(p, pDft)) ; } @Test public void params_choose_new_2() { - StoreParams p = Build.fixStoreParams(Location.mem(), true, pApp, null, pDft) ; + StoreParams p = Build.decideStoreParams(Location.mem(), true, pApp, null, pDft) ; // New store, no pLoc, so pApp is the enire settings. assertEquals(12, p.getBlockSize().intValue()) ; assertTrue(StoreParams.sameValues(p, pApp)) ; } @Test public void params_choose_new_3() { - StoreParams p = Build.fixStoreParams(Location.mem(), true, null, pLoc, pDft) ; + StoreParams p = Build.decideStoreParams(Location.mem(), true, null, pLoc, pDft) ; // New store, pLoc, no pApp, so pLoc is the entire settings. assertEquals(0, p.getBlockSize().intValue()) ; assertTrue(StoreParams.sameValues(p, pLoc)) ; } @Test public void params_choose_new_4() { - StoreParams p = Build.fixStoreParams(Location.mem(), true, pApp, pLoc, pDft) ; + StoreParams p = Build.decideStoreParams(Location.mem(), true, pApp, pLoc, pDft) ; // New store, pLoc, no pApp, so pLoc is the entire settings. assertFalse(StoreParams.sameValues(p, pApp)) ; @@ -70,13 +70,13 @@ public class TestStoreParamsChoose extends BaseTest { } @Test public void params_choose_existing_1() { - StoreParams p = Build.fixStoreParams(Location.mem(), false, null, null, pDft) ; + StoreParams p = Build.decideStoreParams(Location.mem(), false, null, null, pDft) ; // p is pDft. assertTrue(StoreParams.sameValues(p, pDft)) ; } @Test public void params_choose_existing_2() { - StoreParams p = Build.fixStoreParams(Location.mem(), false, pApp, null, pDft) ; + StoreParams p = Build.decideStoreParams(Location.mem(), false, pApp, null, pDft) ; // p is pLoc modified by pApp assertFalse(StoreParams.sameValues(p, pApp)) ; assertFalse(StoreParams.sameValues(p, pDft)) ; @@ -86,14 +86,14 @@ public class TestStoreParamsChoose extends BaseTest { } @Test public void params_choose_existing_3() { - StoreParams p = Build.fixStoreParams(Location.mem(), false, null, pLoc, pDft) ; + StoreParams p = Build.decideStoreParams(Location.mem(), false, null, pLoc, pDft) ; // p is pLoc assertTrue(StoreParams.sameValues(p, pLoc)) ; } @Test public void params_choose_existing_4() { - StoreParams p = Build.fixStoreParams(Location.mem(), false, pApp, pLoc, pDft) ; + StoreParams p = Build.decideStoreParams(Location.mem(), false, pApp, pLoc, pDft) ; // p is pLoc modifed by pApp. assertFalse(StoreParams.sameValues(p, pApp)) ; assertFalse(StoreParams.sameValues(p, pLoc)) ; @@ -108,7 +108,7 @@ public class TestStoreParamsChoose extends BaseTest { Location loc = Location.create("target/test/DB") ; FileOps.clearAll(loc.getDirectoryPath()); // Clear. - StoreParams p = Build.fixStoreParams(loc, true, pApp, null, pDft) ; + StoreParams p = Build.decideStoreParams(loc, true, pApp, null, pDft) ; // Check location now has a pLoc. String fn = loc.getPath(StoreParamsConst.TDB_CONFIG_FILE) ; assertTrue(FileOps.exists(fn)) ; @@ -124,7 +124,7 @@ public class TestStoreParamsChoose extends BaseTest { StoreParamsCodec.write(loc, pLoc); // Clear. - StoreParams p = Build.fixStoreParams(loc, true, null, pLoc, pDft) ; + StoreParams p = Build.decideStoreParams(loc, true, null, pLoc, pDft) ; // Check location still has a pLoc. String fn = loc.getPath(StoreParamsConst.TDB_CONFIG_FILE) ; assertTrue(FileOps.exists(fn)) ; @@ -140,7 +140,7 @@ public class TestStoreParamsChoose extends BaseTest { StoreParamsCodec.write(loc, pLoc); // Clear. - StoreParams p = Build.fixStoreParams(loc, true, pApp, pLoc, pDft) ; + StoreParams p = Build.decideStoreParams(loc, true, pApp, pLoc, pDft) ; // Check location still has a pLoc. String fn = loc.getPath(StoreParamsConst.TDB_CONFIG_FILE) ; assertTrue(FileOps.exists(fn)) ; http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java index 55c0d3f..337140b 100644 --- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java +++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/setup/TestStoreParamsCreate.java @@ -20,9 +20,6 @@ package com.hp.hpl.jena.tdb.setup; import static com.hp.hpl.jena.tdb.setup.StoreParamsConst.TDB_CONFIG_FILE ; -import java.io.File ; -import java.io.FileOutputStream ; -import java.io.IOException ; import java.nio.file.Files ; import java.nio.file.Path ; import java.nio.file.Paths ; @@ -35,45 +32,136 @@ import org.junit.After ; import org.junit.Before ; import org.junit.Test ; +import com.hp.hpl.jena.tdb.ConfigTest ; import com.hp.hpl.jena.tdb.StoreConnection ; import com.hp.hpl.jena.tdb.base.file.Location ; -import com.hp.hpl.jena.tdb.setup.StoreParams ; -import com.hp.hpl.jena.tdb.setup.StoreParamsCodec ; -//TestParamsCreate -/** This test suite uses on-diskstructures and can be slow */ +/** + * This test suite uses on-disk structures, does a lot of clean/create/sync + * calls and can be noticably slow. + */ public class TestStoreParamsCreate extends BaseTest { - static String DB_DIR = "target/test/DB" ; + private final String DB_DIR = ConfigTest.getCleanDir() ; + private final Path db = Paths.get(DB_DIR) ; + private final Path cfg = Paths.get(DB_DIR, TDB_CONFIG_FILE) ; + private final Location loc = Location.create(DB_DIR) ; + + static final StoreParams pApp = StoreParams.getSmallStoreParams() ; + static final StoreParams pDft = StoreParams.getDftStoreParams() ; + static final StoreParams pSpecial = StoreParams.builder(pApp) + .blockSize(1024) + .blockReadCacheSize(4) + .build(); - @Before public void clearAnyDatabase() { - FileOps.clearAll(new File(DB_DIR)); + @Before public void clearupTest() { + // Flush and clean. + StoreConnection.expel(loc, true) ; + FileOps.clearAll(DB_DIR); } - @After public void clearupTest() {} - + @After public void expelDatabase() { + StoreConnection.expel(loc, true) ; + } @Test public void params_create_01() { - Location loc = Location.create(DB_DIR) ; StoreConnection.make(loc, null) ; - Path db = Paths.get(DB_DIR) ; + // Check. Default setup, no params. + assertTrue("DB directory", Files.exists(db)) ; + assertFalse("Config file unexpectedly found", Files.exists(cfg)) ; + } + + @Test public void params_create_02() { + StoreConnection.make(loc, pApp) ; + // Check. Custom setup. assertTrue("DB directory", Files.exists(db)) ; - Path dbCfg = db.resolve(TDB_CONFIG_FILE) ; - // Fake it. - try { - new FileOutputStream(dbCfg.toFile()).close(); - } - catch (IOException e) { - e.printStackTrace(); - } + assertTrue("Config file not found", Files.exists(cfg)) ; + StoreParams pLoc = StoreParamsCodec.read(loc) ; + assertTrue(StoreParams.sameValues(pLoc, pApp)) ; + } + + // Defaults + @Test public void params_reconnect_01() { + // Create. + StoreConnection.make(loc, null) ; + // Drop. + StoreConnection.expel(loc, true) ; + // Reconnect + StoreConnection.make(loc, null) ; + StoreParams pLoc = StoreParamsCodec.read(loc) ; + assertNull(pLoc) ; + StoreParams pDB = StoreConnection.getExisting(loc).getBaseDataset().getConfig().params ; + assertNotNull(pDB) ; + // Should be the default setup. + assertTrue(StoreParams.sameValues(pDft, pDB)) ; + } + + // Defaults, then reconnect with app modified. + @Test public void params_reconnect_02() { + // Create. + StoreConnection.make(loc, null) ; + // Drop. + StoreConnection.expel(loc, true) ; + // Reconnect + StoreConnection.make(loc, pSpecial) ; + //StoreParams pLoc = StoreParamsCodec.read(loc) ; + //assertNotNull(pLoc) ; - assertTrue("DB config file", Files.exists(dbCfg)) ; + StoreParams pDB = StoreConnection.getExisting(loc).getBaseDataset().getConfig().params ; + assertNotNull(pDB) ; + // Should be the default setup, modified by pApp for cache sizes. + assertFalse(StoreParams.sameValues(pDft, pDB)) ; + assertFalse(StoreParams.sameValues(pSpecial, pDB)) ; + + // Check it's default-modified-by-special. + assertEquals(pSpecial.getBlockReadCacheSize(), pDB.getBlockReadCacheSize()) ; + assertNotEquals(pDft.getBlockReadCacheSize(), pDB.getBlockReadCacheSize()) ; + assertNotEquals(pSpecial.getBlockSize(), pDB.getBlockSize()) ; + assertEquals(pDft.getBlockSize(), pDB.getBlockSize()) ; } - // Create store. - // Test params. + // Custom, then reconnect with some special settings. + @Test public void params_reconnect_03() { + // Create. + StoreConnection.make(loc, pApp) ; + // Drop. + StoreConnection.expel(loc, true) ; + // Reconnect + StoreConnection.make(loc, pSpecial) ; + //StoreParams pLoc = StoreParamsCodec.read(loc) ; + //assertNotNull(pLoc) ; + + StoreParams pDB = StoreConnection.getExisting(loc).getBaseDataset().getConfig().params ; + assertNotNull(pDB) ; + // Should be the default setup, modified by pApp for cache sizes. + assertFalse(StoreParams.sameValues(pApp, pDB)) ; + assertFalse(StoreParams.sameValues(pSpecial, pDB)) ; + + // Check it's default-modified-by-special. + assertEquals(pSpecial.getBlockReadCacheSize(), pDB.getBlockReadCacheSize()) ; + assertNotEquals(pApp.getBlockReadCacheSize(), pDB.getBlockReadCacheSize()) ; + + assertNotEquals(pSpecial.getBlockSize(), pDB.getBlockSize()) ; + assertEquals(pApp.getBlockSize(), pDB.getBlockSize()) ; + } + +// // Custom then modified. +// @Test public void params_reconnect_03() { +// // Create. +// StoreConnection.make(loc, pLoc) ; +// // Drop. +// StoreConnection.expel(loc, true) ; +// // Reconnect +// StoreConnection.make(loc, pApp) ; +// StoreParams pLoc = StoreParamsCodec.read(loc) ; +// assertFalse(StoreParams.sameValues(pApp, pLoc)) ; +// assertFalse(StoreParams.sameValues(pApp, pLoc)) ; +// } + + // Dataset tests + static StoreParams read(Location location) { String fn = location.getPath(TDB_CONFIG_FILE) ; JsonObject obj = JSON.read(fn) ; http://git-wip-us.apache.org/repos/asf/jena/blob/0bf29773/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java ---------------------------------------------------------------------- diff --git a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java index 0b0ed5b..c5d770f 100644 --- a/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java +++ b/jena-tdb/src/test/java/com/hp/hpl/jena/tdb/transaction/TestTransRestart.java @@ -71,7 +71,7 @@ public class TestTransRestart extends BaseTest { cleanup() ; } - private static DatasetGraphTDB createPlain(Location location) { return TDBMaker.createDatasetGraphTDB(location) ; } + private static DatasetGraphTDB createPlain(Location location) { return TDBMaker.createDatasetGraphTDB(location, null) ; } private void setupPlain() { // Make without transactions.