Пример #1
0
static void
test_delete_timer_event() {
  init_timer();

  will_return_count( mock_clock_gettime, 0, -1 );

  char user_data_1[] = "1";
  char user_data_2[] = "2";

  struct itimerspec interval;
  interval.it_value.tv_sec = 1;
  interval.it_value.tv_nsec = 0;
  interval.it_interval.tv_sec = 1;
  interval.it_interval.tv_nsec = 0;
  assert_true( add_timer_event_callback( &interval, mock_timer_event_callback, user_data_1 ) );
  interval.it_value.tv_sec = 2;
  interval.it_interval.tv_sec = 2;
  assert_true( add_timer_event_callback( &interval, mock_timer_event_callback, user_data_2 ) );

  delete_timer_event( mock_timer_event_callback, user_data_1 );

  timer_callback_info *callback = find_timer_callback( mock_timer_event_callback );
  assert_true( callback != NULL );
  assert_true( callback->user_data == user_data_2 );

  delete_timer_event( mock_timer_event_callback, user_data_2 );
  assert_true( find_timer_callback( mock_timer_event_callback ) == NULL );

  finalize_timer();
}
Пример #2
0
static void
test_timer_event_callback() {
  init_timer();

  will_return_count( mock_clock_gettime, 0, -1 );

  char user_data[] = "It's time!!!";
  struct itimerspec interval;
  interval.it_value.tv_sec = 1;
  interval.it_value.tv_nsec = 1000;
  interval.it_interval.tv_sec = 2;
  interval.it_interval.tv_nsec = 2000;
  assert_true( add_timer_event_callback( &interval, mock_timer_event_callback, user_data ) );

  timer_callback_info *callback = find_timer_callback( mock_timer_event_callback );
  assert_true( callback != NULL );
  assert_true( callback->function == mock_timer_event_callback );
  assert_string_equal( callback->user_data, "It's time!!!" );
  assert_int_equal( callback->interval.tv_sec, 2 );
  assert_int_equal( callback->interval.tv_nsec, 2000 );

  delete_timer_event( mock_timer_event_callback, user_data );
  assert_true( find_timer_callback( mock_timer_event_callback ) == NULL );

  finalize_timer();
}
Пример #3
0
static void
test_secure_channel_listen_start_listen_failed() {
  setup();

  int listen_fd = 1;

  listener_info.listen_fd = -1;

  expect_value( mock_socket, domain, PF_INET );
  expect_value( mock_socket, type, SOCK_STREAM );
  expect_value( mock_socket, protocol, 0 );
  will_return( mock_socket, listen_fd );

  expect_value_count( mock_setsockopt, sockfd, listen_fd, 1 );
  expect_value_count( mock_setsockopt, level, SOL_SOCKET, 1 );
  expect_value_count( mock_setsockopt, optname, SO_REUSEADDR, 1 );
  expect_not_value_count( mock_setsockopt, optval, NULL, 1 );
  expect_value_count( mock_setsockopt, optlen, sizeof( int ), 1 );
  will_return_count( mock_setsockopt, 0, 1 );

  expect_value_count( mock_setsockopt, sockfd, listen_fd, 1 );
  expect_value_count( mock_setsockopt, level, IPPROTO_TCP, 1 );
  expect_value_count( mock_setsockopt, optname, TCP_NODELAY, 1 );
  expect_not_value_count( mock_setsockopt, optval, NULL, 1 );
  expect_value_count( mock_setsockopt, optlen, sizeof( int ), 1 );
  will_return_count( mock_setsockopt, 0, 1 );

  expect_value( mock_bind, sockfd, listen_fd );
  expect_not_value( mock_bind, addr_in, NULL );
  expect_value( mock_bind, addrlen, sizeof( struct sockaddr_in ) );
  expect_value( mock_bind, sin_family32, AF_INET );
  expect_value( mock_bind, sin_port32, ( uint32_t ) htons( OFP_TCP_PORT ) );
  expect_value( mock_bind, addr_in->sin_addr.s_addr, htonl( INADDR_ANY ) );
  will_return( mock_bind, 0 );

  expect_value( mock_listen, sockfd, listen_fd );
  expect_value( mock_listen, backlog, 128 );
  will_return( mock_listen, -1 );

  expect_value( mock_close, fd, listen_fd );
  will_return_void( mock_close );

  assert_false( secure_channel_listen_start( &listener_info ) );
  assert_true( listener_info.listen_fd == -1 );

  teardown();
}
Пример #4
0
static void test__createReaderGang(void **state)
{
	int segmentCount = TOTOAL_SEGMENTS;
	int ftsVersion = 1;
	PGconn *conn = &pgconn;
	const char *portalName = "portal1";
	int motionListener = 10000;
	int qePid = 2000;
	int i = 0;

	will_return(IsTransactionOrTransactionBlock, true);
	will_return_count(getgpsegmentCount, segmentCount, -1);
	will_return_count(getFtsVersion, ftsVersion, 1);

	expect_any_count(isSockAlive, sock, -1);
	will_return_count(isSockAlive, true, -1);

	mockLibpq(conn, motionListener, qePid);

	cdbgang_setAsync(false);
	Gang * gang = AllocateReaderGang(GANGTYPE_PRIMARY_READER, portalName);

	/* validate gang */
	assert_int_equal(gang->size, TOTOAL_SEGMENTS);
	assert_int_equal(gang->gang_id, 2);
	assert_string_equal(gang->portal_name, portalName);
	assert_int_equal(gang->type, GANGTYPE_PRIMARY_READER);
	assert_int_equal(gang->noReuse, false);
	assert_int_equal(gang->dispatcherActive, false);
	assert_int_equal(gang->allocated, true);

	for (i = 0; i < gang->size; i++)
	{
		SegmentDatabaseDescriptor *segdb = &gang->db_descriptors[i];
		CdbComponentDatabaseInfo *cdbinfo = segdb->segment_database_info;

		assert_int_equal(segdb->backendPid, qePid);
		assert_int_equal(segdb->conn, conn);
		assert_int_equal(segdb->errcode, 0);
		assert_int_equal(segdb->error_message.len, 0);
		assert_int_equal(segdb->motionListener, motionListener);
		assert_int_equal(segdb->myAgent, NULL);
		assert_int_equal(segdb->segindex, i);

		validateCdbInfo(segdb->segment_database_info, segdb->segindex);
	}
}
Пример #5
0
void
test__aocs_addcol_init(void **state)
{
	AOCSAddColumnDesc desc;
	RelationData reldata;
	FormData_pg_appendonly pgappendonly;
	int			nattr = 5;
	StdRdOptions **opts =
	(StdRdOptions **) malloc(sizeof(StdRdOptions *) * nattr);

	/* 3 existing columns */
	opts[0] = opts[1] = opts[2] = (StdRdOptions *) NULL;

	/* 2 newly added columns */
	opts[3] = (StdRdOptions *) malloc(sizeof(StdRdOptions));
	strcpy(opts[3]->compresstype, "rle_type");
	opts[3]->compresslevel = 2;
	opts[3]->blocksize = 8192;
	opts[4] = (StdRdOptions *) malloc(sizeof(StdRdOptions));
	strcpy(opts[4]->compresstype, "none");
	opts[4]->compresslevel = 0;
	opts[4]->blocksize = 8192 * 2;

	/* One call to RelationGetAttributeOptions() */
	expect_any(RelationGetAttributeOptions, rel);
	will_return(RelationGetAttributeOptions, opts);

	/* Two calls to create_datumstreamwrite() */
	expect_string(create_datumstreamwrite, compName, "rle_type");
	expect_string(create_datumstreamwrite, compName, "none");
	expect_value(create_datumstreamwrite, compLevel, 2);
	expect_value(create_datumstreamwrite, compLevel, 0);
	expect_value_count(create_datumstreamwrite, checksum, true, 2);
	expect_value_count(create_datumstreamwrite, safeFSWriteSize, 0, 2);
	expect_value(create_datumstreamwrite, maxsz, 8192);
	expect_value(create_datumstreamwrite, maxsz, 8192 * 2);
	expect_value(create_datumstreamwrite, needsWAL, true);
	expect_value(create_datumstreamwrite, needsWAL, true);
	expect_any_count(create_datumstreamwrite, attr, 2);
	expect_any_count(create_datumstreamwrite, relname, 2);
	expect_any_count(create_datumstreamwrite, title, 2);
	will_return_count(create_datumstreamwrite, NULL, 2);

	pgappendonly.checksum = true;
	FormData_pg_class rel;
	rel.relpersistence = RELPERSISTENCE_PERMANENT;
	reldata.rd_rel = &rel;
	reldata.rd_appendonly = &pgappendonly;
	reldata.rd_att = (TupleDesc) malloc(sizeof(struct tupleDesc));
	reldata.rd_att->attrs =
		(Form_pg_attribute *) malloc(sizeof(Form_pg_attribute *) * nattr);
	memset(reldata.rd_att->attrs, 0, sizeof(Form_pg_attribute *) * nattr);
	reldata.rd_att->natts = 5;
	/* 3 existing columns, 2 new columns */
	desc = aocs_addcol_init(&reldata, 2);
	assert_int_equal(desc->num_newcols, 2);
	assert_int_equal(desc->cur_segno, -1);
}
Пример #6
0
static void
test_clock_gettime_fail_einval() {
  init_timer();

  char user_data[] = "It's time!!!";
  will_return_count( mock_clock_gettime, -1, -1 );
  assert_false( add_periodic_event_callback( 1, mock_timer_event_callback, user_data ) );

  finalize_timer();
}
Пример #7
0
static void
test_add_timer_event_callback_fail_with_invalid_timespec() {
  init_timer();

  will_return_count( mock_clock_gettime, 0, -1 );

  char user_data[] = "It's time!!!";
  struct itimerspec interval;
  interval.it_value.tv_sec = 0;
  interval.it_value.tv_nsec = 0;
  interval.it_interval.tv_sec = 0;
  interval.it_interval.tv_nsec = 0;
  assert_false( add_timer_event_callback( &interval, mock_timer_event_callback, user_data ) );

  finalize_timer();
}
Пример #8
0
/*
 * Test cdbdisp_makeResult would return NULL if OOM happens
 */
