/*******************************************************************************
* Copyright (c) 2009 Red Hat, Inc.
* 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:
* Red Hat - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.callgraph.launch.tests;
import static org.junit.Assert.assertEquals;
import java.io.File;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy;
import org.eclipse.linuxtools.internal.callgraph.core.LaunchConfigurationConstants;
import org.eclipse.linuxtools.internal.callgraph.launch.LaunchStapGraph;
import org.eclipse.linuxtools.internal.callgraph.launch.SystemTapLaunchConfigurationDelegate;
import org.junit.After;
import org.junit.Test;
public class ConfigurationTest extends AbstractStapTest {
/**
* This test checks if the commands sent by SystemTap match exactly the options
* that are set. Uses the delegate.launch() function.
*
* Activates all options!
* @throws CoreException
*/
@Test
public void testConfig() throws CoreException {
LaunchStapGraph shortcut = new LaunchStapGraph();
String testCDirectives = "-DRandomjunk -DMoreJunk";
String testOutputPath = "/tmp/ThisFileDoesNothingDeleteIt";
String testBinaryPath = "/path/to/binary";
String testScriptPath = "/tmp/NotAScriptFile.stp";
String testArguments = "/path/to/binary";
int testPid = 413;
int testBuffer = 100;
int testPass = 10;
ILaunchConfiguration config = shortcut.outsideGetLaunchConfigType()
.newInstance(null, "Temp name");
ILaunchConfigurationWorkingCopy wc = config
.copy("Testing configuration");
wc.setAttribute(LaunchConfigurationConstants.COMMAND_VERBOSE, 1);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_KEEP_TEMPORARY,
true);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_GURU, true);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_PROLOGUE_SEARCH,
true);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_NO_CODE_ELISION,
true);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_DISABLE_WARNINGS,
true);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_BULK_MODE, true);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_TIMING_INFO, true);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_SKIP_BADVARS, true);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_IGNORE_DWARF, true);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_TAPSET_COVERAGE,
true);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_LEAVE_RUNNING,
true);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_PASS, testPass);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_BUFFER_BYTES,
testBuffer);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_TARGET_PID,
testPid);
wc.setAttribute(LaunchConfigurationConstants.COMMAND_C_DIRECTIVES,
testCDirectives);
wc.setAttribute(LaunchConfigurationConstants.BINARY_PATH,
testBinaryPath);
wc.setAttribute(LaunchConfigurationConstants.SCRIPT_PATH,
testScriptPath);
wc.setAttribute(LaunchConfigurationConstants.ARGUMENTS, testArguments);
wc.setAttribute(LaunchConfigurationConstants.OUTPUT_PATH,
testOutputPath);
config = wc.doSave();
SystemTapLaunchConfigurationDelegate del = new SystemTapLaunchConfigurationDelegate();
del.launch(config, "profile", null, null);
assertEquals("stap -v -p" + testPass + " -k -g -P -u -w -b -t -s"
+ testBuffer + " -x" + testPid + " " + testCDirectives
+ " -F --skip-badvars --ignore-dwarf -q " + " -c '" + testBinaryPath
+ "' " + testScriptPath + " --runtime=dyninst " + testArguments + " >& "
+ testOutputPath,
del.generateCommand());
killStap();
}
@After
public void deleteFiles() {
File file = new File("/tmp/ThisFileDoesNothingDeleteIt");
if (file.exists()) {
file.delete();
}
}
}