Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
aos
GitHub Repository: aos/grafana-agent
Path: blob/main/cmd/grafana-agent-service/testdata/example_service.go
4096 views
1
package main
2
3
import (
4
"flag"
5
"io"
6
"log"
7
"net"
8
"net/http"
9
"os"
10
)
11
12
func main() {
13
if err := run(); err != nil {
14
log.Fatal(err)
15
}
16
}
17
18
func run() error {
19
var (
20
listenAddr = "0.0.0.0:8080"
21
)
22
23
fs := flag.NewFlagSet(os.Args[0], flag.ExitOnError)
24
fs.StringVar(&listenAddr, "listen-addr", listenAddr, "Address to listen for traffic on.")
25
26
if err := fs.Parse(os.Args[1:]); err != nil {
27
return err
28
}
29
30
lis, err := net.Listen("tcp", listenAddr)
31
if err != nil {
32
return err
33
}
34
defer func() {
35
_ = lis.Close()
36
}()
37
38
mux := http.NewServeMux()
39
40
mux.HandleFunc("/echo/stdout", func(w http.ResponseWriter, r *http.Request) {
41
_, _ = io.Copy(os.Stdout, r.Body)
42
})
43
mux.HandleFunc("/echo/stderr", func(w http.ResponseWriter, r *http.Request) {
44
_, _ = io.Copy(os.Stderr, r.Body)
45
})
46
mux.HandleFunc("/echo/response", func(w http.ResponseWriter, r *http.Request) {
47
_, _ = io.Copy(w, r.Body)
48
})
49
50
srv := &http.Server{Handler: mux}
51
_ = srv.Serve(lis)
52
return nil
53
}
54
55