Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "PTP/testing/1.x"

< PTP‎ | testing
(Test CR_1: Runtime Views)
(Hover Help)
 
(119 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
== Test Plan for PTP 1.x Release ==
 
== Test Plan for PTP 1.x Release ==
  
This plan describes the tests that will be undertaken to verify the 1.x series of PTP releases. The following table shows the tests that apply to each release revision.
+
This plan describes the tests that will be undertaken to verify the 1.x series of PTP releases.  
  
{| border="1"
+
== Test Setup ==
 +
 
 +
The following steps should be carried out prior to testing PTP. Refer to the release notes for the appropriate PTP version if necessary.
 +
 
 +
<ol>
 +
<li>Install OpenMPI 1.2. Make sure it is configured with the '--with-devel-headers' option.</li>
 +
<li>If you are testing on a single node, edit <openmpi_install>/etc/openmpi-default-hostfile and add lines containing 'node0', 'node1', etc. Edit /etc/hosts and add a localhost entry for each name you added to the openmpi-default-hostfile. So, for 'node0', add '127.0.0.1 node0' to /etc/hosts. This will simulate a multi-node machine.</li>
 +
<li>'''Verify OpenMPI is working by compiling and launching a simple program from the command line.'''</li>
 +
<li>Start with a fresh Eclipse and CDT install (including workspace), as per the release notes.</li>
 +
<li>Install PTP using instructions from the [http://www.eclipse.org/ptp/docs/releases/release-1.1.php release notes].</li>
 +
<li>Launch Eclipse on the test machine.</li>
 +
<li>Switch to the C/C++ Perspective.</li>
 +
<li>Create a new Managed Make C Project....
 +
<li>[If PLDT is installed ]In the project setup wizard, accept default settings up until the last page: select "Add MPI settings to the project."  If you have not put MPI include path into Preferences, cancel out of the new project setup and do it now; then restart new project wizard. </li>
 +
<li>[If PLDT is not installed.] Accept the default settings on the new project wizard. Then right-click on the new project and choose 'Properties'. Select the 'C/C++ Build' item. Change the 'GCC C Compiler' and '... C Linker' settings to 'mpicc'.</li>
 +
<li>Create a new C source file in the project. </li>
 +
<li>Add the following code:
 +
<pre>
 +
#include <stdio.h>
 +
#include <mpi.h>
 +
int main(int argc, char *argv[])
 +
{
 +
    int i, rank;
 +
 +
    MPI_Init(&argc, &argv);
 +
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 +
 +
    for (i = 0; i < 10; i++) {
 +
      printf("hello from %d loop %d\n", rank, i);
 +
      sleep(1);
 +
    }
 +
 +
    MPI_Finalize();
 +
    return 0;
 +
}
 +
</pre>
 +
</li>
 +
<li>Save the file. It should automatically build.</li>
 +
<li>'''Verify there are no errors in the build.'''</li>
 +
</ol>
 +
 
 +
== Test Matrix ==
 +
 
 +
=== Testers ===
 +
Committers: Clement Chu, Greg Watson, Craig Rasmussen, Beth Tibbitts
 +
 
 +
=== Version Grid ===
 +
The following grid indicated the tools' versions used to carry out testing.
 +
{| border="1" cellpadding="5" cellspacing="0"
 +
! &nbsp; || Clement || Greg || Craig || Beth
 
|-
 
|-
! Test !! v1.0 !! v1.1
+
| style="background:silver" | Eclipse
 +
| align="center" | 3.2.1 || align="center" | 3.2.1,3.2.2 || align="center" | 3.2.1 || align="center" | 3.2.1
 
|-
 
|-
| CR_1 || x || x
+
| style="background:silver" | CDT
 +
| align="center" | 3.1.1 || align="center" | 3.1.1,3.1.2 || align="center" | 3.1.1 || align="center" | 3.1.1+ (1/09 build);  3.1.2
 
|-
 
|-
| CR_2 || x ||
+
| style="background:silver" | Open mpi
 +
| align="center" | 1.2b2,1.2b4 || align="center" | 1.2b1,1.2b2,1.2b4 || align="center" | 1.2b1r12562 || align="center" |1.0.2*
 +
|-
 +
| style="background:silver" | GDB
 +
| align="center" | 6.1 (Mac),6.5 ||  align="center" | 6.3,6.4,6.5,6.6 || align="center" | 6.3 (Mac),6.4 || align="center" | 6.5
 +
|-
 +
| style="background:silver" | Java
 +
| align="center" | JDK 1.5,1.6 || align="center" | JDK 1.5,1.6 || align="center" | JDK 1.5 || align="center" | JDK 1.5 (IBM J9)
 
|}
 
|}
  
== Test Setup ==
+
*I could upgrade to a more recent OpenMPI but since I might be the only one at 1.0.2 it's good to have it tested.  I will probably try CDT 3.1.2 too since that has our AST traversal changes in it.
  
The following steps should be carried out prior to testing PTP:
+
=== Platform Grid ===
 +
The following machines/architectures should be considered when testing.
 +
{| border="1" cellpadding="5" cellspacing="0"
 +
! &nbsp; || Clement || Greg || Craig || Beth
 +
|-
 +
| style="background:silver" | Linux x86
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" |  [[Image:Tick.gif]]  || align="center"  | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | Linux x86_64
 +
| align="center" |  || align="center" |  [[Image:Tick.gif]] || align="center" | || align="center" |
 +
|-
 +
| style="background:silver" | Linux x86 w/ bproc
 +
| align="center" |  || align="center" | || align="center" | || align="center" |
 +
|-
 +
| style="background:silver" | Linux x86_64 w/ bproc
 +
| align="center" |  || align="center" | || align="center" | || align="center" |
 +
|-
 +
| style="background:silver" | Mac OS X ppc
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | || align="center" |
 +
|-
 +
| style="background:silver" | Mac OS X x86
 +
| align="center" |  || align="center" | [[Image:Tick.gif]] || align="center" |  [[Image:Tick.gif]]  || align="center" |
 +
|-
 +
| style="background:silver" | Windows x86 (PLDT only)
 +
| align="center" |  || align="center" |  || align="center" | || align="center" | [[Image:Tick.gif]]
 +
|}
  
# See release notes for the appropriate PTP version.
+
=== Build Grid ===
# Install OpenMPI 1.2. Make sure it is configure with the '--with-devel-headers' option.
+
The following builds have been tested.
# If you are testing on a single node, edit <openmpi_install>/etc/openmpi-default-hostfile and add lines containing 'node0', 'node1', etc. Edit /etc/hosts and add a localhost entry for each name you added to the openmpi-default-hostfile. So, for 'node0', add '127.0.0.1 node0' to /etc/hosts. This will simulate a multi-node machine.
+
{| border="1" cellpadding="5" cellspacing="0"
# Verify OpenMPI is working by compiling and launching a simple program from the command line.
+
! &nbsp; || Clement || Greg || Craig || Beth
# Start with a fresh Eclipse and CDT install (including workspace), as per the release notes.
+
|-
# Install PTP using instructions from the release notes.
+
| style="background:silver" | pldt-1.1.0-I200701082248
# Launch Eclipse on the test machine.
+
| align="center" |  || align="center" | || align="center" | || align="center" |
 +
|-
 +
| style="background:silver" | ptp-1.1.0-I200701091500
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | || align="center" |
 +
|-
 +
| style="background:silver" | ptp-1.1.0-I200701101100
 +
| align="center" |  || align="center" | || align="center" |  [[Image:Tick.gif]]  || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | ptp-1.1.0-I200701121100
 +
| align="center" |  || align="center" | || align="center" | || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | ptp-1.1.0-I200701142000
 +
| align="center" |  || align="center" | [[Image:Tick.gif]] || align="center" |  [[Image:Tick.gif]]  || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | ptp-1.1.0-I200701161500
 +
| align="center" | || align="center" | || align="center" | || align="center" |
 +
|-
 +
| style="background:silver" | ptp-1.1.0-I200701191300
 +
| align="center" | || align="center" | || align="center" |  [[Image:Tick.gif]]  || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | ptp-1.1.0-I200702222000
 +
| align="center" | [[Image:Tick.gif]]  || align="center" | [[Image:Tick.gif]] || align="center" | || align="center" |
 +
|-
 +
|}
  
Testing should be carried out on the following machines/architectures:
+
=== Test Grid ===
 +
This shows the test results based on the latest build tested.
 +
{| border="1" cellpadding="5" cellspacing="0"
 +
! align="left" | Feature || Clement || Greg || Craig || Beth
 +
|-
 +
| colspan="5" style="background:silver" | [[#Core.2FRuntime_Tests | Core/Runtime Tests]]
 +
|-
 +
| style="background:silver" | [[#Runtime_Views | Runtime Views]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]]  || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Node Sets | Node Sets]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" |  || align="center" | [[Image:Tick.gif]] || align="center" |
 +
|-
 +
| style="background:silver" | [[#Parallel_Job_Launch | Parallel Job Launch]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Parallel_Job_Output | Parallel Job Output]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Jobs_View | Job View]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| colspan="5" style="background:silver" | [[#Debug_Tests | Debug Tests]]
 +
|-
 +
| style="background:silver" | [[#Debug_Launch_and_Terminate | Debug Launch &amp; Terminate]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Parallel_Debug_View | Parallel Debug View]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Register_.2F_Unregister_Process | Register/Unregister Process]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | bug
 +
|-
 +
| style="background:silver" | [[#Breakpoint_Creation | Breakpoint Creation]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Breakpoint_Deletion | Breakpoint Deletion]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Breakpoint_Hit | Breakpoint Hit]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" |  [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Breakpoint View | Breakpoint View]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" |  [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Global_Breakpoint | Global Breakpoint]]
 +
| align="center" | [[Image:Tick.gif]] Image hasn't changed to 'G' || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" |  [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Annotation | Annotation]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" |  [[Image:Tick.gif]] || align="center" |  || align="center" | 
 +
|-
 +
| style="background:silver" | [[#Step_Command | Step Command]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" |  [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Variable_View | Variable View]]
 +
| align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | [[Image:Tick.gif]] || align="center" | ? bug?, notes in my office
 +
|-
 +
| colspan="5" style="background:silver" | [[#PLDT_Tests | PLDT Tests]]
 +
|-
 +
| style="background:silver" | [[#MPI_Artifacts | MPI Artifacts]]
 +
|  align="center" |  || align="center" | || align="center" | || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Command_Completion | Command Completion]]
 +
|  align="center" |  || align="center" | || align="center" | || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#Hover_Help | Hover Help]]
 +
|  align="center" |  || align="center" | || align="center" | || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#F1_Help | F1 Help]]
 +
|  align="center" |  || align="center" | || align="center" | || align="center" | [[Image:Tick.gif]]
 +
|-
 +
| style="background:silver" | [[#OpenMP_Artifacts | OpenMP Artifacts]]
 +
|  align="center" |  || align="center" | || align="center" | || align="center" | [[Image:Tick.gif]]*
 +
|}
  
# Linux x86
+
* * some problems finding artifacts in some OpenMP code I hadn't tested for a while, will investigate
# Linux x86_64
+
# Linux x86 w/ bproc
+
# Linux x86_64 w/ bproc
+
# MacOS X ppc
+
# MacOS X x86
+
  
 
== Core/Runtime Tests ==
 
== Core/Runtime Tests ==
  
=== Test CR_1: Runtime Views ===
+
=== Runtime Views ===
  
 
# Switch to the PTP Runtime perspective.
 
# Switch to the PTP Runtime perspective.
# Verify that the runtime system starts.
+
#* '''Verify that the runtime system starts.'''
 
# If the Machines View and Jobs View are not open, select them from Window->Show View->Other...
 
# If the Machines View and Jobs View are not open, select them from Window->Show View->Other...
# Confirm that the Jobs View shows no jobs since it is a clean start.
+
#* '''Verify that the Jobs View shows no jobs since it is a clean start.'''
# Confirm that the Machines View displays the correct number of nodes and node state for the current machine.
+
#* '''Verify that the Machines View displays the correct number of nodes and node state for the current machine.'''
# Double-click on a node. Confirm that the node information is displayed correctly in the Node Info panel.
+
# Double-click on a node icon in the Machines view.
# Double-click on a different node and verify the node information is updated.
+
#* '''Verify that the node information is displayed correctly in the Node Info panel.'''
 +
# Double-click on a different node.
 +
#* '''Verify the node information is updated.'''
 +
# If on a bproc machine, use another terminal window change the state of one of the nodes (reboot it, change ownership, etc)
 +
#* '''Verify that the node's status changes in the Machine View (both the icon to match the legend as well as the detailed text information to display the new change(s)).'''
  
=== Test CR_2: Node Sets ===
+
=== Node Sets ===
  
 
# Select some nodes in the Node View.
 
# Select some nodes in the Node View.
 
# Click on the 'Create Set' button and enter a name for the set.
 
# Click on the 'Create Set' button and enter a name for the set.
# Confirm that the user can switch between (focus on) the full set of nodes for the given machine and the newly created set.
+
#* '''Verify that the user can switch between (focus on) the full set of nodes for the given machine and the newly created set.'''
 
# Switch to the 'Root' set. Select some more nodes and select 'Add to set:' from the 'Create Set' menu.
 
# Switch to the 'Root' set. Select some more nodes and select 'Add to set:' from the 'Create Set' menu.
 +
#* '''Verify the nodes are added to the set.'''
 
# Switch to the 'Root' set. Select a different set of nodes and create a new set.
 
# Switch to the 'Root' set. Select a different set of nodes and create a new set.
# Select a node from this set and click the 'Remove Elements' button. Verify the element is removed.
+
#* '''Verify there are now three sets.'''
# Click on the 'Delete Set' button and verify the set is deleted.
+
# Select a node from this set and click the 'Remove Elements' button.  
 +
#* '''Verify the element is removed.'''
 +
# Click on the 'Delete Set' button
 +
#* '''Verify the set is deleted.'''
  
=== Test CR_2: Job Launch ===
+
=== Parallel Job Launch ===
 +
 
 +
# Open the 'Run Configuration' dialog.
 +
# Select 'Parallel Application' and click the 'New' button.
 +
# In the 'Main' tab, select the 'Parallel Project' and 'Application program' to run.
 +
# In the 'Parallel' tab, specify the number of processes to run (say 4).
 +
# In the 'Debugger' tab, select the 'SDM' debugger.
 +
# Click on 'Run'.
 +
#* '''Verify that the 4 (or whatever number you chose) nodes change state in the Machines View to specify they contain a running job and that the job starts on the correct machine.'''
 +
# Wait for the job to terminate.
 +
#* '''Verify that the state information is correctly displayed in the Machine View (for the appropriate node).'''
 +
 
 +
=== Parallel Job Output ===
 +
 
 +
# Re-run the same program.
 +
# Double-click on a node where one of the processes has been assigned.
 +
#* '''Verify that the 'Process Info' panel displays the processes on that node, including which job the process belongs to.'''
 +
# Double-click on one of the processes in the 'Process Info' panel to bring up the Process View.
 +
#* '''Verify that the MPI rank, node number, job number, and status are correct.'''
 +
#* '''Verify there is process output in the output section of the Process View.'''
 +
 
 +
=== Jobs View ===
  
# Create a new C project.
 
# Create a new C-MPI source file in the project. The source file will have each process producing periodic output and run for a few minutes (so that the tests can be performed on a running job).
 
# Compile the C-MPI application.
 
# Create a new Run Configuration for this project, utilizing the Parallel Development configuration to specify the number of processes for this run and a chosen simulated machine.
 
# Run the job (under simulated control).
 
# Confirm that the appropriate node's change state in the Machines View to specify they contain a running job and that the job starts on the correct machine.
 
# Focus on a node where one of the processes has been assigned. Confirm that the Machines View displays the processes on that node, including which job the process belongs to.
 
# Double-click on one of the processes in the Machine View to bring up the Process View. Confirm that the MPI rank, node number, job number, and status are correct.
 
# Observe process output in the output section of the Process View.
 
# Wait for job to terminate.
 
# Observe that the process state and exit code correctly display in the Process View, Machine View (for the appropriate node), and Jobs View (for the appropriate Job).
 
 
# Bring the Jobs View to the foreground.
 
# Bring the Jobs View to the foreground.
# Confirm the Job previously run, as well as the processes contained within it, are listed and is shown as terminated.
+
#* '''Verify the job previously run, as well as the processes contained within it, are listed and are shown as terminated.'''
# Re-run the same job. Confirm the Job View displays the job as running and the processes as well.
+
# Re-run the same job.  
# Double-click on a process of the job, opening the Process View. Confirm the running state.
+
#* '''Verify the Job View displays the job as running and the processes as well.'''
# Terminate the job by using the terminate icon.
+
# Double-click on a process in the Job View, opening the Process View.  
# Confirm the Job View updates to show the terminated state.
+
#* '''Verify the running state.'''
# Confirm the Process View updates to show the terminated state, including an exit-code.
+
# Terminate the job by using the terminate icon (re-run again if necessary).
# Using the Parallel Development Preferences Page select the Open-MPI runtime system.
+
#* '''Verify the Job View updates to show the terminated state.'''
# Using the Open MPI Preferences Page under the Parallel Development Preferences Page set the path and arguments to the ORTE daemon (ORTEd).
+
#* '''Verify the Process View updates to show the terminated state, including an exit-code.'''
# Run the same job from step #12 (under OMPI control).
+
# Repeat steps #14 through #26 for this second runtime system (Open-MPI as opposed to simulation).
+
# Switch back to the Machine View.
+
# Using another terminal change the state of one of the nodes (reboot it, change ownership, etc) and confirm that the node's status changes in the Machine View (both the icon to match the legend as well as the detailed text information to display the new change(s)).
+
  
 
== Debug Tests ==
 
== Debug Tests ==
  
=== SETUP ===
+
=== Debug Launch and Terminate ===
  
# Make sure that the correct version of CDT and Eclipse are installed.
+
# Switch to the Parallel Debug Perspective.
# Check out these packages from dev.eclipse.org:/home/technology/org.eclipse.ptp:
+
# Ensure that the default debug launch configuration will launch a 4 process job.
#* org.eclipse.ptp.core
+
# Click the debug button to launch the debugger.
#* org.eclipse.ptp.debug.core
+
#* '''Verify that the Parallel Debug View displays the status of processes as suspended (all should be yellow).'''
#* org.eclipse.ptp.debug.external
+
#* '''Verify that the job icon in the Parallel Debug View is a debug icon.'''
#* org.eclipse.ptp.debug.ui
+
#* '''Verify that the new job is selected and all processes of this job will be displayed.'''
#* org.eclipse.ptp.launch
+
#* '''Verify that process 0 is registered (has a black box around it) and that the stack frame is visible in the Debug View.'''
#* org.eclipse.ptp.ui
+
#* '''Verify that the program stops automatically at the first line of code in''' <code>main()</code>'''.'''
# Run the Eclipse Application
+
#* '''Verify that there is a register process current line marker and an unregistered process current line marker at line 7 of the code.'''
# Create a simple Managed Make C Project with the name: "TestC"
+
# Select the Breakpoint View.
# Create the main program file with the name: "main.c"
+
#* '''Verify that there are no breakpoints visible.'''
# Fill in "main.c" with any code since the Debug Simulator will not interpret the source code (it only gets the line number). Edit the file so that it contains only 20 lines.
+
# Click on the 'Terminate' button on the Parallel Debug View toolbar.
# Create the PTP Launch Configuration and fill in the necessary configuration, including the number of processes.
+
#* '''Verify that all processes have the exited status icon.'''
# Create a C/C++ Project named as "TestC"
+
#* '''Verify that the job icon is shown as terminated.'''
# Create a file called "main.c"
+
  
=== Test DB_1: Debug Core ===
+
=== Parallel Debug View ===
  
 
# Switch to the Parallel Debug Perspective.
 
# Switch to the Parallel Debug Perspective.
# Double click the ruler at any line in the source code window to set the breakpoint, set another breakpoint after the first breakpoint.
+
# Ensure that the default debug launch configuration will launch a 4 process job.
# Verify that the breakpoints have been set by looking at the Breakpoints view.
+
# Click the debug button to launch the debugger.
# Click the debug button for the created PTP Launch Configuration.
+
# Drag across a rectangular region to select some processes in the Parallel Debug View.
# Process 0 will be registered automatically in the Debug view, 2 Console views will also be opened (one for process 0, and the other for the debugger output).
+
#* '''Verify that clicking with the left mouse button while holding down the Shift key extends the selection.''' See [https://bugs.eclipse.org/bugs/show_bug.cgi?id=169468 Bugzilla #169468]
# After printing the output for process 0, which can be verified by opening the Console view for process 0, all processes (process 0 and others) will break at the first breakpoint (since the breakpoint applies for all processes).
+
#* '''Verify that clicking with the left mouse button while holding down the Ctrl (Cmd) key adds new processes to the selection.'''
# Verify this by looking at the Debug view and see that process 0 is suspended. Look at the Parallel Debug view, all processes should change to yellow. Look at the # Console view for process 0, the output should stop. Look at the Console view for the debugger, there should be text saying that BreakpointEvent has been received.
+
#* '''Verify that Ctrl-A (Cmd-A) selects all the processes.'''
# Double click process 1 in the Parallel Debug view to register it to the Debug view. Look at the Debug view and see that process 1 has been registered and in the suspended state. Look at the Console view and verify that Console view for process 1 has been created.
+
# If more than one page of processes is displayed:
# Select process 0 and click the Step Over button in the Debug view. Look at the Console view for process 0 to verify that the action has been executed successfully. # Repeat and verify this action several time
+
#* '''Verify the Page-up key moves up one page.'''
# Select process 1 and click the Step Into button in the Debug view. Look at the Debug view and see that the number of stackframes for process 1 increases by one. # Click Step Into to increase the stackframe and click Step Finish to decrease the stackframe. Repeat and verify this action several times. The maximum number of stackframes is 5.
+
#* '''Verify the Page-down key moves down one page.'''
# Select the stackframe of process 0 and open the Variables view. Verify that there are 2 argument variables and 2 local variables.
+
#* '''Verify auto scrolling while dragging further up or down the views.'''
# Select process 0 and click the Resume button, it will then hit the second breakpoint. Click the Resume button again to run process 0 until completion (it prints 20 lines and then exits). Look at the Debug view and the Console view and verify that process 0 has exited.
+
# Make sure that only processes 0 and 2 are selected.
# Select process 1 and click the Terminate button. Look at the Debug view and the Console view and verify that process 1 has been terminated.
+
# Click the 'Create Set' button. Enter 'even' for the set name.
 +
#* '''Verify that the view changes from the 'Root' set to the newly created set.'''
 +
# Click the 'Change Set' button.
 +
#* '''Verify that the view changes to the 'Root' set.'''
 +
# Select processes 1 and 3.
 +
# Click the 'Create Set' button.
 +
# Enter 'even' for the set name.
 +
#* '''Verify that the OK button is disabled and a message that the name is already used is displayed.'''
 +
# Enter 'odd' for the set name and select OK.
 +
# Click on the background of the left hand portion of the Parallel Debug View (not on any jobs). You may need to remove terminated jobs to do this.
 +
#* '''Verify that the processes are removed from the right hand portion of the View, and the registered process removed from the Debug View.'''
 +
#* '''Verify that the current line markers are removed from the editor.'''
 +
# Click on debug job icon.
 +
#* '''Verify that the processes are restored to the right hand portion of the View, and the registered process appears in the Debug View.'''
 +
#* '''Verify that the current line markers are restored to the editor.'''
 +
# Click on the 'Terminate' button on the Parallel Debug View toolbar.
  
=== Test DB_2: Debug Launch ===
+
=== Register / Unregister Process ===
  
# Parallel Debug View displays the status of processes after launching a parallel program in debug mode.
+
# Switch to the Parallel Debug Perspective.
# Debug icon of the job represent that it is in debug mode.
+
# Ensure that the default debug launch configuration will launch a 4 process job.
# The new job will be selected at the start up and the all processes of this job will be displayed.
+
# Click the debug button to launch the debugger.
# Unselected the job, the process view will be cleared.
+
# Double-click on process 3 in Parallel Debug View.
 +
#* '''Verify that the process is displayed with a black square.'''
 +
#* '''Verify that the process stack frame appears in the Debug View.'''
 +
# Select all processes in the Parallel Debug View and then click the 'Register Selected Elements' button.
 +
#* '''Verify that all processes are registered in the debug view.'''
 +
#* Note: If more than 10 processes have been selected to register, a dialog will popup and ask for confirmation.
 +
# Double-click on process 0.
 +
#* '''Verify that the processes is unregistered from the debug view.'''
 +
#* '''Verify that the black square is removed.'''
 +
# Select all processes in the Parallel Debug View and then click the 'Unregister Selected Elements' button.
 +
#* '''Verify that all processes are unregistered in the debug view.'''
 +
# Click on the 'Terminate' button on the Parallel Debug View toolbar.
  
=== Test DB_3: Debug View ===
+
=== Breakpoint Creation ===
  
# Drag across a rectangular region to select some processes. Hold down the left mouse button, move the mouse, and release the button when the desired process is selected.
+
# Switch to the Parallel Debug Perspective.
# Click with the left mouse button while holding down the Shift key will extent selection.
+
# Ensure that the default debug launch configuration will launch a 4 process job.
# Click with the left mouse button while holding down the Ctrl key will continue selection.
+
# Click the debug button to launch the debugger.
# A dialog box will popup when press the Create set button. After enter set name, the view will change from root set to created set.
+
# Create the 'even' and 'odd' sets used in the 'Parallel Debug View' test.
# There is a validation to check whether a new set name already exist or not. If exists, the ok button will be disabled.
+
# Make sure the 'Root' set is selected.
# Only set can be created after the job is launched.
+
# Double-click on ruler at line 15 in the C/C++ source editor.
# Press Ctrl-A key can select all the processes.
+
#* '''Verify a green breakpoint icon appears on the ruler at line 15.'''
# Press Page-up key can go up one page.
+
# Change to the 'even' set.
# Press Page-down key can go down one page.
+
#* '''Verify that the color of the breakpoint at line 15 changes to blue.'''
# Auto scrolling while dragging further up or down the views.
+
# Double-click on ruler at line 11 in the C/C++ source editor.
 +
#* '''Verify a green breakpoint icon appears on the ruler at line 11.'''
 +
# Change to the 'odd' set.
 +
#* '''Verify that the breakpoint on line 11 changes color to yellow and the breakpoint on line 15 remains blue.'''
 +
# Hover over the breakpoint on line 11.
 +
#* '''Verfiy that the tooltips appears displaying details of breakpoint (job name, set name, file name and line number).'''
 +
# Select the 'Root' set.
 +
# Click on the 'Terminate' button on the Parallel Debug View toolbar.
  
=== Test DB_4: Breakpoints ===
+
=== Breakpoint Deletion ===
  
# The parallel breakpoint is created when double click on ruler of the C/C++ source editor.
+
# Switch to the Parallel Debug Perspective.
# If the parallel breakpoint is created in the condition that is no job running or unselected all the jobs, this breakpoint will belong to be global for all the jobs and there is an additional overlayered image on the breakpoint.
+
# Ensure that the default debug launch configuration will launch a 4 process job.
# Tooltips displaying details of breakpoint (job name, set name, file name and line number) will appear when mouse hovers on the breakpoint.
+
# Click the debug button to launch the debugger.
# Color of a breakpoint will change to green when it is created in the current set's process.
+
# Double-click on ruler at line 15 in the C/C++ source editor.
# Color of a breakpoint will change to yellow when it does not exist in any of the set's process.
+
#* '''Verify a green breakpoint icon appears on the ruler at line 15.'''
# Color of a breakpoint will change to blue when it exists in one of the process in the current set but is not created in this set.
+
# Double-click on ruler at line 15 in the C/C++ source editor.
# Double on the created breakpoint on ruler, the breakpoint will be removed.
+
#* '''Verify that the breakpoint icon is removed.'''
# The global breakpoint only can be created or removed when there is no job selected.
+
# Click on the 'Terminate' button on the Parallel Debug View toolbar.
# Multiple breakpoints can be created in the same source file and the same line number with different jobs.
+
  
=== Test DB_5: Breakpoint View ===
+
=== Breakpoint Hit ===
  
# All breakpoints will be displayed ordered by the set name when clicking the drop down menu in the breakpoint view and then the parallel breakpoint set.
+
# Switch to the Parallel Debug Perspective.
# Unchecked the breapoint in Breakpoint View, the breakpoint will be disabled. Check it again, it will be enabled again.
+
# Ensure that the default debug launch configuration will launch a 4 process job.
# Right click on the breakpoint in Breakpoint View and select Goto Set action, the parallel debug view will change to the job and the set indicated in the selected breakpoint.
+
# Click the debug button to launch the debugger.
 +
# Create the 'even' and 'odd' sets used in the 'Parallel Debug View' test and set the breakpoints described in the 'Breakpoint Creation' test.
 +
# Select the 'Root' set.
 +
# Click on the 'Resume' button on the Parallel Debug View toolbar.
 +
#* '''Verify that processes 0 and 2 are suspended on line 11 and processes 1 and 3 are suspended on line 15.'''
 +
#* Note that it will take 10 seconds for processes 1 and 3 to suspend.
 +
# Double-click on the breakpoint at line 11 to delete it.
 +
# Select the 'even' set.
 +
# Click on the 'Resume' button on the Parallel Debug View toolbar.
 +
#* '''Verify that all processes are now suspended on line 15.'''
 +
# Select the 'Root' set.
 +
# Click on the 'Resume' button on the Parallel Debug View toolbar.
 +
#* '''Verify that all processes are now exited and the job shows a terminated icon.'''
  
=== Test DB_6: Register / Unregister Process ===
+
=== Breakpoint View ===
  
# Double click on the process in parallel debug view and the process will be registered into the debug view. A registered process is presented by a black rectangle.
+
# Switch to the Parallel Debug Perspective.
# Selecting multiple processes in the parallel debug view and then click the register button will register all of them in the debug view.
+
# Ensure that the default debug launch configuration will launch a 4 process job.
# If more than 10 processes have been selected to register, a dialog will popup and ask for confirmation.
+
# Click the debug button to launch the debugger.
# Double click on the registered process will unregister it from the debug view. The black rectangle representing the registration will be removed.
+
# Create the 'even' and 'odd' sets used in the 'Parallel Debug View' test and set the breakpoints described in the 'Breakpoint Creation' test.
# Selecting multiple registered processes in the parallel debug view and then click the unregister button will unregister all of them in the debug view.
+
# Select the Breakpoints View (if not already selected).
# The debug view will only display registered processes which is according to the current job and current set.
+
#* '''Verify that the breakpoints appear in the view with the same colors as those on the ruler.'''
 +
# From the Breakpoints View menu, choose 'Group By->Parallel Breakpoint Set'.
 +
#* '''Verify that the breakpoints are ordered by set.'''
 +
# Uncheck (disable) the breakpoint on line 11 in Breakpoint View, the breakpoint will be disabled.
 +
#* '''Verify that the breakpoint marker is dimmed.'''
 +
# Select the 'Root' set.
 +
# Click on the 'Resume' button on the Parallel Debug View toolbar.
 +
#* '''Verify that all processes are now suspended on line 15.'''
 +
# Right click on the breakpoint at line 11 in Breakpoint View and select Goto Set action
 +
#* '''Verify that the 'even' set is selected.'''
 +
# Select the 'Root' set.
 +
# Click on the 'Terminate' button on the Parallel Debug View toolbar.
  
=== Test DB_7: Annotation ===
+
=== Global Breakpoint ===
 +
See [https://bugs.eclipse.org/bugs/show_bug.cgi?id=168773 Bugzilla #168773]
  
# If a breakpoint location contains multiple markers, annotations for both these markers will be overlapped when the breakpoint is hit. The registered process marker should appear on top. Tooltips will display process task id of each marker set in this location, grouped by its marker.
+
# Switch to the Parallel Debug Perspective.
# The annotation will change to another color(not created) when switch to another set.
+
# Ensure that the default debug launch configuration will launch a 4 process job.
# The process icon appears in yellow process is in suspended mode.
+
# Click the debug button to launch the debugger.
# The process icon appears in green when in running mode.
+
# Unselect the current job by clicking on the background of the left panel in the Parallel Debug View.
# The process icon appears in red when in terminate mode.
+
# Double-click on ruler at line 11 in the C/C++ source editor.
# The resume button and all step buttons in the parallel debug view will only be enabled when one of the processes is suspended.
+
#* '''Verify that a global breakpoint is created (indicated with a 'G' symbol).'''
# The suspend button in the parallel debug view will only be enabled when one of the processes is running.
+
# Click on the debug job icon.
# The terminate button in the parallel debug view will only be enabled when one othe processes is either running or suspended.
+
# Click on the 'Terminate' button on the Parallel Debug View toolbar.
# Resume button in the parallel debug view resumes all suspended processes in the current set.
+
# Click the debug button to launch the debugger.
# Suspend button in the parallel debug view pauses all running processes in the current set.
+
#* '''Verify that the global breakpoint remains set.'''
# Terminate button in the parallel debug view stops all suspended and running processes in the current set.
+
# Click on the 'Resume' button.
# Step buttons in the parallel debug view can step into, step over and step return all suspended processes in the current set.
+
#* '''Verify that all processes are suspended at the breakpoint.'''
# Resume button in the debug view can resume selected suspended process(es).
+
# Click on the 'Terminate' button on the Parallel Debug View toolbar.
# Suspend button in the debug view can pause selected running process(es).
+
# Unselect the current job by clicking on the background of the left panel in the Parallel Debug View.
# Terminate button in the parallel debug view can stop any suspended or running process(es).
+
# Double-click on ruler at line 11 in the C/C++ source editor.
# Step buttons in the debug view can step into, step over and step return any suspended process(es).
+
#* '''Verify that a global breakpoint is deleted.'''
  
== Parallel Language Development Tools ==
+
=== Annotation ===
 +
# Switch to the Parallel Debug Perspective.
 +
# Ensure that the default debug launch configuration will launch a 4 process job.
 +
# By default process 0 is registered and all processes are suspended on line 7 (main method).
 +
# Two annotations should be marked on ruler of source editor at the line 7.
 +
# Move mouse hover on these annotations.
 +
#* '''Verify that tooltip display "Suspended on registered process: 0" and "Suspended on unregistered processes: 1-3"'''
 +
# Register process 2 by double clicking on the process icon.
 +
# Move mouse hover annotation again on the ruler of source editor.
 +
#* '''Verify that tooltip display "Suspended on registered processes: 0,2" and "Suspended on unregistered processes: 1,3"'''
 +
# Unselect job by clicking on job viewer.
 +
#* '''Verify that no job selected, no icon displayed on process viewer, no debug item on Debug view and no Annotation on ruler.'''
 +
# Select job by clicking on job viewer.
 +
#* '''Verify that job is selected, 4 process icons displayed on process viewer, two registered debug items on Debug view and two annotations at line 7 on ruler and display same tooltip as step 4.'''
 +
# Click 'Step over' button.  All processes should be suspended at line 8.
 +
#* '''Verify that two annotations at line 8 on ruler and display same tooltip as step 4.'''
 +
# Create a set called 'setA' for process 2 and process 3.
 +
# Process viewer should contain two process icons (2 and 3).
 +
#* '''Verify that two annotations locate at line 8 on ruler and display tooltip "Suspended on unregistered processes: 0-1,3" and "Suspended on registered process: 2"'''
 +
# Click 'Step over' button.  Process 2 and 3 will be stopped at line 10.
 +
# Three annotations will be shown on ruler.
 +
#* '''Verify that an annotation locates at line 8 and display tooltip "Suspended on unregistered processes: 0-1"'''
 +
#* '''Verify that two annotations locate at line 10 and display tooltip "Suspended on unregistered process: 3" and "Suspended on registered process: 2"'''
 +
# Switch to Set 'Root'.  4 process icons will be shown on Process viewer.
 +
# Four annotations will be shown on ruler.
 +
#* '''Verify that two annotations locates at line 8 and display tooltip "Suspended on unregistered process: 1" and "Suspended on registered process: 0"'''
 +
#* '''Verify that two annotations locate at line 10 and display tooltip "Suspended on unregistered process: 3" and "Suspended on registered process: 2"'''
 +
# Click on the 'Terminate' button on the Parallel Debug View toolbar.
 +
 
 +
=== Step Command ===
 +
 
 +
# Switch to the Parallel Debug Perspective.
 +
# Ensure that the default debug launch configuration will launch a 4 process job.
 +
# Click the debug button to launch the debugger.
 +
# Create the 'even' and 'odd' sets used in the 'Parallel Debug View' test and set the breakpoints described in the 'Breakpoint Creation' test.
 +
# Select the 'Root' set.
 +
# Create a breakpoint at line 10.
 +
# Click the 'Resume' button. All processes should be suspended on line 10.
 +
# Select the 'even' set.
 +
# Click the 'Step Over' button several times on the Parallel Debug View toolbar.
 +
#* '''Verify that processes 0 and 2 step to line 11 and 12, while processes 1 and 3 remain suspended.'''
 +
# Select the 'Root' set.
 +
# Click on the 'Terminate' button on the Parallel Debug View toolbar.
 +
 
 +
=== Variable View ===
 +
See [https://bugs.eclipse.org/bugs/show_bug.cgi?id=169475 Bugzilla #169475]
 +
 
 +
# Switch to the Parallel Debug Perspective.
 +
# Ensure that the default debug launch configuration will launch a 4 process job.
 +
# Click the debug button to launch the debugger.
 +
# Select the Variable View.
 +
#* '''Verify that all the local variables are displayed in the view.'''
 +
# Click on 'Step Over' on the Parallel Debug View toolbar three times in quick succession.
 +
#* '''Verify that the variables are displayed correctly in the view.'''
 +
# Click on the 'Terminate' button on the Parallel Debug View toolbar.
 +
 
 +
== PLDT Tests ==
  
 
(See help files in the plug-in for more details on these)
 
(See help files in the plug-in for more details on these)
  
=== Test PLDT_1: MPI Artifacts ===
+
=== MPI Artifacts ===
# Launch eclipse with PTP (incl. CDT)
+
 
# Help -> Help Contents, PTP MPI Tools
+
# Launch Eclipse with PLDT (incl. CDT)
 +
# Help -> Help Contents, PTP Parallel Language Development  Tools
 
# Follow instructions in "Setup for PTP MPI tools". Basically, create a CDT project, a source file with MPI apis (a sample is included in help), and use Preferences to locate MPI header files.
 
# Follow instructions in "Setup for PTP MPI tools". Basically, create a CDT project, a source file with MPI apis (a sample is included in help), and use Preferences to locate MPI header files.
# Follow instructions in "Running PTP MPI tools" to set up Open MPI artifacts view (Do we need to explicitly add the actions to the toolbar?)
+
# Follow instructions in "Running PTP MPI tools" to set up.
select source vile in Navigator, then select MPI action to run analysis.
+
# Select a single source file in Navigator, then select MPI action from toolbar to run analysis.
 
# MPI artifact view should be populated with markers, listing API name, source file name and line number, and artifact type (function or constant)
 
# MPI artifact view should be populated with markers, listing API name, source file name and line number, and artifact type (function or constant)
 
# Double-click on any artifact, this should take you to the source file and line locating the artifact.
 
# Double-click on any artifact, this should take you to the source file and line locating the artifact.
 
# In source file, icon should be in marker bar, and squiggles should be under the artifact (e.g. function name)
 
# In source file, icon should be in marker bar, and squiggles should be under the artifact (e.g. function name)
 
# Click on column headings in artifact view to sort by values in that column.
 
# Click on column headings in artifact view to sort by values in that column.
 +
# Also test selection of a container (e.g. a project) and see that all files within it are analyzed.
 +
# Also test multiple selection (e.g. of several source files in a project) and they should all get analyzed.
 +
# Also test hitting the "Cancel" button on the Progress Monitor during analysis.  It should stop at least between the analysis of  the files (cancelation is checked between the handling of each individual source file.)
  
=== Test PLDT_2: Command Completion ===
+
=== Command Completion ===
  
 
# In editor, type e.g. MPI_ and hit ctrl-space. Possible completions should appear.  
 
# In editor, type e.g. MPI_ and hit ctrl-space. Possible completions should appear.  
Line 205: Line 508:
 
# Hitting ENTER or double-clicking on any choice should insert the completed API into the file.
 
# Hitting ENTER or double-clicking on any choice should insert the completed API into the file.
  
 +
=== Hover Help ===
  
=== Test PLDT_3: Hover Help ===
+
Hover on any MPI API, see yellow popup info on API and arguments, as well as some text that describes the API.
  
#  Hover on any MPI API, see yellow popup info on API and arguments.
+
=== F1 Help ===
  
=== Test PLDT_4: F1 Help ===
+
# Click on any MPI API and hit F1 (Ctrl-F1 in Linux) to see Help view appear
 +
# Click on API in that view and see detailed info on that API.
  
# Click on any MPI API and hit F1 to see Help view appear
 
# C\lick on API in that view and see detailed info on that API.
 
  
== Fortran Development Tools ==
+
=== OpenMP Artifacts ===
 +
(See PLDT help for OpenMP for more information.)
 +
Adapted from http://www.llnl.gov/computing/tutorials/openMP/samples/C/omp_hello.c
  
=== SETUP ===
+
<pre>
 +
#include <omp.h>
 +
#include <stdio.h>
 +
#include <stdlib.h>
  
# In a new workspace, check out the following CDT components from dev.eclipse.org:/cvsroot/tools
+
int main (int argc, char *argv[]) {
#* org.eclipse.cdt-build/
+
#* org.eclipse.cdt.make.core
+
#* org.eclipse.cdt.make.ui
+
#* org.eclipse.cdt.managedbuilder.core
+
#* org.eclipse.cdt.managedbuilder.gnu.ui
+
#* org.eclipse.cdt.managedbuilder.ui
+
#* org.eclipse.cdt-core/
+
#* org.eclipse.cdt.core
+
#* org.eclipse.cdt.core.ARCH
+
#* org.eclipse.cdt.ui
+
#* org.ecipse.cdt-debug/
+
#* org.eclipse.cdt.debug.core
+
#* org.eclipse.cdt.debug.mi.core
+
#* org.eclipse.cdt.debug.mi.ui
+
#* org.eclipse.cdt.debug.ui
+
#* org.eclipse.cdt-launch/
+
#* org.eclipse.cdt.launch
+
#* org.eclipse.cdt-doc/
+
#* org.eclipse.cdt.doc.isv
+
#* org.eclipse.cdt.doc.user
+
# Next check out the FDT components from dev.eclipse.org:/cvsroot/technology
+
#* org.eclipse.ptp/lang/
+
#* org.eclipse.fdt.core
+
#* org.eclipse.fdt.managedbuilder.core
+
#* org.eclipse.fdt.managedbuilder.ui
+
#* org.eclipse.fdt.managedbuilder.tests
+
#* org.eclipse.fdt.ui
+
#* cdt_changes
+
# From a shell, cd to Eclipse workspace and execute the shell script cdt_changes/install
+
# Select org.eclipse.cdt.* projects one by one and refresh them.
+
# Verify that workspace builds correctly without any errors.
+
  
=== Test: FT_1: User Interface ===
+
int nthreads, tid;
  
# Create Eclipse Application launch configuration (FDT) and run it.
+
/* Fork a team of threads giving them their own copies of variables */
# Examine icons (set left of debug icon) and make sure that project, folder, and file wizard icons are "M" based not "C" based. Also check that there is a "Make" perspective and a "Make Projects" window.
+
#pragma omp parallel private(nthreads, tid)
# Examine menus corresponding to these icons and make sure they don't have C/C++ in labels.
+
  {
# Right click in "Make Project" window and examine icons and menu labels as in #6 and #7 above.
+
  
=== Test: FT_2: Managed Make 1 ===
+
  /* Obtain thread number */
 +
  tid = omp_get_thread_num();
 +
  printf("Hello World from thread = %d\n", tid);
  
# Use menu in project icon to create a new "Managed Make" project, name it HelloWorld (check icon).
+
  /* Only master thread does this */
# Select Gnu Fortran for project type and click Finish.
+
  if (tid == 0)  
# Use menu in file icon to create a new source file. Name it hello.f90; make sure the file extension is acceptable and check icon and click Finish.
+
    {
# Check that new file is automatically opened.
+
    nthreads = omp_get_num_threads();
# Copy contents of org.eclipse.fdt.managedbuilder.tests/src/HelloWorld/hello.f90 into the new file and save the file.
+
    printf("Number of threads = %d\n", nthreads);
# Check console to see that "Build complete for project HelloWorld"
+
    }
# Create new "Local Application"
+
#* Run target. Ensure that label in the configurations window is "Local Application" and icon has an "M". Name the configuration HelloWorld and set the Project and #* Application fields. Set a debugger and click Run.
+
# Check that "Hello from Fortran Main." is printed in the console window. Select the HelloWorld target from the Run menu and check console output again.
+
  
=== Test FT_3: Managed Make 2 ===
+
  }  /* All threads join master thread and disband */
 +
  return 0;
 +
}
 +
  
# Redo FT_2 for the directory, org.eclipse.fdt.managedbuilder.tests/src/Components. That is, create a Managed Make project named Components and build an application the files.
+
</pre>
# Open Debug/subdir.mk and ensure the dependencies are as follows:
+
#* Driver.o: MonteCarloIntegrator.o
+
#* MonteCarloIntegrator.o: LinearFunction.o
+
#* MonteCarloIntegrator.o: RandNumGenerator.o
+
# Make sure the project will build and run.
+
  
=== Test FT_4: Managed Make 3 ===
+
If you run this example, via launch configuration with environment variable:<br>
 +
OMP_NUM_THREADS=4
  
# Redo FT_2 for the directory, org.eclipse.fdt.managedbuilder.tests/src/Mixed. That is, create a Managed Make project named Mixed and build an application the files.
+
You should see output something like:
# Make sure the mixed language project will build and run
+
<pre>
 +
Hello World from thread = 0
 +
Number of threads = 4
 +
Hello World from thread = 1
 +
Hello World from thread = 2
 +
Hello World from thread = 3
 +
</pre>
 +
# Proceed like MPI artifacts above for finding artifacts, Help, Content Assist.
 +
# Problems view should be populated if problems found: e.g. barrier inside barrier.
 +
# Concurrency Analysis: Highlight an expression, rightClick context menu, choose "Show concurrency" and other expressions should appear in yellow

Latest revision as of 08:41, 19 September 2007

Test Plan for PTP 1.x Release

This plan describes the tests that will be undertaken to verify the 1.x series of PTP releases.

Test Setup

The following steps should be carried out prior to testing PTP. Refer to the release notes for the appropriate PTP version if necessary.

  1. Install OpenMPI 1.2. Make sure it is configured with the '--with-devel-headers' option.
  2. If you are testing on a single node, edit <openmpi_install>/etc/openmpi-default-hostfile and add lines containing 'node0', 'node1', etc. Edit /etc/hosts and add a localhost entry for each name you added to the openmpi-default-hostfile. So, for 'node0', add '127.0.0.1 node0' to /etc/hosts. This will simulate a multi-node machine.
  3. Verify OpenMPI is working by compiling and launching a simple program from the command line.
  4. Start with a fresh Eclipse and CDT install (including workspace), as per the release notes.
  5. Install PTP using instructions from the release notes.
  6. Launch Eclipse on the test machine.
  7. Switch to the C/C++ Perspective.
  8. Create a new Managed Make C Project....
  9. [If PLDT is installed ]In the project setup wizard, accept default settings up until the last page: select "Add MPI settings to the project." If you have not put MPI include path into Preferences, cancel out of the new project setup and do it now; then restart new project wizard.
  10. [If PLDT is not installed.] Accept the default settings on the new project wizard. Then right-click on the new project and choose 'Properties'. Select the 'C/C++ Build' item. Change the 'GCC C Compiler' and '... C Linker' settings to 'mpicc'.
  11. Create a new C source file in the project.
  12. Add the following code:
    #include <stdio.h>
    #include <mpi.h>
    int main(int argc, char *argv[])
    {
        int i, rank;
     
        MPI_Init(&argc, &argv);
        MPI_Comm_rank(MPI_COMM_WORLD, &rank);
     
        for (i = 0; i < 10; i++) {
           printf("hello from %d loop %d\n", rank, i);
           sleep(1);
        }
     
        MPI_Finalize();
        return 0;
    }
    
  13. Save the file. It should automatically build.
  14. Verify there are no errors in the build.

Test Matrix

Testers

Committers: Clement Chu, Greg Watson, Craig Rasmussen, Beth Tibbitts

Version Grid

The following grid indicated the tools' versions used to carry out testing.

  Clement Greg Craig Beth
Eclipse 3.2.1 3.2.1,3.2.2 3.2.1 3.2.1
CDT 3.1.1 3.1.1,3.1.2 3.1.1 3.1.1+ (1/09 build); 3.1.2
Open mpi 1.2b2,1.2b4 1.2b1,1.2b2,1.2b4 1.2b1r12562 1.0.2*
GDB 6.1 (Mac),6.5 6.3,6.4,6.5,6.6 6.3 (Mac),6.4 6.5
Java JDK 1.5,1.6 JDK 1.5,1.6 JDK 1.5 JDK 1.5 (IBM J9)
  • I could upgrade to a more recent OpenMPI but since I might be the only one at 1.0.2 it's good to have it tested. I will probably try CDT 3.1.2 too since that has our AST traversal changes in it.

Platform Grid

The following machines/architectures should be considered when testing.

  Clement Greg Craig Beth
Linux x86 Tick.gif Tick.gif Tick.gif Tick.gif
Linux x86_64 Tick.gif
Linux x86 w/ bproc
Linux x86_64 w/ bproc
Mac OS X ppc Tick.gif Tick.gif
Mac OS X x86 Tick.gif Tick.gif
Windows x86 (PLDT only) Tick.gif

Build Grid

The following builds have been tested.

  Clement Greg Craig Beth
pldt-1.1.0-I200701082248
ptp-1.1.0-I200701091500 Tick.gif Tick.gif
ptp-1.1.0-I200701101100 Tick.gif Tick.gif
ptp-1.1.0-I200701121100 Tick.gif
ptp-1.1.0-I200701142000 Tick.gif Tick.gif Tick.gif
ptp-1.1.0-I200701161500
ptp-1.1.0-I200701191300 Tick.gif Tick.gif
ptp-1.1.0-I200702222000 Tick.gif Tick.gif

Test Grid

This shows the test results based on the latest build tested.

Feature Clement Greg Craig Beth
Core/Runtime Tests
Runtime Views Tick.gif Tick.gif Tick.gif Tick.gif
Node Sets Tick.gif Tick.gif
Parallel Job Launch Tick.gif Tick.gif Tick.gif Tick.gif
Parallel Job Output Tick.gif Tick.gif Tick.gif Tick.gif
Job View Tick.gif Tick.gif Tick.gif Tick.gif
Debug Tests
Debug Launch & Terminate Tick.gif Tick.gif Tick.gif Tick.gif
Parallel Debug View Tick.gif Tick.gif Tick.gif Tick.gif
Register/Unregister Process Tick.gif Tick.gif Tick.gif bug
Breakpoint Creation Tick.gif Tick.gif Tick.gif Tick.gif
Breakpoint Deletion Tick.gif Tick.gif Tick.gif Tick.gif
Breakpoint Hit Tick.gif Tick.gif Tick.gif Tick.gif
Breakpoint View Tick.gif Tick.gif Tick.gif Tick.gif
Global Breakpoint Tick.gif Image hasn't changed to 'G' Tick.gif Tick.gif Tick.gif
Annotation Tick.gif Tick.gif
Step Command Tick.gif Tick.gif Tick.gif Tick.gif
Variable View Tick.gif Tick.gif Tick.gif  ? bug?, notes in my office
PLDT Tests
MPI Artifacts Tick.gif
Command Completion Tick.gif
Hover Help Tick.gif
F1 Help Tick.gif
OpenMP Artifacts Tick.gif*
  • * some problems finding artifacts in some OpenMP code I hadn't tested for a while, will investigate

Core/Runtime Tests

Runtime Views

  1. Switch to the PTP Runtime perspective.
    • Verify that the runtime system starts.
  2. If the Machines View and Jobs View are not open, select them from Window->Show View->Other...
    • Verify that the Jobs View shows no jobs since it is a clean start.
    • Verify that the Machines View displays the correct number of nodes and node state for the current machine.
  3. Double-click on a node icon in the Machines view.
    • Verify that the node information is displayed correctly in the Node Info panel.
  4. Double-click on a different node.
    • Verify the node information is updated.
  5. If on a bproc machine, use another terminal window change the state of one of the nodes (reboot it, change ownership, etc)
    • Verify that the node's status changes in the Machine View (both the icon to match the legend as well as the detailed text information to display the new change(s)).

Node Sets

  1. Select some nodes in the Node View.
  2. Click on the 'Create Set' button and enter a name for the set.
    • Verify that the user can switch between (focus on) the full set of nodes for the given machine and the newly created set.
  3. Switch to the 'Root' set. Select some more nodes and select 'Add to set:' from the 'Create Set' menu.
    • Verify the nodes are added to the set.
  4. Switch to the 'Root' set. Select a different set of nodes and create a new set.
    • Verify there are now three sets.
  5. Select a node from this set and click the 'Remove Elements' button.
    • Verify the element is removed.
  6. Click on the 'Delete Set' button
    • Verify the set is deleted.

Parallel Job Launch

  1. Open the 'Run Configuration' dialog.
  2. Select 'Parallel Application' and click the 'New' button.
  3. In the 'Main' tab, select the 'Parallel Project' and 'Application program' to run.
  4. In the 'Parallel' tab, specify the number of processes to run (say 4).
  5. In the 'Debugger' tab, select the 'SDM' debugger.
  6. Click on 'Run'.
    • Verify that the 4 (or whatever number you chose) nodes change state in the Machines View to specify they contain a running job and that the job starts on the correct machine.
  7. Wait for the job to terminate.
    • Verify that the state information is correctly displayed in the Machine View (for the appropriate node).

Parallel Job Output

  1. Re-run the same program.
  2. Double-click on a node where one of the processes has been assigned.
    • Verify that the 'Process Info' panel displays the processes on that node, including which job the process belongs to.
  3. Double-click on one of the processes in the 'Process Info' panel to bring up the Process View.
    • Verify that the MPI rank, node number, job number, and status are correct.
    • Verify there is process output in the output section of the Process View.

Jobs View

  1. Bring the Jobs View to the foreground.
    • Verify the job previously run, as well as the processes contained within it, are listed and are shown as terminated.
  2. Re-run the same job.
    • Verify the Job View displays the job as running and the processes as well.
  3. Double-click on a process in the Job View, opening the Process View.
    • Verify the running state.
  4. Terminate the job by using the terminate icon (re-run again if necessary).
    • Verify the Job View updates to show the terminated state.
    • Verify the Process View updates to show the terminated state, including an exit-code.

Debug Tests

Debug Launch and Terminate

  1. Switch to the Parallel Debug Perspective.
  2. Ensure that the default debug launch configuration will launch a 4 process job.
  3. Click the debug button to launch the debugger.
    • Verify that the Parallel Debug View displays the status of processes as suspended (all should be yellow).
    • Verify that the job icon in the Parallel Debug View is a debug icon.
    • Verify that the new job is selected and all processes of this job will be displayed.
    • Verify that process 0 is registered (has a black box around it) and that the stack frame is visible in the Debug View.
    • Verify that the program stops automatically at the first line of code in main().
    • Verify that there is a register process current line marker and an unregistered process current line marker at line 7 of the code.
  4. Select the Breakpoint View.
    • Verify that there are no breakpoints visible.
  5. Click on the 'Terminate' button on the Parallel Debug View toolbar.
    • Verify that all processes have the exited status icon.
    • Verify that the job icon is shown as terminated.

Parallel Debug View

  1. Switch to the Parallel Debug Perspective.
  2. Ensure that the default debug launch configuration will launch a 4 process job.
  3. Click the debug button to launch the debugger.
  4. Drag across a rectangular region to select some processes in the Parallel Debug View.
    • Verify that clicking with the left mouse button while holding down the Shift key extends the selection. See Bugzilla #169468
    • Verify that clicking with the left mouse button while holding down the Ctrl (Cmd) key adds new processes to the selection.
    • Verify that Ctrl-A (Cmd-A) selects all the processes.
  5. If more than one page of processes is displayed:
    • Verify the Page-up key moves up one page.
    • Verify the Page-down key moves down one page.
    • Verify auto scrolling while dragging further up or down the views.
  6. Make sure that only processes 0 and 2 are selected.
  7. Click the 'Create Set' button. Enter 'even' for the set name.
    • Verify that the view changes from the 'Root' set to the newly created set.
  8. Click the 'Change Set' button.
    • Verify that the view changes to the 'Root' set.
  9. Select processes 1 and 3.
  10. Click the 'Create Set' button.
  11. Enter 'even' for the set name.
    • Verify that the OK button is disabled and a message that the name is already used is displayed.
  12. Enter 'odd' for the set name and select OK.
  13. Click on the background of the left hand portion of the Parallel Debug View (not on any jobs). You may need to remove terminated jobs to do this.
    • Verify that the processes are removed from the right hand portion of the View, and the registered process removed from the Debug View.
    • Verify that the current line markers are removed from the editor.
  14. Click on debug job icon.
    • Verify that the processes are restored to the right hand portion of the View, and the registered process appears in the Debug View.
    • Verify that the current line markers are restored to the editor.
  15. Click on the 'Terminate' button on the Parallel Debug View toolbar.

Register / Unregister Process

  1. Switch to the Parallel Debug Perspective.
  2. Ensure that the default debug launch configuration will launch a 4 process job.
  3. Click the debug button to launch the debugger.
  4. Double-click on process 3 in Parallel Debug View.
    • Verify that the process is displayed with a black square.
    • Verify that the process stack frame appears in the Debug View.
  5. Select all processes in the Parallel Debug View and then click the 'Register Selected Elements' button.
    • Verify that all processes are registered in the debug view.
    • Note: If more than 10 processes have been selected to register, a dialog will popup and ask for confirmation.
  6. Double-click on process 0.
    • Verify that the processes is unregistered from the debug view.
    • Verify that the black square is removed.
  7. Select all processes in the Parallel Debug View and then click the 'Unregister Selected Elements' button.
    • Verify that all processes are unregistered in the debug view.
  8. Click on the 'Terminate' button on the Parallel Debug View toolbar.

Breakpoint Creation

  1. Switch to the Parallel Debug Perspective.
  2. Ensure that the default debug launch configuration will launch a 4 process job.
  3. Click the debug button to launch the debugger.
  4. Create the 'even' and 'odd' sets used in the 'Parallel Debug View' test.
  5. Make sure the 'Root' set is selected.
  6. Double-click on ruler at line 15 in the C/C++ source editor.
    • Verify a green breakpoint icon appears on the ruler at line 15.
  7. Change to the 'even' set.
    • Verify that the color of the breakpoint at line 15 changes to blue.
  8. Double-click on ruler at line 11 in the C/C++ source editor.
    • Verify a green breakpoint icon appears on the ruler at line 11.
  9. Change to the 'odd' set.
    • Verify that the breakpoint on line 11 changes color to yellow and the breakpoint on line 15 remains blue.
  10. Hover over the breakpoint on line 11.
    • Verfiy that the tooltips appears displaying details of breakpoint (job name, set name, file name and line number).
  11. Select the 'Root' set.
  12. Click on the 'Terminate' button on the Parallel Debug View toolbar.

Breakpoint Deletion

  1. Switch to the Parallel Debug Perspective.
  2. Ensure that the default debug launch configuration will launch a 4 process job.
  3. Click the debug button to launch the debugger.
  4. Double-click on ruler at line 15 in the C/C++ source editor.
    • Verify a green breakpoint icon appears on the ruler at line 15.
  5. Double-click on ruler at line 15 in the C/C++ source editor.
    • Verify that the breakpoint icon is removed.
  6. Click on the 'Terminate' button on the Parallel Debug View toolbar.

Breakpoint Hit

  1. Switch to the Parallel Debug Perspective.
  2. Ensure that the default debug launch configuration will launch a 4 process job.
  3. Click the debug button to launch the debugger.
  4. Create the 'even' and 'odd' sets used in the 'Parallel Debug View' test and set the breakpoints described in the 'Breakpoint Creation' test.
  5. Select the 'Root' set.
  6. Click on the 'Resume' button on the Parallel Debug View toolbar.
    • Verify that processes 0 and 2 are suspended on line 11 and processes 1 and 3 are suspended on line 15.
    • Note that it will take 10 seconds for processes 1 and 3 to suspend.
  7. Double-click on the breakpoint at line 11 to delete it.
  8. Select the 'even' set.
  9. Click on the 'Resume' button on the Parallel Debug View toolbar.
    • Verify that all processes are now suspended on line 15.
  10. Select the 'Root' set.
  11. Click on the 'Resume' button on the Parallel Debug View toolbar.
    • Verify that all processes are now exited and the job shows a terminated icon.

Breakpoint View

  1. Switch to the Parallel Debug Perspective.
  2. Ensure that the default debug launch configuration will launch a 4 process job.
  3. Click the debug button to launch the debugger.
  4. Create the 'even' and 'odd' sets used in the 'Parallel Debug View' test and set the breakpoints described in the 'Breakpoint Creation' test.
  5. Select the Breakpoints View (if not already selected).
    • Verify that the breakpoints appear in the view with the same colors as those on the ruler.
  6. From the Breakpoints View menu, choose 'Group By->Parallel Breakpoint Set'.
    • Verify that the breakpoints are ordered by set.
  7. Uncheck (disable) the breakpoint on line 11 in Breakpoint View, the breakpoint will be disabled.
    • Verify that the breakpoint marker is dimmed.
  8. Select the 'Root' set.
  9. Click on the 'Resume' button on the Parallel Debug View toolbar.
    • Verify that all processes are now suspended on line 15.
  10. Right click on the breakpoint at line 11 in Breakpoint View and select Goto Set action
    • Verify that the 'even' set is selected.
  11. Select the 'Root' set.
  12. Click on the 'Terminate' button on the Parallel Debug View toolbar.

Global Breakpoint

See Bugzilla #168773

  1. Switch to the Parallel Debug Perspective.
  2. Ensure that the default debug launch configuration will launch a 4 process job.
  3. Click the debug button to launch the debugger.
  4. Unselect the current job by clicking on the background of the left panel in the Parallel Debug View.
  5. Double-click on ruler at line 11 in the C/C++ source editor.
    • Verify that a global breakpoint is created (indicated with a 'G' symbol).
  6. Click on the debug job icon.
  7. Click on the 'Terminate' button on the Parallel Debug View toolbar.
  8. Click the debug button to launch the debugger.
    • Verify that the global breakpoint remains set.
  9. Click on the 'Resume' button.
    • Verify that all processes are suspended at the breakpoint.
  10. Click on the 'Terminate' button on the Parallel Debug View toolbar.
  11. Unselect the current job by clicking on the background of the left panel in the Parallel Debug View.
  12. Double-click on ruler at line 11 in the C/C++ source editor.
    • Verify that a global breakpoint is deleted.

Annotation

  1. Switch to the Parallel Debug Perspective.
  2. Ensure that the default debug launch configuration will launch a 4 process job.
  3. By default process 0 is registered and all processes are suspended on line 7 (main method).
  4. Two annotations should be marked on ruler of source editor at the line 7.
  5. Move mouse hover on these annotations.
    • Verify that tooltip display "Suspended on registered process: 0" and "Suspended on unregistered processes: 1-3"
  6. Register process 2 by double clicking on the process icon.
  7. Move mouse hover annotation again on the ruler of source editor.
    • Verify that tooltip display "Suspended on registered processes: 0,2" and "Suspended on unregistered processes: 1,3"
  8. Unselect job by clicking on job viewer.
    • Verify that no job selected, no icon displayed on process viewer, no debug item on Debug view and no Annotation on ruler.
  9. Select job by clicking on job viewer.
    • Verify that job is selected, 4 process icons displayed on process viewer, two registered debug items on Debug view and two annotations at line 7 on ruler and display same tooltip as step 4.
  10. Click 'Step over' button. All processes should be suspended at line 8.
    • Verify that two annotations at line 8 on ruler and display same tooltip as step 4.
  11. Create a set called 'setA' for process 2 and process 3.
  12. Process viewer should contain two process icons (2 and 3).
    • Verify that two annotations locate at line 8 on ruler and display tooltip "Suspended on unregistered processes: 0-1,3" and "Suspended on registered process: 2"
  13. Click 'Step over' button. Process 2 and 3 will be stopped at line 10.
  14. Three annotations will be shown on ruler.
    • Verify that an annotation locates at line 8 and display tooltip "Suspended on unregistered processes: 0-1"
    • Verify that two annotations locate at line 10 and display tooltip "Suspended on unregistered process: 3" and "Suspended on registered process: 2"
  15. Switch to Set 'Root'. 4 process icons will be shown on Process viewer.
  16. Four annotations will be shown on ruler.
    • Verify that two annotations locates at line 8 and display tooltip "Suspended on unregistered process: 1" and "Suspended on registered process: 0"
    • Verify that two annotations locate at line 10 and display tooltip "Suspended on unregistered process: 3" and "Suspended on registered process: 2"
  17. Click on the 'Terminate' button on the Parallel Debug View toolbar.

Step Command

  1. Switch to the Parallel Debug Perspective.
  2. Ensure that the default debug launch configuration will launch a 4 process job.
  3. Click the debug button to launch the debugger.
  4. Create the 'even' and 'odd' sets used in the 'Parallel Debug View' test and set the breakpoints described in the 'Breakpoint Creation' test.
  5. Select the 'Root' set.
  6. Create a breakpoint at line 10.
  7. Click the 'Resume' button. All processes should be suspended on line 10.
  8. Select the 'even' set.
  9. Click the 'Step Over' button several times on the Parallel Debug View toolbar.
    • Verify that processes 0 and 2 step to line 11 and 12, while processes 1 and 3 remain suspended.
  10. Select the 'Root' set.
  11. Click on the 'Terminate' button on the Parallel Debug View toolbar.

Variable View

See Bugzilla #169475

  1. Switch to the Parallel Debug Perspective.
  2. Ensure that the default debug launch configuration will launch a 4 process job.
  3. Click the debug button to launch the debugger.
  4. Select the Variable View.
    • Verify that all the local variables are displayed in the view.
  5. Click on 'Step Over' on the Parallel Debug View toolbar three times in quick succession.
    • Verify that the variables are displayed correctly in the view.
  6. Click on the 'Terminate' button on the Parallel Debug View toolbar.

PLDT Tests

(See help files in the plug-in for more details on these)

MPI Artifacts

  1. Launch Eclipse with PLDT (incl. CDT)
  2. Help -> Help Contents, PTP Parallel Language Development Tools
  3. Follow instructions in "Setup for PTP MPI tools". Basically, create a CDT project, a source file with MPI apis (a sample is included in help), and use Preferences to locate MPI header files.
  4. Follow instructions in "Running PTP MPI tools" to set up.
  5. Select a single source file in Navigator, then select MPI action from toolbar to run analysis.
  6. MPI artifact view should be populated with markers, listing API name, source file name and line number, and artifact type (function or constant)
  7. Double-click on any artifact, this should take you to the source file and line locating the artifact.
  8. In source file, icon should be in marker bar, and squiggles should be under the artifact (e.g. function name)
  9. Click on column headings in artifact view to sort by values in that column.
  10. Also test selection of a container (e.g. a project) and see that all files within it are analyzed.
  11. Also test multiple selection (e.g. of several source files in a project) and they should all get analyzed.
  12. Also test hitting the "Cancel" button on the Progress Monitor during analysis. It should stop at least between the analysis of the files (cancelation is checked between the handling of each individual source file.)

Command Completion

  1. In editor, type e.g. MPI_ and hit ctrl-space. Possible completions should appear.
  2. Continue to type a few characters; possible completions should diminish to match string.
  3. Hitting ENTER or double-clicking on any choice should insert the completed API into the file.

Hover Help

  1. Hover on any MPI API, see yellow popup info on API and arguments, as well as some text that describes the API.

F1 Help

  1. Click on any MPI API and hit F1 (Ctrl-F1 in Linux) to see Help view appear
  2. Click on API in that view and see detailed info on that API.


OpenMP Artifacts

(See PLDT help for OpenMP for more information.) Adapted from http://www.llnl.gov/computing/tutorials/openMP/samples/C/omp_hello.c

#include <omp.h>
#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[]) {

int nthreads, tid;

/* Fork a team of threads giving them their own copies of variables */
#pragma omp parallel private(nthreads, tid)
  {

  /* Obtain thread number */
  tid = omp_get_thread_num();
  printf("Hello World from thread = %d\n", tid);

  /* Only master thread does this */
  if (tid == 0) 
    {
    nthreads = omp_get_num_threads();
    printf("Number of threads = %d\n", nthreads);
    }

  }  /* All threads join master thread and disband */
  return 0;
}
	

If you run this example, via launch configuration with environment variable:
OMP_NUM_THREADS=4

You should see output something like:

Hello World from thread = 0
Number of threads = 4
Hello World from thread = 1 
Hello World from thread = 2
Hello World from thread = 3 
  1. Proceed like MPI artifacts above for finding artifacts, Help, Content Assist.
  2. Problems view should be populated if problems found: e.g. barrier inside barrier.
  3. Concurrency Analysis: Highlight an expression, rightClick context menu, choose "Show concurrency" and other expressions should appear in yellow

Back to the top