MCPcopy Index your code
hub / github.com/GoEdgeLab/EdgeNode / TestEndpoints

Method TestEndpoints

internal/rpc/rpc_client.go:174–229  ·  view source on GitHub ↗

TestEndpoints 测试Endpoints是否可用

(endpoints []string)

Source from the content-addressed store, hash-verified

172
173// TestEndpoints 测试Endpoints是否可用
174func (this *RPCClient) TestEndpoints(endpoints []string) bool {
175 if len(endpoints) == 0 {
176 return false
177 }
178
179 var wg = sync.WaitGroup{}
180 wg.Add(len(endpoints))
181
182 var ok = false
183
184 for _, endpoint := range endpoints {
185 go func(endpoint string) {
186 defer wg.Done()
187
188 u, err := url.Parse(endpoint)
189 if err != nil {
190 return
191 }
192
193 ctx, cancelFunc := context.WithTimeout(context.Background(), 5*time.Second)
194 defer func() {
195 cancelFunc()
196 }()
197 var conn *grpc.ClientConn
198 if u.Scheme == "http" {
199 conn, err = grpc.DialContext(ctx, u.Host, grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithBlock())
200 } else if u.Scheme == "https" {
201 conn, err = grpc.DialContext(ctx, u.Host, grpc.WithTransportCredentials(credentials.NewTLS(&tls.Config{
202 InsecureSkipVerify: true,
203 })), grpc.WithBlock())
204 } else {
205 return
206 }
207 if err != nil {
208 return
209 }
210 if conn == nil {
211 return
212 }
213 defer func() {
214 _ = conn.Close()
215 }()
216
217 var pingService = pb.NewPingServiceClient(conn)
218 _, err = pingService.Ping(this.Context(), &pb.PingRequest{})
219 if err != nil {
220 return
221 }
222
223 ok = true
224 }(endpoint)
225 }
226 wg.Wait()
227
228 return ok
229}
230
231// 初始化

Callers 2

changeAPINodeAddrsMethod · 0.80
LoopMethod · 0.80

Calls 7

CloseMethod · 0.95
ContextMethod · 0.95
DoneMethod · 0.80
ParseMethod · 0.80
WithTimeoutMethod · 0.80
AddMethod · 0.65
WaitMethod · 0.45

Tested by

no test coverage detected