Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Linux Tools Project/EPP Testing"

(GProf/GCov)
(Autotools)
 
(14 intermediate revisions by 3 users not shown)
Line 12: Line 12:
 
* verify that the Java method is specified in the ChangeLog
 
* verify that the Java method is specified in the ChangeLog
 
* for ChangeLog + SVN testing, use http://dev.eclipse.org/svnroot/technology/org.eclipse.linuxtools/autotools/trunk/org.eclipse.linuxtools.cdt.autotools
 
* for ChangeLog + SVN testing, use http://dev.eclipse.org/svnroot/technology/org.eclipse.linuxtools/autotools/trunk/org.eclipse.linuxtools.cdt.autotools
* for ChangeLog + CVS testing, use :pserver:anonymous@dev.eclipse.org:/cvsroot/org.eclipse module:  www/linuxtools
+
* for ChangeLog + CVS testing, use :pserver:anonymous@sourceware.org:/cvs/eclipse   module:  autotools->sources
  
 
Note that Ctrl-Alt-p conflicts with the Subversive "Create patch" keybinding but after disabling it, you should be able to prepare a ChangeLog entry.
 
Note that Ctrl-Alt-p conflicts with the Subversive "Create patch" keybinding but after disabling it, you should be able to prepare a ChangeLog entry.
Line 22: Line 22:
  
 
== Valgrind ==
 
== Valgrind ==
* generate massif graph; click around graph and details table and verify code opens
+
* create a hello world C project
* run memcheck and verify source code integration works
+
* add the line: <nowiki>void *p = malloc(5000);</nowiki>
* FIXME need something here for helgrind
+
* build and right click on binary and choose Profile using Valgrind
* FIXME need something here for cachegrind
+
* this should use memcheck and bring up the Valgrind window with error noted for unfreed malloc
 +
* verify error marker is in hello.c and that clicking on error in Valgrind window brings up line in editor
 +
* click on X icon in Valgrind window to verify error marker is removed
 +
* right click on binary and choose Profiling Configurations
 +
* under Valgrind, choose the current configuration for a.out and then in the Valgrind option tab select massif
 +
* generate massif graph; click around graph and details table and verify code opens for snapshots
 +
* test helgrind's xml output parsing and expand/collapse of results
 +
* run cachegrind and test all plug-ins options and the expected output
  
 
== OProfile ==
 
== OProfile ==
 
* ensure error messages are present for requiring the running of the installation script
 
* ensure error messages are present for requiring the running of the installation script
* after <tt># opcontrol --deinit</tt> and <tt># echo 0 > /proc/sys/kernel/nmi_watchdog</tt>, verify OProfile shows values for a binary that generates samples (ex. factorial)
+
* perform <tt># opcontrol --deinit</tt> and <tt># echo 0 > /proc/sys/kernel/nmi_watchdog</tt>
* double-click in output to verify source integration functions properly
+
* create project with factorial.c program below
 +
* for factorial project, go to Project Properties->Autotools->Configure Settings->Advanced and click on Debug (-g)
 +
* profile binary using OProfile and verify OProfile shows values
 +
* double-click in OProfile output to verify source integration functions properly
 +
 
 +
<code>
 +
#include <stdio.h>
 +
 
 +
long long factorial(int x) {
 +
  long long result = x;
 +
  while (x > 1)
 +
    result = result * (x-- - 1);
 +
  return result;
 +
}
 +
 
 +
main()
 +
{
 +
  long long x;
 +
  int i;
 +
  for (i = 0; i < 1000000; ++i)
 +
    x = factorial(20);
 +
  printf("result is %Ld\n", x);
 +
}
 +
</code>
 +
 
 +
== Perf ==
 +
* use the same project as the OProfile test
 +
* profile the binary using Perf
 +
* verify the Perf dialog comes up and there is data for the main executable as well as the kernel
  
 
== Autotools ==
 
== Autotools ==
* create a hello world autotools project from C Project Wizard
+
* create a hello world gnu autotools project named "hello" from new C Project Wizard
 
* ensure project builds and can run executable
 
* ensure project builds and can run executable
 
