Skip to content

Commit

Permalink
Add get ips command to scenario
Browse files Browse the repository at this point in the history
Signed-off-by: Kristoffer Dalby <kristoffer@tailscale.com>
  • Loading branch information
kradalby committed Oct 18, 2022
1 parent f109b54 commit 25e39d9
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 3 deletions.
18 changes: 18 additions & 0 deletions integration/scenario.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"errors"
"fmt"
"log"
"net/netip"
"os"
"sync"

Expand Down Expand Up @@ -210,3 +211,20 @@ func (s *Scenario) RunTailscaleUp(

return fmt.Errorf("failed to up tailscale node: %w", errNoNamespaceAvailable)
}

func (s *Scenario) GetIPs(namespace string) ([]netip.Addr, error) {
var ips []netip.Addr
if ns, ok := s.namespaces[namespace]; ok {
for _, client := range ns.Clients {
clientIps, err := client.IPs()
if err != nil {
return ips, fmt.Errorf("failed to get ips: %w", err)
}
ips = append(ips, clientIps...)
}

return ips, nil
}

return ips, fmt.Errorf("failed to get ips: %w", errNoNamespaceAvailable)
}
16 changes: 13 additions & 3 deletions integration/tsic/tsic.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const tsicHashLength = 6
const dockerContextPath = "../."

var errTailscalePingFailed = errors.New("ping failed")
var errTailscaleNotLoggedIn = errors.New("tailscale not logged in")

type TailscaleInContainer struct {
version string
Expand Down Expand Up @@ -102,14 +103,17 @@ func (t *TailscaleInContainer) Up(

log.Println("Join command:", command)
log.Printf("Running join command for %s\n", t.Hostname)
_, _, err := dockertestutil.ExecuteCommand(
stdout, stderr, err := dockertestutil.ExecuteCommand(
t.container,
command,
[]string{},
)
if err != nil {
log.Printf("tailscale join stderr: %s\n", stderr)

return err
}
log.Printf("tailscale join stdout: %s\n", stdout)
log.Printf("%s joined\n", t.Hostname)

return nil
Expand All @@ -123,12 +127,18 @@ func (t *TailscaleInContainer) IPs() ([]netip.Addr, error) {
"ip",
}

result, _, err := dockertestutil.ExecuteCommand(
result, stderr, err := dockertestutil.ExecuteCommand(
t.container,
command,
[]string{},
)
if err != nil {
log.Printf("failed commands stderr: %s\n", stderr)

if strings.Contains(stderr, "NeedsLogin") {
return []netip.Addr{}, errTailscaleNotLoggedIn
}

return []netip.Addr{}, err
}

Expand Down Expand Up @@ -165,7 +175,7 @@ func (t *TailscaleInContainer) Ping(ip netip.Addr) error {
return err
}

if !strings.Contains(result, "pong") {
if !strings.Contains(result, "pong") || !strings.Contains(result, "is local") {
return errTailscalePingFailed
}

Expand Down

0 comments on commit 25e39d9

Please sign in to comment.