Skip to content

Commit

Permalink
Move to using interface for better mocking to graphql server (#3937)
Browse files Browse the repository at this point in the history
* fix: add interface to cluster package

Signed-off-by: namkyu1999 <lak9348@konkuk.ac.kr>

* feat: add interface to chaos workflow package

Signed-off-by: namkyu1999 <lak9348@konkuk.ac.kr>

* fix: add interface to gitops package

Signed-off-by: namkyu1999 <lak9348@konkuk.ac.kr>

* feat: add interface to several packages

Signed-off-by: namkyu1999 <lak9348@konkuk.ac.kr>

* fix: add interface to graphql server and remove mongo operator global variable

Signed-off-by: namkyu1999 <lak9348@konkuk.ac.kr>

* fix: fix constructor because of better unit testing

Signed-off-by: namkyu1999 <lak9348@konkuk.ac.kr>

* fix: move variables global to local

Signed-off-by: namkyu1999 <lak9348@konkuk.ac.kr>

---------

Signed-off-by: namkyu1999 <lak9348@konkuk.ac.kr>
  • Loading branch information
namkyu1999 committed Apr 26, 2023
1 parent d4101da commit a7eb627
Show file tree
Hide file tree
Showing 36 changed files with 2,245 additions and 1,939 deletions.
38 changes: 18 additions & 20 deletions litmus-portal/graphql-server/graph/analytics.resolvers.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@ import (

"github.com/google/uuid"
"github.com/litmuschaos/litmus/litmus-portal/graphql-server/graph/model"
analyticsHandler "github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/analytics/handler"
analyticsOps "github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/analytics/ops"
"github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/authorization"
data_store "github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/data-store"
log "github.com/sirupsen/logrus"
Expand All @@ -23,7 +21,7 @@ func (r *mutationResolver) CreateDataSource(ctx context.Context, datasource *mod
return nil, err
}

return analyticsHandler.CreateDataSource(datasource)
return r.analyticsService.CreateDataSource(datasource)
}

func (r *mutationResolver) CreateDashBoard(ctx context.Context, dashboard *model.CreateDBInput) (*model.ListDashboardResponse, error) {
Expand All @@ -34,7 +32,7 @@ func (r *mutationResolver) CreateDashBoard(ctx context.Context, dashboard *model
return nil, err
}

return analyticsHandler.CreateDashboard(dashboard)
return r.analyticsService.CreateDashboard(dashboard)
}

func (r *mutationResolver) UpdateDataSource(ctx context.Context, datasource model.DSInput) (*model.DSResponse, error) {
Expand All @@ -45,7 +43,7 @@ func (r *mutationResolver) UpdateDataSource(ctx context.Context, datasource mode
return nil, err
}

return analyticsHandler.UpdateDataSource(datasource)
return r.analyticsService.UpdateDataSource(datasource)
}

func (r *mutationResolver) UpdateDashboard(ctx context.Context, projectID string, dashboard model.UpdateDBInput, chaosQueryUpdate bool) (string, error) {
Expand All @@ -56,11 +54,11 @@ func (r *mutationResolver) UpdateDashboard(ctx context.Context, projectID string
return "", err
}

return analyticsHandler.UpdateDashBoard(projectID, dashboard, chaosQueryUpdate)
return r.analyticsService.UpdateDashBoard(projectID, dashboard, chaosQueryUpdate)
}

func (r *mutationResolver) UpdatePanel(ctx context.Context, panelInput []*model.Panel) (string, error) {
return analyticsHandler.UpdatePanel(panelInput)
return r.analyticsService.UpdatePanel(panelInput)
}

func (r *mutationResolver) DeleteDashboard(ctx context.Context, projectID string, dbID *string) (bool, error) {
Expand All @@ -71,7 +69,7 @@ func (r *mutationResolver) DeleteDashboard(ctx context.Context, projectID string
return false, err
}

return analyticsHandler.DeleteDashboard(projectID, dbID)
return r.analyticsService.DeleteDashboard(projectID, dbID)
}

func (r *mutationResolver) DeleteDataSource(ctx context.Context, projectID string, input model.DeleteDSInput) (bool, error) {
Expand All @@ -82,7 +80,7 @@ func (r *mutationResolver) DeleteDataSource(ctx context.Context, projectID strin
return false, err
}

return analyticsHandler.DeleteDataSource(projectID, input)
return r.analyticsService.DeleteDataSource(projectID, input)
}

func (r *queryResolver) ListHeatmapData(ctx context.Context, projectID string, workflowID string, year int) ([]*model.HeatmapDataResponse, error) {
Expand All @@ -93,7 +91,7 @@ func (r *queryResolver) ListHeatmapData(ctx context.Context, projectID string, w
return nil, err
}

return analyticsHandler.ListHeatmapData(workflowID, projectID, year)
return r.analyticsService.ListHeatmapData(workflowID, projectID, year)
}

func (r *queryResolver) ListWorkflowStats(ctx context.Context, projectID string, filter model.TimeFrequency, showWorkflowRuns bool) ([]*model.WorkflowStatsResponse, error) {
Expand All @@ -104,7 +102,7 @@ func (r *queryResolver) ListWorkflowStats(ctx context.Context, projectID string,
return nil, err
}

return analyticsHandler.ListWorkflowStats(projectID, filter, showWorkflowRuns)
return r.analyticsService.ListWorkflowStats(projectID, filter, showWorkflowRuns)
}

func (r *queryResolver) GetWorkflowRunStats(ctx context.Context, workflowRunStatsRequest model.WorkflowRunStatsRequest) (*model.WorkflowRunStatsResponse, error) {
Expand All @@ -115,7 +113,7 @@ func (r *queryResolver) GetWorkflowRunStats(ctx context.Context, workflowRunStat
return nil, err
}

return analyticsHandler.GetWorkflowRunStats(workflowRunStatsRequest)
return r.analyticsService.GetWorkflowRunStats(workflowRunStatsRequest)
}

func (r *queryResolver) ListDataSource(ctx context.Context, projectID string) ([]*model.DSResponse, error) {
Expand All @@ -126,20 +124,20 @@ func (r *queryResolver) ListDataSource(ctx context.Context, projectID string) ([
return nil, err
}

return analyticsHandler.QueryListDataSource(projectID)
return r.analyticsService.QueryListDataSource(projectID)
}

func (r *queryResolver) GetPrometheusData(ctx context.Context, request *model.PrometheusDataRequest) (*model.PrometheusDataResponse, error) {
promResponseData, _, err := analyticsHandler.GetPrometheusData(request)
promResponseData, _, err := r.analyticsService.GetPrometheusData(request)
return promResponseData, err
}

func (r *queryResolver) GetPromLabelNamesAndValues(ctx context.Context, request *model.PromSeriesInput) (*model.PromSeriesResponse, error) {
return analyticsHandler.GetLabelNamesAndValues(request)
return r.analyticsService.GetLabelNamesAndValues(request)
}

func (r *queryResolver) GetPromSeriesList(ctx context.Context, request *model.DsDetails) (*model.PromSeriesListResponse, error) {
return analyticsHandler.GetPromSeriesList(request)
return r.analyticsService.GetPromSeriesList(request)
}

func (r *queryResolver) ListDashboard(ctx context.Context, projectID string, clusterID *string, dbID *string) ([]*model.ListDashboardResponse, error) {
Expand All @@ -150,7 +148,7 @@ func (r *queryResolver) ListDashboard(ctx context.Context, projectID string, clu
return nil, err
}

return analyticsHandler.QueryListDashboard(projectID, clusterID, dbID)
return r.analyticsService.QueryListDashboard(projectID, clusterID, dbID)
}

func (r *queryResolver) ListPortalDashboardData(ctx context.Context, projectID string, hubName string) ([]*model.PortalDashboardDataResponse, error) {
Expand All @@ -160,7 +158,7 @@ func (r *queryResolver) ListPortalDashboardData(ctx context.Context, projectID s
if err != nil {
return nil, err
}
return analyticsHandler.ListPortalDashboardData(projectID, hubName)
return r.analyticsService.ListPortalDashboardData(projectID, hubName)
}

func (r *subscriptionResolver) ViewDashboard(ctx context.Context, dashboardID *string, promQueries []*model.PromQueryInput, dashboardQueryMap []*model.QueryMapForPanelGroup, dataVariables model.DataVars) (<-chan *model.DashboardPromResponse, error) {
Expand All @@ -174,13 +172,13 @@ func (r *subscriptionResolver) ViewDashboard(ctx context.Context, dashboardID *s
<-ctx.Done()
log.Infof("closed dashboard view %v\n", viewID.String())
if _, ok := data_store.Store.DashboardData[viewID.String()]; ok {
analyticsOps.UpdateViewedAt(dashboardID, viewID.String())
r.analyticsService.UpdateViewedAt(dashboardID, viewID.String())

data_store.Store.Mutex.Lock()
delete(data_store.Store.DashboardData, viewID.String())
data_store.Store.Mutex.Unlock()
}
}()
go analyticsHandler.DashboardViewer(viewID.String(), dashboardID, promQueries, dashboardQueryMap, dataVariables, *data_store.Store)
go r.analyticsService.DashboardViewer(viewID.String(), dashboardID, promQueries, dashboardQueryMap, dataVariables, *data_store.Store)
return dashboardData, nil
}
39 changes: 18 additions & 21 deletions litmus-portal/graphql-server/graph/cluster.resolvers.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,7 @@ import (
"github.com/jinzhu/copier"
"github.com/litmuschaos/litmus/litmus-portal/graphql-server/graph/model"
"github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/authorization"
wfHandler "github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/chaos-workflow/handler"
"github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/cluster"
clusterHandler "github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/cluster/handler"
data_store "github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/data-store"
dbOperationsCluster "github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/database/mongodb/cluster"
log "github.com/sirupsen/logrus"
"go.mongodb.org/mongo-driver/bson"
)
Expand All @@ -30,15 +26,15 @@ func (r *mutationResolver) RegisterCluster(ctx context.Context, request model.Re
return nil, err
}

return clusterHandler.RegisterCluster(request)
return r.clusterService.RegisterCluster(request)
}

func (r *mutationResolver) ConfirmClusterRegistration(ctx context.Context, request model.ClusterIdentity) (*model.ConfirmClusterRegistrationResponse, error) {
return clusterHandler.ConfirmClusterRegistration(request, *data_store.Store)
return r.clusterService.ConfirmClusterRegistration(request, *data_store.Store)
}

func (r *mutationResolver) NewClusterEvent(ctx context.Context, request model.NewClusterEventRequest) (string, error) {
return clusterHandler.NewClusterEvent(request, *data_store.Store)
return r.clusterService.NewClusterEvent(request, *data_store.Store)
}

func (r *mutationResolver) DeleteClusters(ctx context.Context, projectID string, clusterIDs []*string) (string, error) {
Expand All @@ -49,19 +45,19 @@ func (r *mutationResolver) DeleteClusters(ctx context.Context, projectID string,
return "", err
}

return clusterHandler.DeleteClusters(ctx, projectID, clusterIDs, *data_store.Store)
return r.clusterService.DeleteClusters(ctx, projectID, clusterIDs, *data_store.Store)
}

func (r *mutationResolver) PodLog(ctx context.Context, request model.PodLog) (string, error) {
return wfHandler.PodLog(request, *data_store.Store)
return r.chaosWorkflowHandler.PodLog(request, *data_store.Store)
}

func (r *mutationResolver) KubeObj(ctx context.Context, request model.KubeObjectData) (string, error) {
return wfHandler.KubeObj(request, *data_store.Store)
return r.chaosWorkflowHandler.KubeObj(request, *data_store.Store)
}

func (r *queryResolver) GetServerVersion(ctx context.Context) (*model.ServerVersionResponse, error) {
return wfHandler.QueryServerVersion(ctx)
return r.chaosWorkflowHandler.QueryServerVersion(ctx)
}

func (r *queryResolver) ListClusters(ctx context.Context, projectID string, clusterType *string) ([]*model.Cluster, error) {
Expand All @@ -72,7 +68,7 @@ func (r *queryResolver) ListClusters(ctx context.Context, projectID string, clus
return nil, err
}

return clusterHandler.ListClusters(projectID, clusterType)
return r.clusterService.ListClusters(projectID, clusterType)
}

func (r *queryResolver) GetAgentDetails(ctx context.Context, clusterID string, projectID string) (*model.Cluster, error) {
Expand All @@ -83,7 +79,7 @@ func (r *queryResolver) GetAgentDetails(ctx context.Context, clusterID string, p
return nil, err
}

return clusterHandler.GetAgentDetails(ctx, clusterID, projectID)
return r.clusterService.GetAgentDetails(ctx, clusterID, projectID)
}

func (r *queryResolver) GetManifest(ctx context.Context, projectID string, clusterID string, accessKey string) (string, error) {
Expand All @@ -94,7 +90,7 @@ func (r *queryResolver) GetManifest(ctx context.Context, projectID string, clust
return "", err
}

response, err := cluster.GetManifestWithClusterID(clusterID, accessKey)
response, err := r.clusterService.GetManifestWithClusterID(clusterID, accessKey)
if err != nil {
return "", err
}
Expand All @@ -120,7 +116,7 @@ func (r *subscriptionResolver) GetClusterEvents(ctx context.Context, projectID s
func (r *subscriptionResolver) ClusterConnect(ctx context.Context, clusterInfo model.ClusterIdentity) (<-chan *model.ClusterActionResponse, error) {
log.Info("new cluster connect: ", clusterInfo.ClusterID)
clusterAction := make(chan *model.ClusterActionResponse, 1)
verifiedCluster, err := cluster.VerifyCluster(clusterInfo)
verifiedCluster, err := r.clusterService.VerifyCluster(clusterInfo)
if err != nil {
log.Error("validation failed: ", clusterInfo.ClusterID)
return clusterAction, err
Expand All @@ -139,15 +135,16 @@ func (r *subscriptionResolver) ClusterConnect(ctx context.Context, clusterInfo m
newVerifiedCluster := model.Cluster{}
copier.Copy(&newVerifiedCluster, &verifiedCluster)

clusterHandler.SendClusterEvent("cluster-status", "Cluster Offline", "Cluster Disconnect", newVerifiedCluster, *data_store.Store)
r.clusterService.SendClusterEvent("cluster-status", "Cluster Offline", "Cluster Disconnect", newVerifiedCluster, *data_store.Store)

data_store.Store.Mutex.Lock()
delete(data_store.Store.ConnectedCluster, clusterInfo.ClusterID)
data_store.Store.Mutex.Unlock()

query := bson.D{{"cluster_id", clusterInfo.ClusterID}}
update := bson.D{{"$set", bson.D{{"is_active", false}, {"updated_at", strconv.FormatInt(time.Now().Unix(), 10)}}}}

err = dbOperationsCluster.UpdateCluster(query, update)
err = r.clusterService.UpdateCluster(query, update)
if err != nil {
log.Error(err)
}
Expand All @@ -156,7 +153,7 @@ func (r *subscriptionResolver) ClusterConnect(ctx context.Context, clusterInfo m
query := bson.D{{"cluster_id", clusterInfo.ClusterID}}
update := bson.D{{"$set", bson.D{{"is_active", true}, {"updated_at", strconv.FormatInt(time.Now().Unix(), 10)}, {"version", clusterInfo.Version}}}}

err = dbOperationsCluster.UpdateCluster(query, update)
err = r.clusterService.UpdateCluster(query, update)
if err != nil {
return clusterAction, err
}
Expand All @@ -165,7 +162,7 @@ func (r *subscriptionResolver) ClusterConnect(ctx context.Context, clusterInfo m
copier.Copy(&newVerifiedCluster, &verifiedCluster)

verifiedCluster.IsActive = true
clusterHandler.SendClusterEvent("cluster-status", "Cluster Live", "Cluster is Live and Connected", newVerifiedCluster, *data_store.Store)
r.clusterService.SendClusterEvent("cluster-status", "Cluster Live", "Cluster is Live and Connected", newVerifiedCluster, *data_store.Store)
return clusterAction, nil
}

Expand All @@ -181,7 +178,7 @@ func (r *subscriptionResolver) GetPodLog(ctx context.Context, request model.PodL
log.Info("closed log listener: ", request.ClusterID, request.PodName)
delete(data_store.Store.WorkflowLog, reqID.String())
}()
go wfHandler.GetLogs(reqID.String(), request, *data_store.Store)
go r.chaosWorkflowHandler.GetLogs(reqID.String(), request, *data_store.Store)
return workflowLog, nil
}

Expand All @@ -197,6 +194,6 @@ func (r *subscriptionResolver) GetKubeObject(ctx context.Context, request model.
log.Info("closed KubeObj Listener")
delete(data_store.Store.KubeObjectData, reqID.String())
}()
go wfHandler.GetKubeObjData(reqID.String(), request, *data_store.Store)
go r.chaosWorkflowHandler.GetKubeObjData(reqID.String(), request, *data_store.Store)
return kubeObjData, nil
}
17 changes: 11 additions & 6 deletions litmus-portal/graphql-server/graph/gitops.resolvers.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,16 @@ import (

"github.com/litmuschaos/litmus/litmus-portal/graphql-server/graph/model"
"github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/authorization"
gitOpsHandler "github.com/litmuschaos/litmus/litmus-portal/graphql-server/pkg/gitops/handler"
"github.com/sirupsen/logrus"
)

func (r *mutationResolver) GitopsNotifier(ctx context.Context, clusterInfo model.ClusterIdentity, workflowID string) (string, error) {
return gitOpsHandler.GitOpsNotificationHandler(ctx, clusterInfo, workflowID)
cluster, err := r.clusterService.VerifyCluster(clusterInfo)
if err != nil {
logrus.Error("Validation failed : ", clusterInfo.ClusterID)
return "Validation failed", err
}
return r.gitOpsService.GitOpsNotificationHandler(ctx, cluster, workflowID)
}

func (r *mutationResolver) EnableGitOps(ctx context.Context, config model.GitConfig) (bool, error) {
Expand All @@ -22,7 +27,7 @@ func (r *mutationResolver) EnableGitOps(ctx context.Context, config model.GitCon
if err != nil {
return false, err
}
return gitOpsHandler.EnableGitOpsHandler(ctx, config)
return r.gitOpsService.EnableGitOpsHandler(ctx, config)
}

func (r *mutationResolver) DisableGitOps(ctx context.Context, projectID string) (bool, error) {
Expand All @@ -32,7 +37,7 @@ func (r *mutationResolver) DisableGitOps(ctx context.Context, projectID string)
if err != nil {
return false, err
}
return gitOpsHandler.DisableGitOpsHandler(ctx, projectID)
return r.gitOpsService.DisableGitOpsHandler(ctx, projectID)
}

func (r *mutationResolver) UpdateGitOps(ctx context.Context, config model.GitConfig) (bool, error) {
Expand All @@ -42,7 +47,7 @@ func (r *mutationResolver) UpdateGitOps(ctx context.Context, config model.GitCon
if err != nil {
return false, err
}
return gitOpsHandler.UpdateGitOpsDetailsHandler(ctx, config)
return r.gitOpsService.UpdateGitOpsDetailsHandler(ctx, config)
}

func (r *queryResolver) GetGitOpsDetails(ctx context.Context, projectID string) (*model.GitConfigResponse, error) {
Expand All @@ -53,5 +58,5 @@ func (r *queryResolver) GetGitOpsDetails(ctx context.Context, projectID string)
return nil, err
}

return gitOpsHandler.GetGitOpsDetails(ctx, projectID)
return r.gitOpsService.GetGitOpsDetails(ctx, projectID)
}

0 comments on commit a7eb627

Please sign in to comment.