Skip to content

Commit db7f5cf

Browse files
committed
GH-0000 Verify memory-mapped txn status file via reflection
1 parent 8206d76 commit db7f5cf

1 file changed

Lines changed: 28 additions & 14 deletions

File tree

core/sail/nativerdf/src/test/java/org/eclipse/rdf4j/sail/nativerdf/NativeStoreTxnStatusConfigTest.java

Lines changed: 28 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import static org.assertj.core.api.Assertions.assertThat;
1414

1515
import java.io.File;
16+
import java.lang.reflect.Field;
1617

1718
import org.eclipse.rdf4j.model.IRI;
1819
import org.eclipse.rdf4j.model.ValueFactory;
@@ -42,20 +43,33 @@ void configEnablesMemoryMappedTxnStatusFile() throws Exception {
4243
cfg.setMemoryMappedTxnStatusFileEnabled(true);
4344

4445
NativeStoreFactory factory = new NativeStoreFactory();
45-
NativeStore sail = (NativeStore) factory.getSail(cfg);
46-
sail.setDataDir(dataDir);
47-
48-
Repository repo = new SailRepository(sail);
49-
repo.init();
50-
try (RepositoryConnection conn = repo.getConnection()) {
51-
ValueFactory vf = SimpleValueFactory.getInstance();
52-
IRI p = vf.createIRI("http://example.com/p");
53-
conn.add(vf.createIRI("http://example.com/s"), p, vf.createLiteral("o"));
54-
}
46+
NativeStore sail = (NativeStore) factory.getSail(cfg);
47+
sail.setDataDir(dataDir);
48+
49+
Repository repo = new SailRepository(sail);
50+
repo.init();
51+
assertThat(extractTxnStatusFile(sail)).isInstanceOf(MemoryMappedTxnStatusFile.class);
52+
try (RepositoryConnection conn = repo.getConnection()) {
53+
ValueFactory vf = SimpleValueFactory.getInstance();
54+
IRI p = vf.createIRI("http://example.com/p");
55+
conn.add(vf.createIRI("http://example.com/s"), p, vf.createLiteral("o"));
56+
}
5557
repo.shutDown();
5658

57-
File txnStatusFile = new File(dataDir, TxnStatusFile.FILE_NAME);
58-
assertThat(txnStatusFile).exists();
59-
assertThat(txnStatusFile.length()).isEqualTo(1L);
60-
}
59+
File txnStatusFile = new File(dataDir, TxnStatusFile.FILE_NAME);
60+
assertThat(txnStatusFile).exists();
61+
assertThat(txnStatusFile.length()).isEqualTo(1L);
62+
}
63+
64+
private TxnStatusFile extractTxnStatusFile(NativeStore sail) throws Exception {
65+
NativeSailStore store = (NativeSailStore) sail.getSailStore();
66+
67+
Field tripleStoreField = NativeSailStore.class.getDeclaredField("tripleStore");
68+
tripleStoreField.setAccessible(true);
69+
TripleStore tripleStore = (TripleStore) tripleStoreField.get(store);
70+
71+
Field txnStatusFileField = TripleStore.class.getDeclaredField("txnStatusFile");
72+
txnStatusFileField.setAccessible(true);
73+
return (TxnStatusFile) txnStatusFileField.get(tripleStore);
74+
}
6175
}

0 commit comments

Comments
 (0)