| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package core
- import (
- "fmt"
- "path"
- "runtime"
- "testing"
- "github.com/ethereum/go-ethereum/core/types"
- "github.com/ethereum/go-ethereum/ethdb"
- "github.com/ethereum/go-ethereum/ethutil"
- "github.com/ethereum/go-ethereum/event"
- //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)
- //logpkg.AddLogSystem(Logger)
- ethutil.ReadConfig("/tmp/ethtest", "/tmp/ethtest", "ETH")
- db, err := ethdb.NewMemDatabase()
- if err != nil {
- panic("Could not create mem-db, failing")
- }
- ethutil.Config.Db = db
- }
- func loadChain(fn string, t *testing.T) types.Blocks {
- c1, err := ethutil.ReadAllFile(path.Join("..", "_data", fn))
- if err != nil {
- fmt.Println(err)
- t.FailNow()
- }
- value := ethutil.NewValueFromBytes([]byte(c1))
- blocks := make(types.Blocks, value.Len())
- it := value.NewIterator()
- for it.Next() {
- blocks[it.Idx()] = types.NewBlockFromRlpValue(it.Value())
- }
- return blocks
- }
- func insertChain(done chan bool, chainMan *ChainManager, chain types.Blocks, t *testing.T) {
- err := chainMan.InsertChain(chain)
- if err != nil {
- fmt.Println(err)
- t.FailNow()
- }
- done <- true
- }
- func TestChainInsertions(t *testing.T) {
- chain1 := loadChain("chain1", t)
- chain2 := loadChain("chain2", t)
- var eventMux event.TypeMux
- chainMan := NewChainManager(&eventMux)
- txPool := NewTxPool(chainMan, nil, &eventMux)
- blockMan := NewBlockManager(txPool, chainMan, &eventMux)
- chainMan.SetProcessor(blockMan)
- const max = 2
- done := make(chan bool, max)
- go insertChain(done, chainMan, chain1, t)
- go insertChain(done, chainMan, chain2, t)
- for i := 0; i < max; i++ {
- <-done
- }
- fmt.Println(chainMan.CurrentBlock())
- }
|