use of org.infinispan.extendedstats.container.StatisticsSnapshot in project infinispan by infinispan.
the class ConcurrentContainerTest method testIsolationWithResetMerge.
public void testIsolationWithResetMerge() {
final ConcurrentGlobalContainer globalContainer = new ConcurrentGlobalContainer(TIME_SERVICE);
final List<StatisticsSnapshot> snapshots = new ArrayList<>(4);
snapshots.add(globalContainer.getSnapshot());
// two random stats, one local and one remote
final ExtendedStatistic localStat = ExtendedStatistic.PREPARE_COMMAND_SIZE;
final ExtendedStatistic remoteStat = ExtendedStatistic.NUM_COMMITTED_WR_TX;
Assert.assertTrue(localStat.isLocal());
Assert.assertTrue(remoteStat.isRemote());
globalContainer.add(localStat, 10, true);
globalContainer.add(remoteStat, 20, false);
snapshots.add(globalContainer.getSnapshot());
assertSnapshotValues(snapshots, Arrays.asList(0D, 10D), localStat, true);
assertSnapshotValues(snapshots, Arrays.asList(0D, 20D), remoteStat, false);
globalContainer.reset();
snapshots.add(globalContainer.getSnapshot());
assertSnapshotValues(snapshots, Arrays.asList(0D, 10D, 0D), localStat, true);
assertSnapshotValues(snapshots, Arrays.asList(0D, 20D, 0D), remoteStat, false);
globalContainer.add(localStat, 10, true);
globalContainer.add(remoteStat, 20, false);
snapshots.add(globalContainer.getSnapshot());
assertSnapshotValues(snapshots, Arrays.asList(0D, 10D, 0D, 10D), localStat, true);
assertSnapshotValues(snapshots, Arrays.asList(0D, 20D, 0D, 20D), remoteStat, false);
assertFinalState(globalContainer);
}
use of org.infinispan.extendedstats.container.StatisticsSnapshot in project infinispan by infinispan.
the class ConcurrentContainerTest method testIsolationWithTransactionMerge.
public void testIsolationWithTransactionMerge() {
final ConcurrentGlobalContainer globalContainer = new ConcurrentGlobalContainer(TIME_SERVICE);
final List<StatisticsSnapshot> snapshots = new ArrayList<>(4);
snapshots.add(globalContainer.getSnapshot());
int localIndex;
int remoteIndex;
LocalTransactionStatistics localTransactionStatistics = new LocalTransactionStatistics(false, TIME_SERVICE);
localIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
localTransactionStatistics.addValue(stats, localIndex++);
}
}
localTransactionStatistics.flushTo(globalContainer);
snapshots.add(globalContainer.getSnapshot());
localIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, (double) localIndex), stats, true);
localIndex++;
}
if (stats.isRemote()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D), stats, false);
}
}
RemoteTransactionStatistics remoteTransactionStatistics = new RemoteTransactionStatistics(TIME_SERVICE);
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isRemote()) {
remoteTransactionStatistics.addValue(stats, remoteIndex++);
}
}
remoteTransactionStatistics.flushTo(globalContainer);
snapshots.add(globalContainer.getSnapshot());
localIndex = 0;
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, (double) localIndex, (double) localIndex), stats, true);
localIndex++;
}
if (stats.isRemote()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D, (double) remoteIndex), stats, false);
remoteIndex++;
}
}
assertFinalState(globalContainer);
}
use of org.infinispan.extendedstats.container.StatisticsSnapshot in project infinispan by infinispan.
the class ConcurrentContainerTest method testIsolationWithEnqueueAndResetTransaction.
public void testIsolationWithEnqueueAndResetTransaction() {
final ConcurrentGlobalContainer globalContainer = new ConcurrentGlobalContainer(TIME_SERVICE);
final List<StatisticsSnapshot> snapshots = new ArrayList<>(4);
snapshots.add(globalContainer.getSnapshot());
int localIndex;
int remoteIndex;
LocalTransactionStatistics localTransactionStatistics = new LocalTransactionStatistics(false, TIME_SERVICE);
RemoteTransactionStatistics remoteTransactionStatistics = new RemoteTransactionStatistics(TIME_SERVICE);
localIndex = 0;
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
localTransactionStatistics.addValue(stats, localIndex++);
}
if (stats.isRemote()) {
remoteTransactionStatistics.addValue(stats, remoteIndex++);
}
}
// all the stuff is enqueued
globalContainer.flushing().set(true);
localTransactionStatistics.flushTo(globalContainer);
remoteTransactionStatistics.flushTo(globalContainer);
localTransactionStatistics.flushTo(globalContainer);
remoteTransactionStatistics.flushTo(globalContainer);
localTransactionStatistics.flushTo(globalContainer);
remoteTransactionStatistics.flushTo(globalContainer);
Assert.assertEquals(globalContainer.queue().size(), 6);
snapshots.add(globalContainer.getSnapshot());
localIndex = 0;
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D), stats, true);
localIndex++;
}
if (stats.isRemote()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D), stats, false);
remoteIndex++;
}
}
globalContainer.flushing().set(false);
// this should flush pending statistics
snapshots.add(globalContainer.getSnapshot());
localIndex = 0;
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D, 3D * localIndex), stats, true);
localIndex++;
}
if (stats.isRemote()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D, 3D * remoteIndex), stats, false);
remoteIndex++;
}
}
globalContainer.reset();
snapshots.clear();
snapshots.add(globalContainer.getSnapshot());
localIndex = 0;
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
assertSnapshotValues(snapshots, Collections.singletonList(0D), stats, true);
localIndex++;
}
if (stats.isRemote()) {
assertSnapshotValues(snapshots, Collections.singletonList(0D), stats, false);
remoteIndex++;
}
}
globalContainer.flushing().set(true);
localTransactionStatistics.flushTo(globalContainer);
remoteTransactionStatistics.flushTo(globalContainer);
localTransactionStatistics.flushTo(globalContainer);
remoteTransactionStatistics.flushTo(globalContainer);
localTransactionStatistics.flushTo(globalContainer);
globalContainer.reset();
remoteTransactionStatistics.flushTo(globalContainer);
snapshots.add(globalContainer.getSnapshot());
Assert.assertTrue(globalContainer.isReset());
Assert.assertEquals(globalContainer.queue().size(), 6);
localIndex = 0;
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D), stats, true);
localIndex++;
}
if (stats.isRemote()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D), stats, false);
remoteIndex++;
}
}
globalContainer.flushing().set(false);
snapshots.add(globalContainer.getSnapshot());
Assert.assertFalse(globalContainer.isReset());
localIndex = 0;
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D, 0D), stats, true);
localIndex++;
}
if (stats.isRemote()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D, 0D), stats, false);
remoteIndex++;
}
}
assertFinalState(globalContainer);
}
use of org.infinispan.extendedstats.container.StatisticsSnapshot in project infinispan by infinispan.
the class ConcurrentContainerTest method testIsolationWithSingleActionMerge.
public void testIsolationWithSingleActionMerge() {
final ConcurrentGlobalContainer globalContainer = new ConcurrentGlobalContainer(TIME_SERVICE);
final List<StatisticsSnapshot> snapshots = new ArrayList<>(4);
snapshots.add(globalContainer.getSnapshot());
// two random stats, one local and one remote
final ExtendedStatistic localStat = ExtendedStatistic.PREPARE_COMMAND_SIZE;
final ExtendedStatistic remoteStat = ExtendedStatistic.NUM_COMMITTED_WR_TX;
Assert.assertTrue(localStat.isLocal());
Assert.assertTrue(remoteStat.isRemote());
globalContainer.add(localStat, 10, true);
snapshots.add(globalContainer.getSnapshot());
assertSnapshotValues(snapshots, Arrays.asList(0D, 10D), localStat, true);
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D), remoteStat, false);
globalContainer.add(remoteStat, 20, false);
snapshots.add(globalContainer.getSnapshot());
assertSnapshotValues(snapshots, Arrays.asList(0D, 10D, 10D), localStat, true);
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D, 20D), remoteStat, false);
try {
globalContainer.add(localStat, 30, false);
fail("Expected exception");
} catch (Exception e) {
// expected
}
assertSnapshotValues(snapshots, Arrays.asList(0D, 10D, 10D), localStat, true);
assertSnapshotValues(snapshots, Arrays.asList(0D, 0D, 20D), remoteStat, false);
assertFinalState(globalContainer);
}
use of org.infinispan.extendedstats.container.StatisticsSnapshot in project infinispan by infinispan.
the class ConcurrentContainerTest method testIsolationWithReset.
public void testIsolationWithReset() {
final ConcurrentGlobalContainer globalContainer = new ConcurrentGlobalContainer(TIME_SERVICE);
final List<StatisticsSnapshot> snapshots = new ArrayList<>(4);
snapshots.add(globalContainer.getSnapshot());
int localIndex;
int remoteIndex;
LocalTransactionStatistics localTransactionStatistics = new LocalTransactionStatistics(false, TIME_SERVICE);
RemoteTransactionStatistics remoteTransactionStatistics = new RemoteTransactionStatistics(TIME_SERVICE);
localIndex = 0;
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
localTransactionStatistics.addValue(stats, localIndex++);
}
if (stats.isRemote()) {
remoteTransactionStatistics.addValue(stats, remoteIndex++);
}
}
localTransactionStatistics.flushTo(globalContainer);
remoteTransactionStatistics.flushTo(globalContainer);
snapshots.add(globalContainer.getSnapshot());
localIndex = 0;
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, (double) localIndex), stats, true);
localIndex++;
}
if (stats.isRemote()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, (double) remoteIndex), stats, false);
remoteIndex++;
}
}
globalContainer.reset();
snapshots.add(globalContainer.getSnapshot());
localIndex = 0;
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, (double) localIndex, 0D), stats, true);
localIndex++;
}
if (stats.isRemote()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, (double) remoteIndex, 0D), stats, false);
remoteIndex++;
}
}
localTransactionStatistics.flushTo(globalContainer);
remoteTransactionStatistics.flushTo(globalContainer);
snapshots.add(globalContainer.getSnapshot());
localIndex = 0;
remoteIndex = 0;
for (ExtendedStatistic stats : ExtendedStatistic.values()) {
if (stats.isLocal()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, (double) localIndex, 0D, (double) localIndex), stats, true);
localIndex++;
}
if (stats.isRemote()) {
assertSnapshotValues(snapshots, Arrays.asList(0D, (double) remoteIndex, 0D, (double) remoteIndex), stats, false);
remoteIndex++;
}
}
assertFinalState(globalContainer);
}
Aggregations