Blame src/ctests/describe.c

Packit Service a1973e
/* From Paul Drongowski at HP. Thanks. */
Packit Service a1973e
Packit Service a1973e
/*  I have not been able to call PAPI_describe_event without
Packit Service a1973e
    incurring a segv, including the sample code on the man page.
Packit Service a1973e
    I noticed that PAPI_describe_event is not exercised by the
Packit Service a1973e
    PAPI test programs, so I haven't been able to check the
Packit Service a1973e
    function call using known good code. (Or steal your code
Packit Service a1973e
    for that matter. :-)
Packit Service a1973e
*/
Packit Service a1973e
Packit Service a1973e
/*  PAPI_describe_event has been deprecated in PAPI 3, since
Packit Service a1973e
    its functionality exists in other API calls. Below shows
Packit Service a1973e
    several ways that this call was used, with replacement
Packit Service a1973e
    code compatible with PAPI 3.
Packit Service a1973e
*/
Packit Service a1973e
Packit Service a1973e
#include <stdio.h>
Packit Service a1973e
#include <stdlib.h>
Packit Service a1973e
#include <string.h>
Packit Service a1973e
Packit Service a1973e
#include "papi.h"
Packit Service a1973e
#include "papi_test.h"
Packit Service a1973e
Packit Service a1973e
int
Packit Service a1973e
main( int argc, char **argv )
Packit Service a1973e
{
Packit Service a1973e
	int EventSet = PAPI_NULL;
Packit Service a1973e
	int retval;
Packit Service a1973e
	long long g1[2];
Packit Service a1973e
	int eventcode = PAPI_TOT_INS;
Packit Service a1973e
	PAPI_event_info_t info, info1, info2;
Packit Service a1973e
	int quiet;
Packit Service a1973e
Packit Service a1973e
	/* Set TESTS_QUIET variable */
Packit Service a1973e
	quiet=tests_quiet( argc, argv );
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
	retval = PAPI_library_init( PAPI_VER_CURRENT );
Packit Service a1973e
	if (retval != PAPI_VER_CURRENT ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_library_init", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if ( ( retval = PAPI_create_eventset( &EventSet ) ) != PAPI_OK ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_create_eventset", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if ( ( retval = PAPI_query_event( eventcode ) ) != PAPI_OK ) {
Packit Service a1973e
		if (!quiet) printf("Trouble checking event\n");
Packit Service a1973e
		test_skip( __FILE__, __LINE__, "PAPI_query_event(PAPI_TOT_INS)",
Packit Service a1973e
				   retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if ( ( retval = PAPI_add_event( EventSet, eventcode ) ) != PAPI_OK )
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_add_event(PAPI_TOT_INS)", retval );
Packit Service a1973e
Packit Service a1973e
	if ( ( retval = PAPI_start( EventSet ) ) != PAPI_OK )
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_start", retval );
Packit Service a1973e
Packit Service a1973e
	if ( ( retval = PAPI_stop( EventSet, g1 ) ) != PAPI_OK )
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_stop", retval );
Packit Service a1973e
Packit Service a1973e
	/* Case 0, no info, should fail */
Packit Service a1973e
	eventcode = 0;
Packit Service a1973e
/*
Packit Service a1973e
   if ( ( retval = PAPI_describe_event(eventname,(int *)&eventcode,eventdesc) ) == PAPI_OK)
Packit Service a1973e
     test_fail(__FILE__,__LINE__,"PAPI_describe_event",retval);
Packit Service a1973e
*/
Packit Service a1973e
	if (!quiet) {
Packit Service a1973e
	    printf("This test expects a 'PAPI Error' to be returned from this PAPI call.\n");
Packit Service a1973e
	}
Packit Service a1973e
	if ( ( retval = PAPI_get_event_info( eventcode, &info ) ) == PAPI_OK )
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_get_event_info", retval );
Packit Service a1973e
Packit Service a1973e
	/* Case 1, fill in name field. */
Packit Service a1973e
	eventcode = PAPI_TOT_INS;
Packit Service a1973e
/*
Packit Service a1973e
   if ( ( retval = PAPI_describe_event(eventname,(int *)&eventcode,eventdesc) ) != PAPI_OK)
Packit Service a1973e
     test_fail(__FILE__,__LINE__,"PAPI_describe_event",retval);
Packit Service a1973e
*/
Packit Service a1973e
	if ( ( retval = PAPI_get_event_info( eventcode, &info1 ) ) != PAPI_OK )
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_get_event_info", retval );
Packit Service a1973e
Packit Service a1973e
	if ( strcmp( info1.symbol, "PAPI_TOT_INS" ) != 0 )
Packit Service a1973e
		test_fail( __FILE__, __LINE__,
Packit Service a1973e
				   "PAPI_get_event_info symbol value is bogus", retval );
Packit Service a1973e
	if ( strlen( info1.long_descr ) == 0 )
Packit Service a1973e
		test_fail( __FILE__, __LINE__,
Packit Service a1973e
				   "PAPI_get_event_info long_descr value is bogus", retval );
Packit Service a1973e
Packit Service a1973e
	eventcode = 0;
Packit Service a1973e
Packit Service a1973e
	/* Case 2, fill in code field. */
Packit Service a1973e
/*
Packit Service a1973e
   if ( ( retval = PAPI_describe_event(eventname,(int *)&eventcode,eventdesc) ) != PAPI_OK)
Packit Service a1973e
     test_fail(__FILE__,__LINE__,"PAPI_describe_event",retval);
Packit Service a1973e
*/
Packit Service a1973e
	if ( ( retval = PAPI_event_name_to_code( info1.symbol, ( int * ) &eventcode ) ) != PAPI_OK ) {
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_event_name_to_code", retval );
Packit Service a1973e
	}
Packit Service a1973e
Packit Service a1973e
	if ( eventcode != PAPI_TOT_INS )
Packit Service a1973e
		test_fail( __FILE__, __LINE__,
Packit Service a1973e
				   "PAPI_event_name_to_code code value is bogus", retval );
Packit Service a1973e
Packit Service a1973e
	if ( ( retval = PAPI_get_event_info( eventcode, &info2 ) ) != PAPI_OK )
Packit Service a1973e
		test_fail( __FILE__, __LINE__, "PAPI_get_event_info", retval );
Packit Service a1973e
Packit Service a1973e
	if ( strcmp( info2.symbol, "PAPI_TOT_INS" ) != 0 )
Packit Service a1973e
		test_fail( __FILE__, __LINE__,
Packit Service a1973e
				   "PAPI_get_event_info symbol value is bogus", retval );
Packit Service a1973e
	if ( strlen( info2.long_descr ) == 0 )
Packit Service a1973e
		test_fail( __FILE__, __LINE__,
Packit Service a1973e
				   "PAPI_get_event_info long_descr value is bogus", retval );
Packit Service a1973e
Packit Service a1973e
	test_pass( __FILE__ );
Packit Service a1973e
Packit Service a1973e
	return 0;
Packit Service a1973e
}