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 "Virgo/Committers"

(Unit Tests)
m (jsch library)
(94 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
{{Virgo}}  
 
{{Virgo}}  
  
= Version Control  =
+
= Committers Charter =
  
Virgo uses [[Git|git]].
+
Committers are responsible for:
 +
* Maintaining and enhancing the Virgo code base
 +
* Ensuring the Hudson CI jobs pass all tests (blue ball)
 +
* Responding to queries on virgo-dev
 +
* Handling contributions
 +
* Developing contributors into committers
 +
* Complying with Eclipse IP policy
 +
* Keeping an eye on the Virgo forum
  
= Testing  =
+
= Machine Setup =
  
'''''Work in progress in this whole section on testing...'''''
+
You need Sun JDK 6, Apache Ant 1.8.2 or later, and [[Git|git]]. You'll probably want an IDE such as Eclipse and, in order for Virgo projects to build under Eclipse, the [http://wiki.eclipse.org/Virgo/Tooling Virgo IDE tooling] and AJDT (the current update site may be found on http://www.eclipse.org/ajdt/downloads/).
  
Virgo has a strong emphasis on testing. Unit tests check the behaviour of individual classes or small groups of classes. Integration tests check the behaviour of groups of Virgo bundles running together in Equinox. System verification tests (SVTs), including some simple performance tests, check the behaviour of packaging builds of the kernel and web server from a user's perspective.
+
<span style="color:#ff0000">Don't forget to install AJDT as this is needed so that Eclipse produces the same compiled classes as the Ant build!</span>
  
[http://www.junit.org/ JUnit] is used for all these types of tests. Each testcase is structured as a class with class name ending in <tt>Tests</tt>. Tests typically reside in the <tt>src/test/java</tt> folder of a project.  
+
At the time of writing, some ant targets occasionally fail because they cannot load classes from jsch-0.1.42.jar. A workaround on Mac OS X is to copy this JAR from virgo-build's /lib/ivy directory to /opt/local/share/java/apache-ant/lib.
  
If you need a thorough introduction to Test Driven Development, we recommend [http://www.growing-object-oriented-software.com/ "Growing Object-Oriented Software Guided by Tests"].  
+
On Mac OS X, increase the default number of concurrently open files by adding this to .profile:
  
== Unit Tests  ==
+
        ulimit -n 10000
  
Each unit test tests a small unit, typically a single class. Dependencies are usually stubbed or mocked out.  
+
To run certain scripts (don't run them unless you know what you're doing—and why), you'll need ruby, gems, and the 'choice' gem. On Mac OS you can get these by installing the XCode tools (from the Mac OS X disk) and [http://www.macports.org/ MacPorts], then issuing:
 +
        sudo port -v install ruby (Not required on Mountain Lion)
 +
        sudo port -v install rb-rubygems (Not required on Mountain Lion)
 +
        sudo gem install --remote choice
  
Stubs are hand-written, dummy implementations of interfaces just sufficient to simulate the behaviour of a full implementation of the interface and in some cases to check that the interface has been used correctly. Stubs for several standard OSGi interfaces are provided in the [http://git.eclipse.org/c/virgo/org.eclipse.virgo.osgi-test-stubs.git/tree/ OSGi Test Stubs] git repository. Other projects may supply stubs for commonly used interfaces. For example, the Quasi Framework interfaces have stubs [add link once kernel checked in] provided.
+
To run scripts such as Releaselor or Ripplor you'll need to:
 +
# Generate SSH key by calling ssh-keygen without a passphrase
 +
# Upload your public SSH key to build.eclipse.org
 +
#* login with user <code>virgoBuild</code>
 +
#* follow the steps described [[Git#Setting_up_ssh_keys | here]]
 +
# Log in (adding the host key) at least once to:
 +
#* build.eclipse.org
 +
#* download1.eclipse.org
 +
# Add your private key to ANT_OPTS:
 +
        -Dkey.file=$HOME/.ssh/id_dsa
  
Mocks are generated on the fly from interfaces. [http://easymock.org/ EasyMock] is typically used. Expectations of how an interface is used can be set and checked. It is important not to code expectations that are too specific to an implementation otherwise the resultant test will be fragile and is likely to break if the implementation being tested is refactored.  
+
If you have headless environment you may want to add to ANT_OPTS:
 +
        -Djava.awt.headless=true
  
Some tests of complex classes use a combination of stubs and mocks.  
+
To enable Clover you will need to specify in ANT_OPTS the path to the licence:
 +
        -Dclover.license.path=/opt/clover.license
  
In general, unit tests aim to provide at least 80% coverage of Virgo code, but some components fall short of this and more tests need to be written. The precommit ant target used to check coverage using Clover, but this check is not currently supported as the Eclipse Hudson server does not support Clover.  
+
== Notes for Ubuntu 10.04 ==
  
Some complex classes are simply too messy to unit test and refactoring is required to enable maintainable unit tests to be created. So if significant refactoring of existing code is planned, that is often a good time to add a suite of unit tests.  
+
=== JDK ===
 +
I have found that the <code>sun-java6-jdk</code> package is not installable directly from a fresh install of this level of Ubuntu (I'm running this in a virtual machine). (I set <code>JAVA_HOME</code> to be <code>/usr/lib/jvm/java-6-sun</code> which is a symbolic link, and this doesn't need updating after the install below.)
  
New code should be written with unit tests from the start. This is the only way to make sure that code can be thoroughly unit tested.
+
To get the jdk to be installed I issued the following commands (which you might find useful):
  
== Integration Tests  ==
+
    sudo add-apt-repository "deb http:''//''archive.canonical.com''/'' lucid partner"
  
Integration tests install a collection of bundles into Equinox and then run the testcase as part of a bundle. Some integration tests install sufficient bundles to start a Virgo kernel or web server, but others install a relatively small subset.
+
(which made the package visible to the package-manager)
  
An integration test framework is provided in the Virgo Test git repository.
+
    sudo apt-get update
  
== Automated Testing  ==
+
(to reset the package-manager indexes)
  
Test dependencies are either checked in to <tt>src/test/resources</tt> or are downloaded into an Ivy repository when the tests are built.
+
    sudo apt-get install --fix-missing sun-java6-jdk
  
The unit and integration tests of a Virgo git repository can be run by changing into the <tt>build-xxx</tt> directory and issuing:
+
The <code>--fix-missing</code> option is necessary since other packages are required.
<pre>ant clean clean-integration test
+
</pre>
+
This will halt when the first test fails. To run all the tests and not halt on failure, issue:
+
<pre>ant -Dci.build=true clean clean-integration test
+
</pre>  
+
and, since this will always report "build successful", remember to open <tt>target/test-results/index.html</tt> at the end to see which tests passed and which failed.  
+
  
== System Verification Tests ==
+
=== jsch library ===
  
SVTs are present in the Virgo Kernel System Verification Tests and the Virgo System Verification Tests repositories. Building these repositories runs the test. The latter project requires a package web server zip file to be placed in <tt>build-svt/target/artifacts/</tt> before the following ant target is run:
+
The JCraft's [http://www.jcraft.com/jsch/ jsch library] needed for SSH/SCP support in ANT may need to be installed, e.g.:
<pre>ant test-svt
+
</pre>
+
== Performance Tests  ==
+
  
A small number of SVTs in the Virgo Performance Tests git repository check that the performance of Virgo does not worsen. These tests are very approximate since it is impossible to enforce precise performance goals when tests are run in a general CI server which may be subject to fluctuation in its load and performance.  
+
Note: An annoying bug (http://sourceforge.net/p/jsch/bugs/58/) has been fixed in version <code>0.1.50</code> which is available in Orbit as: <code>com.jcraft.jsch_0.1.50.v201310081430.jar</code>
  
== Ignoring Tests  ==
+
    sudo apt-get install libjsch-java
  
Ignoring a failing test is always a last resort. If this is required, then a bug must be raised and the failing test method or, in rare situations, the whole test class should be annotated using the <tt>org.junit.Ignore</tt> annotation:  
+
Check in ANT if its available:
<pre>@Ignore("bug &lt;bugzilla number&gt;: &lt;reason for ignoring the test&gt;")
+
 
 +
    ant -diagnostics
 +
 
 +
If the output says under "Tasks availability" <code>sshexec&nbsp;: Missing dependency com.jcraft.jsch.Logger</code>, then you'll need to provide this library to ANT. On Linux you can do this by creating a symlink:
 +
 
 +
    sudo ln -s /usr/share/java/jsch-0.1.42.jar /usr/share/ant/lib/jsch-0.1.42.jar
 +
 
 +
or on Mac OS, place (a link to) the JAR in ~/.ant/lib:
 +
 
 +
    cp jsch-0.1.42.jar ~/.ant/lib/.
 +
 
 +
Finally, you may check if the JAR is correct (as suggested in this [http://cafe.elharo.com/programming/java-programming/could-not-load-a-dependent-class-comjcraftjschlogger/ blog]):
 +
 
 +
    jar tvf /usr/share/ant/lib/jsch*jar
 +
 
 +
or:
 +
 
 +
    jar tvf ~/.ant/lib/jsch*jar
 +
 
 +
If everything is ok you should get a list of files inside the archive. Be sure to check "ant -diagnostics" too.
 +
 
 +
= Policies =
 +
 
 +
In addition to detailed coding and testing policies describe later, there are some specific policies that committers need to be aware of.
 +
 
 +
== Event Log Message Policy ==
 +
 
 +
Please avoid renumbering event log messages when possible. People sometimes write scripts that act on event log messages. Some of our tests may even be sensitive to the numbers. So renumbering an event log message can cause unnecessary disruption to our users and ourselves.
 +
 
 +
= Grokking =
 +
 
 +
You can grok the high level structure of Virgo by understanding the set of [http://wiki.eclipse.org/Virgo/Source git repositories] that comprise Virgo.
 +
 
 +
Use [http://virgo-opengrok.springsource.org/ OpenGrok] for searching the master branch of the entire Virgo code base. Always specify "Virgo" in the File Path field to avoid hits in Gemini Web and SpringSource dm Server which are also included in that index. Note that there is a link to OpenGrok on the Virgo home page for convenience.
 +
 
 +
To get an idea of the dependency structure, use OpenGrok specifying "virgo build.versions" in the File Path field and, to see dependencies on a specific component, the component name in Full Search. For example, [http://virgo-opengrok.springsource.org/search?q=org.eclipse.virgo.kernel&defs=&refs=&path=virgo+build.versions&hist= this search] shows the git repositories that depend on the kernel.
 +
 
 +
= Coding  =
 +
 
 +
Virgo has a strong emphasis on maintainable, or "clean", code. If you need a really good introduction to coding, we recommend "[http://cc2e.com/ Code Complete]". If you are already a proficient programmer and want to write really clean code, read "[http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882 Clean Code]". If you are not an expert in writing Java, read "[http://java.sun.com/docs/books/effective/ Effective Java]".
 +
 
 +
Virgo code is thread safe unless specifically stated. Achieving thread safety in Java is not easy. We recommend "[http://www.javaconcurrencyinpractice.com/ Java Concurrency in Practice]" for a good grounding in Java concurrency.
 +
 
 +
Coding guidelines are [[Virgo/Committers/Coding| here]].
 +
 
 +
A Contextual Bash History can be very useful, guide [[Virgo/Committers/Bash| here]].
 +
 
 +
== Eclipse Setup ==
 +
 
 +
# Install the Virgo IDE tooling into Eclipse as [http://wiki.eclipse.org/Virgo/Tooling#Installation described] under the Tooling tab.
 +
# Install [http://www.eclipse.org/ajdt/ AJDT] into Eclipse. This is necessary so that Virgo projects which use AspectJ are correctly woven when rebuilt under Eclipse.
 +
# Install [http://www.eclipse.org/egit/ egit] into Eclipse. This step is recommended but not absolutely essential since it is possible to perform git operations on the command line or using some other git GUI tool.
 +
# Build the Virgo git repository you want to import into Eclipse as [http://wiki.eclipse.org/Virgo/Build#Building_Individual_Repositories described] under the Build tab. Ensure you see BUILD SUCCESSFUL.
 +
# Import the projects of the chosen git repository by using File->Import->Git->Projects from Git. Then click Next and add the git repository, select it, and click Next. Select the "Import existing projects" wizard and click Next. Check the projects you want to import (typically org.eclipse.virgo.xxx where xxx corresponds to the repository - other projects such as test bundle projects and any inside the build-xxx and virgo-build directories are unlikely to be of interest) and click Finish.
 +
# If you see lots of errors, you probably need to define a suitable classpath variable, e.g., KERNEL_IVY_CACHE, to point to the Ivy cache which has been built in the local copy of the git repository (actually to the ivy-cache/repository folder).
 +
# There should be no errors (marked in red). Occasionally, the build paths get out of step with the build.versions file and need updating.
 +
 
 +
= Testing =
 +
 
 +
See {{VirgoLink|Test|Test|{{{tab}}}|testing}}.
 +
 
 +
= Hudson CI =
 +
 
 +
Committers should [https://dev.eclipse.org/mailman/listinfo/virgo-build subscribe] to virgo-build@eclipse.org so they are notified when builds fail, become unstable, become stable, etc.
 +
 
 +
Build breaks should be investigated as soon as they occur and should be fixed as soon as possible.
 +
 
 +
= IP Due Diligence  =
 +
 
 +
== Handling Code Contributions ==
 +
 
 +
Committers are responsible for ensuring that Eclipse IP policy, summarised in the [http://www.eclipse.org/legal/EclipseLegalProcessPoster.pdf legal poster], is adhered to.
 +
 
 +
Patches must be attached to a bugzilla bug and have its iplog flag set to '+', and the contributor must confirm in the bug that: they wrote 100% of the code, they have the right to contribute the code to Eclipse, and new Java files contain the appropriate license header.
 +
 
 +
If the contribution is provided in an external git repository, it is not necessary to attach a patch to the bug: details [http://wiki.eclipse.org/Development_Resources/Handling_Git_Contributions here].
 +
 
 +
== Raising "works with" CQs  ==
 +
 
 +
"works with" CQs are required for test dependencies which are not distributed with Virgo or checked in to Eclipse version control (git, svn, cvs).
 +
 
 +
The initial set of test dependencies was determined, for repositories which are built with ant, as follows:
 +
 
 +
1. In the build-xxx directory run ant report
 +
 
 +
2. Extract a raw list of the test dependency jars
 +
<pre>find &lt;report directory&gt; -name "*-test.xml" -exec grep -E \/.+\.jar  {} \; &gt;test-jars.txt
 
</pre>  
 
</pre>  
The bug should also detail which test or tests are ignored.  
+
3. Edit test-jars.txt using an editor with a regular expression global change facility and do the following global changes.  
  
<br>
+
3.1 Replace regex .+\/(.+)\.jar\"&gt; with $1.jar.
 +
 
 +
3.2 Replace regex .+\/(.+)\.jar\"\/&gt; with $1.jar.
 +
 
 +
3.3 Replace -sources with the empty string
 +
 
 +
4. Sort test-jars.txt and remove duplicate lines.
 +
 
 +
5. Look through test-jars.txt and raise "works with" for any JARs which don't have a Virgo CQ for the correct version. Also, raise corresponding Virgo bugzillas and set the iplog flag to enter the bugzillas in the automated IP log.
  
 
[[Category:Virgo]] [[Category:EclipseRT]]
 
[[Category:Virgo]] [[Category:EclipseRT]]
 +
 +
= Development process advice =
 +
 +
To enable distributed and cooperative development, some simple rules and processes need to be followed.  These are all subject to change and are in the nature of ''advice'' rather than ''laws''.
 +
 +
The advice is [[Virgo/Committers/Process_Advice|here]].
 +
 +
= Agile Project Management =
 +
 +
The basic principle is that tasks which need to be worked on are placed in the backlog. For a particular sprint, some of the tasks in the backlog are moved to the sprint and completed. So no task appears in both the backlog and a sprint.
 +
 +
Import bugs from bugzilla into [http://eclipse-virgo.acunote.com/projects/16748/sprints Acunote] as follows:
 +
 +
# Export all the open bugs for Virgo (and Gemini Web if you like) to a CSV file using the CSV link on the bugzilla search results panel.
 +
# Go to the "Imported from bugzilla" sprint (not really a sprint at all) and import the CSV using the Tools link followed by "Import tasks from Bugzilla" ('''not''' "Import tasks from CSV"). Make a note of the task numbers added.
 +
# Go to the "Imported from bugzilla" sprint and '''copy''' the tasks added in the previous step to the backlog.
 +
# It is helpful to categorise bugs and features using the "More Actions" pull down. We put the bugs at the top of the backlog so we don't lose track of them.
 +
 +
To work on a sprint:
 +
# Add a sprint.
 +
# '''Move''' tasks from the backlog into the new sprint to work on them. If you don't complete them, '''move''' them to a new sprint or '''move''' them back to the backlog.
 +
 +
 +
Since we are trying to use Acunote to manage sprints in Southampton, Sofia, and potentially elsewhere, please ensure that bugzilla is kept up to date in case the Acunote data gets corrupted.
 +
 +
Note that we never remove tasks from the "Imported from bugzilla" so that subsequent imports do not accidentally re-create finished tasks. The maintainers of Acunote recommended this technique.
 +
 +
= Logos =
 +
 +
If you have need to use the Virgo logos some example and the svg source can be found [[Media:VirgoLogos.zip|here]].

Revision as of 11:02, 3 February 2014


Committers Charter

Committers are responsible for:

  • Maintaining and enhancing the Virgo code base
  • Ensuring the Hudson CI jobs pass all tests (blue ball)
  • Responding to queries on virgo-dev
  • Handling contributions
  • Developing contributors into committers
  • Complying with Eclipse IP policy
  • Keeping an eye on the Virgo forum

Machine Setup

You need Sun JDK 6, Apache Ant 1.8.2 or later, and git. You'll probably want an IDE such as Eclipse and, in order for Virgo projects to build under Eclipse, the Virgo IDE tooling and AJDT (the current update site may be found on http://www.eclipse.org/ajdt/downloads/).

Don't forget to install AJDT as this is needed so that Eclipse produces the same compiled classes as the Ant build!

At the time of writing, some ant targets occasionally fail because they cannot load classes from jsch-0.1.42.jar. A workaround on Mac OS X is to copy this JAR from virgo-build's /lib/ivy directory to /opt/local/share/java/apache-ant/lib.

On Mac OS X, increase the default number of concurrently open files by adding this to .profile:

       ulimit -n 10000

To run certain scripts (don't run them unless you know what you're doing—and why), you'll need ruby, gems, and the 'choice' gem. On Mac OS you can get these by installing the XCode tools (from the Mac OS X disk) and MacPorts, then issuing:

       sudo port -v install ruby (Not required on Mountain Lion)
       sudo port -v install rb-rubygems (Not required on Mountain Lion)
       sudo gem install --remote choice

To run scripts such as Releaselor or Ripplor you'll need to:

  1. Generate SSH key by calling ssh-keygen without a passphrase
  2. Upload your public SSH key to build.eclipse.org
    • login with user virgoBuild
    • follow the steps described here
  3. Log in (adding the host key) at least once to:
    • build.eclipse.org
    • download1.eclipse.org
  4. Add your private key to ANT_OPTS:
       -Dkey.file=$HOME/.ssh/id_dsa

If you have headless environment you may want to add to ANT_OPTS:

       -Djava.awt.headless=true

To enable Clover you will need to specify in ANT_OPTS the path to the licence:

       -Dclover.license.path=/opt/clover.license

Notes for Ubuntu 10.04

JDK

I have found that the sun-java6-jdk package is not installable directly from a fresh install of this level of Ubuntu (I'm running this in a virtual machine). (I set JAVA_HOME to be /usr/lib/jvm/java-6-sun which is a symbolic link, and this doesn't need updating after the install below.)

To get the jdk to be installed I issued the following commands (which you might find useful):

   sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"

(which made the package visible to the package-manager)

   sudo apt-get update

(to reset the package-manager indexes)

   sudo apt-get install --fix-missing sun-java6-jdk

The --fix-missing option is necessary since other packages are required.

jsch library

The JCraft's jsch library needed for SSH/SCP support in ANT may need to be installed, e.g.:

Note: An annoying bug (http://sourceforge.net/p/jsch/bugs/58/) has been fixed in version 0.1.50 which is available in Orbit as: com.jcraft.jsch_0.1.50.v201310081430.jar

   sudo apt-get install libjsch-java

Check in ANT if its available:

   ant -diagnostics

If the output says under "Tasks availability" sshexec : Missing dependency com.jcraft.jsch.Logger, then you'll need to provide this library to ANT. On Linux you can do this by creating a symlink:

   sudo ln -s /usr/share/java/jsch-0.1.42.jar /usr/share/ant/lib/jsch-0.1.42.jar

or on Mac OS, place (a link to) the JAR in ~/.ant/lib:

   cp jsch-0.1.42.jar ~/.ant/lib/.

Finally, you may check if the JAR is correct (as suggested in this blog):

   jar tvf /usr/share/ant/lib/jsch*jar

or:

   jar tvf ~/.ant/lib/jsch*jar

If everything is ok you should get a list of files inside the archive. Be sure to check "ant -diagnostics" too.

Policies

In addition to detailed coding and testing policies describe later, there are some specific policies that committers need to be aware of.

Event Log Message Policy

Please avoid renumbering event log messages when possible. People sometimes write scripts that act on event log messages. Some of our tests may even be sensitive to the numbers. So renumbering an event log message can cause unnecessary disruption to our users and ourselves.

Grokking

You can grok the high level structure of Virgo by understanding the set of git repositories that comprise Virgo.

Use OpenGrok for searching the master branch of the entire Virgo code base. Always specify "Virgo" in the File Path field to avoid hits in Gemini Web and SpringSource dm Server which are also included in that index. Note that there is a link to OpenGrok on the Virgo home page for convenience.

To get an idea of the dependency structure, use OpenGrok specifying "virgo build.versions" in the File Path field and, to see dependencies on a specific component, the component name in Full Search. For example, this search shows the git repositories that depend on the kernel.

Coding

Virgo has a strong emphasis on maintainable, or "clean", code. If you need a really good introduction to coding, we recommend "Code Complete". If you are already a proficient programmer and want to write really clean code, read "Clean Code". If you are not an expert in writing Java, read "Effective Java".

Virgo code is thread safe unless specifically stated. Achieving thread safety in Java is not easy. We recommend "Java Concurrency in Practice" for a good grounding in Java concurrency.

Coding guidelines are here.

A Contextual Bash History can be very useful, guide here.

Eclipse Setup

  1. Install the Virgo IDE tooling into Eclipse as described under the Tooling tab.
  2. Install AJDT into Eclipse. This is necessary so that Virgo projects which use AspectJ are correctly woven when rebuilt under Eclipse.
  3. Install egit into Eclipse. This step is recommended but not absolutely essential since it is possible to perform git operations on the command line or using some other git GUI tool.
  4. Build the Virgo git repository you want to import into Eclipse as described under the Build tab. Ensure you see BUILD SUCCESSFUL.
  5. Import the projects of the chosen git repository by using File->Import->Git->Projects from Git. Then click Next and add the git repository, select it, and click Next. Select the "Import existing projects" wizard and click Next. Check the projects you want to import (typically org.eclipse.virgo.xxx where xxx corresponds to the repository - other projects such as test bundle projects and any inside the build-xxx and virgo-build directories are unlikely to be of interest) and click Finish.
  6. If you see lots of errors, you probably need to define a suitable classpath variable, e.g., KERNEL_IVY_CACHE, to point to the Ivy cache which has been built in the local copy of the git repository (actually to the ivy-cache/repository folder).
  7. There should be no errors (marked in red). Occasionally, the build paths get out of step with the build.versions file and need updating.

Testing

See Test.

Hudson CI

Committers should subscribe to virgo-build@eclipse.org so they are notified when builds fail, become unstable, become stable, etc.

Build breaks should be investigated as soon as they occur and should be fixed as soon as possible.

IP Due Diligence

Handling Code Contributions

Committers are responsible for ensuring that Eclipse IP policy, summarised in the legal poster, is adhered to.

Patches must be attached to a bugzilla bug and have its iplog flag set to '+', and the contributor must confirm in the bug that: they wrote 100% of the code, they have the right to contribute the code to Eclipse, and new Java files contain the appropriate license header.

If the contribution is provided in an external git repository, it is not necessary to attach a patch to the bug: details here.

Raising "works with" CQs

"works with" CQs are required for test dependencies which are not distributed with Virgo or checked in to Eclipse version control (git, svn, cvs).

The initial set of test dependencies was determined, for repositories which are built with ant, as follows:

1. In the build-xxx directory run ant report

2. Extract a raw list of the test dependency jars

find <report directory> -name "*-test.xml" -exec grep -E \/.+\.jar  {} \; >test-jars.txt

3. Edit test-jars.txt using an editor with a regular expression global change facility and do the following global changes.

3.1 Replace regex .+\/(.+)\.jar\"> with $1.jar.

3.2 Replace regex .+\/(.+)\.jar\"\/> with $1.jar.

3.3 Replace -sources with the empty string

4. Sort test-jars.txt and remove duplicate lines.

5. Look through test-jars.txt and raise "works with" for any JARs which don't have a Virgo CQ for the correct version. Also, raise corresponding Virgo bugzillas and set the iplog flag to enter the bugzillas in the automated IP log.

Development process advice

To enable distributed and cooperative development, some simple rules and processes need to be followed. These are all subject to change and are in the nature of advice rather than laws.

The advice is here.

Agile Project Management

The basic principle is that tasks which need to be worked on are placed in the backlog. For a particular sprint, some of the tasks in the backlog are moved to the sprint and completed. So no task appears in both the backlog and a sprint.

Import bugs from bugzilla into Acunote as follows:

  1. Export all the open bugs for Virgo (and Gemini Web if you like) to a CSV file using the CSV link on the bugzilla search results panel.
  2. Go to the "Imported from bugzilla" sprint (not really a sprint at all) and import the CSV using the Tools link followed by "Import tasks from Bugzilla" (not "Import tasks from CSV"). Make a note of the task numbers added.
  3. Go to the "Imported from bugzilla" sprint and copy the tasks added in the previous step to the backlog.
  4. It is helpful to categorise bugs and features using the "More Actions" pull down. We put the bugs at the top of the backlog so we don't lose track of them.

To work on a sprint:

  1. Add a sprint.
  2. Move tasks from the backlog into the new sprint to work on them. If you don't complete them, move them to a new sprint or move them back to the backlog.


Since we are trying to use Acunote to manage sprints in Southampton, Sofia, and potentially elsewhere, please ensure that bugzilla is kept up to date in case the Acunote data gets corrupted.

Note that we never remove tasks from the "Imported from bugzilla" so that subsequent imports do not accidentally re-create finished tasks. The maintainers of Acunote recommended this technique.

Logos

If you have need to use the Virgo logos some example and the svg source can be found here.

Back to the top