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 })