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

Side by Side Diff: native_client_sdk/src/tests/nacl_io_test/event_test.cc

Issue 23005005: [NaCl SDK] nacl_io: Add initial implementations of kill and signal (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nits Created 7 years, 4 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 | Annotate | Revision Log
OLDNEW
1 /* Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 /* Copyright (c) 2013 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 5
6 #include <errno.h> 6 #include <errno.h>
7 #include <fcntl.h> 7 #include <fcntl.h>
8 #include <stdio.h> 8 #include <stdio.h>
9 #include <sys/ioctl.h>
9 #include <sys/stat.h> 10 #include <sys/stat.h>
10 #include <sys/time.h> 11 #include <sys/time.h>
11 12
12 #include "gtest/gtest.h" 13 #include "gtest/gtest.h"
13 14
14 #include "nacl_io/event_emitter.h" 15 #include "nacl_io/event_emitter.h"
15 #include "nacl_io/event_listener.h" 16 #include "nacl_io/event_listener.h"
16 #include "nacl_io/kernel_intercept.h" 17 #include "nacl_io/kernel_intercept.h"
17 #include "nacl_io/kernel_proxy.h" 18 #include "nacl_io/kernel_proxy.h"
18 #include "nacl_io/kernel_wrap.h" 19 #include "nacl_io/kernel_wrap.h"
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 EXPECT_LT(TIMEOUT_LONG - TIMEOUT_SLOP, duration); 319 EXPECT_LT(TIMEOUT_LONG - TIMEOUT_SLOP, duration);
319 EXPECT_GT(TIMEOUT_LONG + SCHEDULING_GRANULARITY, duration); 320 EXPECT_GT(TIMEOUT_LONG + SCHEDULING_GRANULARITY, duration);
320 } 321 }
321 322
322 struct SignalInfo { 323 struct SignalInfo {
323 EventEmitterTester* em; 324 EventEmitterTester* em;
324 unsigned int ms_wait; 325 unsigned int ms_wait;
325 uint32_t events; 326 uint32_t events;
326 }; 327 };
327 328
328 void *SignalEmitter(void *ptr) { 329 static void *SignalEmitterThread(void *ptr) {
329 SignalInfo* info = (SignalInfo*) ptr; 330 SignalInfo* info = (SignalInfo*) ptr;
330 struct timespec ts; 331 struct timespec ts;
331 ts.tv_sec = 0; 332 ts.tv_sec = 0;
332 ts.tv_nsec = info->ms_wait * 1000000; 333 ts.tv_nsec = info->ms_wait * 1000000;
333 334
334 nanosleep(&ts, NULL); 335 nanosleep(&ts, NULL);
335 336
336 info->em->RaiseEvent(info->events); 337 info->em->RaiseEvent(info->events);
337 return NULL; 338 return NULL;
338 } 339 }
(...skipping 10 matching lines...) Expand all
349 EventData ev[MAX_EVENTS]; 350 EventData ev[MAX_EVENTS];
350 memset(ev, 0, sizeof(ev)); 351 memset(ev, 0, sizeof(ev));
351 EXPECT_EQ(0, listener->Track(ID_EMITTER, emitter, KE_EXPECTED, USER_DATA_A)); 352 EXPECT_EQ(0, listener->Track(ID_EMITTER, emitter, KE_EXPECTED, USER_DATA_A));
352 353
353 // Setup another thread to wait 1/4 of the max time, and signal both 354 // Setup another thread to wait 1/4 of the max time, and signal both
354 // an expected, and unexpected value. 355 // an expected, and unexpected value.
355 siginfo.em = emitter.get(); 356 siginfo.em = emitter.get();
356 siginfo.ms_wait = TIMEOUT_SHORT; 357 siginfo.ms_wait = TIMEOUT_SHORT;
357 siginfo.events = KE_EXPECTED | KE_FILTERED; 358 siginfo.events = KE_EXPECTED | KE_FILTERED;
358 pthread_t tid; 359 pthread_t tid;
359 pthread_create(&tid, NULL, SignalEmitter, &siginfo); 360 pthread_create(&tid, NULL, SignalEmitterThread, &siginfo);
360 361
361 // Wait for the signal from the other thread and time it. 362 // Wait for the signal from the other thread and time it.
362 gettimeofday(&start, NULL); 363 gettimeofday(&start, NULL);
363 int cnt = 0; 364 int cnt = 0;
364 EXPECT_EQ(0, listener->Wait(ev, MAX_EVENTS, TIMEOUT_VERY_LONG, &cnt)); 365 EXPECT_EQ(0, listener->Wait(ev, MAX_EVENTS, TIMEOUT_VERY_LONG, &cnt));
365 EXPECT_EQ(1, cnt); 366 EXPECT_EQ(1, cnt);
366 gettimeofday(&end, NULL); 367 gettimeofday(&end, NULL);
367 368
368 // Verify the wait duration, and that we only recieved the expected signal. 369 // Verify the wait duration, and that we only recieved the expected signal.
369 duration = Duration(&start, &end); 370 duration = Duration(&start, &end);
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 // Expect normal files to be read/write and one pollable node to be read. 472 // Expect normal files to be read/write and one pollable node to be read.
472 SetFDs(&rd_set, fds); 473 SetFDs(&rd_set, fds);
473 SetFDs(&wr_set, fds); 474 SetFDs(&wr_set, fds);
474 cnt = select(fdnum, &rd_set, &wr_set, NULL, NULL); 475 cnt = select(fdnum, &rd_set, &wr_set, NULL, NULL);
475 EXPECT_EQ(7, cnt); 476 EXPECT_EQ(7, cnt);
476 EXPECT_NE(0, FD_ISSET(fds[0], &rd_set)); 477 EXPECT_NE(0, FD_ISSET(fds[0], &rd_set));
477 EXPECT_EQ(0, FD_ISSET(fds[0], &wr_set)); 478 EXPECT_EQ(0, FD_ISSET(fds[0], &wr_set));
478 } 479 }
479 480
480 481
OLDNEW
« no previous file with comments | « native_client_sdk/src/tests/nacl_io_socket_test/event_test.cc ('k') | native_client_sdk/src/tests/nacl_io_test/example.dsc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698