github.phpd.cn/hashicorp/packer@v1.3.2/builder/amazon/common/state_test.go (about) 1 package common 2 3 import ( 4 "reflect" 5 "testing" 6 "time" 7 8 "github.com/aws/aws-sdk-go/aws/request" 9 ) 10 11 func testGetWaiterOptions(t *testing.T) { 12 // no vars are set 13 envValues := overridableWaitVars{ 14 envInfo{"AWS_POLL_DELAY_SECONDS", 2, false}, 15 envInfo{"AWS_MAX_ATTEMPTS", 0, false}, 16 envInfo{"AWS_TIMEOUT_SECONDS", 300, false}, 17 } 18 options := applyEnvOverrides(envValues) 19 if len(options) > 0 { 20 t.Fatalf("Did not expect any waiter options to be generated; actual: %#v", options) 21 } 22 23 // all vars are set 24 envValues = overridableWaitVars{ 25 envInfo{"AWS_POLL_DELAY_SECONDS", 1, true}, 26 envInfo{"AWS_MAX_ATTEMPTS", 800, true}, 27 envInfo{"AWS_TIMEOUT_SECONDS", 20, true}, 28 } 29 options = applyEnvOverrides(envValues) 30 expected := []request.WaiterOption{ 31 request.WithWaiterDelay(request.ConstantWaiterDelay(time.Duration(1) * time.Second)), 32 request.WithWaiterMaxAttempts(800), 33 } 34 if !reflect.DeepEqual(options, expected) { 35 t.Fatalf("expected != actual!! Expected: %#v; Actual: %#v.", expected, options) 36 } 37 38 // poll delay is not set 39 envValues = overridableWaitVars{ 40 envInfo{"AWS_POLL_DELAY_SECONDS", 2, false}, 41 envInfo{"AWS_MAX_ATTEMPTS", 800, true}, 42 envInfo{"AWS_TIMEOUT_SECONDS", 300, false}, 43 } 44 options = applyEnvOverrides(envValues) 45 expected = []request.WaiterOption{ 46 request.WithWaiterMaxAttempts(800), 47 } 48 if !reflect.DeepEqual(options, expected) { 49 t.Fatalf("expected != actual!! Expected: %#v; Actual: %#v.", expected, options) 50 } 51 52 // poll delay is not set but timeout seconds is 53 envValues = overridableWaitVars{ 54 envInfo{"AWS_POLL_DELAY_SECONDS", 2, false}, 55 envInfo{"AWS_MAX_ATTEMPTS", 0, false}, 56 envInfo{"AWS_TIMEOUT_SECONDS", 20, true}, 57 } 58 options = applyEnvOverrides(envValues) 59 expected = []request.WaiterOption{ 60 request.WithWaiterDelay(request.ConstantWaiterDelay(time.Duration(2) * time.Second)), 61 request.WithWaiterMaxAttempts(10), 62 } 63 if !reflect.DeepEqual(options, expected) { 64 t.Fatalf("expected != actual!! Expected: %#v; Actual: %#v.", expected, options) 65 } 66 }