| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- package endpoints
- import (
- "fmt"
- "sync"
- "testing"
- "github.com/stretchr/testify/assert"
- )
- func TestMappingResolver_TryResolve(t *testing.T) {
- regionId := "cn-hangzhou"
- productId := "ecs"
- endpoint := GetEndpointFromMap(regionId, productId)
- assert.Equal(t, "", endpoint)
- AddEndpointMapping("cn-hangzhou", "Ecs", "unreachable.aliyuncs.com")
- endpoint = GetEndpointFromMap(regionId, productId)
- assert.Equal(t, "unreachable.aliyuncs.com", endpoint)
- }
- func Test_MappingResolveConcurrent(t *testing.T) {
- current := len(endpointMapping.endpoint)
- cnt := 50
- var wg sync.WaitGroup
- for i := 0; i < cnt; i++ {
- wg.Add(1)
- go func(k int) {
- defer wg.Done()
- endpoint := fmt.Sprintf("ecs#cn-hangzhou%d", k)
- for j := 0; j < 50; j++ {
- err := AddEndpointMapping(fmt.Sprintf("cn-hangzhou%d", k), "ecs", endpoint)
- assert.Nil(t, err)
- assert.Equal(t, endpoint, GetEndpointFromMap(fmt.Sprintf("cn-hangzhou%d", k), "ecs"))
- }
- }(i)
- }
- wg.Wait()
- assert.Equal(t, (current + cnt), len(endpointMapping.endpoint))
- // hit cache and concurrent get
- for i := 0; i < cnt; i++ {
- wg.Add(1)
- go func(k int) {
- defer wg.Done()
- endpoint := fmt.Sprintf("ecs#cn-hangzhou%d", k)
- for j := 0; j < cnt; j++ {
- assert.Equal(t, endpoint, GetEndpointFromMap(fmt.Sprintf("cn-hangzhou%d", k), "ecs"))
- err := AddEndpointMapping(fmt.Sprintf("cn-hangzhou%d", k), "ecs", endpoint)
- assert.Nil(t, err)
- }
- }(i)
- }
- wg.Wait()
- assert.Equal(t, (current + cnt), len(endpointMapping.endpoint))
- }
|