github.com/openshift/moby-moby@v1.13.2-0.20170601211448-f5ec1e2936dc/cli/command/service/opts_test.go (about) 1 package service 2 3 import ( 4 "reflect" 5 "testing" 6 "time" 7 8 "github.com/docker/docker/api/types/container" 9 "github.com/docker/docker/opts" 10 "github.com/docker/docker/pkg/testutil/assert" 11 ) 12 13 func TestMemBytesString(t *testing.T) { 14 var mem memBytes = 1048576 15 assert.Equal(t, mem.String(), "1 MiB") 16 } 17 18 func TestMemBytesSetAndValue(t *testing.T) { 19 var mem memBytes 20 assert.NilError(t, mem.Set("5kb")) 21 assert.Equal(t, mem.Value(), int64(5120)) 22 } 23 24 func TestNanoCPUsString(t *testing.T) { 25 var cpus opts.NanoCPUs = 6100000000 26 assert.Equal(t, cpus.String(), "6.100") 27 } 28 29 func TestNanoCPUsSetAndValue(t *testing.T) { 30 var cpus opts.NanoCPUs 31 assert.NilError(t, cpus.Set("0.35")) 32 assert.Equal(t, cpus.Value(), int64(350000000)) 33 } 34 35 func TestDurationOptString(t *testing.T) { 36 dur := time.Duration(300 * 10e8) 37 duration := DurationOpt{value: &dur} 38 assert.Equal(t, duration.String(), "5m0s") 39 } 40 41 func TestDurationOptSetAndValue(t *testing.T) { 42 var duration DurationOpt 43 assert.NilError(t, duration.Set("300s")) 44 assert.Equal(t, *duration.Value(), time.Duration(300*10e8)) 45 assert.NilError(t, duration.Set("-300s")) 46 assert.Equal(t, *duration.Value(), time.Duration(-300*10e8)) 47 } 48 49 func TestPositiveDurationOptSetAndValue(t *testing.T) { 50 var duration PositiveDurationOpt 51 assert.NilError(t, duration.Set("300s")) 52 assert.Equal(t, *duration.Value(), time.Duration(300*10e8)) 53 assert.Error(t, duration.Set("-300s"), "cannot be negative") 54 } 55 56 func TestUint64OptString(t *testing.T) { 57 value := uint64(2345678) 58 opt := Uint64Opt{value: &value} 59 assert.Equal(t, opt.String(), "2345678") 60 61 opt = Uint64Opt{} 62 assert.Equal(t, opt.String(), "") 63 } 64 65 func TestUint64OptSetAndValue(t *testing.T) { 66 var opt Uint64Opt 67 assert.NilError(t, opt.Set("14445")) 68 assert.Equal(t, *opt.Value(), uint64(14445)) 69 } 70 71 func TestHealthCheckOptionsToHealthConfig(t *testing.T) { 72 dur := time.Second 73 opt := healthCheckOptions{ 74 cmd: "curl", 75 interval: PositiveDurationOpt{DurationOpt{value: &dur}}, 76 timeout: PositiveDurationOpt{DurationOpt{value: &dur}}, 77 retries: 10, 78 } 79 config, err := opt.toHealthConfig() 80 assert.NilError(t, err) 81 assert.Equal(t, reflect.DeepEqual(config, &container.HealthConfig{ 82 Test: []string{"CMD-SHELL", "curl"}, 83 Interval: time.Second, 84 Timeout: time.Second, 85 Retries: 10, 86 }), true) 87 } 88 89 func TestHealthCheckOptionsToHealthConfigNoHealthcheck(t *testing.T) { 90 opt := healthCheckOptions{ 91 noHealthcheck: true, 92 } 93 config, err := opt.toHealthConfig() 94 assert.NilError(t, err) 95 assert.Equal(t, reflect.DeepEqual(config, &container.HealthConfig{ 96 Test: []string{"NONE"}, 97 }), true) 98 } 99 100 func TestHealthCheckOptionsToHealthConfigConflict(t *testing.T) { 101 opt := healthCheckOptions{ 102 cmd: "curl", 103 noHealthcheck: true, 104 } 105 _, err := opt.toHealthConfig() 106 assert.Error(t, err, "--no-healthcheck conflicts with --health-* options") 107 }