mirror of
https://github.com/grafana/grafana.git
synced 2026-08-18 17:15:08 -05:00
* #45498: add entity events table
* #45498: add entity events service
* #45498: hook up entity events service to http server
* #45498: use `dashboards.id` rather than `uid` and `org_id` in grn
* Update pkg/services/entityevents/service.go
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
* #45498: move entityeventsservice to services/store
* #45498: add null check
* #45498: rename
* #45498: fix comment
* #45498: switch grn back to uid
* Search: listen for updates (#47719)
* #45498: wire entity event service with searchv2
* load last event id before building index for org 1
* fix service init in integration tests
* depend on required subset of event store methods
* Update pkg/services/sqlstore/migrations/entity_events_mig.go
Co-authored-by: Alexander Emelin <frvzmb@gmail.com>
* #45498: pointer receiver
* #45498: mockery!
* #45498: add entity events service to background services
* dashboard query pagination, allow queries while re-indexing
* log level cleanups, use rlock, add comments
* fix lint, check feature toggle in search v2 service
* use unix time for event created column
* add missing changes for created column
* fix integration tests init
* log re-index execution times on info level
* #45498: fix entityEventsService tests
* #45498: save events on dashboard delete
* use camel case for log labels
* formatting
* #45498: rename grn to entityid
* #45498: add `IsDisabled` to entityEventsService
* #45498: remove feature flag from migration
* better context usage, fix capacity, comments/cleanups
* replace print with logger
* Revert "#45498: remove feature flag from migration"
This reverts commit ed23968898.
* revert:revert:revert conditional feature flag
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
Co-authored-by: Alexander Emelin <frvzmb@gmail.com>
95 lines
2.3 KiB
Go
95 lines
2.3 KiB
Go
package searchV2
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/grafana/grafana/pkg/services/store"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
type testDashboardLoader struct {
|
|
dashboards []dashboard
|
|
}
|
|
|
|
func (t *testDashboardLoader) LoadDashboards(ctx context.Context, orgID int64, dashboardUID string) ([]dashboard, error) {
|
|
return t.dashboards, nil
|
|
}
|
|
|
|
func TestDashboardIndexCreate(t *testing.T) {
|
|
dashboardLoader := &testDashboardLoader{
|
|
dashboards: []dashboard{
|
|
{
|
|
uid: "1",
|
|
},
|
|
},
|
|
}
|
|
index := newDashboardIndex(dashboardLoader, &store.MockEntityEventsService{})
|
|
require.NotNil(t, index)
|
|
dashboards, err := index.getDashboards(context.Background(), 1)
|
|
require.NoError(t, err)
|
|
require.Len(t, dashboards, 1)
|
|
|
|
dashboardLoader.dashboards = []dashboard{
|
|
{
|
|
uid: "2",
|
|
},
|
|
}
|
|
err = index.applyDashboardEvent(context.Background(), 1, "2", "")
|
|
require.NoError(t, err)
|
|
dashboards, err = index.getDashboards(context.Background(), 1)
|
|
require.NoError(t, err)
|
|
require.Len(t, dashboards, 2)
|
|
}
|
|
|
|
func TestDashboardIndexUpdate(t *testing.T) {
|
|
dashboardLoader := &testDashboardLoader{
|
|
dashboards: []dashboard{
|
|
{
|
|
uid: "1",
|
|
slug: "test",
|
|
},
|
|
},
|
|
}
|
|
index := newDashboardIndex(dashboardLoader, nil)
|
|
require.NotNil(t, index)
|
|
dashboards, err := index.getDashboards(context.Background(), 1)
|
|
require.NoError(t, err)
|
|
require.Len(t, dashboards, 1)
|
|
|
|
dashboardLoader.dashboards = []dashboard{
|
|
{
|
|
uid: "1",
|
|
slug: "updated",
|
|
},
|
|
}
|
|
err = index.applyDashboardEvent(context.Background(), 1, "1", "")
|
|
require.NoError(t, err)
|
|
dashboards, err = index.getDashboards(context.Background(), 1)
|
|
require.NoError(t, err)
|
|
require.Len(t, dashboards, 1)
|
|
require.Equal(t, "updated", dashboards[0].slug)
|
|
}
|
|
|
|
func TestDashboardIndexDelete(t *testing.T) {
|
|
dashboardLoader := &testDashboardLoader{
|
|
dashboards: []dashboard{
|
|
{
|
|
uid: "1",
|
|
},
|
|
},
|
|
}
|
|
index := newDashboardIndex(dashboardLoader, nil)
|
|
require.NotNil(t, index)
|
|
dashboards, err := index.getDashboards(context.Background(), 1)
|
|
require.NoError(t, err)
|
|
require.Len(t, dashboards, 1)
|
|
|
|
dashboardLoader.dashboards = []dashboard{}
|
|
err = index.applyDashboardEvent(context.Background(), 1, "1", "")
|
|
require.NoError(t, err)
|
|
dashboards, err = index.getDashboards(context.Background(), 1)
|
|
require.NoError(t, err)
|
|
require.Len(t, dashboards, 0)
|
|
}
|