2
0

status_web_test.go 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package internal
  2. import (
  3. "encoding/json"
  4. "testing"
  5. "time"
  6. . "github.com/smartystreets/goconvey/convey"
  7. )
  8. func TestStatus(t *testing.T) {
  9. Convey("status json ser-de should work", t, func() {
  10. tz := "Asia/Tokyo"
  11. loc, err := time.LoadLocation(tz)
  12. So(err, ShouldBeNil)
  13. t := time.Date(2016, time.April, 16, 23, 8, 10, 0, loc)
  14. m := WebMirrorStatus{
  15. Name: "tunalinux",
  16. Status: Success,
  17. LastUpdate: textTime{t},
  18. LastUpdateTs: stampTime{t},
  19. LastStarted: textTime{t},
  20. LastStartedTs: stampTime{t},
  21. LastEnded: textTime{t},
  22. LastEndedTs: stampTime{t},
  23. Scheduled: textTime{t},
  24. ScheduledTs: stampTime{t},
  25. Size: "5GB",
  26. Upstream: "rsync://mirrors.tuna.tsinghua.edu.cn/tunalinux/",
  27. }
  28. b, err := json.Marshal(m)
  29. So(err, ShouldBeNil)
  30. //fmt.Println(string(b))
  31. var m2 WebMirrorStatus
  32. err = json.Unmarshal(b, &m2)
  33. So(err, ShouldBeNil)
  34. // fmt.Printf("%#v", m2)
  35. So(m2.Name, ShouldEqual, m.Name)
  36. So(m2.Status, ShouldEqual, m.Status)
  37. So(m2.LastUpdate.Unix(), ShouldEqual, m.LastUpdate.Unix())
  38. So(m2.LastUpdateTs.Unix(), ShouldEqual, m.LastUpdate.Unix())
  39. So(m2.LastUpdate.UnixNano(), ShouldEqual, m.LastUpdate.UnixNano())
  40. So(m2.LastUpdateTs.UnixNano(), ShouldEqual, m.LastUpdate.UnixNano())
  41. So(m2.LastStarted.Unix(), ShouldEqual, m.LastStarted.Unix())
  42. So(m2.LastStartedTs.Unix(), ShouldEqual, m.LastStarted.Unix())
  43. So(m2.LastStarted.UnixNano(), ShouldEqual, m.LastStarted.UnixNano())
  44. So(m2.LastStartedTs.UnixNano(), ShouldEqual, m.LastStarted.UnixNano())
  45. So(m2.LastEnded.Unix(), ShouldEqual, m.LastEnded.Unix())
  46. So(m2.LastEndedTs.Unix(), ShouldEqual, m.LastEnded.Unix())
  47. So(m2.LastEnded.UnixNano(), ShouldEqual, m.LastEnded.UnixNano())
  48. So(m2.LastEndedTs.UnixNano(), ShouldEqual, m.LastEnded.UnixNano())
  49. So(m2.Scheduled.Unix(), ShouldEqual, m.Scheduled.Unix())
  50. So(m2.ScheduledTs.Unix(), ShouldEqual, m.Scheduled.Unix())
  51. So(m2.Scheduled.UnixNano(), ShouldEqual, m.Scheduled.UnixNano())
  52. So(m2.ScheduledTs.UnixNano(), ShouldEqual, m.Scheduled.UnixNano())
  53. So(m2.Size, ShouldEqual, m.Size)
  54. So(m2.Upstream, ShouldEqual, m.Upstream)
  55. })
  56. Convey("BuildWebMirrorStatus should work", t, func() {
  57. m := MirrorStatus{
  58. Name: "arch-sync3",
  59. Worker: "testWorker",
  60. IsMaster: true,
  61. Status: Failed,
  62. LastUpdate: time.Now().Add(-time.Minute * 30),
  63. LastStarted: time.Now().Add(-time.Minute * 1),
  64. LastEnded: time.Now(),
  65. Scheduled: time.Now().Add(time.Minute * 5),
  66. Upstream: "mirrors.tuna.tsinghua.edu.cn",
  67. Size: "4GB",
  68. }
  69. var m2 WebMirrorStatus
  70. m2 = BuildWebMirrorStatus(m)
  71. // fmt.Printf("%#v", m2)
  72. So(m2.Name, ShouldEqual, m.Name)
  73. So(m2.Status, ShouldEqual, m.Status)
  74. So(m2.LastUpdate.Unix(), ShouldEqual, m.LastUpdate.Unix())
  75. So(m2.LastUpdateTs.Unix(), ShouldEqual, m.LastUpdate.Unix())
  76. So(m2.LastUpdate.UnixNano(), ShouldEqual, m.LastUpdate.UnixNano())
  77. So(m2.LastUpdateTs.UnixNano(), ShouldEqual, m.LastUpdate.UnixNano())
  78. So(m2.LastStarted.Unix(), ShouldEqual, m.LastStarted.Unix())
  79. So(m2.LastStartedTs.Unix(), ShouldEqual, m.LastStarted.Unix())
  80. So(m2.LastStarted.UnixNano(), ShouldEqual, m.LastStarted.UnixNano())
  81. So(m2.LastStartedTs.UnixNano(), ShouldEqual, m.LastStarted.UnixNano())
  82. So(m2.LastEnded.Unix(), ShouldEqual, m.LastEnded.Unix())
  83. So(m2.LastEndedTs.Unix(), ShouldEqual, m.LastEnded.Unix())
  84. So(m2.LastEnded.UnixNano(), ShouldEqual, m.LastEnded.UnixNano())
  85. So(m2.LastEndedTs.UnixNano(), ShouldEqual, m.LastEnded.UnixNano())
  86. So(m2.Scheduled.Unix(), ShouldEqual, m.Scheduled.Unix())
  87. So(m2.ScheduledTs.Unix(), ShouldEqual, m.Scheduled.Unix())
  88. So(m2.Scheduled.UnixNano(), ShouldEqual, m.Scheduled.UnixNano())
  89. So(m2.ScheduledTs.UnixNano(), ShouldEqual, m.Scheduled.UnixNano())
  90. So(m2.Size, ShouldEqual, m.Size)
  91. So(m2.Upstream, ShouldEqual, m.Upstream)
  92. })
  93. }