/******************************************************************************* * Copyright (c) 2015 Ericsson * * All rights reserved. This program and the accompanying materials are * made available under the terms of the Eclipse Public License v1.0 which * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Alexandre Montplaisir - Initial API and implementation *******************************************************************************/ package org.eclipse.tracecompass.tmf.core.tests.callstack; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Map; import org.eclipse.tracecompass.internal.tmf.core.callstack.FunctionNameMapper; import org.junit.Test; /** * Unit tests for the {@link FunctionNameMapper} class. * * @author Alexandre Montplaisir */ public class FunctionNameMapperTest { /** * Test the output of a text file obtained from 'nm'. */ @Test public void testNmFile() { Path nmOutput = Paths.get("..", "..", "tmf", "org.eclipse.tracecompass.tmf.core.tests", "testfiles", "callstack" , "nm-output-example"); assertTrue(Files.exists(nmOutput)); Map<String, String> results = FunctionNameMapper.mapFromNmTextFile(nmOutput.toFile()); assertNotNull(results); assertEquals(28, results.size()); assertNull(results.get("")); assertEquals("completed.7259", results.get("601190")); assertEquals("data_start", results.get("601048")); assertEquals("deregister_tm_clones", results.get("400690")); assertEquals("__do_global_dtors_aux", results.get("400710")); assertEquals("__dso_handle", results.get("601050")); assertEquals("_DYNAMIC", results.get("600e18")); assertEquals("_end", results.get("601198")); assertEquals("_fini", results.get("400874")); assertEquals("frame_dummy", results.get("400730")); assertEquals("__FRAME_END__", results.get("400a28")); assertEquals("_GLOBAL_OFFSET_TABLE_", results.get("601000")); assertEquals("_GLOBAL__sub_I_main", results.get("4007ad")); assertEquals("_init", results.get("4005d0")); assertEquals("__init_array_end", results.get("600e08")); assertEquals("__init_array_start", results.get("600df8")); assertEquals("_IO_stdin_used", results.get("400880")); assertEquals("__JCR_LIST__", results.get("600e10")); assertEquals("__libc_csu_fini", results.get("400870")); assertEquals("__libc_csu_init", results.get("400800")); assertEquals("main", results.get("400756")); assertEquals("register_tm_clones", results.get("4006d0")); assertEquals("_start", results.get("400660")); assertEquals("__TMC_END__", results.get("601058")); assertEquals("Bar<int, int>* foo<int, int>(int, int)", results.get("4007c2")); assertEquals("__static_initialization_and_destruction_0(int, int)", results.get("400770")); assertEquals("std::cout@@GLIBCXX_3.4", results.get("601080")); assertEquals("std::piecewise_construct", results.get("400884")); assertEquals("std::__ioinit", results.get("601191")); } }