Upload
llewellyn-falco
View
213
Download
0
Embed Size (px)
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