github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/gossip/keys_test.go (about) 1 // Copyright 2016 The Cockroach Authors. 2 // 3 // Use of this software is governed by the Business Source License 4 // included in the file licenses/BSL.txt. 5 // 6 // As of the Change Date specified in that file, in accordance with 7 // the Business Source License, use of this software will be governed 8 // by the Apache License, Version 2.0, included in the file 9 // licenses/APL.txt. 10 11 package gossip 12 13 import ( 14 "testing" 15 16 "github.com/cockroachdb/cockroach/pkg/roachpb" 17 "github.com/cockroachdb/cockroach/pkg/util/leaktest" 18 ) 19 20 func TestNodeIDFromKey(t *testing.T) { 21 defer leaktest.AfterTest(t)() 22 23 testCases := []struct { 24 key string 25 nodeID roachpb.NodeID 26 success bool 27 }{ 28 {MakeNodeIDKey(0), 0, true}, 29 {MakeNodeIDKey(1), 1, true}, 30 {MakeNodeIDKey(123), 123, true}, 31 {MakeNodeIDKey(123) + "foo", 0, false}, 32 {"foo" + MakeNodeIDKey(123), 0, false}, 33 {KeyNodeIDPrefix, 0, false}, 34 {KeyNodeIDPrefix + ":", 0, false}, 35 {KeyNodeIDPrefix + ":foo", 0, false}, 36 {"123", 0, false}, 37 {MakePrefixPattern(KeyNodeIDPrefix), 0, false}, 38 {MakeNodeLivenessKey(1), 0, false}, 39 {MakeStoreKey(1), 0, false}, 40 } 41 42 for _, tc := range testCases { 43 t.Run(tc.key, func(t *testing.T) { 44 nodeID, err := NodeIDFromKey(tc.key, KeyNodeIDPrefix) 45 if err != nil { 46 if tc.success { 47 t.Errorf("expected success, got error: %s", err) 48 } 49 } else if !tc.success { 50 t.Errorf("expected failure, got nodeID %d", nodeID) 51 } else if nodeID != tc.nodeID { 52 t.Errorf("expected NodeID=%d, got %d", tc.nodeID, nodeID) 53 } 54 }) 55 } 56 } 57 58 func TestStoreIDFromKey(t *testing.T) { 59 defer leaktest.AfterTest(t)() 60 61 testCases := []struct { 62 key string 63 storeID roachpb.StoreID 64 success bool 65 }{ 66 {MakeStoreKey(0), 0, true}, 67 {MakeStoreKey(1), 1, true}, 68 {MakeStoreKey(123), 123, true}, 69 {MakeStoreKey(123) + "foo", 0, false}, 70 {"foo" + MakeStoreKey(123), 0, false}, 71 {KeyStorePrefix, 0, false}, 72 {"123", 0, false}, 73 {MakePrefixPattern(KeyStorePrefix), 0, false}, 74 } 75 76 for _, tc := range testCases { 77 t.Run(tc.key, func(t *testing.T) { 78 storeID, err := StoreIDFromKey(tc.key) 79 if err != nil { 80 if tc.success { 81 t.Errorf("expected success, got error: %s", err) 82 } 83 } else if !tc.success { 84 t.Errorf("expected failure, got storeID %d", storeID) 85 } else if storeID != tc.storeID { 86 t.Errorf("expected StoreID=%d, got %d", tc.storeID, storeID) 87 } 88 }) 89 } 90 }