Fix integration tests after switch to big.Int amounts

This commit is contained in:
Martin Boehm 2018-07-25 15:56:08 +02:00
parent f80a9142d9
commit 882ff1bfd5
18 changed files with 81 additions and 51 deletions

View File

@ -94,10 +94,12 @@ func (p *BaseParser) ParseTxFromJson(msg json.RawMessage) (*Tx, error) {
for i := range tx.Vout {
vout := &tx.Vout[i]
// convert vout.JsonValue to big.Int and clear it, it is only temporary value used for unmarshal
vout.ValueSat, err = p.AmountToBigInt(vout.JsonValue)
if err != nil {
return nil, err
}
vout.JsonValue = ""
if len(vout.ScriptPubKey.Addresses) == 1 {
a, err := p.AddressFactory(vout.ScriptPubKey.Addresses[0])
if err != nil {

View File

@ -49,6 +49,7 @@ func NewBCashParser(params *chaincfg.Params, c *btc.Configuration) (*BCashParser
BaseParser: &bchain.BaseParser{
AddressFactory: func(addr string) (bchain.Address, error) { return newBCashAddress(addr, format) },
BlockAddressesToKeep: c.BlockAddressesToKeep,
AmountDecimalPoint: 8,
},
Params: params,
OutputScriptToAddressesFunc: outputScriptToAddresses,

View File

@ -710,13 +710,20 @@ func (b *BitcoinRPC) GetMempoolEntry(txid string) (*bchain.MempoolEntry, error)
Params: []string{txid},
}
err := b.Call(&req, &res)
if err != nil {
return nil, err
}
if res.Error != nil {
return nil, res.Error
}
res.Result.FeeSat, err = b.Parser.AmountToBigInt(res.Result.Fee)
if err != nil {
return nil, err
}
res.Result.ModifiedFeeSat, err = b.Parser.AmountToBigInt(res.Result.ModifiedFee)
if err != nil {
return nil, err
}
return res.Result, nil
}

View File

@ -20,12 +20,13 @@ type ZCashParser struct {
*bchain.BaseParser
}
// NewZCAshParser returns new ZCAshParser instance
// NewZCashParser returns new ZCashParser instance
func NewZCashParser(c *btc.Configuration) *ZCashParser {
return &ZCashParser{
&bchain.BaseParser{
AddressFactory: bchain.NewBaseAddress,
BlockAddressesToKeep: c.BlockAddressesToKeep,
AmountDecimalPoint: 8,
},
}
}

View File

@ -1,8 +1,7 @@
// +build integration
package rpc
import (
"blockbook/bchain"
"encoding/json"
"errors"
"fmt"
@ -83,7 +82,7 @@ func LoadRPCConfig(coin string) (json.RawMessage, error) {
return json.RawMessage(fmt.Sprintf(t, coin, c.URL, c.User, c.Pass)), nil
}
func LoadTestData(coin string) (*TestData, error) {
func LoadTestData(coin string, parser bchain.BlockChainParser) (*TestData, error) {
b, err := readDataFile(".", "bchain/tests/rpc/testdata", coin+".json")
if err != nil {
return nil, err
@ -93,5 +92,16 @@ func LoadTestData(coin string) (*TestData, error) {
if err != nil {
return nil, err
}
// convert amounts in test json to bit.Int and clear the temporary JsonValue
for _, tx := range v.TxDetails {
for i := range tx.Vout {
vout := &tx.Vout[i]
vout.ValueSat, err = parser.AmountToBigInt(vout.JsonValue)
if err != nil {
return nil, err
}
vout.JsonValue = ""
}
}
return &v, nil
}

View File

@ -1,5 +1,3 @@
// +build integration
package rpc
import (
@ -9,6 +7,7 @@ import (
"net"
"reflect"
"testing"
"time"
"github.com/deckarep/golang-set"
)
@ -56,7 +55,7 @@ func NewTest(coin string, factory TestChainFactoryFunc) (*Test, error) {
return nil, err
}
} else {
td, err = LoadTestData(coin)
td, err = LoadTestData(coin, cli.GetChainParser())
if err != nil {
return nil, err
}
@ -162,7 +161,7 @@ func (rt *Test) TestGetTransaction(t *testing.T) {
got.Confirmations = 0
if !reflect.DeepEqual(got, want) {
t.Errorf("GetTransaction() got %v, want %v", got, want)
t.Errorf("GetTransaction() got %+v, want %+v", got, want)
}
}
}
@ -181,7 +180,7 @@ func (rt *Test) TestGetTransactionForMempool(t *testing.T) {
// transactions parsed from JSON may contain additional data
got.Confirmations, got.Blocktime, got.Time = 0, 0, 0
if !reflect.DeepEqual(got, want) {
t.Errorf("GetTransactionForMempool() got %v, want %v", got, want)
t.Errorf("GetTransactionForMempool() got %+v, want %+v", got, want)
}
}
}
@ -329,8 +328,8 @@ func (rt *Test) TestGetMempoolEntry(t *testing.T) {
if e.Size <= 0 {
t.Errorf("GetMempoolEntry() got zero or negative size %d", e.Size)
}
if e.Fee <= 0 {
t.Errorf("GetMempoolEntry() got zero or negative fee %f", e.Fee)
if e.FeeSat.Sign() != 1 {
t.Errorf("GetMempoolEntry() got zero or negative fee %v", e.FeeSat.String())
}
// done
@ -347,8 +346,11 @@ func (rt *Test) TestEstimateSmartFee(t *testing.T) {
if err != nil {
t.Error(err)
}
if fee != -1 && fee < 0 {
t.Errorf("EstimateSmartFee() returned unexpected fee rate: %f", fee)
if fee.Sign() == -1 {
sf := rt.Client.GetChainParser().AmountToDecimalString(&fee)
if sf != "-1" {
t.Errorf("EstimateSmartFee() returned unexpected fee rate: %v", sf)
}
}
}
}
@ -361,8 +363,11 @@ func (rt *Test) TestEstimateFee(t *testing.T) {
if err != nil {
t.Error(err)
}
if fee != -1 && fee < 0 {
t.Errorf("EstimateFee() returned unexpected fee rate: %f", fee)
if fee.Sign() == -1 {
sf := rt.Client.GetChainParser().AmountToDecimalString(&fee)
if sf != "-1" {
t.Errorf("EstimateFee() returned unexpected fee rate: %v", sf)
}
}
}
}
@ -385,6 +390,7 @@ func (rt *Test) TestGetBestBlockHash(t *testing.T) {
t.Fatal(err)
}
if hash != hh {
time.Sleep(time.Millisecond * 100)
continue
}

View File

@ -70,6 +70,7 @@
"blocktime":1531135480,
"time":1531135480,
"locktime": 0,
"version": 1,
"vin": [
{
"txid": "fe496933e0a3582ef020bd35c38fe8244a80fa7c63e7607f6f9ccb0806f419e4",
@ -175,6 +176,7 @@
"blocktime":1531135480,
"time":1531135480,
"locktime": 0,
"version": 1,
"vin": [
{
"txid": "52f37874fd5a2497c5d84619ab415ca17ebb1d49d559f0d468869f70537354b9",

View File

@ -12,6 +12,7 @@
"blocktime":1529571678,
"time":1529571678,
"locktime": 0,
"version": 1,
"vin": [
{
"coinbase": "03fbf212055374617368",
@ -34,6 +35,7 @@
"blocktime":1529571678,
"time":1529571678,
"locktime": 0,
"version": 1,
"vin": [
{
"txid": "58ff2450a71b3c228d17d04ec8edcaae452bc97d5ccc4591e2741fd8b031d221",

View File

@ -120,6 +120,7 @@
"blocktime": 1529915213,
"time": 1529915213,
"locktime": 0,
"version": 1,
"vin": [
{
"txid": "83eff5bcc738d52e04528984cd5cf601b69e7df65b2b10ed2475c0072cdde14c",
@ -153,6 +154,7 @@
"blocktime": 1529915213,
"time": 1529915213,
"locktime": 529149,
"version": 2,
"vin": [
{
"txid": "413988d546516707f3b20ca9876e026a9472bd814662e42f37f4e57a15713da7",

View File

@ -43,6 +43,7 @@
"blocktime": 1528788394,
"time": 1528788394,
"locktime": 0,
"version": 1,
"vin": [
{
"txid": "4097f5265397047bffe219a1bca65ea5726402c3d9aeecd577fa1c274fc1b8a4",
@ -84,6 +85,7 @@
"blocktime": 1528788394,
"time": 1528788394,
"locktime": 0,
"version": 1,
"vin": [
{
"txid": "80437ba4e81bde8b584258f5adad0d08dea60f1e38026344442ad59a4ef797c9",

View File

@ -27,6 +27,7 @@
"blocktime": 1530189699,
"time": 1530189699,
"locktime": 0,
"version": 1,
"vin": [
{
"txid": "a78824a88c089ea1344fe2a33c454024e6501e76cca2590515b390d85082bd23",

View File

@ -31,6 +31,7 @@
"blocktime": 1528713762,
"time": 1528713762,
"locktime": 139520,
"version": 2,
"vin": [
{
"txid": "a41616c7585c98aeda98d6ff6766b15455e327c9472582b80289dab7597ad309",
@ -64,6 +65,7 @@
"blocktime": 1528713762,
"time": 1528713762,
"locktime": 139520,
"version": 2,
"vin": [
{
"txid": "187ae015e41dff766f5a18ae705f59db950a6729a06fa5fd04630c362a9aee27",

View File

@ -16,38 +16,21 @@
"0x7f0d140329941f120b5b3fc751e30adeb87b2aebbfce5adcd0216604a34b6cc0"
],
"txDetails": {
"0xe6b168d6bb3d8ed78e03dbf828b6bfd1fb613f6e129cba624964984553724c5d": {
"hex": "7b226e6f6e6365223a2230783239666165222c226761735072696365223a223078313261303566323030222c22676173223a2230786462626130222c22746f223a22307836383262373930336131313039386366373730633761656634616130326138356233663336303161222c2276616c7565223a22307830222c22696e707574223a223078663032356361616630303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030323235222c2268617368223a22307865366231363864366262336438656437386530336462663832386236626664316662363133663665313239636261363234393634393834353533373234633564222c22626c6f636b4e756d626572223a223078326263616630222c2266726f6d223a22307864616363396336313735346130633436313666633533323364633934366538396562323732333032222c227472616e73616374696f6e496e646578223a22307831222c2276223a2230783162222c2272223a22307831626434306133313132326330333931386466366431363664373430613661336132326630386132353933346365623136383863363239373736363163383063222c2273223a22307836303766626331356331663739393561343235386635613962636363363362303430333632643139393164356566653133363163353632323265346361383966227d",
"txid": "0xe6b168d6bb3d8ed78e03dbf828b6bfd1fb613f6e129cba624964984553724c5d",
"0x7f0d140329941f120b5b3fc751e30adeb87b2aebbfce5adcd0216604a34b6cc0": {
"hex": "7b226e6f6e6365223a223078333632306136222c226761735072696365223a223078313261303566323030222c22676173223a22307835323038222c22746f223a22307831623137626331326166623635643563346238316139666632613037366234326131396661616136222c2276616c7565223a223078646530623662336137363430303030222c22696e707574223a223078222c2268617368223a22307837663064313430333239393431663132306235623366633735316533306164656238376232616562626663653561646364303231363630346133346236636330222c22626c6f636b4e756d626572223a223078326263616630222c2266726f6d223a22307838316237653038663635626466353634383630366338393939386139636338313634333937363437222c227472616e73616374696f6e496e646578223a22307862222c2276223a2230783162222c2272223a22307862666662323864633865373939383833366639356664616139396433626435666635346365663562313839636462383537333537666161326431616231393136222c2273223a22307833616462316365313264396664306538616662373064386639346534636538356137666639346465333966623636333139363638363435663464643138646432227d",
"txid": "0x7f0d140329941f120b5b3fc751e30adeb87b2aebbfce5adcd0216604a34b6cc0",
"blocktime": 1521515026,
"time": 1521515026,
"vin": [
{
"addresses": ["0xdacc9c61754a0c4616fc5323dc946e89eb272302"]
"addresses": ["0x81b7e08f65bdf5648606c89998a9cc8164397647"]
}
],
"vout": [
{
"value": 1,
"scriptPubKey": {
"addresses": ["0x682b7903a11098cf770c7aef4aa02a85b3f3601a"]
}
}
]
},
"0x17ee235fc0359155b25419e0e4c65d9c500df6e71e8288d6ef020d04cc2f2cb3": {
"hex": "7b226e6f6e6365223a223078346566222c226761735072696365223a223078626134336237343030222c22676173223a2230783936653838222c22746f223a22307864303534323939633438326164356362333961336661383734373235663965326132306433343963222c2276616c7565223a22307830222c22696e707574223a2230783165626366613630303030303030303030303030303030303030303030303030633034383732383566313736663532306635636434363732306236383662366534366165636430373030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303031303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030313430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030633461303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303530303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030353831303030303030303030303030303030303030303030303030633365313631343261306432366336616530623163656238643961373236653734653164613664663666656562653137653437306464626434656261663364623938333136386235316337623136363732613131623966306662383864623438323962653237346230303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303034363336663665363230303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303437323666373336313030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030222c2268617368223a22307831376565323335666330333539313535623235343139653065346336356439633530306466366537316538323838643665663032306430346363326632636233222c22626c6f636b4e756d626572223a223078326263616630222c2266726f6d223a22307838623461353365353739303739343466633261653539623837373066393331623639326232373062222c227472616e73616374696f6e496e646578223a22307830222c2276223a2230783163222c2272223a22307866633739633836353638323039313030323134616339353662373930653066383935656130343135313438643233613239353632356564393761633936333534222c2273223a223078373232303833616331643764663662626162393939383537616163323561336665646265386130633561326266376364653835393738363266373862313937227d",
"txid": "0x17ee235fc0359155b25419e0e4c65d9c500df6e71e8288d6ef020d04cc2f2cb3",
"blocktime": 1521515026,
"time": 1521515026,
"vin": [
{
"addresses": ["0x8b4a53e57907944fc2ae59b8770f931b692b270b"]
}
],
"vout": [
{
"scriptPubKey": {
"addresses": ["0xd054299c482ad5cb39a3fa874725f9e2a20d349c"]
"addresses": ["0x1b17bc12afb65d5c4b81a9ff2a076b42a19faaa6"]
}
}
]

View File

@ -39,6 +39,7 @@
"blocktime": 1530003649,
"time": 1530003649,
"locktime": 404678,
"version": 1,
"vin": [
{
"txid": "223a4ff7a613173ffbc67f9efffe1b0c3fd5ba2471935a44cc81814038272901",

View File

@ -14,6 +14,7 @@
"blocktime": 1529932850,
"time": 1529932850,
"locktime": 952232,
"version": 2,
"vin": [
{
"txid": "8ec70404bdd16559c589736863ee9d9f69431ba4e6b2ab3b1641b3f9f3821624",
@ -47,6 +48,7 @@
"blocktime": 1529932850,
"time": 1529932850,
"locktime": 952233,
"version": 1,
"vin": [
{
"txid": "5765db7dd62cddada154b2c95505e298818a308cc1ce1e28d6e8565301cb8d74",

View File

@ -22,6 +22,7 @@
"blocktime": 1530264033,
"time": 1530264033,
"locktime": 349399,
"version": 3,
"vin": [
{
"txid": "9c9faac29b0fa1b0e683727f2973bfcb87e4baadd07e9c997b431a31713cb30c",
@ -57,6 +58,7 @@
"blocktime": 1530264033,
"time": 1530264033,
"locktime": 0,
"version": 3,
"vin": [
{
"txid": "4440c8e9d5b57da7ca0fb3f62ec13f392267aeb797c123bb01e850adf8573dd0",

View File

@ -13,6 +13,7 @@
"blocktime": 1528781777,
"time": 1528781777,
"locktime": 251028,
"version": 3,
"vin": [
{
"txid": "19a1d013b898239e9a2943faa07f8716b9be168bc8e001daf3625f535fde1a60",
@ -48,6 +49,7 @@
"blocktime": 1528781777,
"time": 1528781777,
"locktime": 251090,
"version": 3,
"vin": [
{
"txid": "9acab5f13cf94074e75f5686b59fccd938f54b5f20ddddfcb6077c679a13c0ea",

View File

@ -91,18 +91,20 @@ type BlockHeader struct {
}
type MempoolEntry struct {
Size uint32 `json:"size"`
Fee big.Int `json:"fee"`
ModifiedFee big.Int `json:"modifiedfee"`
Time uint64 `json:"time"`
Height uint32 `json:"height"`
DescendantCount uint32 `json:"descendantcount"`
DescendantSize uint32 `json:"descendantsize"`
DescendantFees uint32 `json:"descendantfees"`
AncestorCount uint32 `json:"ancestorcount"`
AncestorSize uint32 `json:"ancestorsize"`
AncestorFees uint32 `json:"ancestorfees"`
Depends []string `json:"depends"`
Size uint32 `json:"size"`
FeeSat big.Int
Fee json.Number `json:"fee"`
ModifiedFeeSat big.Int
ModifiedFee json.Number `json:"modifiedfee"`
Time uint64 `json:"time"`
Height uint32 `json:"height"`
DescendantCount uint32 `json:"descendantcount"`
DescendantSize uint32 `json:"descendantsize"`
DescendantFees uint32 `json:"descendantfees"`
AncestorCount uint32 `json:"ancestorcount"`
AncestorSize uint32 `json:"ancestorsize"`
AncestorFees uint32 `json:"ancestorfees"`
Depends []string `json:"depends"`
}
type RPCError struct {