Пример #1
0
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);
}
Пример #2
0
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);
}
Пример #3
0
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");
}