1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package online
- import (
- "github.com/garyburd/redigo/redis"
- "reflect"
- "testing"
- "time"
- )
- var testid = uint64(100)
- func checkOnlineStatus(t *testing.T, mgr *Manager, status Status) {
- readstatus, err := mgr.GetStatus(testid)
- if err != nil && err != redis.ErrNil {
- t.Error(err)
- }
- if readstatus == nil {
- t.Errorf("device should be online, but is offline.")
- }
- if !reflect.DeepEqual(status, *readstatus) {
- t.Errorf("get status test error, want %v, got %v", status, *readstatus)
- }
- }
- func checkOfflineStatus(t *testing.T, mgr *Manager) {
- readstatus, err := mgr.GetStatus(testid)
- if err != nil && err != redis.ErrNil {
- t.Error(err)
- }
- if readstatus != nil {
- t.Errorf("device should be offline, but got status: %v", readstatus)
- }
- }
- func TestManager(t *testing.T) {
- mgr := NewManager("localhost:6379")
- status := Status{
- ClientIP: "3.3.3.3",
- AccessRPCHost: "192.168.9.1:20030",
- HeartbeatInterval: 2,
- }
- err := mgr.GetOnline(testid, status)
- if err != nil {
- t.Error(err)
- }
- checkOnlineStatus(t, mgr, status)
- cnt := 0
- for {
- time.Sleep(time.Second * 2)
- if cnt > 2 {
- break
- }
- err := mgr.SetHeartbeat(testid)
- if err != nil {
- t.Error(err)
- }
- cnt++
- }
- checkOnlineStatus(t, mgr, status)
- err = mgr.GetOffline(testid)
- if err != nil {
- t.Error(err)
- }
- checkOfflineStatus(t, mgr)
- }
|