private void DoTestIncrementDecrementLock(int threadCount, TimeSpan runningTimeInterval, LocalRivalOptimization localRivalOptimization) { var remoteLockCreators = PrepareRemoteLockCreators(threadCount, localRivalOptimization, remoteLockImplementation); for (var i = 0; i < threadCount; i++) { AddThread(IncrementDecrementAction, remoteLockCreators[i]); } RunThreads(runningTimeInterval); JoinThreads(); DisposeRemoteLockCreators(remoteLockCreators); }
public void TestIncrementDecrementLock(LocalRivalOptimization localRivalOptimization) { DoTestIncrementDecrementLock(10, TimeSpan.FromSeconds(10), localRivalOptimization); }
private static IRemoteLockCreator[] PrepareRemoteLockCreators(int threadCount, LocalRivalOptimization localRivalOptimization, CassandraRemoteLockImplementation remoteLockImplementation) { var remoteLockCreators = new IRemoteLockCreator[threadCount]; var remoteLockerMetrics = new RemoteLockerMetrics(null); if (localRivalOptimization == LocalRivalOptimization.Enabled) { var singleRemoteLocker = new RemoteLocker(remoteLockImplementation, remoteLockerMetrics, logger); for (var i = 0; i < threadCount; i++) { remoteLockCreators[i] = singleRemoteLocker; } } else { for (var i = 0; i < threadCount; i++) { remoteLockCreators[i] = new RemoteLocker(remoteLockImplementation, remoteLockerMetrics, logger); } } return(remoteLockCreators); }
public void StressTest(LocalRivalOptimization localRivalOptimization) { DoTestIncrementDecrementLock(30, TimeSpan.FromSeconds(60), localRivalOptimization); }
public void Normal(int locks, int threads, int operationsPerThread, double longRunningOpProbability, LocalRivalOptimization localRivalOptimization, int?syncIntervalInSeconds) { DoTest(new TestConfig { Locks = locks, LongRunningOpProbability = longRunningOpProbability, OperationsPerThread = operationsPerThread, FastRunningOpProbability = 0.2d, SyncInterval = syncIntervalInSeconds.HasValue ? TimeSpan.FromSeconds(syncIntervalInSeconds.Value) : (TimeSpan?)null, TesterConfig = new RemoteLockerTesterConfig { LockersCount = threads, LocalRivalOptimization = localRivalOptimization, LockTtl = TimeSpan.FromSeconds(3), LockMetadataTtl = TimeSpan.FromSeconds(10), KeepLockAliveInterval = TimeSpan.FromSeconds(1), ChangeLockRowThreshold = 10, TimestampProviderStochasticType = TimestampProviderStochasticType.None, CassandraClusterSettings = SingleCassandraNodeSetUpFixture.CreateCassandraClusterSettings(attempts: 1, timeout: TimeSpan.FromSeconds(1)), CassandraFailProbability = null }, }); }