示例#1
0
        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);
        }
示例#2
0
 public void TestIncrementDecrementLock(LocalRivalOptimization localRivalOptimization)
 {
     DoTestIncrementDecrementLock(10, TimeSpan.FromSeconds(10), localRivalOptimization);
 }
示例#3
0
        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);
        }
示例#4
0
 public void StressTest(LocalRivalOptimization localRivalOptimization)
 {
     DoTestIncrementDecrementLock(30, TimeSpan.FromSeconds(60), localRivalOptimization);
 }
示例#5
0
 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
         },
     });
 }