END_TEST START_TEST (test_two_subscribers_and_push_event) { printf("\n-----test_two_subscribers_and_push_event start-----\n"); sentToCallback = NULL; sentToCallback2 = NULL; InitEventProcessor(); int16_t stakeholderId = RegisterStakeholder("teststakeholder"); eventSubscription_t subscription; subscription.stakeholderId = stakeholderId; subscription.eventType = EVENT_HEARTBEAT; subscription.callback = &test_callback; Subscribe(subscription); stakeholderId = RegisterStakeholder("teststakeholder2"); eventSubscription_t subscription2; subscription2.stakeholderId = stakeholderId; subscription2.callback = &test_callback2; subscription2.eventType = EVENT_HEARTBEAT; Subscribe(subscription2); struct timespec tms; clock_gettime(CLOCK_REALTIME, &tms); event_t* event = (event_t*)malloc(sizeof(event_t)); event->timeStamp = tms.tv_sec; event->prio = 123; event->sourceId = stakeholderId; event->eventType = EVENT_HEARTBEAT; event->payloadSize = 0; event->payload = NULL; printf("pushing eventdata ptr=%p, timeStamp=%d, prio=%d, sourceId=%d, eventType=%d, payloadSize=%d, *payload=%p\n", event, event->timeStamp, event->prio, event->sourceId, event->eventType, event->payloadSize, event->payload); int rsp = PushEvent(event); printf("Done with PushEvent, moving on to asserts, waiting for callbacks to be called\n"); fflush(stdout); int waitForCallback = WaitForCallback(); ck_assert_int_eq (waitForCallback, 0); int waitForCallback2 = WaitForCallback2(); ck_assert_int_eq (waitForCallback2, 0); ck_assert_int_eq (rsp, EP_OK); printf("sentToCallback=%p sentToCallback2=%p\n", sentToCallback, sentToCallback2); ck_assert_ptr_ne (sentToCallback, (event_t*)0); ck_assert_ptr_ne (sentToCallback2, (event_t*)0); if ((sentToCallback - sentToCallback2) == 0) ck_abort_msg("Failed! Same event sent to both subscribers"); int firstEventEqual = CompareEvent(event, sentToCallback); ck_assert_int_eq (firstEventEqual, 0); int secondEventEqual = CompareEvent(event, sentToCallback2); ck_assert_int_eq (secondEventEqual, 0); printf("-----test_two_subscribers_and_push_event done-----\n\n"); free(event); }
void SplayTree::insert( const Event *newElement ) { TreeElement* node = NULL; TreeElement* left = NULL; TreeElement* right = NULL; TreeElement* newTreeElement = new TreeElement(newElement); numberOfElements++; if (root == NULL) { root = newTreeElement; current = newTreeElement; return; } if(CompareEvent(newTreeElement->getEvent(), current->getEvent()) <= 0) { current->setLeftElement(newTreeElement); newTreeElement->setParentElement(current); current = newTreeElement; splay(newTreeElement); return; } node = root; while (1) { if(CompareEvent(newTreeElement->getEvent(), node->getEvent()) <= 0) { left = node->getLeftElement(); if (left != NULL) { node = left; } else { node->setLeftElement(newTreeElement); break; } } else { right = node->getRightElement(); if (right != NULL) { node = right; } else { node->setRightElement(newTreeElement); break; } } } newTreeElement->setParentElement(node); splay(newTreeElement); }
END_TEST START_TEST (test_subscribe_and_push_event) { printf("\n-----test_subscribe_and_push_event start-----\n"); InitEventProcessor(); int16_t stakeholderId = RegisterStakeholder("teststakeholder"); eventSubscription_t subscription; subscription.stakeholderId = stakeholderId; subscription.eventType = EVENT_HEARTBEAT; subscription.callback = test_callback; Subscribe(subscription); struct timespec tms; clock_gettime(CLOCK_REALTIME, &tms); event_t* event = (event_t*)malloc(sizeof(event_t)); event->timeStamp = tms.tv_sec; event->prio = 123; event->sourceId = stakeholderId; event->eventType = EVENT_HEARTBEAT; event->payloadSize = 0; event->payload = NULL; int rsp = PushEvent(event); int result = WaitForCallback(); ck_assert_int_eq (result, 0); ck_assert_int_eq (rsp, EP_OK); ck_assert_ptr_ne (sentToCallback, (event_t*)0); int equality = CompareEvent(event, sentToCallback); ck_assert_int_eq (equality, 0); free(event); printf("-----test_subscribe_and_push_event done-----\n\n"); }