2015-07-07 00:54:22 +00:00
// Copyright 2015 The go-ethereum Authors
2015-07-22 16:48:40 +00:00
// This file is part of the go-ethereum library.
2015-07-07 00:54:22 +00:00
//
2015-07-23 16:35:11 +00:00
// The go-ethereum library is free software: you can redistribute it and/or modify
2015-07-07 00:54:22 +00:00
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
2015-07-22 16:48:40 +00:00
// The go-ethereum library is distributed in the hope that it will be useful,
2015-07-07 00:54:22 +00:00
// but WITHOUT ANY WARRANTY; without even the implied warranty of
2015-07-22 16:48:40 +00:00
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2015-07-07 00:54:22 +00:00
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
2015-07-22 16:48:40 +00:00
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
2015-07-07 00:54:22 +00:00
2015-04-20 16:14:57 +00:00
package tests
import (
2021-05-20 16:46:12 +00:00
"runtime"
2015-04-20 16:14:57 +00:00
"testing"
2017-07-11 11:49:14 +00:00
)
2016-10-05 21:55:47 +00:00
2017-07-11 11:49:14 +00:00
func TestBlockchain ( t * testing . T ) {
2021-05-20 16:46:12 +00:00
if runtime . GOOS == "windows" {
t . Skip ( "fix me on win please" ) // after remove ChainReader from consensus engine - this test can be changed to create less databases, then can enable on win. now timeout after 20min
}
2017-07-11 11:49:14 +00:00
bt := new ( testMatcher )
// General state tests are 'exported' as blockchain tests, but we can run them natively.
2021-03-03 14:50:07 +00:00
// For speedier CI-runs, the line below can be uncommented, so those are skipped.
// For now, in hardfork-times (Berlin), we run the tests both as StateTests and
// as blockchain tests, since the latter also covers things like receipt root
//bt.skipLoad(`^GeneralStateTests/`)
2019-10-02 08:33:51 +00:00
// Skip random failures due to selfish mining test
2019-08-15 12:59:46 +00:00
bt . skipLoad ( ` .*bcForgedTest/bcForkUncle\.json ` )
2017-07-11 11:49:14 +00:00
2019-08-15 12:59:46 +00:00
// Slow tests
bt . slow ( ` .*bcExploitTest/DelegateCallSpam.json ` )
bt . slow ( ` .*bcExploitTest/ShanghaiLove.json ` )
bt . slow ( ` .*bcExploitTest/SuicideIssue.json ` )
bt . slow ( ` .*/bcForkStressTest/ ` )
bt . slow ( ` .*/bcGasPricerTest/RPC_API_Test.json ` )
bt . slow ( ` .*/bcWalletTest/ ` )
2018-10-15 22:26:47 +00:00
2019-10-02 08:33:51 +00:00
// Very slow test
bt . skipLoad ( ` .*/stTimeConsuming/.* ` )
// test takes a lot for time and goes easily OOM because of sha3 calculation on a huge range,
// using 4.6 TGas
bt . skipLoad ( ` .*randomStatetest94.json.* ` )
2020-07-09 06:15:28 +00:00
bt . fails ( ` (?m)^TestBlockchain/InvalidBlocks/bcInvalidHeaderTest/wrongReceiptTrie.json/wrongReceiptTrie_EIP150 ` , "No receipt validation before Byzantium" )
bt . fails ( ` (?m)^TestBlockchain/InvalidBlocks/bcInvalidHeaderTest/wrongReceiptTrie.json/wrongReceiptTrie_EIP158 ` , "No receipt validation before Byzantium" )
bt . fails ( ` (?m)^TestBlockchain/InvalidBlocks/bcInvalidHeaderTest/wrongReceiptTrie.json/wrongReceiptTrie_Frontier ` , "No receipt validation before Byzantium" )
bt . fails ( ` (?m)^TestBlockchain/InvalidBlocks/bcInvalidHeaderTest/wrongReceiptTrie.json/wrongReceiptTrie_Homestead ` , "No receipt validation before Byzantium" )
2021-02-24 16:47:01 +00:00
2017-07-11 11:49:14 +00:00
bt . walk ( t , blockTestDir , func ( t * testing . T , name string , test * BlockTest ) {
2021-04-21 13:03:08 +00:00
// import pre accounts & construct test genesis block & state root
2021-06-05 10:00:21 +00:00
if err := bt . checkFailure ( t , test . Run ( t , false ) ) ; err != nil {
2017-07-11 11:49:14 +00:00
t . Error ( err )
}
} )
2021-03-31 15:30:09 +00:00
2019-10-02 08:33:51 +00:00
// There is also a LegacyTests folder, containing blockchain tests generated
// prior to Istanbul. However, they are all derived from GeneralStateTests,
// which run natively, so there's no reason to run them here.
2016-10-05 21:55:47 +00:00
}