Thread base theory test

Preview:

DESCRIPTION

Automated Exploratory Multithreaded Race Condition Testing with theory testing api from approvaltests

Citation preview

Exploratory Tests

? ✓=

many threads = 1 thread

at a time

[TestMethod]public void ExplorePossibleRaceCondition(){

var random = new Random();

Func<int[]> inputGenerator = () => new int[] { random.Next(1000),

random.Next(1000), random.Next(1000) };

Func<int[], string> toString = n => string.Format("{0} + {1} + {2} = ", n[0],

n[1], n[2]);

var stateCalulator = new StateCalulator();Func<int[], object> raceConditionsFunction =

s=> stateCalulator.Sum(s[0],s[1],s[2]);Func<int[], object> knownGoodFunction =

f => new StateCalulator().Sum(f[0],f[1],f[2]);

ThreadSafetyTheory.VerifyNoRaceConditions(10000, inputGenerator, toString, raceConditionsFunction, knownGoodFunction);

}

[TestMethod]public void ExplorePossibleRaceCondition(){

var random = new Random();

Func<int[]> inputGenerator = () => new int[] { random.Next(1000),

random.Next(1000), random.Next(1000) };

Func<int[], string> toString = n => string.Format("{0} + {1} + {2} = ", n[0],

n[1], n[2]);

var stateCalulator = new StateCalulator();Func<int[], object> raceConditionsFunction =

s=> stateCalulator.Sum(s[0],s[1],s[2]);Func<int[], object> knownGoodFunction =

f => new StateCalulator().Sum(f[0],f[1],f[2]);

ThreadSafetyTheory.VerifyNoRaceConditions(10000, inputGenerator, toString, raceConditionsFunction, knownGoodFunction);

}

[TestMethod]public void ExplorePossibleRaceCondition(){

var random = new Random();

Func<int[]> inputGenerator = () => new int[] { random.Next(1000),

random.Next(1000), random.Next(1000) };

Func<int[], string> toString = n => string.Format("{0} + {1} + {2} = ", n[0],

n[1], n[2]);

var stateCalulator = new StateCalulator();Func<int[], object> raceConditionsFunction =

s=> stateCalulator.Sum(s[0],s[1],s[2]);Func<int[], object> knownGoodFunction =

f => new StateCalulator().Sum(f[0],f[1],f[2]);

ThreadSafetyTheory.VerifyNoRaceConditions(10000, inputGenerator, toString, raceConditionsFunction, knownGoodFunction);

}

[TestMethod]public void ExplorePossibleRaceCondition(){

var random = new Random();

Func<int[]> inputGenerator = () => new int[] { random.Next(1000),

random.Next(1000), random.Next(1000) };

Func<int[], string> toString = n => string.Format("{0} + {1} + {2} = ", n[0],

n[1], n[2]);

var stateCalulator = new StateCalulator();Func<int[], object> raceConditionsFunction =

s=> stateCalulator.Sum(s[0],s[1],s[2]);Func<int[], object> knownGoodFunction =

f => new StateCalulator().Sum(f[0],f[1],f[2]);

ThreadSafetyTheory.VerifyNoRaceConditions(10000, inputGenerator, toString, raceConditionsFunction, knownGoodFunction);

}

[TestMethod]public void ExplorePossibleRaceCondition(){

var random = new Random();

Func<int[]> inputGenerator = () => new int[] { random.Next(1000),

random.Next(1000), random.Next(1000) };

Func<int[], string> toString = n => string.Format("{0} + {1} + {2} = ", n[0],

n[1], n[2]);

var stateCalulator = new StateCalulator();Func<int[], object> raceConditionsFunction =

s=> stateCalulator.Sum(s[0],s[1],s[2]);Func<int[], object> knownGoodFunction =

f => new StateCalulator().Sum(f[0],f[1],f[2]);

ThreadSafetyTheory.VerifyNoRaceConditions(10000, inputGenerator, toString, raceConditionsFunction, knownGoodFunction);

}

[TestMethod]public void ExplorePossibleRaceCondition(){

var random = new Random();

Func<int[]> inputGenerator = () => new int[] { random.Next(1000),

random.Next(1000), random.Next(1000) };

Func<int[], string> toString = n => string.Format("{0} + {1} + {2} = ", n[0],

n[1], n[2]);

var stateCalulator = new StateCalulator();Func<int[], object> raceConditionsFunction =

s=> stateCalulator.Sum(s[0],s[1],s[2]);Func<int[], object> knownGoodFunction =

f => new StateCalulator().Sum(f[0],f[1],f[2]);

ThreadSafetyTheory.VerifyNoRaceConditions(10000, inputGenerator, toString, raceConditionsFunction, knownGoodFunction);

}

[TestMethod]public void ExplorePossibleRaceCondition(){

var random = new Random();

Func<int[]> inputGenerator = () => new int[] { random.Next(1000),

random.Next(1000), random.Next(1000) };

Func<int[], string> toString = n => string.Format("{0} + {1} + {2} = ", n[0],

n[1], n[2]);

var stateCalulator = new StateCalulator();Func<int[], object> raceConditionsFunction =

s=> stateCalulator.Sum(s[0],s[1],s[2]);Func<int[], object> knownGoodFunction =

f => new StateCalulator().Sum(f[0],f[1],f[2]);

ThreadSafetyTheory.VerifyNoRaceConditions(10000, inputGenerator, toString, raceConditionsFunction, knownGoodFunction);

}

[TestMethod]public void ExplorePossibleRaceCondition(){

var random = new Random();

Func<int[]> inputGenerator = () => new int[] { random.Next(1000),

random.Next(1000), random.Next(1000) };

Func<int[], string> toString = n => string.Format("{0} + {1} + {2} = ", n[0],

n[1], n[2]);

var stateCalulator = new StateCalulator();Func<int[], object> raceConditionsFunction =

s=> stateCalulator.Sum(s[0],s[1],s[2]);Func<int[], object> knownGoodFunction =

f => new StateCalulator().Sum(f[0],f[1],f[2]);

ThreadSafetyTheory.VerifyNoRaceConditions(10000, inputGenerator, toString, raceConditionsFunction, knownGoodFunction);

}

[TestMethod]public void ExplorePossibleRaceCondition(){

var random = new Random();

Func<int[]> inputGenerator = () => new int[] { random.Next(1000),

random.Next(1000), random.Next(1000) };

Func<int[], string> toString = n => string.Format("{0} + {1} + {2} = ", n[0],

n[1], n[2]);

var stateCalulator = new StateCalulator();Func<int[], object> raceConditionsFunction =

s=> stateCalulator.Sum(s[0],s[1],s[2]);Func<int[], object> knownGoodFunction =

f => new StateCalulator().Sum(f[0],f[1],f[2]);

ThreadSafetyTheory.VerifyNoRaceConditions(10000, inputGenerator, toString, raceConditionsFunction, knownGoodFunction);

}

= ErlangHashmap

= ErlangSimulati on

ApprovalTests

Recommended