diff options
author | obscuren <geffobscura@gmail.com> | 2015-03-19 17:57:02 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2015-03-19 17:57:02 +0800 |
commit | d7ab716eea1d1892e3358b1dece6b0e2cd31fce8 (patch) | |
tree | c0fe4ca2dc47ff8512065f3601b9f3ab6b21dd43 | |
parent | e67d32b46744928b07b4d964ae3dede9a1ffdddf (diff) | |
download | go-tangerine-d7ab716eea1d1892e3358b1dece6b0e2cd31fce8.tar go-tangerine-d7ab716eea1d1892e3358b1dece6b0e2cd31fce8.tar.gz go-tangerine-d7ab716eea1d1892e3358b1dece6b0e2cd31fce8.tar.bz2 go-tangerine-d7ab716eea1d1892e3358b1dece6b0e2cd31fce8.tar.lz go-tangerine-d7ab716eea1d1892e3358b1dece6b0e2cd31fce8.tar.xz go-tangerine-d7ab716eea1d1892e3358b1dece6b0e2cd31fce8.tar.zst go-tangerine-d7ab716eea1d1892e3358b1dece6b0e2cd31fce8.zip |
Fixed mkdnode & added some tests
-rw-r--r-- | cmd/ethtest/main.go | 19 | ||||
-rw-r--r-- | state/dump.go | 1 | ||||
-rw-r--r-- | state/state_object.go | 2 | ||||
-rw-r--r-- | state/state_test.go | 20 | ||||
-rw-r--r-- | state/statedb.go | 4 | ||||
-rw-r--r-- | trie/trie.go | 12 | ||||
-rw-r--r-- | trie/trie_test.go | 11 | ||||
-rw-r--r-- | vm/vm.go | 2 |
8 files changed, 55 insertions, 16 deletions
diff --git a/cmd/ethtest/main.go b/cmd/ethtest/main.go index 23ae9e525..cf1ec6dfa 100644 --- a/cmd/ethtest/main.go +++ b/cmd/ethtest/main.go @@ -24,7 +24,6 @@ package main import ( "bytes" "encoding/json" - "fmt" "io" "io/ioutil" "log" @@ -33,8 +32,8 @@ import ( "strconv" "strings" - "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/logger" "github.com/ethereum/go-ethereum/state" "github.com/ethereum/go-ethereum/tests/helper" @@ -136,7 +135,7 @@ func RunVmTest(r io.Reader) (failed int) { rexp := helper.FromHex(test.Out) if bytes.Compare(rexp, ret) != 0 { - fmt.Printf("FAIL: %s's return failed. Expected %x, got %x\n", name, rexp, ret) + helper.Log.Infof("FAIL: %s's return failed. Expected %x, got %x\n", name, rexp, ret) failed = 1 } @@ -148,7 +147,13 @@ func RunVmTest(r io.Reader) (failed int) { if len(test.Exec) == 0 { if obj.Balance().Cmp(common.Big(account.Balance)) != 0 { - fmt.Printf("FAIL: %s's : (%x) balance failed. Expected %v, got %v => %v\n", name, obj.Address()[:4], account.Balance, obj.Balance(), new(big.Int).Sub(common.Big(account.Balance), obj.Balance())) + helper.Log.Infof("FAIL: %s's : (%x) balance failed. Expected %v, got %v => %v\n", + name, + obj.Address()[:4], + account.Balance, + obj.Balance(), + new(big.Int).Sub(common.Big(account.Balance), obj.Balance()), + ) failed = 1 } } @@ -158,20 +163,20 @@ func RunVmTest(r io.Reader) (failed int) { vexp := helper.FromHex(value) if bytes.Compare(v, vexp) != 0 { - fmt.Printf("FAIL: %s's : (%x: %s) storage failed. Expected %x, got %x (%v %v)\n", name, obj.Address()[0:4], addr, vexp, v, common.BigD(vexp), common.BigD(v)) + helper.Log.Infof("FAIL: %s's : (%x: %s) storage failed. Expected %x, got %x (%v %v)\n", name, obj.Address()[0:4], addr, vexp, v, common.BigD(vexp), common.BigD(v)) failed = 1 } } } if !bytes.Equal(common.Hex2Bytes(test.PostStateRoot), statedb.Root()) { - fmt.Printf("FAIL: %s's : Post state root error. Expected %s, got %x\n", name, test.PostStateRoot, statedb.Root()) + helper.Log.Infof("FAIL: %s's : Post state root error. Expected %s, got %x\n", name, test.PostStateRoot, statedb.Root()) failed = 1 } if len(test.Logs) > 0 { if len(test.Logs) != len(logs) { - fmt.Printf("FAIL: log length mismatch. Expected %d, got %d", len(test.Logs), len(logs)) + helper.Log.Infof("FAIL: log length mismatch. Expected %d, got %d", len(test.Logs), len(logs)) failed = 1 } else { /* diff --git a/state/dump.go b/state/dump.go index c5f556e1a..6db0d5074 100644 --- a/state/dump.go +++ b/state/dump.go @@ -35,6 +35,7 @@ func (self *StateDB) RawDump() World { storageIt := stateObject.State.trie.Iterator() for storageIt.Next() { + fmt.Println("value", storageIt.Value) account.Storage[common.Bytes2Hex(storageIt.Key)] = common.Bytes2Hex(storageIt.Value) } world.Accounts[common.Bytes2Hex(it.Key)] = account diff --git a/state/state_object.go b/state/state_object.go index 8be9e28fc..cdb9abf79 100644 --- a/state/state_object.go +++ b/state/state_object.go @@ -5,8 +5,8 @@ import ( "fmt" "math/big" - "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/rlp" "github.com/ethereum/go-ethereum/trie" ) diff --git a/state/state_test.go b/state/state_test.go index 3ecc03ae0..3a1ea225d 100644 --- a/state/state_test.go +++ b/state/state_test.go @@ -1,12 +1,14 @@ package state import ( + "fmt" "math/big" + "testing" checker "gopkg.in/check.v1" - "github.com/ethereum/go-ethereum/ethdb" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/ethdb" ) type StateSuite struct { @@ -61,6 +63,22 @@ func (s *StateSuite) SetUpTest(c *checker.C) { s.state = New(nil, db) } +func TestNull(t *testing.T) { + db, _ := ethdb.NewMemDatabase() + state := New(nil, db) + + address := common.FromHex("0x823140710bf13990e4500136726d8b55") + state.NewStateObject(address) + //value := common.FromHex("0x823140710bf13990e4500136726d8b55") + value := make([]byte, 16) + fmt.Println("test it here", common.NewValue(value)) + state.SetState(address, []byte{0}, value) + state.Update(nil) + state.Sync() + value = state.GetState(address, []byte{0}) + fmt.Printf("res: %x\n", value) +} + func (s *StateSuite) TestSnapshot(c *checker.C) { stateobjaddr := []byte("aa") storageaddr := common.Big("0") diff --git a/state/statedb.go b/state/statedb.go index 80bbe2afd..d01b6056d 100644 --- a/state/statedb.go +++ b/state/statedb.go @@ -33,6 +33,10 @@ func New(root []byte, db common.Database) *StateDB { return &StateDB{db: db, trie: trie, stateObjects: make(map[string]*StateObject), refund: make(map[string]*big.Int)} } +func (self *StateDB) PrintRoot() { + self.trie.Trie.PrintRoot() +} + func (self *StateDB) EmptyLogs() { self.logs = nil } diff --git a/trie/trie.go b/trie/trie.go index 1c1112a7f..4f47151a4 100644 --- a/trie/trie.go +++ b/trie/trie.go @@ -6,8 +6,8 @@ import ( "fmt" "sync" - "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" ) func ParanoiaCheck(t1 *Trie, backend Backend) (bool, *Trie) { @@ -305,11 +305,13 @@ func (self *Trie) mknode(value *common.Value) Node { return NewShortNode(self, CompactDecode(string(value.Get(0).Bytes())), self.mknode(value.Get(1))) } case 17: - fnode := NewFullNode(self) - for i := 0; i < l; i++ { - fnode.set(byte(i), self.mknode(value.Get(i))) + if len(value.Bytes()) != 17 { + fnode := NewFullNode(self) + for i := 0; i < l; i++ { + fnode.set(byte(i), self.mknode(value.Get(i))) + } + return fnode } - return fnode case 32: return &HashNode{value.Bytes(), self} } diff --git a/trie/trie_test.go b/trie/trie_test.go index 1393e0c97..16311aadf 100644 --- a/trie/trie_test.go +++ b/trie/trie_test.go @@ -5,8 +5,8 @@ import ( "fmt" "testing" - "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" ) type Db map[string][]byte @@ -32,6 +32,15 @@ func TestEmptyTrie(t *testing.T) { } } +func TestNull(t *testing.T) { + trie := NewEmpty() + + key := make([]byte, 32) + value := common.FromHex("0x823140710bf13990e4500136726d8b55") + trie.Update(key, value) + value = trie.Get(key) +} + func TestInsert(t *testing.T) { trie := NewEmpty() @@ -4,8 +4,8 @@ import ( "fmt" "math/big" - "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/state" ) |