mirror of
https://github.com/OpenHFT/Chronicle-Map.git
synced 2021-09-13 01:26:12 +00:00
reverted cff7c5bea8
This commit is contained in:
@@ -529,6 +529,79 @@ public class ChronicleMapTest {
|
||||
map.close();
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testLeanEntrySizeInt() throws IOException {
|
||||
File file = File.createTempFile("testLeanEntrySize-Int", ".deleteme");
|
||||
file.deleteOnExit();
|
||||
int entries = 1000000;
|
||||
int entrySize = 8;
|
||||
ChronicleMap<IntValue, IntValue> map = OffHeapUpdatableChronicleMapBuilder
|
||||
.of(IntValue.class, IntValue.class)
|
||||
.entrySize(entrySize)
|
||||
.entries(entries)
|
||||
.create();
|
||||
IntValue key = DataValueClasses.newInstance(IntValue.class);
|
||||
IntValue value = DataValueClasses.newDirectReference(IntValue.class);
|
||||
for (int i = 0; i < entries; i++) {
|
||||
key.setValue(i);
|
||||
try (WriteContext wc = map.acquireUsingLocked(key, value)) {
|
||||
value.setValue(i);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < entries; i++) {
|
||||
key.setValue(i);
|
||||
try (ReadContext rc = map.getUsingLocked(key, value)) {
|
||||
assertTrue(rc.present());
|
||||
assertEquals(i, value.getValue());
|
||||
}
|
||||
}
|
||||
map.close();
|
||||
|
||||
// check the extents of the map.
|
||||
int hashSize = 8; // assume short-short hashing
|
||||
int sizePerEntry = hashSize * 2 + entrySize * 5 / 4 /* + 25% */;
|
||||
long fileSizeExpected = entries * sizePerEntry;
|
||||
long length = file.length();
|
||||
assertTrue(length > fileSizeExpected);
|
||||
assertTrue(length < fileSizeExpected * 12 / 10);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testLeanEntrySizeLong() throws IOException {
|
||||
File file = File.createTempFile("testLeanEntrySize-Long", ".deleteme");
|
||||
file.deleteOnExit();
|
||||
int entries = 1000000;
|
||||
int entrySize = 16;
|
||||
ChronicleMap<LongValue, LongValue> map = OffHeapUpdatableChronicleMapBuilder
|
||||
.of(LongValue.class, LongValue.class)
|
||||
.entrySize(entrySize)
|
||||
.entries(entries)
|
||||
.create();
|
||||
LongValue key = DataValueClasses.newInstance(LongValue.class);
|
||||
LongValue value = DataValueClasses.newDirectReference(LongValue.class);
|
||||
for (long i = 0; i < entries; i++) {
|
||||
key.setValue(i);
|
||||
map.acquireUsing(key, value);
|
||||
value.setValue(i);
|
||||
}
|
||||
for (long i = 0; i < entries; i++) {
|
||||
key.setValue(i);
|
||||
assertNotNull(map.getUsing(key, value));
|
||||
assertEquals(i, value.getValue());
|
||||
}
|
||||
map.close();
|
||||
|
||||
// check the extents of the map.
|
||||
int hashSize = 8; // assume short-short hashing
|
||||
int sizePerEntry = hashSize * 2 + entrySize * 5 / 4 /* + 25% */;
|
||||
long fileSizeExpected = entries * sizePerEntry;
|
||||
long length = file.length();
|
||||
assertTrue(length > fileSizeExpected);
|
||||
assertTrue(length < fileSizeExpected * 12 / 10);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testAcquireFromMultipleThreads() throws Exception {
|
||||
int entries = 1000 * 1000;
|
||||
@@ -578,19 +651,19 @@ public class ChronicleMapTest {
|
||||
int procs = Runtime.getRuntime().availableProcessors();
|
||||
int threads = procs * 2; // runs > 100 ? procs / 2 : procs;
|
||||
ExecutorService es = Executors.newFixedThreadPool(procs);
|
||||
for (int runs : new int[]{10, 50, 250, 500, 1000, 2500}) {
|
||||
for (int runs : new int[]{10, 25, 50, 250, 500, 1000, 2500}) {
|
||||
// JAVA 8 produces more garbage than previous versions for internal work.
|
||||
// System.gc();
|
||||
final long entries = runs * 1000 * 1000L;
|
||||
OffHeapUpdatableChronicleMapBuilder<CharSequence, LongValue> builder = OffHeapUpdatableChronicleMapBuilder
|
||||
.of(CharSequence.class, LongValue.class)
|
||||
OffHeapUpdatableChronicleMapBuilder<LongValue, LongValue> builder = OffHeapUpdatableChronicleMapBuilder
|
||||
.of(LongValue.class, LongValue.class)
|
||||
.entries(entries)
|
||||
.entryAndValueAlignment(OF_8_BYTES)
|
||||
.entrySize(24);
|
||||
.entrySize(16);
|
||||
|
||||
File tmpFile = File.createTempFile("testAcquirePerf", ".deleteme");
|
||||
tmpFile.deleteOnExit();
|
||||
final ChronicleMap<CharSequence, LongValue> map = builder.createWithFile(tmpFile);
|
||||
final ChronicleMap<LongValue, LongValue> map = builder.createPersistedTo(tmpFile);
|
||||
|
||||
int count = runs > 500 ? runs > 1200 ? 3 : 5 : 5;
|
||||
final int independence = Math.min(procs, runs > 500 ? 8 : 4);
|
||||
@@ -603,16 +676,14 @@ public class ChronicleMapTest {
|
||||
futures.add(es.submit(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
LongValue key = DataValueClasses.newDirectInstance(LongValue.class);
|
||||
LongValue value = nativeLongValue();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
long next = 50 * 1000 * 1000;
|
||||
// use a factor to give up to 10 digit numbers.
|
||||
int factor = Math.max(1, (int) ((10 * 1000 * 1000 * 1000L - 1) / entries));
|
||||
for (long j = t % independence; j < entries + independence - 1; j += independence) {
|
||||
sb.setLength(0);
|
||||
sb.append("us:");
|
||||
sb.append(j * factor);
|
||||
map.acquireUsing(sb, value);
|
||||
key.setValue(j * factor);
|
||||
map.acquireUsing(key, value);
|
||||
long n = value.addAtomicValue(1);
|
||||
assert n > 0 && n < 1000 : "Counter corrupted " + n;
|
||||
if (t == 0 && j >= next) {
|
||||
@@ -639,6 +710,7 @@ public class ChronicleMapTest {
|
||||
es.shutdown();
|
||||
es.awaitTermination(1, TimeUnit.MINUTES);
|
||||
}
|
||||
|
||||
@Test
|
||||
@Ignore
|
||||
public void testAcquireLockedPerf()
|
||||
@@ -660,7 +732,7 @@ public class ChronicleMapTest {
|
||||
|
||||
File tmpFile = File.createTempFile("testAcquirePerf", ".deleteme");
|
||||
tmpFile.deleteOnExit();
|
||||
final ChronicleMap<CharSequence, LongValue> map = builder.createWithFile(tmpFile);
|
||||
final ChronicleMap<CharSequence, LongValue> map = builder.createPersistedTo(tmpFile);
|
||||
|
||||
int count = runs > 500 ? runs > 1200 ? 3 : 5 : 5;
|
||||
final int independence = Math.min(procs, runs > 500 ? 8 : 4);
|
||||
@@ -683,7 +755,7 @@ public class ChronicleMapTest {
|
||||
sb.append("us:");
|
||||
sb.append(j * factor);
|
||||
long n;
|
||||
try(WriteContext wc = map.acquireUsingLocked(sb, value)) {
|
||||
try (WriteContext wc = map.acquireUsingLocked(sb, value)) {
|
||||
n = value.addValue(1);
|
||||
}
|
||||
assert n > 0 && n < 1000 : "Counter corrupted " + n;
|
||||
@@ -1229,10 +1301,9 @@ public class ChronicleMapTest {
|
||||
.entries(10)
|
||||
.minSegments(1)
|
||||
.entrySize(10);
|
||||
builder.file(getPersistenceFile());
|
||||
testOversizeEntriesPutRemoveReplace(
|
||||
(VanillaChronicleMap<CharSequence, ?, ?, CharSequence, ?, ?>)
|
||||
builder.create()
|
||||
builder.createPersistedTo(getPersistenceFile())
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1334,7 +1405,7 @@ public class ChronicleMapTest {
|
||||
.entrySize(16);
|
||||
File tmpFile = File.createTempFile("testAcquireUsingLocked", ".deleteme");
|
||||
tmpFile.deleteOnExit();
|
||||
final ChronicleMap<CharSequence, LongValue> map = builder.createWithFile(tmpFile);
|
||||
final ChronicleMap<CharSequence, LongValue> map = builder.createPersistedTo(tmpFile);
|
||||
|
||||
LongValue value = nativeLongValue();
|
||||
|
||||
@@ -1391,7 +1462,7 @@ public class ChronicleMapTest {
|
||||
.entrySize(40);
|
||||
File tmpFile = File.createTempFile("testAcquireUsingLocked", ".deleteme");
|
||||
tmpFile.deleteOnExit();
|
||||
final ChronicleMap<CharSequence, LongValue> map = builder.createWithFile(tmpFile);
|
||||
final ChronicleMap<CharSequence, LongValue> map = builder.createPersistedTo(tmpFile);
|
||||
|
||||
LongValue value = DataValueClasses.newInstance(LongValue.class);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user