hub_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package circolog
  2. import (
  3. "testing"
  4. "gopkg.in/mcuadros/go-syslog.v2/format"
  5. )
  6. func msg(s string) format.LogParts {
  7. return format.LogParts{"text": s}
  8. }
  9. func hubCount(h Hub) int {
  10. return len(hubToArray(h))
  11. }
  12. var DefaultClient ClientOptions = ClientOptions{Nofollow: true, BacklogLength: -1}
  13. func hubToArrayOpt(h Hub, opt ClientOptions) []string {
  14. r := make([]string, 0)
  15. cl := Client{Options: opt}
  16. cl.Messages = make(chan format.LogParts)
  17. h.Register <- cl
  18. for m := range cl.Messages {
  19. r = append(r, m["text"].(string))
  20. }
  21. return r
  22. }
  23. func hubToArray(h Hub) []string {
  24. return hubToArrayOpt(h, DefaultClient)
  25. }
  26. func TestSingle(t *testing.T) {
  27. h := NewHub(5)
  28. go h.Run()
  29. h.LogMessages <- msg("hi")
  30. if hubCount(h) != 1 {
  31. t.Error("wrong message number")
  32. }
  33. }
  34. func TestMany(t *testing.T) {
  35. h := NewHub(5)
  36. go h.Run()
  37. for i := 0; i < 10; i++ {
  38. h.LogMessages <- msg("hi")
  39. }
  40. if hubCount(h) != 5 {
  41. t.Error("wrong message number")
  42. }
  43. }
  44. func TestOrder(t *testing.T) {
  45. h := NewHub(5)
  46. go h.Run()
  47. h.LogMessages <- msg("one")
  48. h.LogMessages <- msg("two")
  49. r := hubToArray(h)
  50. if r[0] != "one" {
  51. t.Error("wrong first message", r[0])
  52. }
  53. if r[1] != "two" {
  54. t.Error("wrong last message", r[1])
  55. }
  56. }
  57. func TestLimit(t *testing.T) {
  58. h := NewHub(5)
  59. go h.Run()
  60. for i := 0; i < 10; i++ {
  61. h.LogMessages <- msg("hi")
  62. }
  63. if hubCount(h) != 5 {
  64. t.Error("wrong message number")
  65. }
  66. r := hubToArrayOpt(h, ClientOptions{Nofollow: true, BacklogLength: 3})
  67. if len(r) != 3 {
  68. t.Error("non-limited!", r)
  69. }
  70. }