d999b415df
* Use epoch with microsecond resolution as RV * fix backend tests * Add solution for when the clock goes back * Add solution for when the clock goes back * generate mocks * go lint * remove comment * Use Greatest instead of max in msyql and postgres * update tests * Update pkg/storage/unified/sql/sqltemplate/dialect_sqlite.go Co-authored-by: Diego Augusto Molina <diegoaugustomolina@gmail.com> * cast to bigint * add additional round trip * increment the RV using 2 sql round trips instead of 3 * cleanup comments * cast unix timestamp to integer * fix postgres query * remove old increment test data * remove greatest * cast unix_timestamp to signed * Use statement_timestamp instead of clock_timestamp --------- Co-authored-by: Diego Augusto Molina <diegoaugustomolina@gmail.com>
216 lines
4.8 KiB
Go
216 lines
4.8 KiB
Go
package sql
|
|
|
|
import (
|
|
"testing"
|
|
"text/template"
|
|
|
|
"github.com/grafana/grafana/pkg/storage/unified/resource"
|
|
"github.com/grafana/grafana/pkg/storage/unified/sql/sqltemplate/mocks"
|
|
)
|
|
|
|
func TestUnifiedStorageQueries(t *testing.T) {
|
|
mocks.CheckQuerySnapshots(t, mocks.TemplateTestSetup{
|
|
RootDir: "testdata",
|
|
Templates: map[*template.Template][]mocks.TemplateTestCase{
|
|
sqlResourceDelete: {
|
|
{
|
|
Name: "simple",
|
|
Data: &sqlResourceRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
WriteEvent: resource.WriteEvent{
|
|
Key: &resource.ResourceKey{
|
|
Namespace: "nn",
|
|
Group: "gg",
|
|
Resource: "rr",
|
|
Name: "name",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
sqlResourceInsert: {
|
|
{
|
|
Name: "simple",
|
|
Data: &sqlResourceRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
WriteEvent: resource.WriteEvent{
|
|
Key: &resource.ResourceKey{
|
|
Namespace: "nn",
|
|
Group: "gg",
|
|
Resource: "rr",
|
|
Name: "name",
|
|
},
|
|
Type: resource.WatchEvent_ADDED,
|
|
PreviousRV: 123,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
sqlResourceUpdate: {
|
|
{
|
|
Name: "single path",
|
|
Data: &sqlResourceRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
WriteEvent: resource.WriteEvent{
|
|
Key: &resource.ResourceKey{
|
|
Namespace: "nn",
|
|
Group: "gg",
|
|
Resource: "rr",
|
|
Name: "name",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
sqlResourceRead: {
|
|
{
|
|
Name: "without_resource_version",
|
|
Data: &sqlResourceReadRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
Request: &resource.ReadRequest{
|
|
Key: &resource.ResourceKey{
|
|
Namespace: "nn",
|
|
Group: "gg",
|
|
Resource: "rr",
|
|
Name: "name",
|
|
},
|
|
},
|
|
readResponse: new(readResponse),
|
|
},
|
|
},
|
|
},
|
|
|
|
sqlResourceList: {
|
|
{
|
|
Name: "filter_on_namespace",
|
|
Data: &sqlResourceListRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
Request: &resource.ListRequest{
|
|
Limit: 10,
|
|
Options: &resource.ListOptions{
|
|
Key: &resource.ResourceKey{
|
|
Namespace: "ns",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
sqlResourceHistoryList: {
|
|
{
|
|
Name: "single path",
|
|
Data: &sqlResourceHistoryListRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
Request: &historyListRequest{
|
|
Limit: 10,
|
|
Options: &resource.ListOptions{
|
|
Key: &resource.ResourceKey{
|
|
Namespace: "ns",
|
|
},
|
|
},
|
|
},
|
|
Response: new(resource.ResourceWrapper),
|
|
},
|
|
},
|
|
},
|
|
sqlResourceHistoryPoll: {
|
|
{
|
|
Name: "single path",
|
|
Data: &sqlResourceHistoryPollRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
Resource: "res",
|
|
Group: "group",
|
|
SinceResourceVersion: 1234,
|
|
Response: new(historyPollResponse),
|
|
},
|
|
},
|
|
},
|
|
|
|
sqlResourceUpdateRV: {
|
|
{
|
|
Name: "single path",
|
|
Data: &sqlResourceUpdateRVRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
},
|
|
},
|
|
},
|
|
|
|
sqlResourceHistoryRead: {
|
|
{
|
|
Name: "single path",
|
|
Data: &sqlResourceReadRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
Request: &resource.ReadRequest{
|
|
ResourceVersion: 123,
|
|
Key: &resource.ResourceKey{},
|
|
},
|
|
readResponse: new(readResponse),
|
|
},
|
|
},
|
|
},
|
|
|
|
sqlResourceHistoryUpdateRV: {
|
|
{
|
|
Name: "single path",
|
|
Data: &sqlResourceUpdateRVRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
},
|
|
},
|
|
},
|
|
|
|
sqlResourceHistoryInsert: {
|
|
{
|
|
Name: "insert into resource_history",
|
|
Data: &sqlResourceRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
WriteEvent: resource.WriteEvent{
|
|
Key: &resource.ResourceKey{
|
|
Namespace: "nn",
|
|
Group: "gg",
|
|
Resource: "rr",
|
|
Name: "name",
|
|
},
|
|
PreviousRV: 1234,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
sqlResourceVersionGet: {
|
|
{
|
|
Name: "single path",
|
|
Data: &sqlResourceVersionGetRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
Resource: "resource",
|
|
Group: "group",
|
|
Response: new(resourceVersionResponse),
|
|
ReadOnly: false,
|
|
},
|
|
},
|
|
},
|
|
|
|
sqlResourceVersionUpdate: {
|
|
{
|
|
Name: "increment resource version",
|
|
Data: &sqlResourceVersionUpsertRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
Resource: "resource",
|
|
Group: "group",
|
|
ResourceVersion: int64(12354),
|
|
},
|
|
},
|
|
},
|
|
|
|
sqlResourceVersionInsert: {
|
|
{
|
|
Name: "single path",
|
|
Data: &sqlResourceVersionUpsertRequest{
|
|
SQLTemplate: mocks.NewTestingSQLTemplate(),
|
|
ResourceVersion: int64(12354),
|
|
},
|
|
},
|
|
},
|
|
}})
|
|
}
|