18cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/** 28cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @file mangle_tests.c 38cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 48cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Copyright 2003 OProfile authors 58cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Read the file COPYING 68cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * 78cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author John Levon 88cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author Philippe Elie 98cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */ 108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <stdio.h> 128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <stdlib.h> 138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <string.h> 148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "op_libiberty.h" 168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "op_mangle.h" 178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "op_config.h" 188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstruct test_input { 208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd struct mangle_values values; 218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd char const * result; 228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}; 238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstatic struct test_input const tests[] = { 258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { { MANGLE_NONE, "foo", "", "bar", NULL, "EVENT", 0, 0, 0, 0, 0 }, 268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd "{root}/bar/{dep}/{root}/foo/EVENT.0.0.all.all.all" }, 278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { { MANGLE_CPU, "foo", "", "bar", NULL, "EVENT", 0, 0, 0, 0, 2 }, 288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd "{root}/bar/{dep}/{root}/foo/EVENT.0.0.all.all.2" }, 298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { { MANGLE_TID, "foo", "", "bar", NULL, "EVENT", 0, 0, 0, 33, 0 }, 308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd "{root}/bar/{dep}/{root}/foo/EVENT.0.0.all.33.all" }, 318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { { MANGLE_TGID, "foo", "", "bar", NULL, "EVENT", 0, 0, 34, 0, 0 }, 328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd "{root}/bar/{dep}/{root}/foo/EVENT.0.0.34.all.all" }, 338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { { MANGLE_KERNEL, "foo", "", "bar", NULL, "EVENT", 0, 0, 0, 0, 0 }, 348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd "{kern}/bar/{dep}/{kern}/foo/EVENT.0.0.all.all.all" }, 358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { { MANGLE_CALLGRAPH, "foo-from", "", "bar-from", "foo-to", "EVENT", 0, 0, 0, 0, 0 }, 368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd "{root}/bar-from/{dep}/{root}/foo-from/{cg}/{root}/foo-to/EVENT.0.0.all.all.all" }, 378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { { MANGLE_CPU|MANGLE_TID|MANGLE_TID|MANGLE_TGID|MANGLE_KERNEL, "foo", "", "bar", NULL, "EVENT", 1234, 8192, 34, 35, 2 }, 388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd "{kern}/bar/{dep}/{kern}/foo/EVENT.1234.8192.34.35.2" }, 398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { { MANGLE_CPU|MANGLE_TID|MANGLE_TID|MANGLE_TGID|MANGLE_KERNEL, "foo1/foo2", "", "bar1/bar2", NULL, "EVENT", 1234, 8192, 34, 35, 2 }, 408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd "{root}/bar1/bar2/{dep}/{root}/foo1/foo2/EVENT.1234.8192.34.35.2" }, 418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { { MANGLE_CALLGRAPH|MANGLE_CPU|MANGLE_TID|MANGLE_TID|MANGLE_TGID|MANGLE_KERNEL, "bar1/bar2", "", "bar1/bar2", "bar1/bar2-to", "EVENT", 1234, 8192, 34, 35, 2 }, 428cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd "{root}/bar1/bar2/{dep}/{root}/bar1/bar2/{cg}/{root}/bar1/bar2-to/EVENT.1234.8192.34.35.2" }, 438cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 448cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd { { 0, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 0, 0 }, NULL } 458cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd}; 468cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 478cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 488cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddint main(void) 498cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd{ 508cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd struct test_input const * test; 518cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd for (test = tests; test->result; ++test) { 528cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd char * result = op_mangle_filename(&test->values); 538cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd char * expect = xmalloc(strlen(test->result) + 548cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd strlen(op_samples_current_dir) + 1); 558cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd strcpy(expect, op_samples_current_dir); 568cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd strcat(expect, test->result); 578cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd if (strcmp(result, expect)) { 588cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd fprintf(stderr, "test %d:\nfound: %s\nexpect: %s\n", 598cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd (int)(test - tests), result, expect); 608cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd exit(EXIT_FAILURE); 618cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd } 628cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd free(expect); 638cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd free(result); 648cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd } 658cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd 668cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd return EXIT_SUCCESS; 678cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd} 68