recorder_test.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package mongo
  2. import (
  3. "reflect"
  4. "sparrow/pkg/protocol"
  5. "sparrow/pkg/rpcs"
  6. "sparrow/pkg/tlv"
  7. "testing"
  8. "time"
  9. )
  10. func TestRecorder(t *testing.T) {
  11. r, err := NewRecorder("localhost", "pandocloud", "commands")
  12. if err != nil {
  13. t.Fatal(err)
  14. }
  15. tlvs, err := tlv.MakeTLVs([]interface{}{float64(0.1), int64(100), uint64(200)})
  16. if err != nil {
  17. t.Error(err)
  18. }
  19. deviceid := uint64(12345)
  20. timestamp := uint64(time.Now().Unix() * 1000)
  21. subdata := protocol.SubData{
  22. Head: protocol.SubDataHead{
  23. SubDeviceid: "1",
  24. PropertyNum: 2,
  25. ParamsCount: 3,
  26. },
  27. Params: tlvs,
  28. }
  29. subdatas := []protocol.SubData{}
  30. subdatas = append(subdatas, subdata)
  31. data := rpcs.ArgsOnStatus{
  32. DeviceId: deviceid,
  33. Timestamp: timestamp,
  34. Subdata: subdatas,
  35. }
  36. err = r.Insert(data)
  37. if err != nil {
  38. t.Error(err)
  39. }
  40. readData := rpcs.ArgsOnStatus{}
  41. err = r.FindLatest(deviceid, &readData)
  42. if err != nil {
  43. t.Error(err)
  44. }
  45. if !reflect.DeepEqual(data, readData) {
  46. t.Errorf("read data want %v, but got %v", data, readData)
  47. }
  48. readDatas := []rpcs.ArgsOnStatus{}
  49. err = r.FindByTimestamp(deviceid, timestamp, timestamp, &readDatas)
  50. t.Log(readDatas)
  51. if !reflect.DeepEqual(data, readDatas[0]) {
  52. t.Errorf("read data by timestamp want %v, but got %v", data, readDatas[0])
  53. }
  54. }