github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/integration/e2ecortex/service.go (about)

     1  package e2ecortex
     2  
     3  import "github.com/cortexproject/cortex/integration/e2e"
     4  
     5  // CortexService represents a Cortex service with at least an HTTP and GRPC port exposed.
     6  type CortexService struct {
     7  	*e2e.HTTPService
     8  
     9  	grpcPort int
    10  }
    11  
    12  func NewCortexService(
    13  	name string,
    14  	image string,
    15  	command *e2e.Command,
    16  	readiness e2e.ReadinessProbe,
    17  	httpPort int,
    18  	grpcPort int,
    19  	otherPorts ...int,
    20  ) *CortexService {
    21  	return &CortexService{
    22  		HTTPService: e2e.NewHTTPService(name, image, command, readiness, httpPort, append(otherPorts, grpcPort)...),
    23  		grpcPort:    grpcPort,
    24  	}
    25  }
    26  
    27  func (s *CortexService) GRPCEndpoint() string {
    28  	return s.Endpoint(s.grpcPort)
    29  }
    30  
    31  func (s *CortexService) NetworkGRPCEndpoint() string {
    32  	return s.NetworkEndpoint(s.grpcPort)
    33  }
    34  
    35  // CompositeCortexService abstract an higher-level service composed, under the hood,
    36  // by 2+ CortexService.
    37  type CompositeCortexService struct {
    38  	*e2e.CompositeHTTPService
    39  }
    40  
    41  func NewCompositeCortexService(services ...*CortexService) *CompositeCortexService {
    42  	var httpServices []*e2e.HTTPService
    43  	for _, s := range services {
    44  		httpServices = append(httpServices, s.HTTPService)
    45  	}
    46  
    47  	return &CompositeCortexService{
    48  		CompositeHTTPService: e2e.NewCompositeHTTPService(httpServices...),
    49  	}
    50  }