From a67c31e0b533fbe346c8a867ac48c33b1e5acd3b Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Fri, 11 Aug 2023 17:27:26 +0200 Subject: [PATCH] provide DelayedStart() (proof-of-concept): parameterized handler (factory) --- core/core.go | 12 ++++++++++++ server/server.go | 2 ++ tests/etc/etc.go | 2 +- tests/scopes_test.go | 2 +- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/core/core.go b/core/core.go index 96ef5ac..2e7dcd1 100644 --- a/core/core.go +++ b/core/core.go @@ -2,6 +2,7 @@ package core import ( "fmt" + "time" lib "git.sr.ht/~cco/go-scopes" "git.sr.ht/~cco/go-scopes/config" @@ -16,6 +17,17 @@ func Start(ctx lib.Context) { lib.RunCtx(ctx, Listen) } +func DelayedStart(starter lib.StartProc, delay time.Duration) lib.StartProc { + if starter == nil { + starter = Start + } + return func(ctx lib.Context) { + logging.Debug(ctx).Int("delay", int(delay)).Msg("core.DelayedStart") + time.Sleep(delay * time.Millisecond) + starter(ctx) + } +} + func Listen(ctx lib.Context) { step := ctx.Config().Step() for step(ctx) { diff --git a/server/server.go b/server/server.go index a487e79..42ed0c8 100644 --- a/server/server.go +++ b/server/server.go @@ -7,6 +7,7 @@ import ( lib "git.sr.ht/~cco/go-scopes" "git.sr.ht/~cco/go-scopes/core" "git.sr.ht/~cco/go-scopes/core/message" + "git.sr.ht/~cco/go-scopes/logging" "github.com/gin-gonic/gin" ) @@ -44,6 +45,7 @@ func Serve(ctx lib.Context) { } srv := &http.Server{Addr: cfg.Addr, Handler: r} ctx.WithState(&ServerState{server: srv}) + logging.Debug(ctx).Str("addr", cfg.Addr).Msg("server.Serve") lib.RunCtx(ctx, func(ctx lib.Context) { srv.ListenAndServe() }) diff --git a/tests/etc/etc.go b/tests/etc/etc.go index 6084dd6..f48d02d 100644 --- a/tests/etc/etc.go +++ b/tests/etc/etc.go @@ -35,7 +35,7 @@ func Config() lib.Config { server_c.AddRoute("/api", server.MsgHandler("demo", nil, "test-receiver")) test_client := &client.Cfg{ - BaseCfg: b("test-client", core.Start), + BaseCfg: b("test-client", core.DelayedStart(core.Start, 50)), Url: ovr("http://localhost:8123/api", SERVER_URL), } test_client.AddAction("demo", action.Base(client.Send)) diff --git a/tests/scopes_test.go b/tests/scopes_test.go index 51d8de3..341b95c 100644 --- a/tests/scopes_test.go +++ b/tests/scopes_test.go @@ -19,7 +19,7 @@ func TestScopesApp(tb *tbase.T) { t.Run("send", SendTest) t.Run("client", ClientTest) t.TearDownApp("") - t.AssertEqual(t.LogCheck("", true), 16) + t.AssertEqual(t.LogCheck("", true), 18) } func AppTest(t *testing.T) {