github.com/grailbio/base@v0.0.11/file/s3file/s3transport/dns_test.go (about) 1 package s3transport 2 3 import ( 4 "fmt" 5 "net" 6 "testing" 7 "time" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestResolver(t *testing.T) { 13 var ( 14 gotHost string 15 stubIP []net.IP 16 stubError error 17 stubNow time.Time 18 ) 19 stubLookupIP := func(host string) ([]net.IP, error) { 20 gotHost = host 21 return stubIP, stubError 22 } 23 r := newResolver(stubLookupIP, func() time.Time { return stubNow }) 24 25 stubIP, stubError = []net.IP{{1, 2, 3, 4}, {10, 20, 30, 40}}, nil 26 stubNow = time.Unix(1600000000, 0) 27 gotIP, gotError := r.LookupIP("s3.example.com") 28 assert.Equal(t, "s3.example.com", gotHost) 29 assert.NoError(t, gotError) 30 assert.Equal(t, []net.IP{{1, 2, 3, 4}, {10, 20, 30, 40}}, gotIP) 31 32 stubIP, stubError = nil, fmt.Errorf("stub err") 33 stubNow = stubNow.Add(dnsCacheTime - 1) 34 gotHost = "should not be called" 35 gotIP, gotError = r.LookupIP("s3.example.com") 36 assert.Equal(t, "should not be called", gotHost) 37 assert.NoError(t, gotError) 38 assert.Equal(t, []net.IP{{1, 2, 3, 4}, {10, 20, 30, 40}}, gotIP) 39 40 stubIP, stubError = []net.IP{{5, 6, 7, 8}}, nil 41 gotIP, gotError = r.LookupIP("s3-us-west-2.example.com") 42 assert.Equal(t, "s3-us-west-2.example.com", gotHost) 43 assert.NoError(t, gotError) 44 assert.Equal(t, []net.IP{{5, 6, 7, 8}}, gotIP) 45 46 stubIP, stubError = []net.IP{{21, 22, 23, 24}}, nil 47 gotHost = "" 48 stubNow = stubNow.Add(2) 49 gotIP, gotError = r.LookupIP("s3.example.com") 50 assert.Equal(t, "s3.example.com", gotHost) 51 assert.NoError(t, gotError) 52 assert.Equal(t, []net.IP{{21, 22, 23, 24}}, gotIP) 53 }