builder_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package config
  2. import (
  3. "testing"
  4. "github.com/docker/docker/api/types/filters"
  5. "github.com/google/go-cmp/cmp"
  6. "gotest.tools/v3/assert"
  7. "gotest.tools/v3/fs"
  8. )
  9. func TestBuilderGC(t *testing.T) {
  10. tempFile := fs.NewFile(t, "config", fs.WithContent(`{
  11. "builder": {
  12. "gc": {
  13. "enabled": true,
  14. "policy": [
  15. {"keepStorage": "10GB", "filter": ["unused-for=2200h"]},
  16. {"keepStorage": "50GB", "filter": {"unused-for": {"3300h": true}}},
  17. {"keepStorage": "100GB", "all": true}
  18. ]
  19. }
  20. }
  21. }`))
  22. defer tempFile.Remove()
  23. configFile := tempFile.Path()
  24. cfg, err := MergeDaemonConfigurations(&Config{}, nil, configFile)
  25. assert.NilError(t, err)
  26. assert.Assert(t, cfg.Builder.GC.Enabled)
  27. f1 := filters.NewArgs()
  28. f1.Add("unused-for", "2200h")
  29. f2 := filters.NewArgs()
  30. f2.Add("unused-for", "3300h")
  31. expectedPolicy := []BuilderGCRule{
  32. {KeepStorage: "10GB", Filter: BuilderGCFilter(f1)},
  33. {KeepStorage: "50GB", Filter: BuilderGCFilter(f2)}, /* parsed from deprecated form */
  34. {KeepStorage: "100GB", All: true},
  35. }
  36. assert.DeepEqual(t, cfg.Builder.GC.Policy, expectedPolicy, cmp.AllowUnexported(BuilderGCFilter{}))
  37. // double check to please the skeptics
  38. assert.Assert(t, filters.Args(cfg.Builder.GC.Policy[0].Filter).UniqueExactMatch("unused-for", "2200h"))
  39. assert.Assert(t, filters.Args(cfg.Builder.GC.Policy[1].Filter).UniqueExactMatch("unused-for", "3300h"))
  40. }