mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 06:22:21 +08:00
59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
package dualwrite
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
|
|
"github.com/grafana/grafana/pkg/infra/kvstore"
|
|
"github.com/grafana/grafana/pkg/services/featuremgmt"
|
|
)
|
|
|
|
func TestService(t *testing.T) {
|
|
ctx := context.Background()
|
|
mode := ProvideService(featuremgmt.WithFeatures(), nil, kvstore.NewFakeKVStore(), nil)
|
|
|
|
gr := schema.GroupResource{Group: "ggg", Resource: "rrr"}
|
|
status, err := mode.Status(ctx, gr)
|
|
require.NoError(t, err)
|
|
require.Equal(t, StorageStatus{
|
|
Group: "ggg",
|
|
Resource: "rrr",
|
|
WriteLegacy: true,
|
|
WriteUnified: true,
|
|
ReadUnified: false,
|
|
Migrated: 0,
|
|
Migrating: 0,
|
|
Runtime: true,
|
|
UpdateKey: 1,
|
|
}, status, "should start with the right defaults")
|
|
|
|
// Start migration
|
|
status, err = mode.StartMigration(ctx, gr, 1)
|
|
require.NoError(t, err)
|
|
require.Equal(t, status.UpdateKey, int64(2), "the key increased")
|
|
require.True(t, status.Migrating > 0, "migration is running")
|
|
|
|
status.Migrated = time.Now().UnixMilli()
|
|
status.Migrating = 0
|
|
status, err = mode.Update(ctx, status)
|
|
require.NoError(t, err)
|
|
require.Equal(t, status.UpdateKey, int64(3), "the key increased")
|
|
require.Equal(t, status.Migrating, int64(0), "done migrating")
|
|
require.True(t, status.Migrated > 0, "migration is running")
|
|
|
|
status.WriteUnified = false
|
|
status.ReadUnified = true
|
|
_, err = mode.Update(ctx, status)
|
|
require.Error(t, err) // must write unified if we read it
|
|
|
|
status.WriteUnified = false
|
|
status.ReadUnified = false
|
|
status.WriteLegacy = false
|
|
_, err = mode.Update(ctx, status)
|
|
require.Error(t, err) // must write something!
|
|
}
|