static void run_tests() { qeo_factory_t *factory; clock_t start = clock(); pid_t pid = getpid(); for (unsigned int i = 0; i < N; ++i){ log_verbose("[PID %d] Creating factory %d", pid, i); assert(NULL != (factory = qeo_factory_create_by_id(QEO_IDENTITY_DEFAULT))); usleep(100000); log_verbose("[PID %d] Closing factory %d", pid, i); qeo_factory_close(factory); } double time_seconds = ((clock() - start) * 1.0) / CLOCKS_PER_SEC; printf("[PID %d] Creating/closing %d factories took %2.3fs CPU time\r\n", pid, N, time_seconds); }
static void run_test_read() { qeo_factory_t *factory; qeo_state_reader_t *reader; qeo_state_reader_listener_t sr_cbs = { .on_update = on_update }; sem_init(&_sync, 0, 0); _pid = getpid(); log_verbose("[PID %d] Creating factory", _pid); assert(NULL != (factory = qeo_factory_create_by_id(QEO_IDENTITY_DEFAULT))); assert(NULL != (reader = qeo_factory_create_state_reader(factory, _tsm_types, &sr_cbs, 0))); sem_wait(&_sync); log_verbose("[PID %d] Closing factory", _pid); //qeo_state_change_reader_close(change); qeo_state_reader_close(reader); qeo_factory_close(factory); }
static bool run_test_write() { qeo_factory_t *factory; qeo_state_writer_t *writer; int status; int ok = 0; pid_t pid = getpid(); log_verbose("[PID %d] Creating factory", pid); assert(NULL != (factory = qeo_factory_create_by_id(QEO_IDENTITY_DEFAULT))); assert(NULL != (writer = qeo_factory_create_state_writer(factory, _tsm_types, NULL, 0))); _current = &_types1; log_verbose("[PID %d] Writing sample 1", pid); _current->string = string1; _current->i8 = 1; qeo_state_writer_write(writer, _current); sleep(1); log_verbose("go to suspend"); qeo_bgns_suspend(); log_verbose("[PID %d] Writing sample 3", pid); //should not arrive since suspended! _current->string = string3; _current->i8 = 3; qeo_state_writer_write(writer, _current); sleep(1); log_verbose("[PID %d] Closing factory", pid); qeo_state_writer_close(writer); qeo_factory_close(factory); log_verbose("[PID %d] Creating factory", pid); assert(NULL != (factory = qeo_factory_create_by_id(QEO_IDENTITY_DEFAULT))); assert(NULL != (writer = qeo_factory_create_state_writer(factory, _tsm_types, NULL, 0))); log_verbose("[PID %d] Writing sample 2", pid); _current->string = string2; _current->i8 = 2; qeo_state_writer_write(writer, _current); log_verbose("Waiting for process with ID %d", _pid); assert(_pid == waitpid(_pid, &status, 0)); if (WIFEXITED(status)) { ok = 1; printf("ok\n"); } else if (WIFSIGNALED(status)) { printf("killed by signal %s\n", strsignal(WTERMSIG(status))); } else if (WIFSTOPPED(status)) { printf("stopped by signal %s\n", strsignal(WSTOPSIG(status))); } else if (WIFCONTINUED(status)) { printf("continued\n"); } log_verbose("[PID %d] Closing factory", pid); qeo_state_writer_close(writer); qeo_factory_close(factory); return (ok == 1); }