* verify there is a Configure console for the project as well as a build console
 
* verify there is a Configure console for the project as well as a build console
 
* open project's configure.ac file and verify macros colourized and outline view exists
 
* open project's configure.ac file and verify macros colourized and outline view exists
 
* hover over AC_INIT and make sure hover exists
 
* hover over AC_INIT and make sure hover exists
* open project properties and ensure there is an Autotools item in the tree
+
* open project properties and ensure there is an Autotools entry in the tree
* open it and make sure that there are General and Configure Settings tabs
+
* open it and make sure that there are General and Configure Settings tree entries
* click on Configure Settings tab to make sure view comes up ok
+
* click on Configure Settings tree entry to make sure view comes up ok on right
* do the same for General tab and click on Tools and Editors sub-tabs
+
* do the same for General tree entry and click on Tools and Editors tabs
* open C/C++ -> Build Settings -> Discovery and verify that there are language settings chosen and that the view has parse build output checked
+
 
* close property view
 
* close property view
 
* open up sample/hello.c in the hello world project
 
* open up sample/hello.c in the hello world project
Line 50: Line 84:
 
* from Project menu select Reconfigure project and make sure project reconfigures
 
* from Project menu select Reconfigure project and make sure project reconfigures
 
* verify there is a Configure console as well as the configuration appears in the CDT Global Build Console
 
* verify there is a Configure console as well as the configuration appears in the CDT Global Build Console
* from Project menu select Autotools
+
* from Project menu select Invoke Autotools
 
* verify there is autoconf, automake, aclocal, autoheader, libtoolize, autoreconf
 
* verify there is autoconf, automake, aclocal, autoheader, libtoolize, autoreconf
 
* select autoheader
 
* select autoheader
Line 57: Line 91:
 
* create a C++ hello world project from the C++ project wizard
 
* create a C++ hello world project from the C++ project wizard
 
* verify it builds and runs the executable
 
* verify it builds and runs the executable
* import a CVS project and use C project wizard
+
* import a CVS autotools project (sourceware.org:/cvs/eclipse) specify anonymous and pserver and choose to use existing module
* make sure project builds and runs
+
* open autotools in viewer and select sources, then hit next button
 +
* choose to use new project wizard and hit Finish
 +
* select C/C++ -> C project
 +
* from C project wizard dialog select GNU Autotools -> empty project and hit Finish
 +
* there will be a timing issue with the build and CVS checkout
 +
* select Project->Reconfigure project and reconfigure project
 +
* build project after that and make sure the executable runs (hello world type project)
  
 
== Libhover ==
 
== Libhover ==
 
* go to previous Autotools hello world project
 
* go to previous Autotools hello world project
* open src/hello.c in editor
+
* open sample/hello.c in editor
 
* hover over puts function and verify that description is returned
 
* hover over puts function and verify that description is returned
 
* create new line in C file
 
* create new line in C file
Line 71: Line 111:
 
* go back to hello.c file in editor and hover over puts again
 
* go back to hello.c file in editor and hover over puts again
 
* verify that hover only shows prototype of function and no description
 
* verify that hover only shows prototype of function and no description
 +
* open Window->Preferences->Library Hover
 +
* verify that there is a Devhelp sub-category
 +
* make sure some devhelp documentation is installed (e.g. pango-devel)
 +
* in the Devhelp page attempt to regenerate the devhelp hover
 +
* close preferences
 +
* go to hello.c again and click CTRL+space
 +
* verify that functions from devhelp documentation are offered
 +
* restart Eclipse and verify that items from devhelp documentation show up in Help Contents
  
 
== GProf/GCov ==
 
== GProf/GCov ==
Line 77: Line 125:
  
 
== SystemTap ==
 
== SystemTap ==
* click around SystemTap views and perspective a bit
+
 
 +
* Run eclipse and create a new General Project.
 +
* Click on File -> new -> Systemtap -> Systemtap Script.
 +
** Follow the wizard to create a new script under the General Project you've just created.
 +
* By now the function view and probe views should be populated. Ensure that that is the case.
 +
