diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/regress/lib/libtls/gotls/tls_test.go | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/regress/lib/libtls/gotls/tls_test.go b/src/regress/lib/libtls/gotls/tls_test.go index 2331ec0be6..3a430924a7 100644 --- a/src/regress/lib/libtls/gotls/tls_test.go +++ b/src/regress/lib/libtls/gotls/tls_test.go | |||
| @@ -118,6 +118,73 @@ func TestTLSBasic(t *testing.T) { | |||
| 118 | } | 118 | } |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | func TestTLSSingleByteReadWrite(t *testing.T) { | ||
| 122 | ts, u, caFile, err := newTestServer() | ||
| 123 | if err != nil { | ||
| 124 | t.Fatalf("Failed to start test server: %v", err) | ||
| 125 | } | ||
| 126 | defer os.Remove(caFile) | ||
| 127 | defer ts.Close() | ||
| 128 | |||
| 129 | if err := Init(); err != nil { | ||
| 130 | t.Fatal(err) | ||
| 131 | } | ||
| 132 | |||
| 133 | cfg, err := NewConfig() | ||
| 134 | if err != nil { | ||
| 135 | t.Fatal(err) | ||
| 136 | } | ||
| 137 | defer cfg.Free() | ||
| 138 | cfg.SetCAFile(caFile) | ||
| 139 | |||
| 140 | tls, err := NewClient(cfg) | ||
| 141 | if err != nil { | ||
| 142 | t.Fatal(err) | ||
| 143 | } | ||
| 144 | defer tls.Free() | ||
| 145 | |||
| 146 | t.Logf("Connecting to %s", u.Host) | ||
| 147 | |||
| 148 | if err := tls.Connect(u.Host, ""); err != nil { | ||
| 149 | t.Fatal(err) | ||
| 150 | } | ||
| 151 | defer func() { | ||
| 152 | if err := tls.Close(); err != nil { | ||
| 153 | t.Fatalf("Close failed: %v", err) | ||
| 154 | } | ||
| 155 | }() | ||
| 156 | |||
| 157 | for _, b := range []byte("GET / HTTP/1.0\n\n") { | ||
| 158 | n, err := tls.Write([]byte{b}) | ||
| 159 | if err != nil { | ||
| 160 | t.Fatal(err) | ||
| 161 | } | ||
| 162 | if n != 1 { | ||
| 163 | t.Fatalf("Wrote byte %v, got length %d, want 1", b, n) | ||
| 164 | } | ||
| 165 | } | ||
| 166 | |||
| 167 | var body []byte | ||
| 168 | for { | ||
| 169 | buf := make([]byte, 1) | ||
| 170 | n, err := tls.Read(buf) | ||
| 171 | if err != nil { | ||
| 172 | t.Fatal(err) | ||
| 173 | } | ||
| 174 | if n == 0 { | ||
| 175 | break | ||
| 176 | } | ||
| 177 | if n != 1 { | ||
| 178 | t.Fatalf("Read single byte, got length %d, want 1", n) | ||
| 179 | } | ||
| 180 | body = append(body, buf...) | ||
| 181 | } | ||
| 182 | |||
| 183 | if !strings.Contains(string(body), httpContent) { | ||
| 184 | t.Errorf("Response does not contain %q", httpContent) | ||
| 185 | } | ||
| 186 | } | ||
| 187 | |||
| 121 | func TestTLSInfo(t *testing.T) { | 188 | func TestTLSInfo(t *testing.T) { |
| 122 | ts, u, caFile, err := newTestServer() | 189 | ts, u, caFile, err := newTestServer() |
| 123 | if err != nil { | 190 | if err != nil { |
