github.com/decred/dcrlnd@v0.7.6/lntest/backend.go (about)

     1  package lntest
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  	"os"
     7  	"testing"
     8  
     9  	"github.com/decred/dcrd/chaincfg/v3"
    10  	"github.com/decred/dcrlnd/internal/testutils"
    11  	rpctest "github.com/decred/dcrtest/dcrdtest"
    12  	"matheusd.com/testctx"
    13  )
    14  
    15  // logDirPattern is the pattern of the temporary log directory.
    16  const logDirPattern = "%s/.backendlogs"
    17  
    18  // newBackend initializes a new dcrd rpctest backend.
    19  //
    20  //nolint:unused
    21  func newBackend(t *testing.T, miner *rpctest.Harness) (*rpctest.Harness, func() error, error) {
    22  	baseLogDir := fmt.Sprintf(logDirPattern, GetLogDir())
    23  	args := []string{
    24  		"--rejectnonstd",
    25  		"--txindex",
    26  		"--debuglevel=debug",
    27  		"--logdir=" + baseLogDir,
    28  		"--maxorphantx=0",
    29  		"--nobanning",
    30  		"--rpcmaxclients=100",
    31  		"--rpcmaxwebsockets=100",
    32  		"--rpcmaxconcurrentreqs=100",
    33  		"--logsize=100M",
    34  		"--maxsameip=200",
    35  	}
    36  	netParams := chaincfg.SimNetParams()
    37  	chainBackend, err := testutils.NewSetupRPCTest(
    38  		testctx.New(t), 5, netParams, nil, args, false, 0,
    39  	)
    40  	if err != nil {
    41  		return nil, nil, fmt.Errorf("unable to create dcrd node: %v", err)
    42  	}
    43  
    44  	cleanUp := func() error {
    45  		var errStr string
    46  		if err := chainBackend.TearDown(); err != nil {
    47  			errStr += err.Error() + "\n"
    48  		}
    49  
    50  		// After shutting down the chain backend, we'll make a copy of
    51  		// the log file before deleting the temporary log dir.
    52  		logFile := baseLogDir + "/" + netParams.Name + "/dcrd.log"
    53  		destLogFile := fmt.Sprintf("%s/output_dcrd_chainbackend.log", GetLogDir())
    54  		err := CopyFile(destLogFile, logFile)
    55  		if err != nil {
    56  			errStr += fmt.Sprintf("unable to copy file: %v\n", err)
    57  		}
    58  		if err = os.RemoveAll(baseLogDir); err != nil {
    59  			errStr += fmt.Sprintf("Cannot remove dir %s: %v\n", baseLogDir, err)
    60  		}
    61  		if errStr != "" {
    62  			return errors.New(errStr)
    63  		}
    64  		return nil
    65  	}
    66  
    67  	return chainBackend, cleanUp, nil
    68  }