From 8df689bd448390c44ee2c344314257a5987a2e97 Mon Sep 17 00:00:00 2001 From: obscuren Date: Tue, 30 Dec 2014 15:42:26 +0100 Subject: [PATCH] Chain tests --- _data/invalid1 | Bin 0 -> 36072 bytes _data/{chain1 => valid1} | Bin _data/{chain2 => valid2} | Bin _data/valid3 | Bin 0 -> 14712 bytes _data/valid4 | Bin 0 -> 12496 bytes core/chain_manager_test.go | 53 +++++++++++++++++++++++++++++++++---- 6 files changed, 48 insertions(+), 5 deletions(-) create mode 100755 _data/invalid1 rename _data/{chain1 => valid1} (100%) rename _data/{chain2 => valid2} (100%) create mode 100755 _data/valid3 create mode 100755 _data/valid4 diff --git a/_data/invalid1 b/_data/invalid1 new file mode 100755 index 0000000000000000000000000000000000000000..9c24b13e8e8f7f54c6a8434781e8a958bd56bd3e GIT binary patch literal 36072 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 literal 0 HcmV?d00001 diff --git a/_data/chain1 b/_data/valid1 similarity index 100% rename from _data/chain1 rename to _data/valid1 diff --git a/_data/chain2 b/_data/valid2 similarity index 100% rename from _data/chain2 rename to _data/valid2 diff --git a/_data/valid3 b/_data/valid3 new file mode 100755 index 0000000000000000000000000000000000000000..685bc9fd7b38505d26c9d16223c9a55f23abcdf3 GIT binary patch literal 14712 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 literal 0 HcmV?d00001 diff --git a/_data/valid4 b/_data/valid4 new file mode 100755 index 0000000000000000000000000000000000000000..fc016057fa38e5c4f2f88129159540398f5cc1f9 GIT binary patch literal 12496 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 literal 0 HcmV?d00001 diff --git a/core/chain_manager_test.go b/core/chain_manager_test.go index 6e85bae9a..108718901 100644 --- a/core/chain_manager_test.go +++ b/core/chain_manager_test.go @@ -6,6 +6,7 @@ import ( "path" "reflect" "runtime" + "strconv" "testing" "github.com/ethereum/go-ethereum/core/types" @@ -13,15 +14,15 @@ import ( "github.com/ethereum/go-ethereum/ethutil" "github.com/ethereum/go-ethereum/event" "github.com/ethereum/go-ethereum/rlp" - //logpkg "github.com/ethereum/go-ethereum/logger" ) //var Logger logpkg.LogSystem + //var Log = logpkg.NewLogger("TEST") func init() { runtime.GOMAXPROCS(runtime.NumCPU()) - //Logger = logpkg.NewStdLogSystem(os.Stdout, log.LstdFlags, logpkg.InfoLevel) + //Logger = logpkg.NewStdLogSystem(os.Stdout, log.LstdFlags, logpkg.DebugLevel) //logpkg.AddLogSystem(Logger) ethutil.ReadConfig("/tmp/ethtest", "/tmp/ethtest", "ETH") @@ -50,21 +51,22 @@ func loadChain(fn string, t *testing.T) (types.Blocks, error) { func insertChain(done chan bool, chainMan *ChainManager, chain types.Blocks, t *testing.T) { err := chainMan.InsertChain(chain) + done <- true if err != nil { fmt.Println(err) t.FailNow() } - done <- true } func TestChainInsertions(t *testing.T) { - chain1, err := loadChain("chain1", t) + chain1, err := loadChain("valid1", t) if err != nil { fmt.Println(err) t.FailNow() } + fmt.Println(len(chain1)) - chain2, err := loadChain("chain2", t) + chain2, err := loadChain("valid2", t) if err != nil { fmt.Println(err) t.FailNow() @@ -94,3 +96,44 @@ func TestChainInsertions(t *testing.T) { t.Error("chain1 isn't canonical and should be") } } + +func TestChainMultipleInsertions(t *testing.T) { + const max = 4 + chains := make([]types.Blocks, max) + var longest int + for i := 0; i < max; i++ { + var err error + name := "valid" + strconv.Itoa(i+1) + chains[i], err = loadChain(name, t) + if len(chains[i]) >= len(chains[longest]) { + longest = i + } + fmt.Println("loaded", name, "with a length of", len(chains[i])) + if err != nil { + fmt.Println(err) + t.FailNow() + } + } + + var eventMux event.TypeMux + chainMan := NewChainManager(&eventMux) + txPool := NewTxPool(chainMan, &eventMux) + blockMan := NewBlockManager(txPool, chainMan, &eventMux) + chainMan.SetProcessor(blockMan) + done := make(chan bool, max) + for i, chain := range chains { + var i int = i + go func() { + insertChain(done, chainMan, chain, t) + fmt.Println(i, "done") + }() + } + + for i := 0; i < max; i++ { + <-done + } + + if !reflect.DeepEqual(chains[longest][len(chains[longest])-1], chainMan.CurrentBlock()) { + t.Error("Invalid canonical chain") + } +}