github.com/grafana/synthetic-monitoring-agent@v0.64.2/pkg/pb/synthetic_monitoring/ids_test.go (about) 1 package synthetic_monitoring 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/require" 7 ) 8 9 func TestLocalIDToGlobalID(t *testing.T) { 10 for name, test := range map[string]struct { 11 localID int64 12 regionID int 13 expected int64 14 err error 15 }{ 16 "simple": { 17 localID: 1234, 18 regionID: 3, 19 expected: -1234_003, 20 }, 21 "min": { 22 localID: MinLocalID, 23 regionID: MinRegionID, 24 expected: MaxGlobalID, 25 }, 26 "max": { 27 localID: MaxLocalID, 28 regionID: MaxRegionID, 29 expected: MinGlobalID, 30 }, 31 "bad local ID": { 32 localID: BadID, 33 regionID: 3, 34 err: BadLocalIDError(BadID), 35 }, 36 "global as local": { 37 localID: -1234003, 38 regionID: 1, 39 err: BadLocalIDError(-1234003), 40 }, 41 "bad region ID": { 42 localID: 1234, 43 regionID: BadID, 44 err: BadRegionIDError(BadID), 45 }, 46 "bad region ID 2": { 47 localID: 1234, 48 regionID: MaxRegionID + 1, 49 err: BadRegionIDError(MaxRegionID + 1), 50 }, 51 } { 52 t.Run(name, func(t *testing.T) { 53 result, err := LocalIDToGlobalID(test.localID, test.regionID) 54 require.Equal(t, test.err, err) 55 require.Equal(t, test.expected, result) 56 57 if test.err == nil { 58 require.True(t, IsLocalIDValid(test.localID)) 59 require.True(t, IsRegionIDValid(test.regionID)) 60 require.True(t, IsGlobalIDValid(result)) 61 } else { 62 require.False(t, IsGlobalIDValid(result)) 63 require.False(t, IsLocalIDValid(test.localID) && IsRegionIDValid(test.regionID)) 64 } 65 }) 66 } 67 } 68 69 func TestGlobalIDToLocalID(t *testing.T) { 70 for name, test := range map[string]struct { 71 globalID int64 72 regionID int 73 localID int64 74 err error 75 }{ 76 "simple": { 77 globalID: -1234_003, 78 localID: 1234, 79 regionID: 3, 80 }, 81 "min": { 82 globalID: MaxGlobalID, 83 localID: MinLocalID, 84 regionID: MinRegionID, 85 }, 86 "max": { 87 globalID: MinGlobalID, 88 localID: MaxLocalID, 89 regionID: MaxRegionID, 90 }, 91 "local as global": { 92 globalID: 3, 93 err: BadGlobalIDError(3), 94 }, 95 "invalid global": { 96 globalID: -3000, // Region ID == 0 97 err: BadGlobalIDError(-3000), 98 }, 99 } { 100 t.Run(name, func(t *testing.T) { 101 local, region, err := GlobalIDToLocalID(test.globalID) 102 require.Equal(t, test.err, err) 103 require.Equal(t, test.localID, local) 104 require.Equal(t, test.regionID, region) 105 106 if test.err == nil { 107 require.True(t, IsGlobalIDValid(test.globalID)) 108 require.True(t, IsLocalIDValid(test.localID)) 109 require.True(t, IsRegionIDValid(test.regionID)) 110 111 gID, err2 := LocalIDToGlobalID(local, region) 112 require.NoError(t, err2) 113 require.Equal(t, test.globalID, gID) 114 } else { 115 require.False(t, IsLocalIDValid(test.localID)) 116 require.False(t, IsRegionIDValid(test.regionID)) 117 } 118 }) 119 } 120 }