github.com/hxx258456/ccgo@v0.0.5-0.20230213014102-48b35f46f66f/grpc/xds/internal/test/e2e/controlplane.go (about) 1 /* 2 * 3 * Copyright 2021 gRPC authors. 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package e2e 19 20 import ( 21 "fmt" 22 23 "github.com/google/uuid" 24 xdsinternal "github.com/hxx258456/ccgo/grpc/internal/xds" 25 "github.com/hxx258456/ccgo/grpc/xds/internal/testutils/e2e" 26 ) 27 28 type controlPlane struct { 29 server *e2e.ManagementServer 30 nodeID string 31 bootstrapContent string 32 } 33 34 func newControlPlane() (*controlPlane, error) { 35 // Spin up an xDS management server on a local port. 36 server, err := e2e.StartManagementServer() 37 if err != nil { 38 return nil, fmt.Errorf("failed to spin up the xDS management server: %v", err) 39 } 40 41 nodeID := uuid.New().String() 42 bootstrapContentBytes, err := xdsinternal.BootstrapContents(xdsinternal.BootstrapOptions{ 43 Version: xdsinternal.TransportV3, 44 NodeID: nodeID, 45 ServerURI: server.Address, 46 ServerListenerResourceNameTemplate: e2e.ServerListenerResourceNameTemplate, 47 }) 48 if err != nil { 49 server.Stop() 50 return nil, fmt.Errorf("failed to create bootstrap file: %v", err) 51 } 52 53 return &controlPlane{ 54 server: server, 55 nodeID: nodeID, 56 bootstrapContent: string(bootstrapContentBytes), 57 }, nil 58 } 59 60 func (cp *controlPlane) stop() { 61 cp.server.Stop() 62 }