Skip to content

Commit

Permalink
Merge 800f451 into 4c387b4
Browse files Browse the repository at this point in the history
  • Loading branch information
hsequeda committed Feb 8, 2020
2 parents 4c387b4 + 800f451 commit 73f8e44
Show file tree
Hide file tree
Showing 1,572 changed files with 380,999 additions and 123 deletions.
103 changes: 9 additions & 94 deletions Gopkg.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 21 additions & 15 deletions src/coin/skycoin/models/account.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package skycoin //nolint goimports
package skycoin // nolint goimports

import (
"path/filepath"
Expand Down Expand Up @@ -42,18 +42,18 @@ func (addr *SkycoinAddress) GetBalance(ticker string) (uint64, error) {
func (addr *SkycoinAddress) ListAssets() []string {
return []string{Sky, CoinHour}
}
func (addr *SkycoinAddress) ScanUnspentOutputs() core.TransactionOutputIterator {
func (addr *SkycoinAddress) ScanUnspentOutputs() (core.TransactionOutputIterator, error) {
c, err := NewSkycoinApiClient(PoolSection)
if err != nil {
log.WithError(err).Error("Couldn't get API client")
return nil
return nil, err
}
defer ReturnSkycoinClient(c)
log.Info("POST /api/v1/outputs?addrs=xxx")
outputSummary, err := c.OutputsForAddresses([]string{addr.String()})
if err != nil {
log.WithError(err).WithField("addrs", addr.String()).Error("Couldn't POST /api/v1/outputs?addrs=xxx")
return nil
return nil, err
}

outs := outputSummary.SpendableOutputs()
Expand All @@ -72,7 +72,7 @@ func (addr *SkycoinAddress) ScanUnspentOutputs() core.TransactionOutputIterator
})
}

return NewSkycoinTransactionOutputIterator(skyOutputs)
return NewSkycoinTransactionOutputIterator(skyOutputs), nil
}
func (addr *SkycoinAddress) ListTransactions() core.TransactionIterator {

Expand Down Expand Up @@ -105,7 +105,7 @@ func (addr *SkycoinAddress) ListTransactions() core.TransactionIterator {
return NewSkycoinTransactionIterator(transactions)

}
func (addr *SkycoinAddress) ListPendingTransactions() (core.TransactionIterator, error) { //------TODO
func (addr *SkycoinAddress) ListPendingTransactions() (core.TransactionIterator, error) { // ------TODO
return nil, nil
}

Expand Down Expand Up @@ -137,21 +137,24 @@ func (wlt *RemoteWallet) ListAssets() []string {
return []string{Sky, CoinHour}
}

func (wlt *RemoteWallet) ScanUnspentOutputs() core.TransactionOutputIterator {
func (wlt *RemoteWallet) ScanUnspentOutputs() (core.TransactionOutputIterator, error) {
log.Info("Calling RemoteWallet.GetLoadedAddresses()")
addressesIter, err := wlt.GetLoadedAddresses()
if err != nil {
log.WithError(err).Error("RemoteWallet.GetLoadedAddresses() failed")
return nil
return nil, err
}
unOuts := make([]core.TransactionOutput, 0)
for addressesIter.Next() {
outsIter := addressesIter.Value().GetCryptoAccount().ScanUnspentOutputs()
outsIter, err := addressesIter.Value().GetCryptoAccount().ScanUnspentOutputs()
if err != nil {
return nil, err
}
for outsIter.Next() {
unOuts = append(unOuts, outsIter.Value())
}
}
return NewSkycoinTransactionOutputIterator(unOuts)
return NewSkycoinTransactionOutputIterator(unOuts), err
}

func (wlt *RemoteWallet) ListTransactions() core.TransactionIterator {
Expand Down Expand Up @@ -259,21 +262,24 @@ func (wlt *LocalWallet) ListAssets() []string {
return []string{Sky, CoinHour}
}

func (wlt *LocalWallet) ScanUnspentOutputs() core.TransactionOutputIterator {
func (wlt *LocalWallet) ScanUnspentOutputs() (core.TransactionOutputIterator, error) {
log.Info("Calling LocalWallet.GetLoadedAddresses()")
addressesIter, err := wlt.GetLoadedAddresses()
if err != nil {
log.WithError(err).Error("LocalWallet.GetLoadedAddresses() failed")
return nil
return nil, err
}
unOuts := make([]core.TransactionOutput, 0)
for addressesIter.Next() {
outsIter := addressesIter.Value().GetCryptoAccount().ScanUnspentOutputs()
outsIter, err := addressesIter.Value().GetCryptoAccount().ScanUnspentOutputs()
if err != nil {
return nil, err
}
for outsIter.Next() {
unOuts = append(unOuts, outsIter.Value())
}
}
return NewSkycoinTransactionOutputIterator(unOuts)
return NewSkycoinTransactionOutputIterator(unOuts), nil
}

func (wlt *LocalWallet) ListTransactions() core.TransactionIterator {
Expand All @@ -293,7 +299,7 @@ func (wlt *LocalWallet) ListTransactions() core.TransactionIterator {
return NewSkycoinTransactionIterator(txns)
}

func (wlt *LocalWallet) ListPendingTransactions() (core.TransactionIterator, error) { //------TODO
func (wlt *LocalWallet) ListPendingTransactions() (core.TransactionIterator, error) { // ------TODO
c, err := NewSkycoinApiClient(PoolSection)
if err != nil {
log.WithError(err).Error("Couldn't get API client")
Expand Down
25 changes: 17 additions & 8 deletions src/coin/skycoin/models/account_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,11 +127,14 @@ func TestSkycoinAddressScanUnspentOutputs(t *testing.T) {
skyAddrs := addrs.GetCryptoAccount()

global_mock.On("OutputsForAddresses", []string{addr}).Return(response, errors.New("failure")).Once()
it := skyAddrs.ScanUnspentOutputs()
it, err := skyAddrs.ScanUnspentOutputs()
require.Error(t, err)
require.Nil(t, it)

global_mock.On("OutputsForAddresses", []string{addr}).Return(response, nil)
it = skyAddrs.ScanUnspentOutputs()
it, err = skyAddrs.ScanUnspentOutputs()
require.NoError(t, err)

for it.Next() {
output := it.Value()
require.Equal(t, output.GetId(), "hash1")
Expand Down Expand Up @@ -238,7 +241,7 @@ func TestLocalWalletGetBalance(t *testing.T) {
require.NoError(t, err)
require.Equal(t, uint64(84), val)

//invalid ticker
// invalid ticker
_, err = wlt.GetBalance("INVALID_TICKER")
require.Error(t, err)
}
Expand Down Expand Up @@ -290,7 +293,8 @@ func TestRemoteWalletScanUnspentOutputs(t *testing.T) {
new(api.WalletResponse),
errors.New("failure"),
).Once()
iter := wlt.ScanUnspentOutputs()
iter, err := wlt.ScanUnspentOutputs()
require.Error(t, err)
require.Nil(t, iter)

global_mock.On("Wallet", "wallet").Return(
Expand Down Expand Up @@ -334,7 +338,8 @@ func TestRemoteWalletScanUnspentOutputs(t *testing.T) {
// no_output
global_mock.On("OutputsForAddresses", []string{"2JJ8pgq8EDAnrzf9xxBJapE2qkYLefW4uF8"}).Return(&readable.UnspentOutputsSummary{}, nil)

iter = wlt.ScanUnspentOutputs()
iter, err = wlt.ScanUnspentOutputs()
require.NoError(t, err)
items := 0
for iter.Next() {
to := iter.Value()
Expand All @@ -348,7 +353,8 @@ func TestRemoteWalletScanUnspentOutputs(t *testing.T) {
Id: "wallet_no_outputs",
poolSection: PoolSection,
}
iter = wlt.ScanUnspentOutputs()
iter, err = wlt.ScanUnspentOutputs()
require.NoError(t, err)
items = 0
for iter.Next() {
to := iter.Value()
Expand Down Expand Up @@ -434,11 +440,14 @@ func TestLocalWalletScanUnspentOutputs(t *testing.T) {
mockSkyApiOutputsForAddresses(global_mock, addresses)

wlt := &LocalWallet{WalletDir: "./testdata", Id: "no_wallet.wlt"}
iter := wlt.ScanUnspentOutputs()
iter, err := wlt.ScanUnspentOutputs()
require.Error(t, err)
require.Nil(t, iter)

wlt = &LocalWallet{WalletDir: "./testdata", Id: "test.wlt"}
iter = wlt.ScanUnspentOutputs()
iter, err = wlt.ScanUnspentOutputs()
require.NoError(t, err)

items := 0
for iter.Next() {
to := iter.Value()
Expand Down
2 changes: 1 addition & 1 deletion src/core/account.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ type CryptoAccount interface {
ListAssets() []string
// ScanUnspentOutputs to determine the outputs that can participate in a transaction
// without incurring in double spending
ScanUnspentOutputs() TransactionOutputIterator
ScanUnspentOutputs() (TransactionOutputIterator, error)
// ListTransactions to show account history
ListTransactions() TransactionIterator
// ListPendingTransactions to obtain details of transactions pending for confirmation in the memory
Expand Down
4 changes: 2 additions & 2 deletions src/models/modelWallets.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,8 +122,8 @@ func (m *ModelWallets) loadModel() {

for addresses.Next() {
a := addresses.Value()
outputs := a.GetCryptoAccount().ScanUnspentOutputs()
if outputs == nil {
outputs, err := a.GetCryptoAccount().ScanUnspentOutputs()
if err != nil {
continue
}
mo := NewModelOutputs(nil)
Expand Down
6 changes: 3 additions & 3 deletions src/models/walletsManager.go
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,8 @@ func (walletM *WalletManager) updateOutputs(wltId, address string) {
walletM.outputsByAddress[address] = outs
return
}
outsIter := addr.GetCryptoAccount().ScanUnspentOutputs()
if outsIter == nil {
outsIter, err := addr.GetCryptoAccount().ScanUnspentOutputs()
if err != nil {
logWalletManager.WithError(err).Warn("Couldn't scan unspent outputs")
walletM.outputsByAddress[address] = outs
return
Expand Down Expand Up @@ -813,7 +813,7 @@ func (walletM *WalletManager) getWallets() []*QWallet {
}

}
//walletM.wallets = make([]*QWallet, 0)
// walletM.wallets = make([]*QWallet, 0)

logWalletManager.Info("Wallets obtained")
return walletM.wallets
Expand Down
Loading

0 comments on commit 73f8e44

Please sign in to comment.