X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=Scheduler%2FScheduler.test.cc;h=c8dc0b4195ac311ae8fb9796879fc388d75b9a2e;hb=04181eba2e5e1dd0a8552b69905d7a3d493e2d77;hp=2521b4a27c16305019627bff0aa96909638b2178;hpb=914af680a37d303da51e3877972ca9bd68d6190b;p=senf.git diff --git a/Scheduler/Scheduler.test.cc b/Scheduler/Scheduler.test.cc index 2521b4a..c8dc0b4 100644 --- a/Scheduler/Scheduler.test.cc +++ b/Scheduler/Scheduler.test.cc @@ -2,9 +2,9 @@ // $Id$ // // Copyright (C) 2006 -// Fraunhofer Institut fuer offene Kommunikationssysteme (FOKUS) -// Kompetenzzentrum fuer Satelitenkommunikation (SatCom) -// Stefan Bund +// Fraunhofer Institute for Open Communication Systems (FOKUS) +// Competence Center NETwork research (NET), St. Augustin, GERMANY +// Stefan Bund // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -36,10 +36,11 @@ #include #include #include +#include #include "Scheduler.hh" -#include +#include "../Utils/auto_unit_test.hh" #include #define prefix_ @@ -101,6 +102,7 @@ namespace { unlink(SOCK_PATH); int pid = fork(); if (pid == 0) { + signal(SIGCHLD, SIG_IGN); server(); _exit(0); } @@ -108,6 +110,7 @@ namespace { error("fork"); return 0; } + signal(SIGCHLD, SIG_DFL); sleep(1); // Wait for the server socket to be opened return pid; @@ -141,28 +144,28 @@ namespace { int size; int event; - void callback(int fd, Scheduler::EventId ev) + void callback(int fd, int ev) { event = ev; - switch (event & Scheduler::EV_ALL) { - case Scheduler::EV_READ: + switch (event & senf::scheduler::FdEvent::EV_ALL) { + case senf::scheduler::FdEvent::EV_READ: size = recv(fd,buffer,1024,0); break; - case Scheduler::EV_PRIO: + case senf::scheduler::FdEvent::EV_PRIO: size = recv(fd,buffer,1024,MSG_OOB); - Scheduler::instance().terminate(); break; - case Scheduler::EV_WRITE: + case senf::scheduler::FdEvent::EV_WRITE: size = write(fd,buffer,size); - Scheduler::instance().terminate(); break; } - Scheduler::instance().terminate(); + senf::scheduler::terminate(); } + bool timeoutCalled = false; void timeout() { - Scheduler::instance().terminate(); + timeoutCalled = true; + senf::scheduler::terminate(); } struct HandleWrapper @@ -177,21 +180,49 @@ namespace { return handle.fd_; } - void handleCallback(HandleWrapper const & handle, Scheduler::EventId event) + void handleCallback(HandleWrapper const & handle, int event) { if (handle.tag_ != "TheTag") return; callback(handle.fd_,event); } - bool is_close(Scheduler::sched_time a, Scheduler::sched_time b) + bool is_close(ClockService::clock_type a, ClockService::clock_type b) { - return (a