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  }