| package events |
| |
| import ( |
| "encoding/binary" |
| "math" |
| "testing" |
| "time" |
| |
| "github.com/stretchr/testify/require" |
| ) |
| |
| func encodeEvent(v float64) []byte { |
| rv := make([]byte, 8) |
| binary.BigEndian.PutUint64(rv, math.Float64bits(v)) |
| return rv |
| } |
| |
| func decodeEvent(b []byte) float64 { |
| return math.Float64frombits(binary.BigEndian.Uint64(b)) |
| } |
| |
| func testInsertRetrieve(t *testing.T, d EventDB) { |
| now := time.Now() |
| k1 := now.Add(-3 * time.Second) |
| v1 := 0.05 |
| s := "my-stream" |
| require.NoError(t, d.Insert(&Event{ |
| Stream: s, |
| Timestamp: k1, |
| Data: encodeEvent(v1), |
| })) |
| |
| end := now.Add(time.Second) |
| start := end.Add(-100 * time.Second) |
| vs, err := d.Range(s, start, end) |
| require.NoError(t, err) |
| require.Equal(t, 1, len(vs)) |
| require.Equal(t, v1, decodeEvent(vs[0].Data)) |
| } |