Example #1
0
Test(Player, look_up)
{
	player_t *pl = player_create_at((vector2d_t){9, 9});
	game_t *gm = game_create(20, 20, 7, 5);

	cr_assert(pl);
	cr_assert(gm);
	game_add_team(gm, "pandas");
	pl->p_teamname = strdup("pandas");
	cr_assert_neq(game_register_player(gm, pl), -1);
	pl->p_dir = (vector2d_t){0, -1};

	board_put_resource(gm->ga_board, (vector2d_t){9, 9}, SIBUR);
	board_put_resource(gm->ga_board, (vector2d_t){8, 8}, THYSTAME);
	board_put_resource(gm->ga_board, (vector2d_t){9, 8}, LINEMATE);
	board_put_resource(gm->ga_board, (vector2d_t){10, 8}, DERAUMERE);
	board_inc_food(gm->ga_board, (vector2d_t){10, 8});
	board_inc_food(gm->ga_board, (vector2d_t){10, 8});

	dynbuf_t *buf = player_look(pl, gm);
	cr_assert(buf);
	cr_log_info(buf->b_data);
	cr_assert(strstr(buf->b_data, "player"));
	cr_assert_eq(count_char(buf->b_data, ','), 3);
	cr_assert_str_eq(buf->b_data,
		"[sibur player,thystame,linemate,food food deraumere]");
	dynbuf_delete(buf);
	game_delete(gm);
}
Example #2
0
Test(Player, look_empty)
{
	player_t *pl = player_create_at((vector2d_t){9, 9});
	game_t *gm = game_create(20, 20, 7, 5);

	cr_assert(pl);
	cr_assert(gm);
	game_add_team(gm, "pandas");
	pl->p_teamname = strdup("pandas");
	cr_assert_neq(game_register_player(gm, pl), -1);
	dynbuf_t *buf = player_look(pl, gm);
	cr_assert(buf);
	cr_log_info(buf->b_data);
	cr_assert(strstr(buf->b_data, "player"));
	cr_assert_eq(count_char(buf->b_data, ','), 3);
	pl->p_lvl = 2;
	dynbuf_delete(buf);
	buf = player_look(pl, gm);
	cr_log_info(buf->b_data);
	cr_assert(strstr(buf->b_data, "player"));
	cr_assert_eq(count_char(buf->b_data, ','), 8);
	dynbuf_delete(buf);
	pl->p_lvl = 3;
	buf = player_look(pl, gm);
	cr_log_info(buf->b_data);
	cr_assert(strstr(buf->b_data, "player"));
	cr_assert_eq(count_char(buf->b_data, ','), 15);
	dynbuf_delete(buf);
	game_delete(gm);
}
Example #3
0
Test(vc_management_auto, vc_alloc_simple)
{
	int ret;
	struct gnix_vc *vc[2];
	struct gnix_fid_ep *ep_priv;

	ep_priv = container_of(ep[0], struct gnix_fid_ep, ep_fid);

	ret = _gnix_vc_alloc(ep_priv, gnix_addr[0], &vc[0]);
	cr_assert_eq(ret, FI_SUCCESS);

	ret = _gnix_vc_alloc(ep_priv, gnix_addr[1], &vc[1]);
	cr_assert_eq(ret, FI_SUCCESS);

	/*
	 * vc_id's have to be different since the
	 * vc's were allocated using the same ep.
	 */
	cr_assert_neq(vc[0]->vc_id, vc[1]->vc_id);

	ret = _gnix_vc_destroy(vc[0]);
	cr_assert_eq(ret, FI_SUCCESS);

	ret = _gnix_vc_destroy(vc[1]);
	cr_assert_eq(ret, FI_SUCCESS);
}
Example #4
0
Test(Player, eject)
{
	player_t *pl1 = player_create_at((vector2d_t){9, 9});
	player_t *pl2 = player_create_at((vector2d_t){9, 9});
	player_t *pl3 = player_create_at((vector2d_t){9, 9});
	player_t *pl4 = player_create_at((vector2d_t){9, 15});
	game_t *gm = game_create(20, 20, 7, 5);

	cr_assert(pl1);
	cr_assert(pl2);
	cr_assert(pl2);
	cr_assert(gm);
	game_add_team(gm, "pandas");
	game_add_team(gm, "red-pandas");
	pl1->p_teamname = strdup("pandas");
	pl3->p_teamname = strdup("pandas");
	pl2->p_teamname = strdup("red-pandas");
	pl4->p_teamname = strdup("red-pandas");
	cr_assert_neq(game_register_player(gm, pl1), -1);
	cr_assert_neq(game_register_player(gm, pl2), -1);
	cr_assert_neq(game_register_player(gm, pl3), -1);
	cr_assert_neq(game_register_player(gm, pl4), -1);

	pl2->p_dir = (vector2d_t){-1, 0};

	player_eject(pl1, gm->ga_players, gm->ga_board);

	cr_expect_eq(pl2->p_pos.v_x, 8);
	cr_expect_eq(pl2->p_pos.v_y, 9);
	cr_expect_eq(pl3->p_pos.v_x, 10);
	cr_expect_eq(pl3->p_pos.v_y, 9);

	player_eject(pl1, gm->ga_players, gm->ga_board);
	cr_expect_eq(pl2->p_pos.v_x, 8);
	cr_expect_eq(pl2->p_pos.v_y, 9);
	cr_expect_eq(pl3->p_pos.v_x, 10);
	cr_expect_eq(pl3->p_pos.v_y, 9);

	player_delete(pl1);
	player_delete(pl2);
	player_delete(pl3);
	game_delete(gm);
}
Example #5
0
Test(Player, rite_check_tile)
{
	player_t *pl1 = player_create_at((vector2d_t){9, 9});
	player_t *pl2 = player_create_at((vector2d_t){9, 9});
	player_t *pl3 = player_create_at((vector2d_t){9, 7});
	player_t *pl4 = player_create_at((vector2d_t){9, 15});
	game_t *gm = game_create(20, 20, 7, 5);

	cr_assert(pl1);
	cr_assert(pl2);
	cr_assert(pl2);
	cr_assert(gm);
	game_add_team(gm, "pandas");
	game_add_team(gm, "red-pandas");
	pl1->p_teamname = strdup("pandas");
	pl3->p_teamname = strdup("pandas");
	pl2->p_teamname = strdup("red-pandas");
	pl4->p_teamname = strdup("red-pandas");
	cr_assert_neq(game_register_player(gm, pl1), -1);
	cr_assert_neq(game_register_player(gm, pl2), -1);
	cr_assert_neq(game_register_player(gm, pl3), -1);
	cr_assert_neq(game_register_player(gm, pl4), -1);

	board_put_resource(gm->ga_board, (vector2d_t){9, 9}, 1);
	cr_expect(!player_rite_check_tile(pl1, gm));
	pl2->p_pos.v_x = 19;
	cr_expect(player_rite_check_tile(pl1, gm));
	board_put_resource(gm->ga_board, (vector2d_t){9, 9}, 4);
	cr_expect(!player_rite_check_tile(pl1, gm));
	board_take_resource(gm->ga_board, (vector2d_t){9, 9}, 4);
	pl1->p_lvl = 2;
	pl2->p_pos.v_x = 9;
	pl2->p_lvl = 2;
	board_put_resource(gm->ga_board, (vector2d_t){9, 9}, 2);
	board_put_resource(gm->ga_board, (vector2d_t){9, 9}, 3);
	cr_expect(player_rite_check_tile(pl1, gm));

	pl1->p_lvl = 42;
	cr_expect(!player_rite_check_tile(pl1, gm));
}
Example #6
0
Test(endpoint_info, info)
{
	int ret;

	hints = fi_allocinfo();
	cr_assert(hints, "fi_allocinfo");

	hints->domain_attr->mr_mode = GNIX_DEFAULT_MR_MODE;
	hints->fabric_attr->prov_name = strdup("gni");

	ret = fi_getinfo(fi_version(), NULL, 0, 0, hints, &fi);
	cr_assert(!ret, "fi_getinfo");
	cr_assert_eq(fi->ep_attr->type, FI_EP_RDM);
	cr_assert_eq(fi->next->ep_attr->type, FI_EP_DGRAM);
	cr_assert_eq(fi->next->next->ep_attr->type, FI_EP_MSG);
	cr_assert_neq(fi->domain_attr->cntr_cnt, 0);
	cr_assert_neq(fi->domain_attr->cq_cnt, 0);
	cr_assert_eq(fi->domain_attr->ep_cnt, SIZE_MAX);

	fi_freeinfo(fi);

	hints->ep_attr->type = FI_EP_RDM;
	ret = fi_getinfo(fi_version(), NULL, 0, 0, hints, &fi);
	cr_assert(!ret, "fi_getinfo");
	cr_assert_eq(fi->ep_attr->type, FI_EP_RDM);

	fi_freeinfo(fi);

	hints->ep_attr->type = FI_EP_DGRAM;
	ret = fi_getinfo(fi_version(), NULL, 0, 0, hints, &fi);
	cr_assert(!ret, "fi_getinfo");
	cr_assert_eq(fi->ep_attr->type, FI_EP_DGRAM);

	fi_freeinfo(fi);
	fi_freeinfo(hints);
}
Example #7
0
Test(av_bare, test_capacity)
{
	int ret, i;
	fi_addr_t addresses[TABLE_SIZE_FINAL];
	struct fi_av_attr av_table_attr = {
		.type = FI_AV_TABLE,
		.count = TABLE_SIZE_INIT,
	};

	ret = fi_av_open(dom, &av_table_attr, &av, NULL);
	cr_assert_eq(ret, FI_SUCCESS, "failed to open av");

	fake_names = (struct gnix_ep_name *)calloc(TABLE_SIZE_FINAL,
						   sizeof(*fake_names));
	cr_assert_neq(fake_names, NULL);

	for (i = 0; i < TABLE_SIZE_INIT; i++) {
		fake_names[i].gnix_addr.device_addr = i + 100;
		fake_names[i].gnix_addr.cdm_id = i;
		fake_names[i].cm_nic_cdm_id = 0xbeef;
		fake_names[i].cookie = 0xdeadbeef;
	}

	ret = fi_av_insert(av, fake_names, TABLE_SIZE_INIT,
			   addresses, 0, NULL);
	cr_assert_eq(ret, TABLE_SIZE_INIT, "av insert failed");

	/*
	 * now add some more
	 */

	for (i = TABLE_SIZE_INIT; i < TABLE_SIZE_FINAL; i++) {
		fake_names[i].gnix_addr.device_addr = i + 100;
		fake_names[i].gnix_addr.cdm_id = i;
		fake_names[i].cm_nic_cdm_id = 0xbeef;
		fake_names[i].cookie = 0xdeadbeef;
	}

	ret = fi_av_insert(av, &fake_names[TABLE_SIZE_INIT],
			   TABLE_SIZE_FINAL - TABLE_SIZE_INIT,
			   &addresses[TABLE_SIZE_INIT], 0, NULL);
	cr_assert_eq(ret, TABLE_SIZE_FINAL - TABLE_SIZE_INIT,
		     "av insert failed");

}
Example #8
0
void *race_create_func(void *context)
{
	pthread_barrier_t *barrier = (pthread_barrier_t *) context;
	struct gnix_auth_key *auth_key;
	int ret;

	/* -1 is the single thread return value for the
		thread allowed to make modifications to the barrier.
		For the version of the pthread header present on our
		systems, the value does not have a define. */
	ret = pthread_barrier_wait(barrier);
	cr_assert(ret == 0 || ret == -1, "pthread_barrier, "
		"ret=%d errno=%d strerror=%s", ret, errno, strerror(errno));

	auth_key = GNIX_GET_AUTH_KEY(NULL, 0);
	cr_assert_neq(auth_key, NULL, "failed to get authorization key");

	return NULL;
}
Example #9
0
Test(logqueue, test_zero_diskbuf_and_normal_acks)
{
  LogQueue *q;
  gint i;

  q = log_queue_fifo_new(OVERFLOW_SIZE, NULL);

  StatsClusterKey sc_key;
  stats_lock();
  stats_cluster_logpipe_key_set(&sc_key, SCS_DESTINATION, q->persist_name, NULL );
  stats_register_counter(0, &sc_key, SC_TYPE_QUEUED, &q->queued_messages);
  stats_register_counter(1, &sc_key, SC_TYPE_MEMORY_USAGE, &q->memory_usage);
  stats_unlock();

  log_queue_set_use_backlog(q, TRUE);

  cr_assert_eq(atomic_gssize_racy_get(&q->queued_messages->value), 0);

  fed_messages = 0;
  acked_messages = 0;
  feed_some_messages(q, 1);
  cr_assert_eq(stats_counter_get(q->queued_messages), 1);
  cr_assert_neq(stats_counter_get(q->memory_usage), 0);
  gint size_when_single_msg = stats_counter_get(q->memory_usage);

  for (i = 0; i < 10; i++)
    feed_some_messages(q, 10);

  cr_assert_eq(stats_counter_get(q->queued_messages), 101);
  cr_assert_eq(stats_counter_get(q->memory_usage), 101*size_when_single_msg);

  send_some_messages(q, fed_messages);
  log_queue_ack_backlog(q, fed_messages);

  cr_assert_eq(fed_messages, acked_messages,
               "did not receive enough acknowledgements: fed_messages=%d, acked_messages=%d",
               fed_messages, acked_messages);

  log_queue_unref(q);
}