Search in sources :

Example 1 with ExtendedStatistic

use of org.infinispan.extendedstats.container.ExtendedStatistic 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);
}
Also used : ExtendedStatistic(org.infinispan.extendedstats.container.ExtendedStatistic) StatisticsSnapshot(org.infinispan.extendedstats.container.StatisticsSnapshot) ArrayList(java.util.ArrayList) ConcurrentGlobalContainer(org.infinispan.extendedstats.container.ConcurrentGlobalContainer)

Example 2 with ExtendedStatistic

use of org.infinispan.extendedstats.container.ExtendedStatistic 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);
}
Also used : ExtendedStatistic(org.infinispan.extendedstats.container.ExtendedStatistic) StatisticsSnapshot(org.infinispan.extendedstats.container.StatisticsSnapshot) ArrayList(java.util.ArrayList) ConcurrentGlobalContainer(org.infinispan.extendedstats.container.ConcurrentGlobalContainer)

Example 3 with ExtendedStatistic

use of org.infinispan.extendedstats.container.ExtendedStatistic 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);
}
Also used : ExtendedStatistic(org.infinispan.extendedstats.container.ExtendedStatistic) StatisticsSnapshot(org.infinispan.extendedstats.container.StatisticsSnapshot) ArrayList(java.util.ArrayList) ConcurrentGlobalContainer(org.infinispan.extendedstats.container.ConcurrentGlobalContainer)

Example 4 with ExtendedStatistic

use of org.infinispan.extendedstats.container.ExtendedStatistic 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);
}
Also used : ExtendedStatistic(org.infinispan.extendedstats.container.ExtendedStatistic) StatisticsSnapshot(org.infinispan.extendedstats.container.StatisticsSnapshot) ArrayList(java.util.ArrayList) ConcurrentGlobalContainer(org.infinispan.extendedstats.container.ConcurrentGlobalContainer)

Example 5 with ExtendedStatistic

use of org.infinispan.extendedstats.container.ExtendedStatistic 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);
}
Also used : ExtendedStatistic(org.infinispan.extendedstats.container.ExtendedStatistic) StatisticsSnapshot(org.infinispan.extendedstats.container.StatisticsSnapshot) ArrayList(java.util.ArrayList) ConcurrentGlobalContainer(org.infinispan.extendedstats.container.ConcurrentGlobalContainer)

Aggregations

ExtendedStatistic (org.infinispan.extendedstats.container.ExtendedStatistic)12 ArrayList (java.util.ArrayList)6 ConcurrentGlobalContainer (org.infinispan.extendedstats.container.ConcurrentGlobalContainer)6 StatisticsSnapshot (org.infinispan.extendedstats.container.StatisticsSnapshot)6 Transaction (javax.transaction.Transaction)3 Future (java.util.concurrent.Future)1 RollbackException (javax.transaction.RollbackException)1 SystemException (javax.transaction.SystemException)1 ClusteredGetCommand (org.infinispan.commands.remote.ClusteredGetCommand)1 TxCompletionNotificationCommand (org.infinispan.commands.remote.recovery.TxCompletionNotificationCommand)1 CommitCommand (org.infinispan.commands.tx.CommitCommand)1 PrepareCommand (org.infinispan.commands.tx.PrepareCommand)1 RollbackCommand (org.infinispan.commands.tx.RollbackCommand)1 ReservoirSampler (org.infinispan.extendedstats.percentiles.ReservoirSampler)1 GlobalTransaction (org.infinispan.transaction.xa.GlobalTransaction)1 ControlledRpcManager (org.infinispan.util.ControlledRpcManager)1