/*
 * $Id: event_test.c,v 1.2 2005/06/22 22:07:15 murrayma Exp $
 *
 * Author: Markus Stenberg <fingon@iki.fi>
 *
 *  Copyright (c) 1996 Markus Stenberg
 *       All rights reserved
 *
 * Created: Tue Aug 27 20:08:33 1996 fingon
 * Last modified: Sun Nov 24 01:32:49 1996 fingon
 *
 */
#include <stdio.h>
#include "muxevent.h"
#define number(a,b) (a+rand()%(b-a+1))
#if 0
/* In seconds */
#define TEST_TIME            3600
#else
/* In iterations */
#define TEST_ITERATIONS      1000000
#endif
#ifdef TEST_TIME
#define TEST_MSECS           10000
#define TEST_ITERATIONS      TEST_TIME * (1000000 / TEST_MSECS)
#endif
#define LARGE_NUMBER         500000
#define SIMULTANEOUS_EVENTS  600
#define SHORT_TIME           1
#define LONG_TIME            2
void hellow(MUXEVENT * e)
{
    int n;
    int d = (int) e->data;
#if 1
    int d1, d2;
    d1 = d / LARGE_NUMBER;
    d2 = d % LARGE_NUMBER;
    printf("Hello, world!(%d) - %d\n", d1, d2);
    n = number(0, 10);
#endif
    muxevent_add_simple_arg(!n ? number(1, LONG_TIME) : number(1, SHORT_TIME),
	hellow, (int *) (d + 1));
}
void main()
{
    int i;
    muxevent_initialize();
    for (i = 0; i < SIMULTANEOUS_EVENTS; i++)
	muxevent_add_simple_arg(i + 1, hellow, (int *) (LARGE_NUMBER * i));
    for (i = 0; i < TEST_ITERATIONS; i++) {
#ifdef TEST_TIME
	usleep(TEST_MSECS);
#endif
	muxevent_run();
    }
}