OSDN Git Service

update SetWalletInfo
authorChengcheng Zhang <943420582@qq.com>
Thu, 4 Jul 2019 07:14:03 +0000 (15:14 +0800)
committerChengcheng Zhang <943420582@qq.com>
Thu, 4 Jul 2019 07:14:03 +0000 (15:14 +0800)
database/wallet_store.go
wallet/store.go
wallet/wallet.go
wallet/wallet_test.go

index 107c557..b6b105c 100644 (file)
@@ -6,6 +6,8 @@ import (
        "fmt"
        "sort"
 
+       "github.com/vapor/wallet"
+
        acc "github.com/vapor/account"
        "github.com/vapor/asset"
        "github.com/vapor/blockchain/query"
@@ -461,10 +463,16 @@ func (store *WalletStore) SetUnconfirmedTransaction(txID string, tx *query.Annot
 }
 
 // SetWalletInfo get wallet information
-func (store *WalletStore) SetWalletInfo(rawWallet []byte) {
+func (store *WalletStore) SetWalletInfo(status *wallet.StatusInfo) error {
+       rawWallet, err := json.Marshal(status)
+       if err != nil {
+               return err
+       }
+
        if store.batch == nil {
                store.walletDB.Set([]byte(dbm.WalletKey), rawWallet)
        } else {
                store.batch.Set([]byte(dbm.WalletKey), rawWallet)
        }
+       return nil
 }
index 48d6754..ecff2ab 100644 (file)
@@ -34,5 +34,5 @@ type WalletStore interface {
        SetRecoveryStatus([]byte, []byte) // recoveryManager.state isn't exported outside
        SetTransaction(uint64, *query.AnnotatedTx) error
        SetUnconfirmedTransaction(string, *query.AnnotatedTx) error
-       SetWalletInfo([]byte) // need move database.NewWalletStore in wallet package
+       SetWalletInfo(*StatusInfo) error // need move database.NewWalletStore in wallet package
 }
index d3e0685..1bfe3df 100644 (file)
@@ -155,13 +155,10 @@ func (w *Wallet) loadWalletInfo() error {
 }
 
 func (w *Wallet) commitWalletInfo() error {
-       rawWallet, err := json.Marshal(w.status)
-       if err != nil {
+       if err := w.store.SetWalletInfo(&w.status); err != nil {
                log.WithFields(log.Fields{"module": logModule, "err": err}).Error("save wallet info")
                return err
        }
-
-       w.store.SetWalletInfo(rawWallet)
        return nil
 }
 
index a8ebb4a..9ae4df6 100644 (file)
@@ -70,20 +70,24 @@ func TestWalletVersion(t *testing.T) {
        dispatcher := event.NewDispatcher()
        w := mockWallet(walletStore, nil, nil, nil, dispatcher, false)
 
-       // legacy status test case
-       type legacyStatusInfo struct {
-               WorkHeight uint64
-               WorkHash   bc.Hash
-               BestHeight uint64
-               BestHash   bc.Hash
-       }
-       rawWallet, err := json.Marshal(legacyStatusInfo{})
-       if err != nil {
-               t.Fatal("Marshal legacyStatusInfo")
+       // // legacy status test case
+       // type legacyStatusInfo struct {
+       //      WorkHeight uint64
+       //      WorkHash   bc.Hash
+       //      BestHeight uint64
+       //      BestHash   bc.Hash
+       // }
+
+       // rawWallet, err := json.Marshal(legacyStatusInfo{})
+       // if err != nil {
+       //      t.Fatal("Marshal legacyStatusInfo")
+       // }
+       walletStatus := new(StatusInfo)
+
+       if err := w.store.SetWalletInfo(walletStatus); err != nil {
+               t.Fatal(err)
        }
-
-       w.store.SetWalletInfo(rawWallet)
-       rawWallet = w.store.GetWalletInfo()
+       rawWallet := w.store.GetWalletInfo()
        if rawWallet == nil {
                t.Fatal("fail to load wallet StatusInfo")
        }
@@ -98,12 +102,14 @@ func TestWalletVersion(t *testing.T) {
 
        // lower wallet version test case
        lowerVersion := StatusInfo{Version: currentVersion - 1}
-       rawWallet, err = json.Marshal(lowerVersion)
-       if err != nil {
-               t.Fatal("save wallet info")
-       }
+       // rawWallet, err = json.Marshal(lowerVersion)
+       // if err != nil {
+       //      t.Fatal("save wallet info")
+       // }
 
-       w.store.SetWalletInfo(rawWallet)
+       if err := w.store.SetWalletInfo(&lowerVersion); err != nil {
+               t.Fatal(err)
+       }
        rawWallet = w.store.GetWalletInfo()
        if rawWallet == nil {
                t.Fatal("fail to load wallet StatusInfo")
@@ -956,12 +962,18 @@ func (store *MockWalletStore) SetUnconfirmedTransaction(txID string, tx *query.A
 }
 
 // SetWalletInfo get wallet information
-func (store *MockWalletStore) SetWalletInfo(rawWallet []byte) {
+func (store *MockWalletStore) SetWalletInfo(status *StatusInfo) error {
+       rawWallet, err := json.Marshal(status)
+       if err != nil {
+               return err
+       }
+
        if store.batch == nil {
-               store.walletDB.Set([]byte(WalletKey), rawWallet)
+               store.walletDB.Set([]byte(dbm.WalletKey), rawWallet)
        } else {
-               store.batch.Set([]byte(WalletKey), rawWallet)
+               store.batch.Set([]byte(dbm.WalletKey), rawWallet)
        }
+       return nil
 }
 
 //-------------