github.com/grailbio/base@v0.0.11/file/s3file/bucketcache_test.go (about) 1 // Copyright 2018 GRAIL, Inc. All rights reserved. 2 // Use of this source code is governed by the Apache-2.0 3 // license that can be found in the LICENSE file. 4 5 package s3file 6 7 import ( 8 "context" 9 "flag" 10 "testing" 11 12 "github.com/aws/aws-sdk-go/aws" 13 awsrequest "github.com/aws/aws-sdk-go/aws/request" 14 "github.com/aws/aws-sdk-go/service/s3/s3iface" 15 "github.com/grailbio/base/errors" 16 "github.com/stretchr/testify/assert" 17 "github.com/stretchr/testify/require" 18 ) 19 20 var awsFlag = flag.Bool("aws", false, "If true, run tests that access AWS.") 21 22 func TestBucketRegion(t *testing.T) { 23 if !*awsFlag { 24 t.Skipf("skipping %s, pass -aws to run", t.Name()) 25 return 26 } 27 28 ctx := context.Background() 29 region := findBucketRegion(t, ctx, "grail-ccga2-evaluation-runs") 30 require.Equal(t, region, "us-west-2") 31 32 region = findBucketRegion(t, ctx, "grail-test-us-east-1") 33 require.Equal(t, region, "us-east-1") 34 35 region = findBucketRegion(t, ctx, "grail-test-us-east-2") 36 require.Equal(t, region, "us-east-2") 37 } 38 39 func findBucketRegion(t *testing.T, ctx context.Context, bucket string) string { 40 region, err := FindBucketRegion(ctx, bucket) 41 require.NoError(t, err) 42 return region 43 } 44 45 func TestBucketRegionCancellation(t *testing.T) { 46 ctx, cancel := context.WithCancel(context.Background()) 47 cancel() 48 _ = <-ctx.Done() 49 cache := bucketRegionCache{ 50 getBucketRegionWithClient: func(aws.Context, s3iface.S3API, string, ...awsrequest.Option) (string, error) { 51 return "", errors.E(errors.Temporary, "test transient error") 52 }, 53 } 54 _, err := cache.locate(ctx, "grail-ccga2-evaluation-runs") 55 assert.Contains(t, err.Error(), context.Canceled.Error()) 56 }