QuickCheck
John Hughes
QuickCheck John Hughes DEMO Registry tests on multiple nodes - - PowerPoint PPT Presentation
QuickCheck John Hughes DEMO Registry tests on multiple nodes 40000 35000 30000 Tests per minute 25000 20000 15000 10000 5000 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Nodes Four core/8HT SkyLake i7
John Hughes
5000 10000 15000 20000 25000 30000 35000 40000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
Tests per minute Nodes
Four core/8HT SkyLake i7 Dual core/4HT Ivy Bridge i7
Master Worker Worker Worker Worker
Generate and run tests Count tests, print dots, start and stop
Master Worker Worker Worker Worker
Master Worker Worker Worker Worker
Bouncer Mirror 1.2 million/second
Bouncer Mirror Bouncer Mirror Bouncer Mirror
500000 1000000 1500000 2000000 2500000 3000000 3500000 4000000 4500000
1 2 3 4 5 6 7 8 9 10
Round trips per second
P--number of bouncers
P bouncers, P mirrors
Mirror
Bouncer Bouncer Bouncer
500000 1000000 1500000 2000000 2500000 3000000 3500000 4000000 4500000
1 2 3 4 5 6 7 8 9 10
Round trips per second
P--number of bouncers
P bouncers, P mirrors P bouncers, 1 mirror
Master Worker Worker Worker Worker BUT this may delay termination!
Master Manager Manager Manager Manager Worker Worker Worker Worker
Another? Yes
communicates with its
scalable!
slightly delayed
> eqc:quickcheck(examples:prop_reverse()). .................................................................................................... OK, passed 100 tests true > eqc:quickcheck(examples:prop_reverse()). ....................................................................................................(x10).(x1)......... OK, passed 119 tests true > eqc:quickcheck(eqc:in_parallel(examples:prop_reverse())). ....................................................................................................(x10)..(x1)...... OK, passed 126 tests true > eqc:quickcheck(eqc:on_nodes(examples:prop_reverse())). ....................................................................................................(x10)................................ ........................(x1)......... OK, passed 669 tests
But how bad is it to run a few extra tests?
Master Manager Manager Manager Manager Worker Worker Worker Worker
Another? Yes
Master Manager Manager Manager Manager Worker Worker Worker Worker
Master Manager Manager Manager Manager Worker Worker Worker Worker
Another? Yes
20000 40000 60000 80000 100000 120000 140000 160000 1 2 3 4 5 6 7 8 9 10
200000 400000 600000 800000 1000000 1200000 1400000 1600000 1 2 3 4 5 6 7 8 9 10
Different nodes Same node
5000 10000 15000 20000 25000 30000 5 10 15 20 25 30 35
200000 400000 600000 800000 1000000 1200000 1400000 Same LAN Same Host Same Node
1 2 3 4 5 6 7 Same LAN Same Host Same Node Log scale
Master Manager Manager Manager Manager Worker Worker Worker Worker
Success
Bouncer Mirror 1.2 million/second 5.4 million/second
1 2 3 4 5 6 7 8 Same LAN Same Host Same Node
Two way One way
Master Manager Manager Manager Manager Worker Worker Worker Worker
Success
There are a LOT of success messages Count them! Send the total every 100ms
quickcheck(true)!
more delayed
between communication costs
between nodes