mirror of
https://github.com/foomo/keel.git
synced 2025-10-16 12:35:34 +00:00
51 lines
2.3 KiB
Go
51 lines
2.3 KiB
Go
package service_test
|
|
|
|
import (
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/foomo/keel"
|
|
"github.com/foomo/keel/service"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
func ExampleNewHTTP() {
|
|
svr := keel.NewServer(
|
|
keel.WithLogger(zap.NewExample()),
|
|
keel.WithGracefulTimeout(time.Second),
|
|
keel.WithShutdownTimeout(3*time.Second),
|
|
)
|
|
|
|
l := svr.Logger()
|
|
|
|
svr.AddService(
|
|
service.NewHTTP(l, "demo", "localhost:8080", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(http.StatusOK)
|
|
_, _ = w.Write([]byte("OK"))
|
|
})),
|
|
)
|
|
|
|
go func() {
|
|
waitFor("localhost:8080")
|
|
l.Info(httpGet("http://localhost:8080"))
|
|
shutdown()
|
|
}()
|
|
|
|
svr.Run()
|
|
|
|
// Output:
|
|
// {"level":"info","msg":"starting keel server"}
|
|
// {"level":"info","msg":"starting keel service","keel_service_type":"http","keel_service_name":"demo","net_host_ip":"localhost","net_host_port":"8080"}
|
|
// {"level":"info","msg":"OK"}
|
|
// {"level":"info","msg":"keel graceful shutdown"}
|
|
// {"level":"info","msg":"keel graceful shutdown timeout","graceful_timeout":"1s","shutdown_timeout":"3s"}
|
|
// {"level":"info","msg":"keel graceful shutdown timeout complete"}
|
|
// {"level":"info","msg":"keel graceful shutdown closers"}
|
|
// {"level":"info","msg":"stopping keel service","keel_service_type":"http","keel_service_name":"demo"}
|
|
// {"level":"warn","msg":"keel graceful shutdown closer failed","name":"*service.HTTP","error_type":"*errors.withStack","error_message":"failed to stop service: context deadline exceeded","error_messageVerbose":"context deadline exceeded\nfailed to stop service\ngithub.com/foomo/keel/service.(*HTTP).Close\n\t/Users/franklin/Workingcopies/github.com/foomo/keel/service/http.go:88\ngithub.com/foomo/keel.NewServer.func2\n\t/Users/franklin/Workingcopies/github.com/foomo/keel/server.go:137\ngolang.org/x/sync/errgroup.(*Group).Go.func1\n\t/Users/franklin/Workspaces/go/pkg/mod/golang.org/x/sync@v0.3.0/errgroup/errgroup.go:75\nruntime.goexit\n\t/opt/homebrew/opt/go/libexec/src/runtime/asm_arm64.s:1222"}
|
|
// {"level":"debug","msg":"keel graceful shutdown closer closed","name":"trace.noopTracerProvider"}
|
|
// {"level":"debug","msg":"keel graceful shutdown closer closed","name":"nonrecording.noopMeterProvider"}
|
|
// {"level":"info","msg":"keel graceful shutdown complete"}
|
|
// {"level":"info","msg":"keel server stopped"}
|
|
}
|