summaryrefslogtreecommitdiff
path: root/service
diff options
context:
space:
mode:
authorValery Piashchynski <[email protected]>2020-05-25 09:07:19 +0300
committerGitHub <[email protected]>2020-05-25 09:07:19 +0300
commited40a2ca731ab183f74d3b7ded395a036db94a20 (patch)
treeac90000e09aa8c82460d63a6ffcce3c4f1aa78b1 /service
parent6a111d01d9ec2f43b2fd0173532a0db101137648 (diff)
parentc1f27bc3e0eb94c394ca4c3dd4e5aeebc879d92f (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.go83
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)
}
}