コード例 #1
0
ファイル: event_loop.t.c プロジェクト: lod/embedded_main_loop
} END_TEST

START_TEST (test_destructor) {
	struct event_loop el;
	int start_mem = mallinfo().uordblks;
	event_loop_init(&el);

	event_loop_add_source(&el, (event_source)&ts1);
	event_loop_add_source(&el, (event_source)&ts2);
	event_loop_add_source(&el, (event_source)&ts3);

	ck_assert_int_eq(el.list.next, &ts1.list);
	ck_assert_int_eq(el.list.next->next, &ts2.list);
	ck_assert_int_eq(el.list.next->next->next, &ts3.list);
	ck_assert_int_eq(el.list.next->next->next->next, &el.list);

	event_loop_destroy(&el);

	// Every element should just be pointing to itself now
	ck_assert_int_eq(el.list.next,  &el.list);
	ck_assert_int_eq(el.list.prev,  &el.list);
	ck_assert_int_eq(ts1.list.next, &ts1.list);
	ck_assert_int_eq(ts1.list.prev, &ts1.list);
	ck_assert_int_eq(ts2.list.next, &ts2.list);
	ck_assert_int_eq(ts2.list.prev, &ts2.list);
	ck_assert_int_eq(ts3.list.next, &ts3.list);
	ck_assert_int_eq(ts3.list.prev, &ts3.list);

	ck_assert_int_eq(start_mem, mallinfo().uordblks);
} END_TEST
コード例 #2
0
ファイル: scheduler.c プロジェクト: Dulow187/fossology
/**
 * @brief Free any memory associated with a scheduler_t.
 *
 * This will stop the interface if it is currently running, and free all the
 * memory associated with the different regular expression and similar
 * structures.
 *
 * @param scheduler
 */
void scheduler_destroy(scheduler_t* scheduler)
{
  // TODO interface close
  // TODO repo close

  event_loop_destroy();

  if(scheduler->main_log)
  {
    log_destroy(scheduler->main_log);
    main_log = NULL;
  }

  if(scheduler->process_name) g_free(scheduler->process_name);
  if(scheduler->sysconfig)    fo_config_free(scheduler->sysconfig);
  if(scheduler->sysconfigdir) g_free(scheduler->sysconfigdir);
  if(scheduler->host_queue)   g_list_free(scheduler->host_queue);
  if(scheduler->workers)      g_thread_pool_free(scheduler->workers, FALSE, TRUE);

  if(scheduler->email_subject) g_free(scheduler->email_subject);
  if(scheduler->email_command) g_free(scheduler->email_command);

  g_sequence_free(scheduler->job_queue);

  g_regex_unref(scheduler->parse_agent_msg);
  g_regex_unref(scheduler->parse_db_email);
  g_regex_unref(scheduler->parse_interface_cmd);

  g_tree_unref(scheduler->meta_agents);
  g_tree_unref(scheduler->agents);
  g_tree_unref(scheduler->host_list);
  g_tree_unref(scheduler->job_list);

  g_free(scheduler);
}
コード例 #3
0
ファイル: event_loop.t.c プロジェクト: lod/embedded_main_loop
} END_TEST

START_TEST (test_init) {
	struct event_loop el;
	int start_mem = mallinfo().uordblks;

	event_loop_init(&el);
	ck_assert_int_eq(start_mem, mallinfo().uordblks);

	event_loop_destroy(&el);
	ck_assert_int_eq(start_mem, mallinfo().uordblks);
	
	// Ensure calling init after calling new doesn't mess the destructor
	event_loop eln = event_loop_new();
	int new_mem = mallinfo().uordblks;
	ck_assert_int_ne(start_mem, new_mem);

	event_loop_init(eln);
	ck_assert_int_eq(new_mem, mallinfo().uordblks);

	event_loop_destroy(eln);
	ck_assert_int_eq(start_mem, mallinfo().uordblks);
} END_TEST