github.com/MetalBlockchain/metalgo@v1.11.9/subnets/config_test.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package subnets 5 6 import ( 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 11 "github.com/MetalBlockchain/metalgo/ids" 12 "github.com/MetalBlockchain/metalgo/snow/consensus/snowball" 13 "github.com/MetalBlockchain/metalgo/utils/set" 14 ) 15 16 var validParameters = snowball.Parameters{ 17 K: 1, 18 AlphaPreference: 1, 19 AlphaConfidence: 1, 20 Beta: 1, 21 ConcurrentRepolls: 1, 22 OptimalProcessing: 1, 23 MaxOutstandingItems: 1, 24 MaxItemProcessingTime: 1, 25 } 26 27 func TestValid(t *testing.T) { 28 tests := []struct { 29 name string 30 s Config 31 expectedErr error 32 }{ 33 { 34 name: "invalid consensus parameters", 35 s: Config{ 36 ConsensusParameters: snowball.Parameters{ 37 K: 2, 38 AlphaPreference: 1, 39 }, 40 }, 41 expectedErr: snowball.ErrParametersInvalid, 42 }, 43 { 44 name: "invalid allowed node IDs", 45 s: Config{ 46 AllowedNodes: set.Of(ids.GenerateTestNodeID()), 47 ValidatorOnly: false, 48 ConsensusParameters: validParameters, 49 }, 50 expectedErr: errAllowedNodesWhenNotValidatorOnly, 51 }, 52 { 53 name: "valid", 54 s: Config{ 55 ConsensusParameters: validParameters, 56 ValidatorOnly: false, 57 }, 58 expectedErr: nil, 59 }, 60 } 61 for _, tt := range tests { 62 t.Run(tt.name, func(t *testing.T) { 63 err := tt.s.Valid() 64 require.ErrorIs(t, err, tt.expectedErr) 65 }) 66 } 67 }