Skip to content

Commit e9b8560

Browse files
Harshil Goelmangalaman93
andauthored
fix(ci): fixing health endpoint issue (#9116)
Co-authored-by: Aman Mangal <[email protected]>
1 parent 24f8116 commit e9b8560

File tree

2 files changed

+98
-8
lines changed

2 files changed

+98
-8
lines changed

dgraphtest/dgraph.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ func (z *zero) healthURL(c *LocalCluster) (string, error) {
172172
if err != nil {
173173
return "", err
174174
}
175-
return "http://localhost:" + publicPort + "/health", nil
175+
return "http://0.0.0.0:" + publicPort + "/health", nil
176176
}
177177

178178
func (z *zero) changeStatus(isRunning bool) {
@@ -184,7 +184,7 @@ func (z *zero) assignURL(c *LocalCluster) (string, error) {
184184
if err != nil {
185185
return "", err
186186
}
187-
return "http://localhost:" + publicPort + "/assign", nil
187+
return "http://0.0.0.0:" + publicPort + "/assign", nil
188188
}
189189

190190
func (z *zero) alphaURL(c *LocalCluster) (string, error) {
@@ -196,7 +196,7 @@ func (z *zero) zeroURL(c *LocalCluster) (string, error) {
196196
if err != nil {
197197
return "", err
198198
}
199-
return "localhost:" + publicPort + "", nil
199+
return "0.0.0.0:" + publicPort + "", nil
200200
}
201201

202202
type alpha struct {
@@ -351,7 +351,7 @@ func (a *alpha) healthURL(c *LocalCluster) (string, error) {
351351
if err != nil {
352352
return "", err
353353
}
354-
return "http://localhost:" + publicPort + "/health", nil
354+
return "http://0.0.0.0:" + publicPort + "/health", nil
355355
}
356356

357357
func (a *alpha) assignURL(c *LocalCluster) (string, error) {
@@ -363,7 +363,7 @@ func (a *alpha) alphaURL(c *LocalCluster) (string, error) {
363363
if err != nil {
364364
return "", err
365365
}
366-
return "localhost:" + publicPort + "", nil
366+
return "0.0.0.0:" + publicPort + "", nil
367367
}
368368

369369
func (a *alpha) changeStatus(isRunning bool) {
@@ -388,8 +388,14 @@ func publicPort(dcli *docker.Client, dc dnode, privatePort string) (string, erro
388388
if len(bindings) == 0 {
389389
continue
390390
}
391-
if port.Port() == privatePort {
392-
return bindings[0].HostPort, nil
391+
if port.Port() != privatePort {
392+
continue
393+
}
394+
395+
for _, binding := range bindings {
396+
if binding.HostIP == "0.0.0.0" {
397+
return binding.HostPort, nil
398+
}
393399
}
394400
}
395401

dgraphtest/local_cluster.go

Lines changed: 85 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package dgraphtest
1818

1919
import (
20+
"bytes"
2021
"context"
2122
"encoding/json"
2223
"fmt"
@@ -281,6 +282,87 @@ func (c *LocalCluster) destroyContainers() error {
281282
return nil
282283
}
283284

285+
// CheckRunningServices checks open ports using lsof and returns the output as a string
286+
func CheckRunningServices() (string, error) {
287+
lsofCmd := exec.Command("lsof", "-i", "-n")
288+
output, err := runCommand(lsofCmd)
289+
if err != nil {
290+
return "", fmt.Errorf("error running lsof command: %v", err)
291+
}
292+
return output, nil
293+
}
294+
295+
// ListRunningContainers lists running Docker containers using the Docker Go client
296+
func (c *LocalCluster) listRunningContainers() (string, error) {
297+
containers, err := c.dcli.ContainerList(context.Background(), types.ContainerListOptions{})
298+
if err != nil {
299+
return "", fmt.Errorf("error listing Docker containers: %v", err)
300+
}
301+
302+
var result bytes.Buffer
303+
for _, container := range containers {
304+
result.WriteString(fmt.Sprintf("ID: %s, Image: %s, Command: %s, Status: %s\n",
305+
container.ID[:10], container.Image, container.Command, container.Status))
306+
307+
result.WriteString("Port Mappings:\n")
308+
for _, port := range container.Ports {
309+
result.WriteString(fmt.Sprintf(" %s:%d -> %d\n", port.IP, port.PublicPort, port.PrivatePort))
310+
}
311+
result.WriteString("\n")
312+
313+
result.WriteString("Port Mappings:\n")
314+
info, err := c.dcli.ContainerInspect(context.Background(), container.ID)
315+
if err != nil {
316+
return "", errors.Wrap(err, "error inspecting container")
317+
}
318+
319+
for port, bindings := range info.NetworkSettings.Ports {
320+
if len(bindings) == 0 {
321+
continue
322+
}
323+
result.WriteString(fmt.Sprintf(" %s:%s\n", port.Port(), bindings))
324+
}
325+
result.WriteString("\n")
326+
}
327+
328+
return result.String(), nil
329+
}
330+
331+
// runCommand executes a command and returns its output or an error
332+
func runCommand(cmd *exec.Cmd) (string, error) {
333+
var out bytes.Buffer
334+
var stderr bytes.Buffer
335+
cmd.Stdout = &out
336+
cmd.Stderr = &stderr
337+
err := cmd.Run()
338+
if err != nil {
339+
return "", fmt.Errorf("%v: %v", err, stderr.String())
340+
}
341+
return out.String(), nil
342+
}
343+
344+
func (c *LocalCluster) printNetworkStuff() {
345+
log.Printf("Checking running services and ports using lsof, netstat, and Docker...\n")
346+
347+
// Check running services using lsof
348+
lsofOutput, err := CheckRunningServices()
349+
if err != nil {
350+
fmt.Printf("Error checking running services: %v\n", err)
351+
} else {
352+
log.Printf("Output of lsof -i:")
353+
log.Println(lsofOutput)
354+
}
355+
356+
// List running Docker containers
357+
dockerOutput, err := c.listRunningContainers()
358+
if err != nil {
359+
fmt.Printf("Error listing Docker containers: %v\n", err)
360+
} else {
361+
log.Printf("Running Docker containers:")
362+
log.Println(dockerOutput)
363+
}
364+
}
365+
284366
func (c *LocalCluster) Cleanup(verbose bool) {
285367
if c == nil {
286368
return
@@ -489,6 +571,7 @@ func (c *LocalCluster) containerHealthCheck(url func(c *LocalCluster) (string, e
489571
if err != nil {
490572
return errors.Wrap(err, "error getting health URL")
491573
}
574+
492575
for i := 0; i < 60; i++ {
493576
time.Sleep(waitDurBeforeRetry)
494577

@@ -530,6 +613,7 @@ func (c *LocalCluster) containerHealthCheck(url func(c *LocalCluster) (string, e
530613
return nil
531614
}
532615

616+
c.printNetworkStuff()
533617
return fmt.Errorf("health failed, cluster took too long to come up [%v]", endpoint)
534618
}
535619

@@ -773,7 +857,7 @@ func (c *LocalCluster) serverURL(server, endpoint string) (string, error) {
773857
if err != nil {
774858
return "", err
775859
}
776-
url := "localhost:" + pubPort + endpoint
860+
url := "0.0.0.0:" + pubPort + endpoint
777861
return url, nil
778862
}
779863

0 commit comments

Comments
 (0)