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  }