online_test.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package online
  2. import (
  3. "reflect"
  4. "testing"
  5. "time"
  6. )
  7. var testid = "test"
  8. func checkOnlineStatus(t *testing.T, mgr *Manager, status Status) {
  9. readstatus, err := mgr.GetStatus(testid)
  10. if err != nil {
  11. t.Error(err)
  12. }
  13. if readstatus == nil {
  14. t.Errorf("device should be online, but is offline.")
  15. }
  16. if !reflect.DeepEqual(status, *readstatus) {
  17. t.Errorf("get status test error, want %v, got %v", status, *readstatus)
  18. }
  19. }
  20. func checkOfflineStatus(t *testing.T, mgr *Manager) {
  21. readstatus, err := mgr.GetStatus(testid)
  22. if err != nil {
  23. t.Error(err)
  24. }
  25. if readstatus != nil {
  26. t.Errorf("device should be offline, but got status: %v", readstatus)
  27. }
  28. }
  29. func TestManager(t *testing.T) {
  30. mgr := NewManager("127.0.0.1", 6379, 1)
  31. status := Status{
  32. ClientIP: "3.3.3.3",
  33. AccessRPCHost: "192.168.9.1:20030",
  34. HeartbeatInterval: 2,
  35. }
  36. err := mgr.GetOnline(testid, status)
  37. if err != nil {
  38. t.Error(err)
  39. }
  40. checkOnlineStatus(t, mgr, status)
  41. cnt := 0
  42. for {
  43. time.Sleep(time.Second * 2)
  44. if cnt > 2 {
  45. break
  46. }
  47. err := mgr.SetHeartbeat(testid)
  48. if err != nil {
  49. t.Error(err)
  50. }
  51. cnt++
  52. }
  53. checkOnlineStatus(t, mgr, status)
  54. err = mgr.GetOffline(testid)
  55. if err != nil {
  56. t.Error(err)
  57. }
  58. checkOfflineStatus(t, mgr)
  59. }