opts_test.go 2.8 KB

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