tmf: Add unit test for FunctionNameMapper
authorAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Wed, 11 Feb 2015 22:12:16 +0000 (17:12 -0500)
committerAlexandre Montplaisir <alexmonthy@voxpopuli.im>
Thu, 12 Feb 2015 19:25:08 +0000 (14:25 -0500)
Change-Id: I54f8e407e67942d7d88b7947c5298b6046c0b72e
Signed-off-by: Alexandre Montplaisir <alexmonthy@voxpopuli.im>
Reviewed-on: https://git.eclipse.org/r/41688
Reviewed-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Tested-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Reviewed-by: Hudson CI
org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/AllTmfCoreTests.java
org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/callstack/AllTests.java [new file with mode: 0644]
org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/callstack/FunctionNameMapperTest.java [new file with mode: 0644]
org.eclipse.tracecompass.tmf.core.tests/testfiles/callstack/nm-output-example [new file with mode: 0644]
org.eclipse.tracecompass.tmf.core/META-INF/MANIFEST.MF

index 1e9c0719433e5e5c6b171992dddeeea7e174c518..e3a90fe3d30fdc54cba61fc67f8e8f13030d05e4 100644 (file)
@@ -23,6 +23,7 @@ import org.junit.runner.RunWith;
 @DebugSuite.SuiteClasses({
     TmfCorePluginTest.class,
     org.eclipse.tracecompass.tmf.core.tests.analysis.AllTests.class,
+    org.eclipse.tracecompass.tmf.core.tests.callstack.AllTests.class,
     org.eclipse.tracecompass.tmf.core.tests.component.AllTests.class,
     org.eclipse.tracecompass.tmf.core.tests.event.AllTests.class,
     org.eclipse.tracecompass.tmf.core.tests.event.lookup.AllTests.class,
diff --git a/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/callstack/AllTests.java b/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/callstack/AllTests.java
new file mode 100644 (file)
index 0000000..f72c462
--- /dev/null
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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 org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * Test suite
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+        FunctionNameMapperTest.class
+})
+public class AllTests {
+
+}
diff --git a/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/callstack/FunctionNameMapperTest.java b/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/callstack/FunctionNameMapperTest.java
new file mode 100644 (file)
index 0000000..bf0d5cd
--- /dev/null
@@ -0,0 +1,77 @@
+/*******************************************************************************
+ * 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("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"));
+    }
+}
diff --git a/org.eclipse.tracecompass.tmf.core.tests/testfiles/callstack/nm-output-example b/org.eclipse.tracecompass.tmf.core.tests/testfiles/callstack/nm-output-example
new file mode 100644 (file)
index 0000000..440e0e8
--- /dev/null
@@ -0,0 +1,43 @@
+0000000000601058 B __bss_start
+0000000000601190 b completed.7259
+                 U __cxa_atexit@@GLIBC_2.2.5
+0000000000601048 D __data_start
+0000000000601048 W data_start
+0000000000400690 t deregister_tm_clones
+0000000000400710 t __do_global_dtors_aux
+0000000000600e08 t __do_global_dtors_aux_fini_array_entry
+0000000000601050 D __dso_handle
+0000000000600e18 d _DYNAMIC
+0000000000601058 D _edata
+0000000000601198 B _end
+0000000000400874 T _fini
+0000000000400730 t frame_dummy
+0000000000600df8 t __frame_dummy_init_array_entry
+0000000000400a28 r __FRAME_END__
+0000000000601000 d _GLOBAL_OFFSET_TABLE_
+00000000004007ad t _GLOBAL__sub_I_main
+                 w __gmon_start__
+00000000004005d0 T _init
+0000000000600e08 t __init_array_end
+0000000000600df8 t __init_array_start
+0000000000400880 R _IO_stdin_used
+                 w _ITM_deregisterTMCloneTable
+                 w _ITM_registerTMCloneTable
+0000000000600e10 d __JCR_END__
+0000000000600e10 d __JCR_LIST__
+                 w _Jv_RegisterClasses
+0000000000400870 T __libc_csu_fini
+0000000000400800 T __libc_csu_init
+                 U __libc_start_main@@GLIBC_2.2.5
+0000000000400756 T main
+00000000004006d0 t register_tm_clones
+0000000000400660 T _start
+0000000000601058 D __TMC_END__
+00000000004007c2 W Bar<int, int>* foo<int, int>(int, int)
+0000000000400770 t __static_initialization_and_destruction_0(int, int)
+                 U std::ostream::operator<<(int)@@GLIBCXX_3.4
+                 U std::ios_base::Init::Init()@@GLIBCXX_3.4
+                 U std::ios_base::Init::~Init()@@GLIBCXX_3.4
+0000000000601080 B std::cout@@GLIBCXX_3.4
+0000000000400884 r std::piecewise_construct
+0000000000601191 b std::__ioinit
index 0b80e1e45dda8045d3913c929de60692820a3265..7de03eb7af30eb4851fe8d4fc5443910cb18c20b 100644 (file)
@@ -15,7 +15,7 @@ Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.cdt.core
 Export-Package: org.eclipse.tracecompass.internal.tmf.core;x-friends:="org.eclipse.tracecompass.tmf.core.tests,org.eclipse.tracecompass.tmf.ui.swtbot.tests",
  org.eclipse.tracecompass.internal.tmf.core.analysis;x-friends:="org.eclipse.tracecompass.tmf.core.tests",
- org.eclipse.tracecompass.internal.tmf.core.callstack;x-friends:="org.eclipse.tracecompass.tmf.ui",
+ org.eclipse.tracecompass.internal.tmf.core.callstack;x-friends:="org.eclipse.tracecompass.tmf.ui,org.eclipse.tracecompass.tmf.core.tests",
  org.eclipse.tracecompass.internal.tmf.core.component;x-friends:="org.eclipse.tracecompass.tmf.core.tests",
  org.eclipse.tracecompass.internal.tmf.core.filter;x-friends:="org.eclipse.tracecompass.tmf.core.tests,org.eclipse.tracecompass.tmf.ui",
  org.eclipse.tracecompass.internal.tmf.core.parsers.custom;x-friends:="org.eclipse.tracecompass.tmf.ui",
This page took 0.028466 seconds and 5 git commands to generate.