void
test__cdbdisp_makeResult__oom(void **state)
{
	CdbDispatchResult *result = NULL;

	struct CdbDispatchResults *results = _init_cdbdisp_makeResult();
	struct SegmentDatabaseDescriptor *segdbDesc =
		(struct SegmentDatabaseDescriptor *) palloc0(sizeof(struct SegmentDatabaseDescriptor));

	/*
	 * createPQExpBuffer is supposed to return NULL in OOM cases
	 */
	will_return_count(createPQExpBuffer, NULL, -1);
	expect_any_count(destroyPQExpBuffer, str, -1);
	will_be_called_count(destroyPQExpBuffer, -1);
	result = cdbdisp_makeResult(results, segdbDesc, 0);
	assert_true(result == NULL);
}
Пример #9
0
/*
 * Checks if RedZoneHandler_ShmemInit() properly initializes the global variables
 * as the postmaster
 */
void
test__RedZoneHandler_ShmemInit__InitializesGlobalVarsWhenPostmaster(void **state)
{
	vmemTrackerInited = false;
	IsUnderPostmaster = false;

	/* Assign weird value to test the re-initialization */
	fakeIsRunawayDetector = 1234;
	isRunawayDetector = NULL;

	expect_any_count(ShmemInitStruct, name, 2);
	expect_any_count(ShmemInitStruct, size, 2);
	expect_any_count(ShmemInitStruct, foundPtr, 2);
	will_assign_value(ShmemInitStruct, foundPtr, false);
	will_assign_value(ShmemInitStruct, foundPtr, false);
	will_return_count(ShmemInitStruct, &fakeIsRunawayDetector, 2);

	/*
	 * When vmem limit is not activated or runaway_detector_activation_percent is
	 * set to 0,, red zone should be very high (i.e., red-zone will be disabled).
	 * Note, it doesn't matter what runaway_detector_activation_percent is set for
	 * this test, as the VmemTracker_ConvertVmemMBToChunks is returning 0.
	 */
	will_return(VmemTracker_ConvertVmemMBToChunks, 0);
	expect_any(VmemTracker_ConvertVmemMBToChunks, mb);

	RedZoneHandler_ShmemInit();

	assert_true(isRunawayDetector == &fakeIsRunawayDetector);
	assert_true(redZoneChunks == INT32_MAX);
	assert_true(*isRunawayDetector == 0);

	/*
	 * When the activation percent is set to 100, we will not even attempt calculating
	 * the redZoneChunks and instead assign INT32_MAX directly. Note, we don't even
	 * call VmemTracker_ConvertVmemMBToChunks()
	 */
	runaway_detector_activation_percent = 100;
	redZoneChunks = 0;
	RedZoneHandler_ShmemInit();
	assert_true(redZoneChunks == INT32_MAX);
}
Пример #10
0
static void
test_periodic_event_callback() {
  init_timer();

  char user_data[] = "It's time!!!";
  will_return_count( mock_clock_gettime, 0, -1 );
  assert_true( add_periodic_event_callback( 1, mock_timer_event_callback, user_data ) );

  timer_callback_info *callback = find_timer_callback( mock_timer_event_callback );
  assert_true( callback != NULL );
  assert_true( callback->function == mock_timer_event_callback );
  assert_string_equal( callback->user_data, "It's time!!!" );
  assert_int_equal( callback->interval.tv_sec, 1 );
  assert_int_equal( callback->interval.tv_nsec, 0 );

  delete_timer_event( mock_timer_event_callback, user_data );
  assert_true( find_timer_callback( mock_timer_event_callback ) == NULL );

  finalize_timer();
}
Пример #11
0
static void
test_send_then_message_received_callback_is_called() {
  init_messenger( "/tmp" );

  will_return_count( mock_clock_gettime, 0, -1 );

  const char service_name[] = "Say HELLO";

  expect_value( callback_hello, tag, 43556 );
  expect_string( callback_hello, data, "HELLO" );
  expect_value( callback_hello, len, 6 );

  add_message_received_callback( service_name, callback_hello );
  send_message( service_name, 43556, "HELLO", strlen( "HELLO" ) + 1 );
  start_messenger();

  delete_message_received_callback( service_name, callback_hello );
  delete_send_queue( lookup_hash_entry( send_queues, service_name ) );

  finalize_messenger();
}
Пример #12
0
void mockLibpq(PGconn *pgConn, int motionListener, int qePid)
{
	expect_any_count(PQconnectdbParams, keywords, -1);
	expect_any_count(PQconnectdbParams, values, -1);
	expect_any_count(PQconnectdbParams, expand_dbname, -1);
	will_return_count(PQconnectdbParams, pgConn, TOTOAL_SEGMENTS);

	expect_value_count(PQstatus, conn, pgConn, -1);
	will_return_count(PQstatus, CONNECTION_OK, -1);

	expect_value_count(PQsocket, conn, pgConn, -1);
	will_return_count(PQsocket, 100, -1);

	expect_value_count(PQsetNoticeReceiver, conn, pgConn, -1);
	expect_any_count(PQsetNoticeReceiver, proc, -1);
	expect_any_count(PQsetNoticeReceiver, arg, -1);
	will_return_count(PQsetNoticeReceiver, CONNECTION_OK, -1);

	expect_value_count(PQgetQEdetail, conn, pgConn, -1);
	will_return_count(PQgetQEdetail, motionListener, -1);

	expect_value_count(PQbackendPID, conn, pgConn, -1);
	will_return_count(PQbackendPID, qePid, -1);
}