mirror of
https://github.com/grafana/grafana.git
synced 2025-02-20 11:48:34 -06:00
70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
package managedstream
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/grafana/grafana-plugin-sdk-go/data"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func testFrameCache(t *testing.T, c FrameCache) {
|
|
// Create new frame and update cache.
|
|
frame := data.NewFrame("hello")
|
|
frameJsonCache, err := data.FrameToJSONCache(frame)
|
|
require.NoError(t, err)
|
|
|
|
updated, err := c.Update(1, "test", frameJsonCache)
|
|
require.NoError(t, err)
|
|
require.True(t, updated)
|
|
|
|
// Make sure channel is active.
|
|
channels, err := c.GetActiveChannels(1)
|
|
require.NoError(t, err)
|
|
schema, ok := channels["test"]
|
|
require.True(t, ok)
|
|
require.NotZero(t, schema)
|
|
|
|
// Make sure the same frame does not update schema.
|
|
updated, err = c.Update(1, "test", frameJsonCache)
|
|
require.NoError(t, err)
|
|
require.False(t, updated)
|
|
|
|
// Now construct new frame with updated schema.
|
|
newFrame := data.NewFrame("hello", data.NewField("new_field", nil, []int64{}))
|
|
frameJsonCache, err = data.FrameToJSONCache(newFrame)
|
|
require.NoError(t, err)
|
|
|
|
// Make sure schema updated.
|
|
updated, err = c.Update(1, "test", frameJsonCache)
|
|
require.NoError(t, err)
|
|
require.True(t, updated)
|
|
|
|
// Add the same with another orgID and make sure schema updated.
|
|
updated, err = c.Update(2, "test", frameJsonCache)
|
|
require.NoError(t, err)
|
|
require.True(t, updated)
|
|
|
|
// Make sure that the last frame successfully saved in cache.
|
|
frameJSON, ok, err := c.GetFrame(1, "test")
|
|
require.NoError(t, err)
|
|
require.True(t, ok)
|
|
|
|
var f data.Frame
|
|
err = json.Unmarshal(frameJSON, &f)
|
|
require.NoError(t, err)
|
|
require.Equal(t, "new_field", f.Fields[0].Name)
|
|
|
|
// Make sure channel has updated schema.
|
|
channels, err = c.GetActiveChannels(1)
|
|
require.NoError(t, err)
|
|
require.NotEqual(t, string(channels["test"]), string(schema))
|
|
}
|
|
|
|
func TestMemoryFrameCache(t *testing.T) {
|
|
c := NewMemoryFrameCache()
|
|
require.NotNil(t, c)
|
|
testFrameCache(t, c)
|
|
}
|