github.com/kotalco/kotal@v0.3.0/apis/ethereum/v1alpha1/node_defaulting_webhook_test.go (about)

     1  package v1alpha1
     2  
     3  import (
     4  	. "github.com/onsi/ginkgo/v2"
     5  	. "github.com/onsi/gomega"
     6  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     7  )
     8  
     9  var _ = Describe("Ethereum defaulting", func() {
    10  	It("Should default nodes joining mainnet", func() {
    11  		node1 := Node{
    12  			ObjectMeta: metav1.ObjectMeta{
    13  				Name: "node-1",
    14  			},
    15  			Spec: NodeSpec{
    16  				Client:  BesuClient,
    17  				Network: MainNetwork,
    18  				Engine:  true,
    19  			},
    20  		}
    21  
    22  		node2 := Node{
    23  			ObjectMeta: metav1.ObjectMeta{
    24  				Name: "node-2",
    25  			},
    26  			Spec: NodeSpec{
    27  				Client:   NethermindClient,
    28  				Network:  MainNetwork,
    29  				SyncMode: FullSynchronization,
    30  			},
    31  		}
    32  
    33  		node1.Default()
    34  		node2.Default()
    35  
    36  		// node1 defaulting
    37  		Expect(node1.Spec.Image).To(Equal(DefaultBesuImage))
    38  		Expect(*node1.Spec.Replicas).To(Equal(DefaltReplicas))
    39  		Expect(node1.Spec.EnginePort).To(Equal(DefaultEngineRPCPort))
    40  		Expect(node1.Spec.P2PPort).To(Equal(DefaultP2PPort))
    41  		Expect(node1.Spec.SyncMode).To(Equal(DefaultPublicNetworkSyncMode))
    42  		Expect(node1.Spec.Resources.CPU).To(Equal(DefaultPublicNetworkNodeCPURequest))
    43  		Expect(node1.Spec.Resources.CPULimit).To(Equal(DefaultPublicNetworkNodeCPULimit))
    44  		Expect(node1.Spec.Resources.Memory).To(Equal(DefaultPublicNetworkNodeMemoryRequest))
    45  		Expect(node1.Spec.Resources.MemoryLimit).To(Equal(DefaultPublicNetworkNodeMemoryLimit))
    46  		Expect(node1.Spec.Resources.Storage).To(Equal(DefaultMainNetworkFastNodeStorageRequest))
    47  		Expect(node1.Spec.Logging).To(Equal(DefaultLogging))
    48  		// node2 defaulting
    49  		Expect(node2.Spec.Image).To(Equal(DefaultNethermindImage))
    50  		Expect(*node2.Spec.Replicas).To(Equal(DefaltReplicas))
    51  		Expect(node2.Spec.P2PPort).To(Equal(DefaultP2PPort))
    52  		Expect(node2.Spec.SyncMode).To(Equal(FullSynchronization))
    53  		Expect(node2.Spec.Resources.CPU).To(Equal(DefaultPublicNetworkNodeCPURequest))
    54  		Expect(node2.Spec.Resources.CPULimit).To(Equal(DefaultPublicNetworkNodeCPULimit))
    55  		Expect(node2.Spec.Resources.Memory).To(Equal(DefaultPublicNetworkNodeMemoryRequest))
    56  		Expect(node2.Spec.Resources.MemoryLimit).To(Equal(DefaultPublicNetworkNodeMemoryLimit))
    57  		Expect(node2.Spec.Resources.Storage).To(Equal(DefaultMainNetworkFullNodeStorageRequest))
    58  		Expect(node2.Spec.Logging).To(Equal(DefaultLogging))
    59  
    60  	})
    61  
    62  	It("Should default nodes joining goerli", func() {
    63  
    64  		node := Node{
    65  			ObjectMeta: metav1.ObjectMeta{
    66  				Name: "node-1",
    67  			},
    68  			Spec: NodeSpec{
    69  				Client:  BesuClient,
    70  				Network: GoerliNetwork,
    71  			},
    72  		}
    73  
    74  		node.Default()
    75  		Expect(node.Spec.P2PPort).To(Equal(DefaultP2PPort))
    76  		Expect(node.Spec.SyncMode).To(Equal(DefaultPublicNetworkSyncMode))
    77  		Expect(node.Spec.Resources.CPU).To(Equal(DefaultPublicNetworkNodeCPURequest))
    78  		Expect(node.Spec.Resources.CPULimit).To(Equal(DefaultPublicNetworkNodeCPULimit))
    79  		Expect(node.Spec.Resources.Memory).To(Equal(DefaultPublicNetworkNodeMemoryRequest))
    80  		Expect(node.Spec.Resources.MemoryLimit).To(Equal(DefaultPublicNetworkNodeMemoryLimit))
    81  		Expect(node.Spec.Resources.Storage).To(Equal(DefaultTestNetworkStorageRequest))
    82  		Expect(node.Spec.Logging).To(Equal(DefaultLogging))
    83  	})
    84  
    85  	It("Should default geth node joining goerli", func() {
    86  
    87  		node := Node{
    88  			ObjectMeta: metav1.ObjectMeta{
    89  				Name: "node-1",
    90  			},
    91  			Spec: NodeSpec{
    92  				Client:  GethClient,
    93  				Network: GoerliNetwork,
    94  			},
    95  		}
    96  
    97  		node.Default()
    98  		Expect(node.Spec.Image).To(Equal(DefaultGethImage))
    99  		Expect(*node.Spec.Replicas).To(Equal(DefaltReplicas))
   100  		Expect(node.Spec.P2PPort).To(Equal(DefaultP2PPort))
   101  		Expect(node.Spec.SyncMode).To(Equal(SnapSynchronization))
   102  		Expect(node.Spec.Resources.CPU).To(Equal(DefaultPublicNetworkNodeCPURequest))
   103  		Expect(node.Spec.Resources.CPULimit).To(Equal(DefaultPublicNetworkNodeCPULimit))
   104  		Expect(node.Spec.Resources.Memory).To(Equal(DefaultPublicNetworkNodeMemoryRequest))
   105  		Expect(node.Spec.Resources.MemoryLimit).To(Equal(DefaultPublicNetworkNodeMemoryLimit))
   106  		Expect(node.Spec.Resources.Storage).To(Equal(DefaultTestNetworkStorageRequest))
   107  		Expect(node.Spec.Logging).To(Equal(DefaultLogging))
   108  	})
   109  
   110  	It("Should default nodes joining network pow consensus", func() {
   111  		node := Node{
   112  			ObjectMeta: metav1.ObjectMeta{
   113  				Name: "node-1",
   114  			},
   115  			Spec: NodeSpec{
   116  				Genesis: &Genesis{
   117  					ChainID:   55555,
   118  					NetworkID: 55555,
   119  					Ethash:    &Ethash{},
   120  				},
   121  				Client: BesuClient,
   122  			},
   123  		}
   124  
   125  		node.Default()
   126  		var block0 uint = 0
   127  		Expect(node.Spec.P2PPort).To(Equal(DefaultP2PPort))
   128  		Expect(node.Spec.SyncMode).To(Equal(DefaultPrivateNetworkSyncMode))
   129  		Expect(node.Spec.Resources.CPU).To(Equal(DefaultPrivateNetworkNodeCPURequest))
   130  		Expect(node.Spec.Resources.CPULimit).To(Equal(DefaultPrivateNetworkNodeCPULimit))
   131  		Expect(node.Spec.Resources.Memory).To(Equal(DefaultPrivateNetworkNodeMemoryRequest))
   132  		Expect(node.Spec.Resources.MemoryLimit).To(Equal(DefaultPrivateNetworkNodeMemoryLimit))
   133  		Expect(node.Spec.Resources.Storage).To(Equal(DefaultPrivateNetworkNodeStorageRequest))
   134  		Expect(node.Spec.Logging).To(Equal(DefaultLogging))
   135  		// genesis defaulting
   136  		Expect(node.Spec.Genesis.Coinbase).To(Equal(DefaultCoinbase))
   137  		Expect(node.Spec.Genesis.MixHash).To(Equal(DefaultMixHash))
   138  		Expect(node.Spec.Genesis.Difficulty).To(Equal(DefaultDifficulty))
   139  		Expect(node.Spec.Genesis.GasLimit).To(Equal(DefaultGasLimit))
   140  		Expect(node.Spec.Genesis.Nonce).To(Equal(DefaultNonce))
   141  		Expect(node.Spec.Genesis.Timestamp).To(Equal(DefaultTimestamp))
   142  		// forks defaulting
   143  		Expect(node.Spec.Genesis.Forks.Homestead).To(Equal(block0))
   144  		Expect(node.Spec.Genesis.Forks.DAO).To(BeNil())
   145  		Expect(node.Spec.Genesis.Forks.EIP150).To(Equal(block0))
   146  		Expect(node.Spec.Genesis.Forks.EIP155).To(Equal(block0))
   147  		Expect(node.Spec.Genesis.Forks.EIP158).To(Equal(block0))
   148  		Expect(node.Spec.Genesis.Forks.Byzantium).To(Equal(block0))
   149  		Expect(node.Spec.Genesis.Forks.Constantinople).To(Equal(block0))
   150  		Expect(node.Spec.Genesis.Forks.Petersburg).To(Equal(block0))
   151  		Expect(node.Spec.Genesis.Forks.Istanbul).To(Equal(block0))
   152  		Expect(node.Spec.Genesis.Forks.MuirGlacier).To(Equal(block0))
   153  		Expect(node.Spec.Genesis.Forks.Berlin).To(Equal(block0))
   154  		Expect(node.Spec.Genesis.Forks.London).To(Equal(block0))
   155  	})
   156  
   157  	It("Should default nodes joining network with poa consensus", func() {
   158  		node := Node{
   159  			ObjectMeta: metav1.ObjectMeta{
   160  				Name: "node-1",
   161  			},
   162  			Spec: NodeSpec{
   163  				Genesis: &Genesis{
   164  					ChainID:   55555,
   165  					NetworkID: 55555,
   166  					Clique:    &Clique{},
   167  				},
   168  				Client: BesuClient,
   169  				RPC:    true,
   170  			},
   171  		}
   172  
   173  		node.Default()
   174  		var block0 uint = 0
   175  		Expect(node.Spec.P2PPort).To(Equal(DefaultP2PPort))
   176  		Expect(node.Spec.SyncMode).To(Equal(DefaultPrivateNetworkSyncMode))
   177  		Expect(node.Spec.Hosts).To(Equal(DefaultOrigins))
   178  		Expect(node.Spec.CORSDomains).To(Equal(DefaultOrigins))
   179  		Expect(node.Spec.RPCPort).To(Equal(DefaultRPCPort))
   180  		Expect(node.Spec.RPCAPI).To(Equal(DefaultAPIs))
   181  		Expect(node.Spec.Resources.CPU).To(Equal(DefaultPrivateNetworkNodeCPURequest))
   182  		Expect(node.Spec.Resources.CPULimit).To(Equal(DefaultPrivateNetworkNodeCPULimit))
   183  		Expect(node.Spec.Resources.Memory).To(Equal(DefaultPrivateNetworkNodeMemoryRequest))
   184  		Expect(node.Spec.Resources.MemoryLimit).To(Equal(DefaultPrivateNetworkNodeMemoryLimit))
   185  		Expect(node.Spec.Resources.Storage).To(Equal(DefaultPrivateNetworkNodeStorageRequest))
   186  		Expect(node.Spec.Logging).To(Equal(DefaultLogging))
   187  		// genesis defaulting
   188  		Expect(node.Spec.Genesis.Coinbase).To(Equal(DefaultCoinbase))
   189  		Expect(node.Spec.Genesis.MixHash).To(Equal(DefaultMixHash))
   190  		Expect(node.Spec.Genesis.Difficulty).To(Equal(DefaultDifficulty))
   191  		Expect(node.Spec.Genesis.GasLimit).To(Equal(DefaultGasLimit))
   192  		Expect(node.Spec.Genesis.Nonce).To(Equal(DefaultNonce))
   193  		Expect(node.Spec.Genesis.Timestamp).To(Equal(DefaultTimestamp))
   194  		// forks defaulting
   195  		Expect(node.Spec.Genesis.Forks.Homestead).To(Equal(block0))
   196  		Expect(node.Spec.Genesis.Forks.DAO).To(BeNil())
   197  		Expect(node.Spec.Genesis.Forks.EIP150).To(Equal(block0))
   198  		Expect(node.Spec.Genesis.Forks.EIP155).To(Equal(block0))
   199  		Expect(node.Spec.Genesis.Forks.EIP158).To(Equal(block0))
   200  		Expect(node.Spec.Genesis.Forks.Byzantium).To(Equal(block0))
   201  		Expect(node.Spec.Genesis.Forks.Constantinople).To(Equal(block0))
   202  		Expect(node.Spec.Genesis.Forks.Petersburg).To(Equal(block0))
   203  		Expect(node.Spec.Genesis.Forks.Istanbul).To(Equal(block0))
   204  		Expect(node.Spec.Genesis.Forks.MuirGlacier).To(Equal(block0))
   205  		Expect(node.Spec.Genesis.Forks.Berlin).To(Equal(block0))
   206  		Expect(node.Spec.Genesis.Forks.London).To(Equal(block0))
   207  		// clique defaulting
   208  		Expect(node.Spec.Genesis.Clique.BlockPeriod).To(Equal(DefaultCliqueBlockPeriod))
   209  		Expect(node.Spec.Genesis.Clique.EpochLength).To(Equal(DefaultCliqueEpochLength))
   210  	})
   211  
   212  	It("Should default nodes joining network with ibft2 consensus", func() {
   213  		node := Node{
   214  			ObjectMeta: metav1.ObjectMeta{
   215  				Name: "node-1",
   216  			},
   217  			Spec: NodeSpec{
   218  				Genesis: &Genesis{
   219  					ChainID:   55555,
   220  					NetworkID: 55555,
   221  					IBFT2:     &IBFT2{},
   222  				},
   223  				Client:  BesuClient,
   224  				WS:      true,
   225  				GraphQL: true,
   226  			},
   227  		}
   228  
   229  		node.Default()
   230  		var block0 uint = 0
   231  		Expect(node.Spec.P2PPort).To(Equal(DefaultP2PPort))
   232  		Expect(node.Spec.SyncMode).To(Equal(DefaultPrivateNetworkSyncMode))
   233  		Expect(node.Spec.Hosts).To(Equal(DefaultOrigins))
   234  		Expect(node.Spec.CORSDomains).To(Equal(DefaultOrigins))
   235  		Expect(node.Spec.WSPort).To(Equal(DefaultWSPort))
   236  		Expect(node.Spec.WSAPI).To(Equal(DefaultAPIs))
   237  		Expect(node.Spec.GraphQLPort).To(Equal(DefaultGraphQLPort))
   238  		Expect(node.Spec.Resources.CPU).To(Equal(DefaultPrivateNetworkNodeCPURequest))
   239  		Expect(node.Spec.Resources.CPULimit).To(Equal(DefaultPrivateNetworkNodeCPULimit))
   240  		Expect(node.Spec.Resources.Memory).To(Equal(DefaultPrivateNetworkNodeMemoryRequest))
   241  		Expect(node.Spec.Resources.MemoryLimit).To(Equal(DefaultPrivateNetworkNodeMemoryLimit))
   242  		Expect(node.Spec.Resources.Storage).To(Equal(DefaultPrivateNetworkNodeStorageRequest))
   243  		Expect(node.Spec.Logging).To(Equal(DefaultLogging))
   244  		// genesis defaulting
   245  		Expect(node.Spec.Genesis.Coinbase).To(Equal(DefaultCoinbase))
   246  		Expect(node.Spec.Genesis.MixHash).To(Equal(DefaultMixHash))
   247  		Expect(node.Spec.Genesis.Difficulty).To(Equal(DefaultDifficulty))
   248  		Expect(node.Spec.Genesis.GasLimit).To(Equal(DefaultGasLimit))
   249  		Expect(node.Spec.Genesis.Nonce).To(Equal(DefaultNonce))
   250  		Expect(node.Spec.Genesis.Timestamp).To(Equal(DefaultTimestamp))
   251  		// forks defaulting
   252  		Expect(node.Spec.Genesis.Forks.Homestead).To(Equal(block0))
   253  		Expect(node.Spec.Genesis.Forks.DAO).To(BeNil())
   254  		Expect(node.Spec.Genesis.Forks.EIP150).To(Equal(block0))
   255  		Expect(node.Spec.Genesis.Forks.EIP155).To(Equal(block0))
   256  		Expect(node.Spec.Genesis.Forks.EIP158).To(Equal(block0))
   257  		Expect(node.Spec.Genesis.Forks.Byzantium).To(Equal(block0))
   258  		Expect(node.Spec.Genesis.Forks.Constantinople).To(Equal(block0))
   259  		Expect(node.Spec.Genesis.Forks.Petersburg).To(Equal(block0))
   260  		Expect(node.Spec.Genesis.Forks.Istanbul).To(Equal(block0))
   261  		Expect(node.Spec.Genesis.Forks.MuirGlacier).To(Equal(block0))
   262  		Expect(node.Spec.Genesis.Forks.Berlin).To(Equal(block0))
   263  		Expect(node.Spec.Genesis.Forks.London).To(Equal(block0))
   264  		// IBFT2 defaulting
   265  		Expect(node.Spec.Genesis.IBFT2.BlockPeriod).To(Equal(DefaultIBFT2BlockPeriod))
   266  		Expect(node.Spec.Genesis.IBFT2.EpochLength).To(Equal(DefaultIBFT2EpochLength))
   267  		Expect(node.Spec.Genesis.IBFT2.RequestTimeout).To(Equal(DefaultIBFT2RequestTimeout))
   268  		Expect(node.Spec.Genesis.IBFT2.MessageQueueLimit).To(Equal(DefaultIBFT2MessageQueueLimit))
   269  		Expect(node.Spec.Genesis.IBFT2.DuplicateMessageLimit).To(Equal(DefaultIBFT2DuplicateMessageLimit))
   270  		Expect(node.Spec.Genesis.IBFT2.FutureMessagesLimit).To(Equal(DefaultIBFT2FutureMessagesLimit))
   271  		Expect(node.Spec.Genesis.IBFT2.FutureMessagesMaxDistance).To(Equal(DefaultIBFT2FutureMessagesMaxDistance))
   272  	})
   273  })