github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/app/utils/sanity/start_test.go (about)

     1  package sanity
     2  
     3  import (
     4  	apptype "github.com/fibonacci-chain/fbc/app/types"
     5  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/server"
     6  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/store/types"
     7  	"github.com/fibonacci-chain/fbc/libs/tendermint/consensus"
     8  	"github.com/fibonacci-chain/fbc/libs/tendermint/state"
     9  	sm "github.com/fibonacci-chain/fbc/libs/tendermint/state"
    10  	ttypes "github.com/fibonacci-chain/fbc/libs/tendermint/types"
    11  	"github.com/fibonacci-chain/fbc/x/evm/watcher"
    12  	"github.com/spf13/cobra"
    13  	"testing"
    14  )
    15  
    16  func getCommandNodeModeRpcPruningNothing() *cobra.Command {
    17  	return getCommand([]universeFlag{
    18  		&stringFlag{
    19  			Name:    apptype.FlagNodeMode,
    20  			Default: "",
    21  			Changed: true,
    22  			Value:   string(apptype.RpcNode),
    23  		},
    24  		&stringFlag{
    25  			Name:    server.FlagPruning,
    26  			Default: types.PruningOptionDefault,
    27  			Changed: true,
    28  			Value:   types.PruningOptionNothing,
    29  		},
    30  	})
    31  }
    32  
    33  func getCommandFastQueryPruningNothing() *cobra.Command {
    34  	return getCommand([]universeFlag{
    35  		&boolFlag{
    36  			Name:    watcher.FlagFastQuery,
    37  			Default: false,
    38  			Changed: true,
    39  			Value:   true,
    40  		},
    41  		&stringFlag{
    42  			Name:    server.FlagPruning,
    43  			Default: "",
    44  			Changed: true,
    45  			Value:   types.PruningOptionNothing,
    46  		},
    47  	})
    48  }
    49  
    50  func getCommandEnablePreruntxDownloadDelta() *cobra.Command {
    51  	return getCommand([]universeFlag{
    52  		&boolFlag{
    53  			Name:    consensus.EnablePrerunTx,
    54  			Default: false,
    55  			Changed: true,
    56  			Value:   true,
    57  		},
    58  		&boolFlag{
    59  			Name:    ttypes.FlagDownloadDDS,
    60  			Default: false,
    61  			Changed: true,
    62  			Value:   true,
    63  		},
    64  	})
    65  }
    66  
    67  func getCommandDeliverTxsExecModeSerial(v int) *cobra.Command {
    68  	return getCommand([]universeFlag{
    69  		&intFlag{
    70  			Name:    sm.FlagDeliverTxsExecMode,
    71  			Default: 0,
    72  			Changed: true,
    73  			Value:   v,
    74  		},
    75  	})
    76  }
    77  
    78  func TestCheckStart(t *testing.T) {
    79  	tests := []struct {
    80  		name    string
    81  		cmdFunc func()
    82  		wantErr bool
    83  	}{
    84  		{name: "range-TxsExecModeSerial 0", cmdFunc: func() { getCommandDeliverTxsExecModeSerial(int(state.DeliverTxsExecModeSerial)) }, wantErr: false},
    85  		{name: "range-TxsExecModeSerial 1", cmdFunc: func() { getCommandDeliverTxsExecModeSerial(1) }, wantErr: true},
    86  		{name: "range-TxsExecModeSerial 2", cmdFunc: func() { getCommandDeliverTxsExecModeSerial(state.DeliverTxsExecModeParallel) }, wantErr: false},
    87  		{name: "range-TxsExecModeSerial 3", cmdFunc: func() { getCommandDeliverTxsExecModeSerial(3) }, wantErr: true},
    88  		{name: "1. conflicts --fast-query and --pruning=nothing", cmdFunc: func() { getCommandFastQueryPruningNothing() }, wantErr: true},
    89  		{name: "2. conflicts --enable-preruntx and --download-delta", cmdFunc: func() { getCommandEnablePreruntxDownloadDelta() }, wantErr: true},
    90  		{name: "3. conflicts --node-mod=rpc and --pruning=nothing", cmdFunc: func() { getCommandNodeModeRpcPruningNothing() }, wantErr: true},
    91  	}
    92  	for _, tt := range tests {
    93  		t.Run(tt.name, func(t *testing.T) {
    94  			var err error
    95  			tt.cmdFunc()
    96  			if err = CheckStart(); (err != nil) != tt.wantErr {
    97  				t.Errorf("CheckStart() error = %v, wantErr %v", err, tt.wantErr)
    98  			}
    99  			t.Log(err)
   100  		})
   101  	}
   102  }
   103  
   104  func getCommandNodeModeArchiveFastQuery() *cobra.Command {
   105  	return getCommand([]universeFlag{
   106  		&stringFlag{
   107  			Name:    apptype.FlagNodeMode,
   108  			Default: "",
   109  			Changed: true,
   110  			Value:   string(apptype.ArchiveNode),
   111  		},
   112  		&boolFlag{
   113  			Name:    watcher.FlagFastQuery,
   114  			Default: false,
   115  			Changed: true,
   116  			Value:   true,
   117  		},
   118  	})
   119  }
   120  
   121  func TestCheckStartArchive(t *testing.T) {
   122  	type args struct {
   123  		cmd *cobra.Command
   124  	}
   125  	tests := []struct {
   126  		name    string
   127  		args    args
   128  		wantErr bool
   129  	}{
   130  		{name: "1. conflicts --node-mod=archive and --fast-query", args: args{cmd: getCommandNodeModeArchiveFastQuery()}, wantErr: true},
   131  	}
   132  	for _, tt := range tests {
   133  		t.Run(tt.name, func(t *testing.T) {
   134  			var err error
   135  			if err = CheckStart(); (err != nil) != tt.wantErr {
   136  				t.Errorf("CheckStart() error = %v, wantErr %v", err, tt.wantErr)
   137  			}
   138  			t.Log(err)
   139  		})
   140  	}
   141  }