opts_test.go 2.8 KB

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