decred.org/dcrdex@v1.0.5/server/asset/doge/live_test.go (about)

     1  //go:build dogelive
     2  
     3  // go test -v -tags dogelive -run UTXOStats
     4  // -----------------------------------
     5  // Grab the most recent block and iterate it's outputs, taking account of
     6  // how many UTXOs are found, how many are of an unknown type, etc.
     7  //
     8  // go test -v -tags dogelive -run P2SHStats
     9  // -----------------------------------------
    10  // For each output in the last block, check it's previous outpoint to see if
    11  // it's a P2SH or P2WSH. If so, takes statistics on the script types, including
    12  // for the redeem script.
    13  //
    14  // go test -v -tags dogelive -run LiveFees
    15  // ------------------------------------------
    16  // Test that fees rates are parsed without error and that a few historical fee
    17  // rates are correct
    18  //
    19  // go test -v -tags dogelive -run TestMedianFeeRates
    20  // ------------------------------------------
    21  // Test the median fee rate calculation.
    22  
    23  package doge
    24  
    25  import (
    26  	"context"
    27  	"fmt"
    28  	"os"
    29  	"testing"
    30  
    31  	"decred.org/dcrdex/dex"
    32  	"decred.org/dcrdex/server/asset"
    33  	"decred.org/dcrdex/server/asset/btc"
    34  )
    35  
    36  var (
    37  	doge *btc.Backend
    38  	ctx  context.Context
    39  )
    40  
    41  func TestMain(m *testing.M) {
    42  	// Wrap everything for defers.
    43  	doIt := func() int {
    44  		maxFeeBlocks = 1000
    45  		logger := dex.StdOutLogger("DOGETEST", dex.LevelTrace)
    46  		dexAsset, err := NewBackend(&asset.BackendConfig{
    47  			AssetID: BipID,
    48  			Logger:  logger,
    49  			Net:     dex.Mainnet,
    50  		})
    51  		if err != nil {
    52  			fmt.Printf("NewBackend error: %v\n", err)
    53  			return 1
    54  		}
    55  
    56  		var ok bool
    57  		doge, ok = dexAsset.(*btc.Backend)
    58  		if !ok {
    59  			fmt.Printf("Could not cast asset.Backend to *Backend")
    60  			return 1
    61  		}
    62  
    63  		ctx, cancel := context.WithCancel(context.Background())
    64  		wg, err := doge.Connect(ctx)
    65  		if err != nil {
    66  			fmt.Printf("Connect failed: %v", err)
    67  			return 1
    68  		}
    69  		defer wg.Wait()
    70  		defer cancel()
    71  
    72  		return m.Run()
    73  	}
    74  
    75  	os.Exit(doIt())
    76  }
    77  
    78  func TestUTXOStats(t *testing.T) {
    79  	btc.LiveUTXOStats(doge, t)
    80  }
    81  
    82  func TestP2SHStats(t *testing.T) {
    83  	btc.LiveP2SHStats(doge, t, 50)
    84  }
    85  
    86  func TestLiveFees(t *testing.T) {
    87  	btc.LiveFeeRates(doge, t, map[string]uint64{
    88  		"f5ebcf31851ba99d633cf05b4ef3793b67aeb790ef7ea084abb6af503ca7c070": 1005,
    89  		"58f8771cfa4fa966dc639066eb82ce643e4c0aabc48f242b6abe2e9b83c35117": 444_444,
    90  		// "6e7bfce6aee69312629b1f60afe6dcef02f367207642f2dc380a554c21181eb2": 888,
    91  		// "9387d8b2097ee23cc3da36daf90262dda9a98eb25063ddddb630cf15513fa9b8": 1,
    92  	})
    93  }
    94  
    95  func TestMedianFeeRates(t *testing.T) {
    96  	btc.TestMedianFeesTheHardWay(doge, t)
    97  }