-
Notifications
You must be signed in to change notification settings - Fork 725
/
Copy pathsubnet_test.go
72 lines (56 loc) · 2.81 KB
/
subnet_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Copyright (C) 2019-2023, Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package subnets
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/ava-labs/avalanchego/ids"
"github.com/ava-labs/avalanchego/utils/set"
)
func TestSubnet(t *testing.T) {
require := require.New(t)
myNodeID := ids.GenerateTestNodeID()
chainID0 := ids.GenerateTestID()
chainID1 := ids.GenerateTestID()
chainID2 := ids.GenerateTestID()
s := New(myNodeID, Config{})
s.AddChain(chainID0)
require.False(s.IsBootstrapped(), "A subnet with one chain in bootstrapping shouldn't be considered bootstrapped")
s.Bootstrapped(chainID0)
require.True(s.IsBootstrapped(), "A subnet with only bootstrapped chains should be considered bootstrapped")
s.AddChain(chainID1)
require.False(s.IsBootstrapped(), "A subnet with one chain in bootstrapping shouldn't be considered bootstrapped")
s.AddChain(chainID2)
require.False(s.IsBootstrapped(), "A subnet with one chain in bootstrapping shouldn't be considered bootstrapped")
s.Bootstrapped(chainID1)
require.False(s.IsBootstrapped(), "A subnet with one chain in bootstrapping shouldn't be considered bootstrapped")
s.Bootstrapped(chainID2)
require.True(s.IsBootstrapped(), "A subnet with only bootstrapped chains should be considered bootstrapped")
}
func TestIsAllowed(t *testing.T) {
require := require.New(t)
myNodeID := ids.GenerateTestNodeID()
// Test with no rules
s := New(myNodeID, Config{})
require.True(s.IsAllowed(ids.GenerateTestNodeID(), true), "Validator should be allowed with no rules")
require.True(s.IsAllowed(ids.GenerateTestNodeID(), false), "Non-validator should be allowed with no rules")
// Test with validator only rules
s = New(myNodeID, Config{
ValidatorOnly: true,
})
require.True(s.IsAllowed(ids.GenerateTestNodeID(), true), "Validator should be allowed with validator only rules")
require.True(s.IsAllowed(myNodeID, false), "Self node should be allowed with validator only rules")
require.False(s.IsAllowed(ids.GenerateTestNodeID(), false), "Non-validator should not be allowed with validator only rules")
// Test with validator only rules and allowed nodes
allowedNodeID := ids.GenerateTestNodeID()
s = New(myNodeID, Config{
ValidatorOnly: true,
AllowedNodes: set.Set[ids.NodeID]{
allowedNodeID: struct{}{},
},
})
require.True(s.IsAllowed(allowedNodeID, true), "Validator should be allowed with validator only rules and allowed nodes")
require.True(s.IsAllowed(myNodeID, false), "Self node should be allowed with validator only rules")
require.False(s.IsAllowed(ids.GenerateTestNodeID(), false), "Non-validator should not be allowed with validator only rules and allowed nodes")
require.True(s.IsAllowed(allowedNodeID, true), "Non-validator allowed node should be allowed with validator only rules and allowed nodes")
}