github.com/olljanat/moby@v1.13.1/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  }