hub_test.go 1.5 KB

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