From 1499e2beb20fc8149c8561ad2e85b954d06ad853 Mon Sep 17 00:00:00 2001 From: kiyon Date: Wed, 15 Jul 2020 15:13:02 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=AF=20cover=20prefork=20error=20statem?= =?UTF-8?q?ent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prefork.go | 13 ++++++------- prefork_test.go | 16 ++++++++++------ reuseport.go | 7 +------ 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/prefork.go b/prefork.go index 7d2086e8..32c97593 100644 --- a/prefork.go +++ b/prefork.go @@ -17,7 +17,10 @@ const ( envPreforkChildVal = "1" ) -var testPreforkMaster = false +var ( + testPreforkMaster = false + dummyChildCmd = "date" +) // IsChild determines if the current process is a result of Prefork func (app *App) IsChild() bool { @@ -84,7 +87,7 @@ func (app *App) prefork(addr string, tlsconfig ...*tls.Config) (err error) { // When test prefork master, // just start the child process // a cmd on all os is best - cmd = exec.Command("date") + cmd = exec.Command(dummyChildCmd) } cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr @@ -114,9 +117,5 @@ func (app *App) prefork(addr string, tlsconfig ...*tls.Config) (err error) { } // return error if child crashes - for sig := range channel { - return sig.err - } - - return + return (<-channel).err } diff --git a/prefork_test.go b/prefork_test.go index d06117a2..f640c220 100644 --- a/prefork_test.go +++ b/prefork_test.go @@ -12,11 +12,12 @@ func Test_App_Prefork_Child_Process(t *testing.T) { utils.AssertEqual(t, nil, os.Setenv(envPreforkChildKey, envPreforkChildVal)) defer os.Setenv(envPreforkChildKey, "") - app := New(&Settings{ - DisableStartupMessage: true, - }) + app := New() app.init() + err := app.prefork("invalid") + utils.AssertEqual(t, false, err == nil) + go func() { time.Sleep(1000 * time.Millisecond) utils.AssertEqual(t, nil, app.Shutdown()) @@ -28,9 +29,7 @@ func Test_App_Prefork_Child_Process(t *testing.T) { func Test_App_Prefork_Main_Process(t *testing.T) { testPreforkMaster = true - app := New(&Settings{ - DisableStartupMessage: true, - }) + app := New() app.init() go func() { @@ -39,4 +38,9 @@ func Test_App_Prefork_Main_Process(t *testing.T) { }() utils.AssertEqual(t, nil, app.prefork("127.0.0.1:")) + + dummyChildCmd = "invalid" + + err := app.prefork("127.0.0.1:") + utils.AssertEqual(t, false, err == nil) } diff --git a/reuseport.go b/reuseport.go index bd696d76..5afded6a 100644 --- a/reuseport.go +++ b/reuseport.go @@ -4,7 +4,6 @@ package fiber import ( "net" - "strings" tcplisten "github.com/valyala/tcplisten" ) @@ -38,9 +37,5 @@ func reuseport(network, addr string) (net.Listener, error) { DeferAccept: true, FastOpen: true, } - ln, err := cfg.NewListener(network, addr) - if err != nil && strings.Contains(err.Error(), "SO_REUSEPORT") { - return nil, err - } - return ln, err + return cfg.NewListener(network, addr) }