* Write a small script. Here is a sample script:
 +
  global read, write, start
 +
 
 +
  probe begin {
 +
      start = gettimeofday_s()
 +
  }
 +
 
 +
  probe syscall.write { 
 +
      write += count
 +
  }
 +
 
 +
  probe syscall.read {
 +
      read += count
 +
  }
 +
 
 +
  probe timer.jiffies(100){
 +
    printf("");
 +
  }
 +
 
 +
  probe timer.ms(1000) {
 +
      printf("%d\t%d\t%d\n", (gettimeofday_s()-start), read, write)
 +
      read=0
 +
      write=0
 +
  }
 +
 
 +
* Run it through run configurations. Try out the various options there.
 +
* If you have systemtap installed the script should run otherwise you should be presented with a dialog telling you that systemtap is missing. If so, install it and try again
 +
 
 +
== Help Contents ==
 +
* click on Help->Help Contents
 +
* verify there are help documents for Autotools, Gcov, Gprof, Libhover, Valgrind, OProfile, ChangeLog
 +
* also verify there is a GNU Tools entry with tools such as gcc, ld, binutils
 +
* click on the documentation to make sure there are no obvious flaws when they open

Latest revision as of 16:32, 11 June 2014

Eclipse IDE for C/C++ Linux Developers Manual Testing

The Linux Tools team is responsible for an EPP package (look for it here). The following is a list of our manual test steps. Test projects can be found in this archive file: http://fedorapeople.org/~overholt/LinuxToolsTestProjects.zip.

ChangeLog

  • ensure ChangeLog preferences are set
  • make changes (add, remove, modify) in a Linux Tools CVS repo and press Ctrl-Alt-p
  • verify that ChangeLog entry gets written and that new and removed are automatically filled in
  • verify that Ctrl-clicking on files in ChangeLog opens them
  • pick a C file and do a Ctrl-Alt-c in a function
  • verify that the C function is specified in the ChangeLog
  • pick a java file and do Ctrl-Alt-C in a method
  • verify that the Java method is specified in the ChangeLog
  • for ChangeLog + SVN testing, use http://dev.eclipse.org/svnroot/technology/org.eclipse.linuxtools/autotools/trunk/org.eclipse.linuxtools.cdt.autotools
  • for ChangeLog + CVS testing, use :pserver:anonymous@sourceware.org:/cvs/eclipse module: autotools->sources

Note that Ctrl-Alt-p conflicts with the Subversive "Create patch" keybinding but after disabling it, you should be able to prepare a ChangeLog entry.

RPM

  • create an RPM project
  • edit the .spec a bit, using templates and completion
  • verify Ctrl-Alt-c uses ChangeLog name/email

Valgrind

  • create a hello world C project
  • add the line: void *p = malloc(5000);
  • build and right click on binary and choose Profile using Valgrind
  • this should use memcheck and bring up the Valgrind window with error noted for unfreed malloc
  • verify error marker is in hello.c and that clicking on error in Valgrind window brings up line in editor
  • click on X icon in Valgrind window to verify error marker is removed
  • right click on binary and choose Profiling Configurations
  • under Valgrind, choose the current configuration for a.out and then in the Valgrind option tab select massif
  • generate massif graph; click around graph and details table and verify code opens for snapshots
  • test helgrind's xml output parsing and expand/collapse of results
  • run cachegrind and test all plug-ins options and the expected output

OProfile

  • ensure error messages are present for requiring the running of the installation script
  • perform # opcontrol --deinit and # echo 0 > /proc/sys/kernel/nmi_watchdog
  • create project with factorial.c program below
  • for factorial project, go to Project Properties->Autotools->Configure Settings->Advanced and click on Debug (-g)
  • profile binary using OProfile and verify OProfile shows values
  • double-click in OProfile output to verify source integration functions properly

#include <stdio.h>
 
long long factorial(int x) {
  long long result = x;
  while (x > 1)
    result = result * (x-- - 1);
  return result;
}
 
main()
{
  long long x;
  int i;
  for (i = 0; i < 1000000; ++i)
    x = factorial(20);
  printf("result is %Ld\n", x);
}

