Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(153)

Side by Side Diff: third_party/grpc/tools/http2_interop/http2interop_test.go

Issue 1932353002: Initial checkin of gRPC to third_party/ Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 package http2interop
2
3 import (
4 "crypto/tls"
5 "crypto/x509"
6 "encoding/json"
7 "flag"
8 "fmt"
9 "io/ioutil"
10 "os"
11 "strconv"
12 "strings"
13 "testing"
14 )
15
16 var (
17 serverHost = flag.String("server_host", "", "The host to test")
18 serverPort = flag.Int("server_port", 443, "The port to test")
19 useTls = flag.Bool("use_tls", true, "Should TLS tests be run")
20 testCase = flag.String("test_case", "", "What test cases to run (tls, framing)")
21
22 // The rest of these are unused, but present to fulfill the client inter face
23 serverHostOverride = flag.String("server_host_override", "", "Unused" )
24 useTestCa = flag.Bool("use_test_ca", false, "Unused")
25 defaultServiceAccount = flag.String("default_service_account", "", "Unus ed")
26 oauthScope = flag.String("oauth_scope", "", "Unused")
27 serviceAccountKeyFile = flag.String("service_account_key_file", "", "Unu sed")
28 )
29
30 func InteropCtx(t *testing.T) *HTTP2InteropCtx {
31 ctx := &HTTP2InteropCtx{
32 ServerHost: *serverHost,
33 ServerPort: *serverPort,
34 ServerHostnameOverride: *serverHostOverride,
35 UseTLS: *useTls,
36 UseTestCa: *useTestCa,
37 T: t,
38 }
39
40 ctx.serverSpec = ctx.ServerHost
41 if ctx.ServerPort != -1 {
42 ctx.serverSpec += ":" + strconv.Itoa(ctx.ServerPort)
43 }
44 if ctx.ServerHostnameOverride == "" {
45 ctx.authority = ctx.ServerHost
46 } else {
47 ctx.authority = ctx.ServerHostnameOverride
48 }
49
50 if ctx.UseTestCa {
51 // It would be odd if useTestCa was true, but not useTls. meh
52 certData, err := ioutil.ReadFile("src/core/tsi/test_creds/ca.pem ")
53 if err != nil {
54 t.Fatal(err)
55 }
56
57 ctx.rootCAs = x509.NewCertPool()
58 if !ctx.rootCAs.AppendCertsFromPEM(certData) {
59 t.Fatal(fmt.Errorf("Unable to parse pem data"))
60 }
61 }
62
63 return ctx
64 }
65
66 func (ctx *HTTP2InteropCtx) Close() error {
67 // currently a noop
68 return nil
69 }
70
71 func TestSoonClientShortSettings(t *testing.T) {
72 defer Report(t)
73 if *testCase != "framing" {
74 t.SkipNow()
75 }
76 ctx := InteropCtx(t)
77 for i := 1; i <= 5; i++ {
78 err := testClientShortSettings(ctx, i)
79 matchError(t, err, "EOF")
80 }
81 }
82
83 func TestSoonShortPreface(t *testing.T) {
84 defer Report(t)
85 if *testCase != "framing" {
86 t.SkipNow()
87 }
88 ctx := InteropCtx(t)
89 for i := 0; i < len(Preface)-1; i++ {
90 err := testShortPreface(ctx, Preface[:i]+"X")
91 matchError(t, err, "EOF")
92 }
93 }
94
95 func TestSoonUnknownFrameType(t *testing.T) {
96 defer Report(t)
97 if *testCase != "framing" {
98 t.SkipNow()
99 }
100 ctx := InteropCtx(t)
101 if err := testUnknownFrameType(ctx); err != nil {
102 t.Fatal(err)
103 }
104 }
105
106 func TestSoonClientPrefaceWithStreamId(t *testing.T) {
107 defer Report(t)
108 if *testCase != "framing" {
109 t.SkipNow()
110 }
111 ctx := InteropCtx(t)
112 err := testClientPrefaceWithStreamId(ctx)
113 matchError(t, err, "EOF")
114 }
115
116 func TestSoonTLSApplicationProtocol(t *testing.T) {
117 defer Report(t)
118 if *testCase != "tls" {
119 t.SkipNow()
120 }
121 ctx := InteropCtx(t)
122 err := testTLSApplicationProtocol(ctx)
123 matchError(t, err, "EOF", "broken pipe")
124 }
125
126 func TestSoonTLSMaxVersion(t *testing.T) {
127 defer Report(t)
128 if *testCase != "tls" {
129 t.SkipNow()
130 }
131 ctx := InteropCtx(t)
132 err := testTLSMaxVersion(ctx, tls.VersionTLS11)
133 // TODO(carl-mastrangelo): maybe this should be some other error. If th e server picks
134 // the wrong protocol version, thats bad too.
135 matchError(t, err, "EOF", "server selected unsupported protocol")
136 }
137
138 func TestSoonTLSBadCipherSuites(t *testing.T) {
139 defer Report(t)
140 if *testCase != "tls" {
141 t.SkipNow()
142 }
143 ctx := InteropCtx(t)
144 err := testTLSBadCipherSuites(ctx)
145 matchError(t, err, "EOF", "Got goaway frame")
146 }
147
148 func matchError(t *testing.T, err error, matches ...string) {
149 if err == nil {
150 t.Fatal("Expected an error")
151 }
152 for _, s := range matches {
153 if strings.Contains(err.Error(), s) {
154 return
155 }
156 }
157 t.Fatalf("Error %v not in %+v", err, matches)
158 }
159
160 func TestMain(m *testing.M) {
161 flag.Parse()
162 m.Run()
163 var fatal bool
164 var any bool
165 for _, ci := range allCaseInfos.Cases {
166 if ci.Skipped {
167 continue
168 }
169 any = true
170 if !ci.Passed && ci.Fatal {
171 fatal = true
172 }
173 }
174
175 if err := json.NewEncoder(os.Stderr).Encode(&allCaseInfos); err != nil {
176 fmt.Println("Failed to encode", err)
177 }
178 var code int
179 if !any || fatal {
180 code = 1
181 }
182 os.Exit(code)
183 }
OLDNEW
« no previous file with comments | « third_party/grpc/tools/http2_interop/http2interop.go ('k') | third_party/grpc/tools/http2_interop/ping.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698