public TestThreads(IRelaTest test, IScheduler scheduler) { var numThreads = test.ThreadEntries.Count; _threads = new Thread[numThreads]; _threadStates = new ThreadState[numThreads]; _threadLocks = new Object[numThreads]; _scheduler = scheduler; CreateThreads(test.ThreadEntries); }
public void RunTest(IRelaTest test, IScheduler scheduler, ulong liveLockLimit) { NumThreads = test.ThreadEntries.Count; _scheduler = scheduler; LiveLockLimit = liveLockLimit; TestFailed = false; _shadowThreads = new ShadowThread[NumThreads]; _eventLog = new EventLog(NumThreads); _testStarted = false; SequentiallyConsistentFence = new VectorClock(NumThreads); ExecutionLength = 0; for (int i = 0; i < NumThreads; ++i) { _shadowThreads[i] = new ShadowThread(i, NumThreads); } _testThreads = new TestThreads(test, _scheduler); test.OnBegin(); _testStarted = true; _testThreads.WakeThread(); _testThreads.Join(); test.OnFinished(); }
public void RunTest(IRelaTest test, IScheduler scheduler, ulong liveLockLimit) // Maybe re-name to RunTestOnce => TE.RunTest(test, scheduler, liveLockLimit);