|
Packit |
577717 |
/*
|
|
Packit |
577717 |
* File: failed_events.c
|
|
Packit |
577717 |
* Author: Vince Weaver <vincent.weaver@maine.edu>
|
|
Packit |
577717 |
*/
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* This test tries adding events that don't exist */
|
|
Packit |
577717 |
/* We've had issues where the name resolution code might do weird */
|
|
Packit |
577717 |
/* things when passed invalid event names */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#include <stdio.h>
|
|
Packit |
577717 |
#include <stdlib.h>
|
|
Packit |
577717 |
#include <string.h>
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#include "papi.h"
|
|
Packit |
577717 |
#include "papi_test.h"
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
#define LARGE_NAME_SIZE 4096
|
|
Packit |
577717 |
|
|
Packit |
577717 |
char large_name[LARGE_NAME_SIZE];
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int
|
|
Packit |
577717 |
main( int argc, char **argv )
|
|
Packit |
577717 |
{
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int i, k, err_count = 0;
|
|
Packit |
577717 |
int retval;
|
|
Packit |
577717 |
PAPI_event_info_t info, info1;
|
|
Packit |
577717 |
const PAPI_component_info_t* cmpinfo;
|
|
Packit |
577717 |
int numcmp, cid;
|
|
Packit |
577717 |
int quiet;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
int EventSet = PAPI_NULL;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Set quiet variable */
|
|
Packit |
577717 |
quiet=tests_quiet( argc, argv );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Init PAPI library */
|
|
Packit |
577717 |
retval = PAPI_library_init( PAPI_VER_CURRENT );
|
|
Packit |
577717 |
if ( retval != PAPI_VER_CURRENT ) {
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_library_init", retval );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("Test adding invalid events.\n");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Create an eventset */
|
|
Packit |
577717 |
retval = PAPI_create_eventset( &EventSet );
|
|
Packit |
577717 |
if ( retval != PAPI_OK ) {
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_create_eventset", retval );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Simple Event */
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("+ Simple invalid event\t");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval=PAPI_add_named_event(EventSet,"INVALID_EVENT");
|
|
Packit |
577717 |
if (retval==PAPI_OK) {
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("Unexpectedly opened!\n");
|
|
Packit |
577717 |
err_count++;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
else {
|
|
Packit |
577717 |
if (!quiet) printf("OK\n");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Extra Colons */
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("+ Extra colons\t");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval=PAPI_add_named_event(EventSet,"INV::::AL:ID:::_E=3V::E=NT");
|
|
Packit |
577717 |
if (retval==PAPI_OK) {
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("Unexpectedly opened!\n");
|
|
Packit |
577717 |
err_count++;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
else {
|
|
Packit |
577717 |
if (!quiet) printf("OK\n");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Large Invalid Event */
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("+ Large invalid event\t");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
memset(large_name,'A',LARGE_NAME_SIZE);
|
|
Packit |
577717 |
large_name[LARGE_NAME_SIZE-1]=0;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval=PAPI_add_named_event(EventSet,large_name);
|
|
Packit |
577717 |
if (retval==PAPI_OK) {
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("Unexpectedly opened!\n");
|
|
Packit |
577717 |
err_count++;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
else {
|
|
Packit |
577717 |
if (!quiet) printf("OK\n");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Large Unterminated Invalid Event */
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("+ Large unterminated invalid event\t");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
memset(large_name,'A',LARGE_NAME_SIZE);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval=PAPI_add_named_event(EventSet,large_name);
|
|
Packit |
577717 |
if (retval==PAPI_OK) {
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("Unexpectedly opened!\n");
|
|
Packit |
577717 |
err_count++;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
else {
|
|
Packit |
577717 |
if (!quiet) printf("OK\n");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Randomly modifying valid events */
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("+ Randomly modifying valid events\t");
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
numcmp = PAPI_num_components( );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Loop through all components */
|
|
Packit |
577717 |
for( cid = 0; cid < numcmp; cid++ ) {
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
cmpinfo = PAPI_get_component_info( cid );
|
|
Packit |
577717 |
if (cmpinfo == NULL) {
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "PAPI_get_component_info", 2 );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Include disabled components */
|
|
Packit |
577717 |
if (cmpinfo->disabled) {
|
|
Packit |
577717 |
// continue;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* For platform independence, always ASK FOR the first event */
|
|
Packit |
577717 |
/* Don't just assume it'll be the first numeric value */
|
|
Packit |
577717 |
i = 0 | PAPI_NATIVE_MASK;
|
|
Packit |
577717 |
retval = PAPI_enum_cmp_event( &i, PAPI_ENUM_FIRST, cid );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
do {
|
|
Packit |
577717 |
retval = PAPI_get_event_info( i, &info );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
k = i;
|
|
Packit |
577717 |
if ( PAPI_enum_cmp_event(&k, PAPI_NTV_ENUM_UMASKS, cid )==PAPI_OK ) {
|
|
Packit |
577717 |
do {
|
|
Packit |
577717 |
retval = PAPI_get_event_info( k, &info1 );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
/* Skip perf_raw event as it is hard to error out */
|
|
Packit |
577717 |
if (strstr(info1.symbol,"perf_raw")) {
|
|
Packit |
577717 |
break;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
// printf("%s\n",info1.symbol);
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if (strlen(info1.symbol)>5) {
|
|
Packit |
577717 |
info1.symbol[strlen(info1.symbol)-4]^=0xa5;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval=PAPI_add_named_event(EventSet,info1.symbol);
|
|
Packit |
577717 |
if (retval==PAPI_OK) {
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("Unexpectedly opened %s!\n",
|
|
Packit |
577717 |
info1.symbol);
|
|
Packit |
577717 |
err_count++;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
} while ( PAPI_enum_cmp_event( &k, PAPI_NTV_ENUM_UMASKS, cid ) == PAPI_OK );
|
|
Packit |
577717 |
} else {
|
|
Packit |
577717 |
/* Event didn't have any umasks */
|
|
Packit |
577717 |
|
|
Packit |
577717 |
// printf("%s\n",info1.symbol);
|
|
Packit |
577717 |
if (strlen(info1.symbol)>5) {
|
|
Packit |
577717 |
info1.symbol[strlen(info1.symbol)-4]^=0xa5;
|
|
Packit |
577717 |
|
|
Packit |
577717 |
retval=PAPI_add_named_event(EventSet,info1.symbol);
|
|
Packit |
577717 |
if (retval==PAPI_OK) {
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf("Unexpectedly opened %s!\n",
|
|
Packit |
577717 |
info1.symbol);
|
|
Packit |
577717 |
err_count++;
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
} while ( PAPI_enum_cmp_event( &i, PAPI_ENUM_EVENTS, cid ) == PAPI_OK );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
|
|
Packit |
577717 |
if ( err_count ) {
|
|
Packit |
577717 |
if (!quiet) {
|
|
Packit |
577717 |
printf( "%d Invalid events added.\n", err_count );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
test_fail( __FILE__, __LINE__, "Invalid events added", 1 );
|
|
Packit |
577717 |
}
|
|
Packit |
577717 |
|
|
Packit |
577717 |
test_pass( __FILE__ );
|
|
Packit |
577717 |
|
|
Packit |
577717 |
return 0;
|
|
Packit |
577717 |
}
|