MCPcopy Create free account
hub / github.com/bitcoin/bitcoin / BOOST_AUTO_TEST_CASE

Function BOOST_AUTO_TEST_CASE

src/test/versionbits_tests.cpp:189–257  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

187BOOST_FIXTURE_TEST_SUITE(versionbits_tests, BasicTestingSetup)
188
189BOOST_AUTO_TEST_CASE(versionbits_test)
190{
191 for (int i = 0; i < 64; i++) {
192 // DEFINED -> STARTED after timeout reached -> FAILED
193 VersionBitsTester(m_rng, VERSIONBITS_TOP_BITS).TestDefined().TestStateSinceHeight(0)
194 .Mine(1, TestTime(1), 0x100).TestDefined().TestStateSinceHeight(0)
195 .Mine(11, TestTime(11), 0x100).TestDefined().TestStateSinceHeight(0)
196 .Mine(989, TestTime(989), 0x100).TestDefined().TestStateSinceHeight(0)
197 .Mine(999, TestTime(20000), 0x100).TestDefined().TestStateSinceHeight(0) // Timeout and start time reached simultaneously
198 .Mine(1000, TestTime(20000), 0).TestStarted().TestStateSinceHeight(1000) // Hit started, stop signalling
199 .Mine(1999, TestTime(30001), 0).TestStarted().TestStateSinceHeight(1000)
200 .Mine(2000, TestTime(30002), 0x100).TestFailed().TestStateSinceHeight(2000) // Hit failed, start signalling again
201 .Mine(2001, TestTime(30003), 0x100).TestFailed().TestStateSinceHeight(2000)
202 .Mine(2999, TestTime(30004), 0x100).TestFailed().TestStateSinceHeight(2000)
203 .Mine(3000, TestTime(30005), 0x100).TestFailed().TestStateSinceHeight(2000)
204 .Mine(4000, TestTime(30006), 0x100).TestFailed().TestStateSinceHeight(2000)
205
206 // DEFINED -> STARTED -> FAILED
207 .Reset().TestDefined().TestStateSinceHeight(0)
208 .Mine(1, TestTime(1), 0).TestDefined().TestStateSinceHeight(0)
209 .Mine(1000, TestTime(10000) - 1, 0x100).TestDefined().TestStateSinceHeight(0) // One second more and it would be defined
210 .Mine(2000, TestTime(10000), 0x100).TestStarted().TestStateSinceHeight(2000) // So that's what happens the next period
211 .Mine(2051, TestTime(10010), 0).TestStarted().TestStateSinceHeight(2000) // 51 old blocks
212 .Mine(2950, TestTime(10020), 0x100).TestStarted().TestStateSinceHeight(2000) // 899 new blocks
213 .Mine(3000, TestTime(20000), 0).TestFailed().TestStateSinceHeight(3000) // 50 old blocks (so 899 out of the past 1000)
214 .Mine(4000, TestTime(20010), 0x100).TestFailed().TestStateSinceHeight(3000)
215
216 // DEFINED -> STARTED -> LOCKEDIN after timeout reached -> ACTIVE
217 .Reset().TestDefined().TestStateSinceHeight(0)
218 .Mine(1, TestTime(1), 0).TestDefined().TestStateSinceHeight(0)
219 .Mine(1000, TestTime(10000) - 1, 0x101).TestDefined().TestStateSinceHeight(0) // One second more and it would be defined
220 .Mine(2000, TestTime(10000), 0x101).TestStarted().TestStateSinceHeight(2000) // So that's what happens the next period
221 .Mine(2999, TestTime(30000), 0x100).TestStarted().TestStateSinceHeight(2000) // 999 new blocks
222 .Mine(3000, TestTime(30000), 0x100).TestLockedIn().TestStateSinceHeight(3000) // 1 new block (so 1000 out of the past 1000 are new)
223 .Mine(3999, TestTime(30001), 0).TestLockedIn().TestStateSinceHeight(3000)
224 .Mine(4000, TestTime(30002), 0).TestActiveDelayed().TestStateSinceHeight(4000, 3000)
225 .Mine(14333, TestTime(30003), 0).TestActiveDelayed().TestStateSinceHeight(4000, 3000)
226 .Mine(24000, TestTime(40000), 0).TestActive().TestStateSinceHeight(4000, 15000)
227
228 // DEFINED -> STARTED -> LOCKEDIN before timeout -> ACTIVE
229 .Reset().TestDefined()
230 .Mine(1, TestTime(1), 0).TestDefined().TestStateSinceHeight(0)
231 .Mine(1000, TestTime(10000) - 1, 0x101).TestDefined().TestStateSinceHeight(0) // One second more and it would be defined
232 .Mine(2000, TestTime(10000), 0x101).TestStarted().TestStateSinceHeight(2000) // So that's what happens the next period
233 .Mine(2050, TestTime(10010), 0x200).TestStarted().TestStateSinceHeight(2000) // 50 old blocks
234 .Mine(2950, TestTime(10020), 0x100).TestStarted().TestStateSinceHeight(2000) // 900 new blocks
235 .Mine(2999, TestTime(19999), 0x200).TestStarted().TestStateSinceHeight(2000) // 49 old blocks
236 .Mine(3000, TestTime(29999), 0x200).TestLockedIn().TestStateSinceHeight(3000) // 1 old block (so 900 out of the past 1000)
237 .Mine(3999, TestTime(30001), 0).TestLockedIn().TestStateSinceHeight(3000)
238 .Mine(4000, TestTime(30002), 0).TestActiveDelayed().TestStateSinceHeight(4000, 3000) // delayed will not become active until height=15000
239 .Mine(14333, TestTime(30003), 0).TestActiveDelayed().TestStateSinceHeight(4000, 3000)
240 .Mine(15000, TestTime(40000), 0).TestActive().TestStateSinceHeight(4000, 15000)
241 .Mine(24000, TestTime(40000), 0).TestActive().TestStateSinceHeight(4000, 15000)
242
243 // DEFINED multiple periods -> STARTED multiple periods -> FAILED
244 .Reset().TestDefined().TestStateSinceHeight(0)
245 .Mine(999, TestTime(999), 0).TestDefined().TestStateSinceHeight(0)
246 .Mine(1000, TestTime(1000), 0).TestDefined().TestStateSinceHeight(0)

Callers

nothing calls this directly

Calls 3

VersionBitsTesterClass · 0.85
TestTimeFunction · 0.85
ResetMethod · 0.45

Tested by

no test coverage detected