config_test.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package worker
  2. import (
  3. "io/ioutil"
  4. "os"
  5. "testing"
  6. . "github.com/smartystreets/goconvey/convey"
  7. )
  8. func TestConfig(t *testing.T) {
  9. var cfgBlob = `
  10. [global]
  11. name = "test_worker"
  12. token = "some_token"
  13. log_dir = "/var/log/tunasync"
  14. mirror_dir = "/data/mirrors"
  15. concurrent = 10
  16. interval = 240
  17. [[mirrors]]
  18. name = "AOSP"
  19. provider = "command"
  20. upstream = "https://aosp.google.com/"
  21. interval = 720
  22. mirror_dir = "/data/git/AOSP"
  23. [mirrors.env]
  24. REPO = "/usr/local/bin/aosp-repo"
  25. [[mirrors]]
  26. name = "debian"
  27. provider = "two-stage-rsync"
  28. stage1_profile = "debian"
  29. upstream = "rsync://ftp.debian.org/debian/"
  30. use_ipv6 = true
  31. [[mirrors]]
  32. name = "fedora"
  33. provider = "rsync"
  34. upstream = "rsync://ftp.fedoraproject.org/fedora/"
  35. use_ipv6 = true
  36. exclude_file = "/etc/tunasync.d/fedora-exclude.txt"
  37. `
  38. Convey("When giving invalid file", t, func() {
  39. cfg, err := loadConfig("/path/to/invalid/file")
  40. So(err, ShouldNotBeNil)
  41. So(cfg, ShouldBeNil)
  42. })
  43. Convey("Everything should work on valid config file", t, func() {
  44. tmpfile, err := ioutil.TempFile("", "tunasync")
  45. So(err, ShouldEqual, nil)
  46. defer os.Remove(tmpfile.Name())
  47. err = ioutil.WriteFile(tmpfile.Name(), []byte(cfgBlob), 0644)
  48. So(err, ShouldEqual, nil)
  49. defer tmpfile.Close()
  50. cfg, err := loadConfig(tmpfile.Name())
  51. So(err, ShouldBeNil)
  52. So(cfg.Global.Name, ShouldEqual, "test_worker")
  53. So(cfg.Global.Interval, ShouldEqual, 240)
  54. So(cfg.Global.MirrorDir, ShouldEqual, "/data/mirrors")
  55. m := cfg.Mirrors[0]
  56. So(m.Name, ShouldEqual, "AOSP")
  57. So(m.MirrorDir, ShouldEqual, "/data/git/AOSP")
  58. So(m.Provider, ShouldEqual, ProvCommand)
  59. So(m.Interval, ShouldEqual, 720)
  60. So(m.Env["REPO"], ShouldEqual, "/usr/local/bin/aosp-repo")
  61. m = cfg.Mirrors[1]
  62. So(m.Name, ShouldEqual, "debian")
  63. So(m.MirrorDir, ShouldEqual, "")
  64. So(m.Provider, ShouldEqual, ProvTwoStageRsync)
  65. m = cfg.Mirrors[2]
  66. So(m.Name, ShouldEqual, "fedora")
  67. So(m.MirrorDir, ShouldEqual, "")
  68. So(m.Provider, ShouldEqual, ProvRsync)
  69. So(m.ExcludeFile, ShouldEqual, "/etc/tunasync.d/fedora-exclude.txt")
  70. So(len(cfg.Mirrors), ShouldEqual, 3)
  71. })
  72. }