github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/test/cloud_integration_test.go (about) 1 package test 2 3 import ( 4 "github.com/esnet/gdg/internal/service" 5 "github.com/stretchr/testify/assert" 6 _ "gocloud.dev/blob/memblob" 7 "log/slog" 8 "os" 9 "testing" 10 ) 11 12 func TestCloudDataSourceCRUD(t *testing.T) { 13 if testing.Short() { 14 t.Skip("skipping integration test") 15 } 16 17 apiClient, _, cleanup := initTest(t, nil) 18 defer func() { 19 cleanErr := cleanup() 20 if cleanErr != nil { 21 slog.Error("unable to clean up after test", slog.Any("err", cleanErr)) 22 } 23 }() 24 //Wipe all data from grafana 25 dsFilter := service.NewConnectionFilter("") 26 apiClient.DeleteAllConnections(dsFilter) 27 28 apiClient.UploadConnections(dsFilter) 29 dsList := apiClient.ListConnections(dsFilter) 30 assert.True(t, len(dsList) > 0) 31 SetupCloudFunction([]string{"s3", "testing"}) 32 //SetupCloudFunction(apiClient, []string{"mem", "testing"}) 33 34 slog.Info("Importing DataSources") 35 dsStringList := apiClient.DownloadConnections(dsFilter) //Saving to S3 36 assert.Equal(t, len(dsList), len(dsStringList)) 37 slog.Info("Deleting DataSources") 38 deleteDSList := apiClient.DeleteAllConnections(dsFilter) // Cleaning up Grafana 39 assert.Equal(t, len(deleteDSList), len(dsStringList)) 40 dsList = apiClient.ListConnections(dsFilter) 41 assert.Equal(t, len(dsList), 0) 42 //Load Data from S3 43 apiClient.UploadConnections(dsFilter) //Load data from S3 44 dsList = apiClient.ListConnections(dsFilter) 45 assert.Equal(t, len(dsList), len(dsStringList)) 46 apiClient.DeleteAllConnections(dsFilter) // Cleaning up Grafana 47 } 48 49 // TestDashboardCloudCrud will load testing_data to Grafana from local context. Switch to CLoud, 50 // Save all data to Cloud, wipe grafana and reload data back into grafana and validate 51 func TestDashboardCloudCRUD(t *testing.T) { 52 if testing.Short() { 53 t.Skip("skipping integration test") 54 } 55 err := os.Setenv("GDG_CONTEXT_NAME", "testing") 56 assert.Nil(t, err, "Failed to set context name via env to testing") 57 58 apiClient, _, cleanup := initTest(t, nil) 59 defer func() { 60 cleanErr := cleanup() 61 if cleanErr != nil { 62 slog.Error("unable to clean up after test", slog.Any("err", cleanErr)) 63 } 64 }() 65 //Wipe all data from grafana 66 dashFilter := service.NewDashboardFilter("", "", "") 67 apiClient.DeleteAllDashboards(dashFilter) 68 //Load data into grafana 69 apiClient.UploadDashboards(dashFilter) 70 boards := apiClient.ListDashboards(dashFilter) 71 assert.True(t, len(boards) > 0) 72 73 _, apiClient = SetupCloudFunction([]string{"s3", "testing"}) 74 75 //At this point all operations are reading/writing from Minio 76 slog.Info("Importing Dashboards") 77 list := apiClient.DownloadDashboards(dashFilter) //Saving to S3 78 assert.Equal(t, len(list), len(boards)) 79 slog.Info("Deleting Dashboards") // Clearing Grafana 80 deleteList := apiClient.DeleteAllDashboards(dashFilter) 81 assert.Equal(t, len(list), len(deleteList)) 82 boards = apiClient.ListDashboards(dashFilter) 83 assert.Equal(t, len(boards), 0) 84 //Load Data from S3 85 apiClient.UploadDashboards(dashFilter) //ReLoad data from S3 backup 86 boards = apiClient.ListDashboards(dashFilter) //Read data 87 assert.Equal(t, len(list), len(boards)) //verify 88 apiClient.DeleteAllDashboards(dashFilter) 89 }