537 unsigned nBytesSent, nBytesRecv;
540 if ( channelCount == 0 ) {
541 printf (
"channel count was zero\n" );
545 pItemList = calloc ( channelCount,
sizeof (
ti) );
551 "Unable to initialize" );
554 printf (
"Testing with %u channels named %snnn\n",
555 channelCount, channelName );
558 printf (
"Testing with %u channels named %s\n",
559 channelCount, channelName );
562 strsize =
sizeof ( pItemList[0].
name ) - 1;
565 for ( i=0; i < channelCount; i++ ) {
567 sprintf ( pItemList[i].name,
"%.*s%.6u",
568 (
int) (strsize - 15u), channelName, i );
571 strncpy ( pItemList[i].name, channelName, strsize);
573 pItemList[
i].
name[strsize]=
'\0';
578 nBytesRecv += 2 *
sizeof (
caHdr);
581 printf (
"Channel Connect Test\n" );
582 printf (
"--------------------\n" );
583 timeIt ( test_search, pItemList, channelCount, nBytesSent, nBytesRecv );
584 printSearchStat ( pItemList, channelCount );
586 for ( i = 0; i < channelCount; i++ ) {
589 pItemList[
i].
count = count;
590 pItemList[
i].
pValue = malloc ( size );
591 assert ( pItemList[i].pValue );
595 "channel name=%s, native type=%d, native count=%u\n",
598 pItemList[0].count );
600 printf (
"Pend Event Test\n");
601 printf (
"----------------\n" );
604 for ( i = 0; i < channelCount; i++ ) {
608 for ( j = 0; j < pItemList[
i].
count; j++ ) {
613 printf (
"DBR_FLOAT Test\n" );
614 printf (
"--------------\n" );
615 test ( pItemList, channelCount );
617 for ( i = 0; i < channelCount; i++ ) {
621 for ( j = 0; j < pItemList[
i].
count; j++ ) {
626 printf (
"DBR_DOUBLE Test\n" );
627 printf (
"---------------\n" );
628 test ( pItemList, channelCount );
631 for ( i = 0; i < channelCount; i++ ) {
635 for ( j = 0; j < pItemList[
i].
count; j++ ) {
636 sprintf ( pStrVal[j],
"%f", val );
640 printf (
"DBR_STRING Test\n" );
641 printf (
"---------------\n" );
642 test ( pItemList, channelCount );
644 for ( i = 0; i < channelCount; i++ ) {
648 for ( j = 0; j < pItemList[
i].
count; j++ ) {
653 printf (
"DBR_INT Test\n" );
654 printf (
"------------\n" );
655 test ( pItemList, channelCount );
657 printf (
"Get Latency Test\n" );
658 printf (
"----------------\n" );
659 for ( i = 0; i < channelCount; i++ ) {
661 for ( j = 0; j < pItemList[
i].
count; j++ ) {
666 measure_get_latency ( pItemList, channelCount );
668 printf (
"Free Channel Test\n" );
669 printf (
"-----------------\n" );
670 timeIt ( test_free, pItemList, channelCount, 0, 0 );
674 for ( i = 0; i < channelCount; i++ ) {
675 free ( pItemList[i].pValue );
int epicsStdCall ca_task_exit()
#define assert(exp)
Declare that a condition should be true.
LIBCA_API unsigned long epicsStdCall ca_element_count(chid chan)
LIBCA_API short epicsStdCall ca_field_type(chid chan)
void timeIt(tf *pfunc, ti *pItems, unsigned iterations, unsigned nBytesSent, unsigned nBytesRecv)
int epicsStdCall ca_context_create(ca_preemptive_callback_select premptiveCallbackSelect)
#define CA_MESSAGE_ALIGN(A)
#define SEVCHK(CA_ERROR_CODE, MESSAGE_STRING)
epicsFloat64 dbr_double_t
LIBCA_API const char *epicsStdCall ca_name(chid chan)
epicsOldString dbr_string_t