xref: /linux-tools/misc/apps/simpleclient.go (revision 08efb56e0eeb408ac7d4c6488994eeb8f587aaa0)
1package main
2
3import (
4	"fmt"
5	"io"
6	"log"
7	"net/http"
8    "flag"
9    "strings"
10    "time"
11)
12
13var url = flag.String("url", "", "target server")
14var count = flag.Int("n", 128, "loop count")
15func main() {
16    flag.Parse()
17    if *url == "" {
18        log.Fatal("server empty")
19    }
20    ss := make(map[string]int)
21    tr := http.Transport{ DisableKeepAlives: true }
22    for i:=0; i<*count; i++ {
23        c := http.Client{Timeout: time.Second, Transport: &tr}
24        res, err := c.Get(*url)
25        if err != nil {
26            log.Fatal(err)
27        }
28        body, err := io.ReadAll(res.Body)
29        res.Body.Close()
30        if res.StatusCode !=200 {
31            log.Fatalf("Response failed with status code: %d and\nbody: %s\n", res.StatusCode, body)
32        }
33        if err != nil {
34            log.Fatal(err)
35        }
36        ss[strings.Trim(string(body), " \r\t\n")]+=1
37        c.CloseIdleConnections()
38    }
39    for s, c := range(ss) {
40        fmt.Println(s, c)
41    }
42}
43