Joe Tsai 6248c1ceca all: use "github.com/go-json-experiment/json/v1" over "encoding/json"
DO NOT SUBMIT: experiment to check how much breaks.

Signed-off-by: Joe Tsai <joetsai@digital-static.net>
2025-07-14 14:45:45 -07:00

55 lines
1.0 KiB
Go

// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
//go:build ignore
// Command dns_tester exists in order to perform tests of our DNS
// configuration stack. This was written because the state of DNS
// in our target environments is so diverse that we need a little tool
// to do this test for us.
package main
import (
"context"
"github.com/go-json-experiment/json/v1"
"flag"
"net"
"os"
"time"
)
func main() {
flag.Parse()
target := flag.Arg(0)
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
errCount := 0
wait := 25 * time.Millisecond
for range make([]struct{}, 5) {
err := lookup(ctx, target)
if err != nil {
errCount++
time.Sleep(wait)
wait = wait * 2
continue
}
break
}
}
func lookup(ctx context.Context, target string) error {
ctx, cancel := context.WithTimeout(ctx, time.Second)
defer cancel()
hosts, err := net.LookupHost(target)
if err != nil {
return err
}
json.NewEncoder(os.Stdout).Encode(hosts)
return nil
}