OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package tests | 5 package tests |
6 | 6 |
7 import ( | 7 import ( |
8 "bytes" | 8 "bytes" |
9 "testing" | 9 "testing" |
10 | 10 |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
183 } | 183 } |
184 if !hp.IsValid() || !hc.IsValid() { | 184 if !hp.IsValid() || !hc.IsValid() { |
185 t.Fatalf("CreateDataPipe returned invalid handles hp:%v hc:%v", hp, hc) | 185 t.Fatalf("CreateDataPipe returned invalid handles hp:%v hc:%v", hp, hc) |
186 } | 186 } |
187 if r, _ = hc.Wait(system.MOJO_HANDLE_SIGNAL_READABLE, 0); r != system.MO JO_RESULT_DEADLINE_EXCEEDED { | 187 if r, _ = hc.Wait(system.MOJO_HANDLE_SIGNAL_READABLE, 0); r != system.MO JO_RESULT_DEADLINE_EXCEEDED { |
188 t.Fatalf("hc should not be readable:%v", r) | 188 t.Fatalf("hc should not be readable:%v", r) |
189 } | 189 } |
190 if r, _ = hp.Wait(system.MOJO_HANDLE_SIGNAL_WRITABLE, 0); r != system.MO JO_RESULT_OK { | 190 if r, _ = hp.Wait(system.MOJO_HANDLE_SIGNAL_WRITABLE, 0); r != system.MO JO_RESULT_OK { |
191 t.Fatalf("hp should be writeable:%v", r) | 191 t.Fatalf("hp should be writeable:%v", r) |
192 } | 192 } |
193 | |
194 // Test one-phase read/write. | |
195 // Writing. | |
193 kHello := []byte("hello") | 196 kHello := []byte("hello") |
194 r, numBytes := hp.WriteData(kHello, system.MOJO_WRITE_DATA_FLAG_NONE) | 197 r, numBytes := hp.WriteData(kHello, system.MOJO_WRITE_DATA_FLAG_NONE) |
195 if r != system.MOJO_RESULT_OK || numBytes != len(kHello) { | 198 if r != system.MOJO_RESULT_OK || numBytes != len(kHello) { |
196 t.Fatalf("Failed WriteData on hp:%v numBytes:%d", r, numBytes) | 199 t.Fatalf("Failed WriteData on hp:%v numBytes:%d", r, numBytes) |
197 } | 200 } |
201 // Reading. | |
198 if r, _ = hc.Wait(system.MOJO_HANDLE_SIGNAL_READABLE, 1000); r != system .MOJO_RESULT_OK { | 202 if r, _ = hc.Wait(system.MOJO_HANDLE_SIGNAL_READABLE, 1000); r != system .MOJO_RESULT_OK { |
199 t.Fatalf("hc should be readable after WriteData on hp:%v", r) | 203 t.Fatalf("hc should be readable after WriteData on hp:%v", r) |
200 } | 204 } |
201 r, data := hc.ReadData(system.MOJO_READ_DATA_FLAG_NONE) | 205 r, data := hc.ReadData(system.MOJO_READ_DATA_FLAG_NONE) |
202 if r != system.MOJO_RESULT_OK { | 206 if r != system.MOJO_RESULT_OK { |
203 t.Fatalf("Failed ReadData on hc:%v", r) | 207 t.Fatalf("Failed ReadData on hc:%v", r) |
204 } | 208 } |
205 if !bytes.Equal(data, kHello) { | 209 if !bytes.Equal(data, kHello) { |
206 t.Fatalf("Invalid data expected:%s, got:%s", kHello, data) | 210 t.Fatalf("Invalid data expected:%s, got:%s", kHello, data) |
207 } | 211 } |
212 | |
213 // Test two-phase read/write. | |
214 // Writing. | |
215 kHello = []byte("Hello, world!") | |
216 r, buf := hp.BeginWriteData(len(kHello), system.MOJO_WRITE_DATA_FLAG_ALL _OR_NONE) | |
217 if r != system.MOJO_RESULT_OK { | |
218 t.Fatalf("Failed BeginWriteData on hp:%v numBytes:%d", r, len(kH ello)) | |
219 } | |
220 if len(buf) < len(kHello) { | |
221 t.Fatalf("Buffer size(%d) should be at least %d", len(buf), len( kHello)) | |
222 } | |
223 copy(buf, kHello) | |
224 if r, _ := hp.WriteData(kHello, system.MOJO_WRITE_DATA_FLAG_NONE); r != system.MOJO_RESULT_BUSY { | |
225 t.Fatalf("hp should be busy during a two-phase write: %v", r) | |
226 } | |
227 if r, _ = hc.Wait(system.MOJO_HANDLE_SIGNAL_READABLE, 10); r != system.M OJO_RESULT_DEADLINE_EXCEEDED { | |
228 t.Fatalf("hc shouldn't be readable before EndWriteData on hp:%v" , r) | |
229 } | |
230 if r := hp.EndWriteData(len(kHello)); r != system.MOJO_RESULT_OK { | |
231 t.Fatalf("Failed EndWriteData on hp:%v", r) | |
232 } | |
233 // Reading. | |
234 if r, _ = hc.Wait(system.MOJO_HANDLE_SIGNAL_READABLE, 1000); r != system .MOJO_RESULT_OK { | |
jamesr
2015/01/21 18:56:15
sorry I missed this earlier, but what does the con
rogulenko
2015/01/21 19:59:59
Changed all deadlines to either MOJO_DEADLINE_INDE
| |
235 t.Fatalf("hc should be readable after EndWriteData on hp:%v", r) | |
236 } | |
237 if r, buf = hc.BeginReadData(len(kHello), system.MOJO_READ_DATA_FLAG_ALL _OR_NONE); r != system.MOJO_RESULT_OK { | |
238 t.Fatalf("Failed BeginReadData on hc:%v numBytes:%d", r, len(kHe llo)) | |
239 } | |
240 if len(buf) != len(kHello) { | |
241 t.Fatalf("Buffer size(%d) should be equal to %d", len(buf), len( kHello)) | |
242 } | |
243 if r, _ := hc.ReadData(system.MOJO_READ_DATA_FLAG_NONE); r != system.MOJ O_RESULT_BUSY { | |
244 t.Fatalf("hc should be busy during a two-phase read: %v", r) | |
245 } | |
246 if !bytes.Equal(buf, kHello) { | |
247 t.Fatalf("Invalid data expected:%s, got:%s", kHello, buf) | |
248 } | |
249 if r := hc.EndReadData(len(buf)); r != system.MOJO_RESULT_OK { | |
250 t.Fatalf("Failed EndReadData on hc:%v", r) | |
251 } | |
252 | |
208 if r = hp.Close(); r != system.MOJO_RESULT_OK { | 253 if r = hp.Close(); r != system.MOJO_RESULT_OK { |
209 t.Fatalf("Close on hp failed:%v", r) | 254 t.Fatalf("Close on hp failed:%v", r) |
210 } | 255 } |
211 if r, _ = hc.Wait(system.MOJO_HANDLE_SIGNAL_READABLE, 100); r != system. MOJO_RESULT_FAILED_PRECONDITION { | 256 if r, _ = hc.Wait(system.MOJO_HANDLE_SIGNAL_READABLE, 100); r != system. MOJO_RESULT_FAILED_PRECONDITION { |
212 t.Fatalf("hc should not be readable after hp closed:%v", r) | 257 t.Fatalf("hc should not be readable after hp closed:%v", r) |
213 } | 258 } |
214 if r = hc.Close(); r != system.MOJO_RESULT_OK { | 259 if r = hc.Close(); r != system.MOJO_RESULT_OK { |
215 t.Fatalf("Close on hc failed:%v", r) | 260 t.Fatalf("Close on hc failed:%v", r) |
216 } | 261 } |
217 } | 262 } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
256 if buf[0] != 'x' || buf[1] != 'y' { | 301 if buf[0] != 'x' || buf[1] != 'y' { |
257 t.Fatalf("Failed to validate shared buffer. expected:x,y got:%s, %s", buf[0], buf[1]) | 302 t.Fatalf("Failed to validate shared buffer. expected:x,y got:%s, %s", buf[0], buf[1]) |
258 } | 303 } |
259 if r = h1.UnmapBuffer(buf); r != system.MOJO_RESULT_OK { | 304 if r = h1.UnmapBuffer(buf); r != system.MOJO_RESULT_OK { |
260 t.Fatalf("UnmapBuffer failed:%v", r) | 305 t.Fatalf("UnmapBuffer failed:%v", r) |
261 } | 306 } |
262 if r = h1.Close(); r != system.MOJO_RESULT_OK { | 307 if r = h1.Close(); r != system.MOJO_RESULT_OK { |
263 t.Fatalf("Close on h1 failed:%v", r) | 308 t.Fatalf("Close on h1 failed:%v", r) |
264 } | 309 } |
265 } | 310 } |
OLD | NEW |