diff --git a/manager/backend/services/footstone/domain/footstoneService/instance.go b/manager/backend/services/footstone/domain/footstoneService/instance.go index 9180dc886ef38e0a89bc171e3584eaa1f417b400..e15d3a94ef657abb8089f6e954477fd4f9709d7e 100644 --- a/manager/backend/services/footstone/domain/footstoneService/instance.go +++ b/manager/backend/services/footstone/domain/footstoneService/instance.go @@ -30,6 +30,18 @@ func tsSeconds(ts *timestamppb.Timestamp) int64 { return ts.Seconds } +func (s *infraService) listMetricsData(ctx entity.Context, + req *metricspb.ListMetricsDataRequest) (*metricspb.ListMetricsDataResponse, error) { + resp, err := s.dependence.MetricsProxy.ListMetricsData(ctx, req) + if err != nil { + return nil, err + } + if resp == nil { + return &metricspb.ListMetricsDataResponse{}, nil + } + return resp, nil +} + // AddInstanceByAgent @Description: agent新增实例 func (s *infraService) AddInstanceByAgent(ctx entity.Context, ins *po.Instance) error { var ( @@ -886,7 +898,7 @@ func (s *infraService) getBaseInfo(ctx entity.Context, wg *sync.WaitGroup, ip st PageRequest: &cmpb.PageRequest{PageNumber: 1, PageSize: itrEntity.MetricDefaultPageSize}, } defer wg.Done() - temp, err := s.dependence.MetricsProxy.ListMetricsData(ctx, req) + temp, err := s.listMetricsData(ctx, req) if err != nil { log.Errorf("failed to query msg-etl, error:%s", err) return resp @@ -963,7 +975,7 @@ func (s *infraService) getCPUInfo(ctx entity.Context, wg *sync.WaitGroup, ip str EndServerTime: timestamppb.New(end), PageRequest: &cmpb.PageRequest{PageNumber: 1, PageSize: itrEntity.MetricDefaultPageSize}, } - temp, err := s.dependence.MetricsProxy.ListMetricsData(ctx, req) + temp, err := s.listMetricsData(ctx, req) if err != nil { log.Errorf("failed to query msg-etl, error:%s", err) return resp @@ -1018,7 +1030,7 @@ func (s *infraService) getBIOSInfo(ctx entity.Context, wg *sync.WaitGroup, ip st EndServerTime: timestamppb.New(end), PageRequest: &cmpb.PageRequest{PageNumber: 1, PageSize: itrEntity.MetricDefaultPageSize}, } - temp, err := s.dependence.MetricsProxy.ListMetricsData(ctx, req) + temp, err := s.listMetricsData(ctx, req) if err != nil { log.Errorf("failed to query msg-etl, error:%s", err) return resp @@ -1067,7 +1079,7 @@ func (s *infraService) getBaseboardInfo(ctx entity.Context, wg *sync.WaitGroup, EndServerTime: timestamppb.New(end), PageRequest: &cmpb.PageRequest{PageNumber: 1, PageSize: itrEntity.MetricDefaultPageSize}, } - temp, err := s.dependence.MetricsProxy.ListMetricsData(ctx, req) + temp, err := s.listMetricsData(ctx, req) if err != nil { log.Errorf("failed to query msg-etl, error:%s", err) return resp @@ -1118,7 +1130,7 @@ func (s *infraService) getMemoryInfo(ctx entity.Context, wg *sync.WaitGroup, ip EndServerTime: timestamppb.New(end), PageRequest: &cmpb.PageRequest{PageNumber: 1, PageSize: itrEntity.MetricDefaultPageSize}, } - temp, err := s.dependence.MetricsProxy.ListMetricsData(ctx, req) + temp, err := s.listMetricsData(ctx, req) if err != nil { log.Errorf("failed to query msg-etl, error:%s", err) return resp @@ -1161,7 +1173,7 @@ func (s *infraService) getDiskInfo(ctx entity.Context, wg *sync.WaitGroup, ip st EndServerTime: timestamppb.New(end), PageRequest: &cmpb.PageRequest{PageNumber: 1, PageSize: itrEntity.MetricDefaultPageSize}, } - temp, err := s.dependence.MetricsProxy.ListMetricsData(ctx, req) + temp, err := s.listMetricsData(ctx, req) if err != nil { log.Errorf("failed to query msg-etl, error:%s", err) return resp @@ -1217,7 +1229,7 @@ func (s *infraService) getNetworkInfo(ctx entity.Context, wg *sync.WaitGroup, ip EndServerTime: timestamppb.New(end), PageRequest: &cmpb.PageRequest{PageNumber: 1, PageSize: itrEntity.MetricDefaultPageSize}, } - temp, err := s.dependence.MetricsProxy.ListMetricsData(ctx, req) + temp, err := s.listMetricsData(ctx, req) if err != nil { log.Errorf("failed to query msg-etl, error:%s", err) return resp @@ -1268,7 +1280,7 @@ func (s *infraService) getPCIInfo(ctx entity.Context, wg *sync.WaitGroup, ip str EndServerTime: timestamppb.New(end), PageRequest: &cmpb.PageRequest{PageNumber: 1, PageSize: itrEntity.MetricDefaultPageSize}, } - temp, err := s.dependence.MetricsProxy.ListMetricsData(ctx, req) + temp, err := s.listMetricsData(ctx, req) if err != nil { log.Errorf("failed to query msg-etl, error:%s", err) return resp @@ -1314,7 +1326,7 @@ func (s *infraService) getSystemdInfo(ctx entity.Context, wg *sync.WaitGroup, ip EndServerTime: timestamppb.New(end), PageRequest: &cmpb.PageRequest{PageNumber: 1, PageSize: itrEntity.MetricDefaultPageSize}, } - temp, err := s.dependence.MetricsProxy.ListMetricsData(ctx, req) + temp, err := s.listMetricsData(ctx, req) if err != nil { log.Errorf("failed to query msg-etl, error:%s", err) return resp @@ -1358,7 +1370,7 @@ func (s *infraService) getUserInfo(ctx entity.Context, wg *sync.WaitGroup, ip st EndServerTime: timestamppb.New(end), PageRequest: &cmpb.PageRequest{PageNumber: 1, PageSize: itrEntity.MetricDefaultPageSize}, } - temp, err := s.dependence.MetricsProxy.ListMetricsData(ctx, req) + temp, err := s.listMetricsData(ctx, req) if err != nil { log.Errorf("failed to query msg-etl, error:%s", err) return resp @@ -1445,7 +1457,7 @@ func (s *infraService) GetInstancePackages(ctx entity.Context, params *metricspb params.StartServerTime = timestamppb.New(start) params.EndServerTime = timestamppb.New(end) - data, err := s.dependence.MetricsProxy.ListMetricsData(ctx, params) + data, err := s.listMetricsData(ctx, params) if err != nil { return nil, err } @@ -1553,7 +1565,7 @@ func (s *infraService) ListInstancePatches(ctx entity.Context, req *pb.ListInsta if req.Keyword != "" { params.StrValue = req.Keyword } - data, err = s.dependence.MetricsProxy.ListMetricsData(ctx, params) + data, err = s.listMetricsData(ctx, params) if err != nil { return nil, err } @@ -1610,7 +1622,7 @@ func (s *infraService) ListInstanceSystemArgs(ctx entity.Context, req *pb.ListIn if req.Keyword != "" { params.StrValue = req.Keyword } - data, err = s.dependence.MetricsProxy.ListMetricsData(ctx, params) + data, err = s.listMetricsData(ctx, params) if err != nil { return nil, err } @@ -1822,7 +1834,7 @@ func (s *infraService) ListInstancePlugins(ctx entity.Context, req *pb.ListInsta params.StrValue = req.Keyword } - data, err = s.dependence.MetricsProxy.ListMetricsData(ctx, params) + data, err = s.listMetricsData(ctx, params) if err != nil { return nil, err } diff --git a/manager/backend/services/footstone/domain/footstoneService/metrics_proxy_test.go b/manager/backend/services/footstone/domain/footstoneService/metrics_proxy_test.go new file mode 100644 index 0000000000000000000000000000000000000000..60caa3909d0b2999a90b689f2760daef57a82a29 --- /dev/null +++ b/manager/backend/services/footstone/domain/footstoneService/metrics_proxy_test.go @@ -0,0 +1,35 @@ +package footstoneService + +import ( + "testing" + + "gitee.com/OpenCloudOS/ocmanager/manager/backend/pkg/entity" + metricspb "gitee.com/OpenCloudOS/ocmanager/manager/backend/protocol/msg-etl" + "gitee.com/OpenCloudOS/ocmanager/manager/backend/services/footstone/dependence" + "github.com/golang/mock/gomock" +) + +func TestListMetricsDataNilResponseReturnsEmptyResponse(t *testing.T) { + ctrl := gomock.NewController(t) + defer ctrl.Finish() + + metricsProxy := metricspb.NewMockMetricsClientProxy(ctrl) + req := &metricspb.ListMetricsDataRequest{} + metricsProxy.EXPECT(). + ListMetricsData(gomock.Any(), req). + Return(nil, nil) + + service := &infraService{ + dependence: dependence.DependenceAggregation{MetricsProxy: metricsProxy}, + } + resp, err := service.listMetricsData(entity.Context{}, req) + if err != nil { + t.Fatalf("listMetricsData returned error: %v", err) + } + if resp == nil { + t.Fatal("listMetricsData returned nil response") + } + if len(resp.List) != 0 { + t.Fatalf("response list length = %d, want 0", len(resp.List)) + } +}