diff options
author | Valery Piashchynski <[email protected]> | 2020-05-25 09:07:19 +0300 |
---|---|---|
committer | GitHub <[email protected]> | 2020-05-25 09:07:19 +0300 |
commit | ed40a2ca731ab183f74d3b7ded395a036db94a20 (patch) | |
tree | ac90000e09aa8c82460d63a6ffcce3c4f1aa78b1 /service | |
parent | 6a111d01d9ec2f43b2fd0173532a0db101137648 (diff) | |
parent | c1f27bc3e0eb94c394ca4c3dd4e5aeebc879d92f (diff) |
Merge pull request #330 from spiral/release_1.8.1
Release 1.8.1
Diffstat (limited to 'service')
-rw-r--r-- | service/http/h2c_test.go | 83 |
1 files changed, 50 insertions, 33 deletions
diff --git a/service/http/h2c_test.go b/service/http/h2c_test.go index a2465a0a..f17538bc 100644 --- a/service/http/h2c_test.go +++ b/service/http/h2c_test.go @@ -1,23 +1,29 @@ package http import ( + "net/http" + "testing" + "time" + + "github.com/cenkalti/backoff/v4" "github.com/sirupsen/logrus" "github.com/sirupsen/logrus/hooks/test" "github.com/spiral/roadrunner/service" "github.com/stretchr/testify/assert" - "net/http" - "testing" - "time" ) func Test_Service_H2C(t *testing.T) { - logger, _ := test.NewNullLogger() - logger.SetLevel(logrus.DebugLevel) + bkoff := backoff.NewExponentialBackOff() + bkoff.MaxElapsedTime = time.Second * 15 + + err := backoff.Retry(func() error { + logger, _ := test.NewNullLogger() + logger.SetLevel(logrus.DebugLevel) - c := service.NewContainer(logger) - c.Register(ID, &Service{}) + c := service.NewContainer(logger) + c.Register(ID, &Service{}) - assert.NoError(t, c.Init(&testCfg{httpCfg: `{ + err := c.Init(&testCfg{httpCfg: `{ "address": ":6029", "http2": {"h2c":true}, "workers":{ @@ -27,40 +33,51 @@ func Test_Service_H2C(t *testing.T) { "numWorkers": 1 } } - }`})) + }`}) + if err != nil { + return err + } - s, st := c.Get(ID) - assert.NotNil(t, s) - assert.Equal(t, service.StatusOK, st) + s, st := c.Get(ID) + assert.NotNil(t, s) + assert.Equal(t, service.StatusOK, st) - // should do nothing - s.(*Service).Stop() + // should do nothing + s.(*Service).Stop() + + go func() { + err := c.Serve() + if err != nil { + t.Errorf("error serving: %v", err) + } + }() + time.Sleep(time.Millisecond * 100) + defer c.Stop() - go func() { - err := c.Serve() + req, err := http.NewRequest("PRI", "http://localhost:6029?hello=world", nil) if err != nil { - t.Errorf("error serving: %v", err) + return err } - }() - time.Sleep(time.Millisecond * 100) - defer c.Stop() - req, err := http.NewRequest("PRI", "http://localhost:6029?hello=world", nil) - assert.NoError(t, err) + req.Header.Add("Upgrade", "h2c") + req.Header.Add("Connection", "HTTP2-Settings") + req.Header.Add("HTTP2-Settings", "") - req.Header.Add("Upgrade", "h2c") - req.Header.Add("Connection", "HTTP2-Settings") - req.Header.Add("HTTP2-Settings", "") + r, err2 := http.DefaultClient.Do(req) + if err2 != nil { + return err2 + } - r, err2 := http.DefaultClient.Do(req) - if err2 != nil { - t.Fatal(err2) - } + assert.Equal(t, "101 Switching Protocols", r.Status) - assert.Equal(t, "101 Switching Protocols", r.Status) + err3 := r.Body.Close() + if err3 != nil { + return err3 + } + return nil + }, bkoff) - err3 := r.Body.Close() - if err3 != nil { - t.Errorf("fail to close the Body: error %v", err3) + if err != nil { + t.Fatal(err) } } |