/******************************************************************************* * Copyright (c) 2009 STMicroelectronics. * 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: * Xavier Raynaud <xavier.raynaud@st.com> - initial API and implementation *******************************************************************************/ package org.eclipse.linuxtools.internal.gprof.test; import static org.eclipse.linuxtools.internal.gprof.test.STJunitUtils.BINARY_FILE; import static org.eclipse.linuxtools.internal.gprof.test.STJunitUtils.OUTPUT_FILE; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedList; import java.util.List; import org.eclipse.linuxtools.internal.gprof.utils.Aggregator; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; /** * @author Xavier Raynaud <xavier.raynaud@st.com> */ @RunWith(Parameterized.class) public class GprofAggregatorTest { @Parameters public static Collection<Object[]> data() { List<Object[]> params = new ArrayList<>(); for (File testDir : STJunitUtils.getTestDirs()) { final String dirName = testDir.getName(); params.add(new Object[] { dirName }); } return params; } private String dir; public GprofAggregatorTest(String dir) { this.dir = dir; } @Test public void testAggregation() throws IOException, InterruptedException { File directory = new File(STJunitUtils.getAbsolutePath( "org.eclipse.linuxtools.gprof.test", dir)); File gmonPath = new File(STJunitUtils.getAbsolutePath( "org.eclipse.linuxtools.gprof.test", dir + File.separator + OUTPUT_FILE)); File binaryPath = new File(STJunitUtils.getAbsolutePath( "org.eclipse.linuxtools.gprof.test", dir + File.separator + BINARY_FILE)); String gmon = gmonPath.toString(); String binary = binaryPath.toString(); LinkedList<String> s = new LinkedList<>(); s.add(gmon.toString()); s.add(gmon.toString()); String gprof2use = "gprof"; File f = Aggregator.aggregate(gprof2use, binary, s, directory); Process p = Runtime.getRuntime().exec( new String[] { gprof2use, binary, f.getAbsolutePath() }); Process p2 = Runtime.getRuntime().exec( new String[] { gprof2use, binary, directory + File.separator + "gmon.sum.ref" }); STJunitUtils.compare(p.getInputStream(), p2.getInputStream()); p.waitFor(); p2.waitFor(); } }