diff options
| author | obscuren <geffobscura@gmail.com> | 2014-12-30 22:42:26 +0800 | 
|---|---|---|
| committer | obscuren <geffobscura@gmail.com> | 2014-12-30 22:42:26 +0800 | 
| commit | 8df689bd448390c44ee2c344314257a5987a2e97 (patch) | |
| tree | 58f67c90c90c7319dbb9188391104def80bb0fd0 | |
| parent | 2f8a45cd8b2f565359f2c955145047acca2a2433 (diff) | |
| download | go-tangerine-8df689bd448390c44ee2c344314257a5987a2e97.tar.gz go-tangerine-8df689bd448390c44ee2c344314257a5987a2e97.tar.zst go-tangerine-8df689bd448390c44ee2c344314257a5987a2e97.zip | |
Chain tests
| -rwxr-xr-x | _data/invalid1 | bin | 0 -> 36072 bytes | |||
| -rwxr-xr-x | _data/valid1 (renamed from _data/chain1) | bin | 18036 -> 18036 bytes | |||
| -rwxr-xr-x | _data/valid2 (renamed from _data/chain2) | bin | 6125 -> 6125 bytes | |||
| -rwxr-xr-x | _data/valid3 | bin | 0 -> 14712 bytes | |||
| -rwxr-xr-x | _data/valid4 | bin | 0 -> 12496 bytes | |||
| -rw-r--r-- | core/chain_manager_test.go | 53 | 
6 files changed, 48 insertions, 5 deletions
| diff --git a/_data/invalid1 b/_data/invalid1Binary files differ new file mode 100755 index 000000000..9c24b13e8 --- /dev/null +++ b/_data/invalid1 diff --git a/_data/chain1 b/_data/valid1Binary files differ index 809a55f1a..809a55f1a 100755 --- a/_data/chain1 +++ b/_data/valid1 diff --git a/_data/chain2 b/_data/valid2Binary files differ index 3e9d2971a..3e9d2971a 100755 --- a/_data/chain2 +++ b/_data/valid2 diff --git a/_data/valid3 b/_data/valid3Binary files differ new file mode 100755 index 000000000..685bc9fd7 --- /dev/null +++ b/_data/valid3 diff --git a/_data/valid4 b/_data/valid4Binary files differ new file mode 100755 index 000000000..fc016057f --- /dev/null +++ b/_data/valid4 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") +	} +} | 