Perf

  • use the same project as the OProfile test
  • profile the binary using Perf
  • verify the Perf dialog comes up and there is data for the main executable as well as the kernel

Autotools

  • create a hello world gnu autotools project named "hello" from new C Project Wizard
  • ensure project builds and can run executable
  • verify there is a Configure console for the project as well as a build console
  • open project's configure.ac file and verify macros colourized and outline view exists
  • hover over AC_INIT and make sure hover exists
  • open project properties and ensure there is an Autotools entry in the tree
  • open it and make sure that there are General and Configure Settings tree entries
  • click on Configure Settings tree entry to make sure view comes up ok on right
  • do the same for General tree entry and click on Tools and Editors tabs
  • close property view
  • open up sample/hello.c in the hello world project
  • ensure that there are no warnings or errors in editor
  • close Eclipse and restart
  • verify that there are no warnings or errors in open hello.c file
  • from Project menu select Reconfigure project and make sure project reconfigures
  • verify there is a Configure console as well as the configuration appears in the CDT Global Build Console
  • from Project menu select Invoke Autotools
  • verify there is autoconf, automake, aclocal, autoheader, libtoolize, autoreconf
  • select autoheader
  • in the autoheader menu, add --help option and hit OK
  • verify that there is an Autotools console and that it contains the help info for autoheader
  • create a C++ hello world project from the C++ project wizard
  • verify it builds and runs the executable
  • import a CVS autotools project (sourceware.org:/cvs/eclipse) specify anonymous and pserver and choose to use existing module
  • open autotools in viewer and select sources, then hit next button
  • choose to use new project wizard and hit Finish
  • select C/C++ -> C project
  • from C project wizard dialog select GNU Autotools -> empty project and hit Finish
  • there will be a timing issue with the build and CVS checkout
  • select Project->Reconfigure project and reconfigure project
  • build project after that and make sure the executable runs (hello world type project)

Libhover

  • go to previous Autotools hello world project
  • open sample/hello.c in editor
  • hover over puts function and verify that description is returned
  • create new line in C file
  • type mem and then hit CTRL+space and verify choice of C mem functions appears
  • go to Project->Properties and open C/C++ General tree element
  • click on Documentation tree element
  • in Help Books list uncheck glibc entry and click Ok button
  • go back to hello.c file in editor and hover over puts again
  • verify that hover only shows prototype of function and no description
  • open Window->Preferences->Library Hover
  • verify that there is a Devhelp sub-category
  • make sure some devhelp documentation is installed (e.g. pango-devel)
  • in the Devhelp page attempt to regenerate the devhelp hover
  • close preferences
  • go to hello.c again and click CTRL+space
  • verify that functions from devhelp documentation are offered
  • restart Eclipse and verify that items from devhelp documentation show up in Help Contents

GProf/GCov

  • open gmon.out and *.gcno/*.gcda to verify viewers come up
  • ensure linking with source code functions properly

SystemTap

  • Run eclipse and create a new General Project.
  • Click on File -> new -> Systemtap -> Systemtap Script.
    • Follow the wizard to create a new script under the General Project you've just created.
  • By now the function view and probe views should be populated. Ensure that that is the case.
  • Write a small script. Here is a sample script:
  global read, write, start
  
  probe begin {
     start = gettimeofday_s()
  }
  
  probe syscall.write {   
     write += count
  }
  
  probe syscall.read {
     read += count
  }
  
  probe timer.jiffies(100){
    printf("");
  }
  
  probe timer.ms(1000) {
     printf("%d\t%d\t%d\n", (gettimeofday_s()-start), read, write)
     read=0
     write=0
  }
  • Run it through run configurations. Try out the various options there.
  • If you have systemtap installed the script should run otherwise you should be presented with a dialog telling you that systemtap is missing. If so, install it and try again

Help Contents

  • click on Help->Help Contents
  • verify there are help documents for Autotools, Gcov, Gprof, Libhover, Valgrind, OProfile, ChangeLog
  • also verify there is a GNU Tools entry with tools such as gcc, ld, binutils
  • click on the documentation to make sure there are no obvious flaws when they open

Back to the top