@@ -2,12 +2,15 @@ package module
22
33import (
44 "context"
5+ "encoding/hex"
56 "math/big"
67 "strings"
78 "testing"
89
910 "github.com/ethereum/go-ethereum/common"
1011 "github.com/ethereum/go-ethereum/core/types"
12+ "github.com/ethereum/go-ethereum/ethclient"
13+ "github.com/ethereum/go-ethereum/rlp"
1114 "github.com/hyperledger-labs/yui-relayer/log"
1215 "github.com/stretchr/testify/suite"
1316)
@@ -125,3 +128,42 @@ func (ts *HeaderQueryTestSuite) TestErrorQueryLatestFinalizedHeader_NoVote() {
125128 }
126129 }
127130}
131+
132+ func (ts * HeaderQueryTestSuite ) TestSuccessQueryFinalizedHeaderFermi () {
133+ ts .Require ().NoError (log .InitLogger ("INFO" , "json" , "stdout" , false ))
134+ const start uint64 = 506
135+ fn := func (ctx context.Context , height uint64 ) (* types.Header , error ) {
136+ header := & types.Header {
137+ Number : big .NewInt (0 ).SetUint64 (height ),
138+ }
139+ var v []byte
140+ var err error
141+ if height == start {
142+ v , err = hex .DecodeString ("f90370a061e54cba38225d35f042c6bd5ae8d6f981a451f3a53e49313b570db907ee2dd2a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794d9a13701eafb76870cb220843b8c6476824bfa15a0396436866456ceb1c4b702cb5d3a4b1e2495d84619f1ba7142b80e59e8342a88a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028201fa8402625a008084690eacdbb90111d983010602846765746889676f312e32342e3130856c696e757800000d382c2cf8ae07b86089aa2052e18ebe839aa3723bcad27b2a2196e22b7bc11c4d4d24d4a69e01e86bd404d19a0345c922456c8f6badd351d907fb69a6590bfad9673c8fdb9fc38bdd73b9bb4c93bb3d349380322366b1dc6d294e0e6916ef256ccbfa245255e43ad3f8488201f6a09058cfa000d451f4cd49092133047c1cf4a29d2c905a9aa17c890e96d81513d08201f8a0464df616013723293103002550e47ce3e44eb7dee4b11bfa10daeb4a2df51215802185ef1b54bfba22b6d1be5d4988c592b1da29abd380ea7d98def9b4f17e66f50b580baa6e8481b1b15b424ceddbf66964f633371d73a62825c67f9c633077d501a000000000000000000000000000000000000000000000000000000000000000c888000000000000000080a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" )
143+ } else if height == 507 {
144+ v , err = hex .DecodeString ("f902bfa06510e76fec4471a1dd46e83484608cba84a2c0860ed484dc785aaeca5bc24598a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794d9a13701eafb76870cb220843b8c6476824bfa15a0ed3a25beff351197a86ea87f939c7a129d7e7b9759a5c125875e58424c774c96a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028201fb8402625a008084690eacdbb861d983010602846765746889676f312e32342e3130856c696e757800000d382c2c9ed5d62372f22f62c2442552b80af1e868265d205a6132a44c10bbc50fe017bc1f9ad3f3c89381a992f177e292821630df0079134f002dcaaca675e5486b796400a0000000000000000000000000000000000000000000000000000000000000028a88000000000000000080a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" )
145+ } else if height == 508 {
146+ v , err = hex .DecodeString ("f90370a042ac9f2075511d2293a3448edba653bd1fe6cb7bf4b6fd9597d98bd3e1168eeea01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794d9a13701eafb76870cb220843b8c6476824bfa15a0027e1be8380711bbe9075b3d99dd23e59769711f03064b2a42f03c5a4ee2294da056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028201fc8402625a008084690eacdcb90111d983010602846765746889676f312e32342e3130856c696e757800000d382c2cf8ae07b8608509853e9fab817fba4600c12d1689548f6566e22277a0fbfc99c0c241e53362550e13bb2c1da81dd133a953539febce16760742ac3462ae106c4d7db8422bdb9e01f1d7285251940badbec7358f923e6ff267135f0c6e73963e5340edb495d7f8488201f8a0464df616013723293103002550e47ce3e44eb7dee4b11bfa10daeb4a2df512158201faa06510e76fec4471a1dd46e83484608cba84a2c0860ed484dc785aaeca5bc2459880d63a5ec69ce06dbbe045deffd2cf87000fe0b91a727973edbdb980ab86d80eee0e272ce2600c634d7ee5cb2d4f4b2139e924a6f6d6f818fda0ed8b02d69be61901a0000000000000000000000000000000000000000000000000000000000000006488000000000000000080a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" )
147+ } else if height == 509 {
148+ v , err = hex .DecodeString ("f902bfa04dbe87a2afcbd4599b997d68b7976c15d5d6c78fbaa2586541c6ab1a5d3051e9a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d4934794d9a13701eafb76870cb220843b8c6476824bfa15a0c5b6d22e10686a802dfe562e6b2de199ebecf18aae5a284aa531fd4137fdcd3ea056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028201fd8402625a008084690eacdcb861d983010602846765746889676f312e32342e3130856c696e757800000d382c2caf975e1c326acf700081afa54cc4b2a84fb67ec15733488c488cf2b2c4c22862646c5b21762fe5df77abfbc6076eccaaf445af23e584b33cf602f7134125999500a0000000000000000000000000000000000000000000000000000000000000022688000000000000000080a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" )
149+ } else if height == 510 {
150+ v , err = hex .DecodeString ("f90370a0fca3ee6eb6331d3caf5310dcea500b6d06ea5dee08972a285d3c8bcf2848e542a01dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347948fdaaa7e6631e438625ca25c857a3727ea28e565a06bfb3c7904a7b6347689fea2fc0ad3e0bcc6597d4817c9ce132e8a4962b740e2a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421b9010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000028201fe8402625a008084690eacddb90111d983010602846765746889676f312e32342e3130856c696e757800000d382c2cf8ae07b860ab54b1e139a3e5345731e228daccb85fa7641a6f4873057022d1f6979c69b2d4193d96068a9c23ea7f0540f7f2bf8e210493a01df523bc4e8b15f02c772425bbfd8577e33cb603b6d8349834cd678e4e15799e141d2bd15dba147302116566fcf8488201faa06510e76fec4471a1dd46e83484608cba84a2c0860ed484dc785aaeca5bc245988201fca04dbe87a2afcbd4599b997d68b7976c15d5d6c78fbaa2586541c6ab1a5d3051e9809de85618105acd64900a429445efd27d81e587f6dca6a8e4ea0ad219111078ec0696d6064a4b8e7251883f0cb52f2fa5e33389fc934b11be1b581c357d46bca600a0000000000000000000000000000000000000000000000000000000000000000088000000000000000080a056e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b4218080a00000000000000000000000000000000000000000000000000000000000000000a0e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" )
151+ }
152+ ts .Require ().NoError (err )
153+ if v != nil {
154+ ts .Require ().NoError (rlp .DecodeBytes (v , header ))
155+ }
156+ return header , nil
157+ }
158+
159+ headers , err := queryFinalizedHeader (context .Background (), fn , start , 1000 , ts .forkSpecsPatterns [1 ])
160+ ts .Require ().NoError (err )
161+ ts .Require ().Len (headers , 5 , len (headers ))
162+ number := start - 1
163+ for _ , h := range headers {
164+ var header types.Header
165+ ts .Require ().NoError (rlp .DecodeBytes (h .Header , & header ))
166+ ts .Require ().Equal (number + 1 , header .Number .Uint64 ())
167+ number = header .Number .Uint64 ()
168+ }
169+ }
0 commit comments