Ejemplo n.º 1
0
int main(int argc, char ** argv)
{
   DnxTimer * timer;
   iDnxTimer * itimer;

   verbose = argc > 1? 1: 0;

   // setup test harness
   fakenode.xid.objType    = DNX_OBJ_JOB;
   fakenode.xid.objSerial  = 1;
   fakenode.xid.objSlot    = 2;
   fakenode.reqType        = DNX_REQ_DEREGISTER;
   fakenode.jobCap         = 1;
   fakenode.ttl            = 2;
   fakenode.expires        = 3;
   strcpy(fakenode.address, "fake address");

   fakejob.state           = DNX_JOB_INPROGRESS;
   fakejob.xid.objType     = DNX_OBJ_JOB;
   fakejob.xid.objSerial   = 1;
   fakejob.xid.objSlot     = 2;
   fakejob.cmd             = "fake command line";
   fakejob.start_time      = 100;
   fakejob.timeout         = 10;
   fakejob.expires         = fakejob.start_time + fakejob.timeout;
   fakejob.payload         = &fakepayload;
   fakejob.pNode           = &fakenode;

   entered_dnxJobListExpire = 0;

   // create a short timer and reference it as a concrete object for testing
   CHECK_ZERO(dnxTimerCreate(&fakejoblist, 100, &timer));
   itimer = (iDnxTimer *)timer;

   // check internal state
   CHECK_TRUE(itimer->joblist == &fakejoblist);
   CHECK_TRUE(itimer->tid != 0);
   CHECK_TRUE(itimer->sleepms == 100);

   // wait for timer to have made one pass though timer thread loop
   while (!entered_dnxJobListExpire)
      dnxCancelableSleep(10);

   // shut down
   dnxTimerDestroy(timer);

   return 0;
}
Ejemplo n.º 2
0
int dnxJobListCreate(unsigned size, DnxJobList ** ppJobList)
{
   iDnxJobList * ilist;
   int ret;

   assert(ppJobList && size);

   if ((ilist = (iDnxJobList *)xmalloc(sizeof *ilist)) == 0)
      return DNX_ERR_MEMORY;
   memset(ilist, 0, sizeof *ilist);

   if ((ilist->list = (DnxNewJob *)xmalloc(sizeof *ilist->list * size)) == 0)
   {
      xfree(ilist);
      return DNX_ERR_MEMORY;
   }
   memset(ilist->list, 0, sizeof *ilist->list * size);

   ilist->size = size;
   // I'm pretty sure we should initialize these...
   ilist->head = 0;
   ilist->tail = 0;

   DNX_PT_MUTEX_INIT(&ilist->mut);
   pthread_cond_init(&ilist->cond, 0);

   if ((ret = dnxTimerCreate((DnxJobList *)ilist, DNX_TIMER_SLEEP, 
         &ilist->timer)) != 0) {
      DNX_PT_COND_DESTROY(&ilist->cond);
      DNX_PT_MUTEX_DESTROY(&ilist->mut);
      xfree(ilist->list);
      xfree(ilist);
      return ret;
   }

   *ppJobList = (DnxJobList *)ilist;

   return DNX_OK;
}