MINUTES, 2009.03.12

Present: Alex, Chris, Marek, Namshin, Titus


1. The new test framework

Titus: the new framework is now in master. Features:
 - simplified structure
 - removes dependence on Nose
 - integrates coverage analysis ('python runtest.py --coverage')
Chris: unfortunately, the new framework has currently got a number of
issues:
 - individual tests frequently lack isolation from each other; note
that since most (if not all) of problems of this sort stem from
pygr.Data, they should disappear with the metabase (see below) rollout
 - there is no automatic conditional skipping of certain tests
 - Internet connectivity is not checked for despite some tests
depending on it
 - if PYTHONPATH is not set, tests which should fail as not knowing
where Pygr should be are simply skipped instead; as a result, this
problem can only be detected by knowing beforehand the expected
number of successful tests
 - it requires a bit of careful reading to determine which of the tests
have actually failed (Titus: this is because each test file is
considered an independent suite by runtest; one could work around this
by having runtest compile one suite from the contents of all files
before running tests)
 - runtest's error reporting in general leaves much to be desired of:
on one hand many tests produce extremely verbose output, on the other
some errors are extremely hard to figure out (e.g the one appearing
when runtest is called without '-b' for build-dir testing)
 - unittest test cases fail when run without arguments, which makes it
more difficult to run individual tests from the Python command line
(Titus: this can be addressed by using a different runner)

Marek: It seems some of the tests have been 'neutered' during framework
conversion, making it possible for them to return false positives. One
of such mistakes (the pygr.Data.dir() test - in the new framework,
instead of comparing an array of dir() output with one containing
expected keys using '==' they were compared by checking whether their
size was identical) has been identified and fixed, it is however not
know whether all other tests are fine.

Titus+Chris: this kind of mistakes ought to be caught by code reviews
performed on new commits, this can however be difficult if commits are
as large as e.g. Istvan's framework rewrite. Therefore, all developers
providing code to be incorporated into master are asked to observe the
following guidelines:
 - maintain granularity of changes by committing frequently to your
local repository
 - maintain isolation between issues by developing code of each of them
in a separate side branch
 - merge the official master with your active side branch(es) on a
regular basis
 - when submitting to the official master, preserve commit logs from
development in your repository
 - if you change someone else's code, have the original author review
your changes to make sure the new code does all the old code did or was
supposed to

Megatests will not be re-written for the new framework until issues with
the latter have been addressed. 


2. The buildbot

Titus: progress on the subject was hindered by the spring break, then
again Justin can now run the bot under Linux. When he's back the
following week, he will begin by setting it up to run on a regular
basis - then proceed with deploying under Mac OS X and Windows.
Furthermore, a new student will be working on buildbot code the
upcoming quarter to make it more simple.

Chris asked Titus for Justin to register on Google Code.


3. Megatests

Namshin has agreed to review recent portability changes (issue 69)
instead of Titus.

Deployment of a new MBI megatest machine hindered by RAID failure;
presently the system hasn't got enough disc space to hold all data
files needed by the tests, let alone test output files. Work is ongoing
on providing a replacement array.


4. Metabase

Chris: metabase is a reorganisation of pygr.Data code which attempts to
address a large number of existing and potential issues with that code.
A post on the subject was sent to pygr-dev. The code has been posted
for review to a non-master branch on github.

Titus: The problem is, nobody but Chris knows pygr.Data internals well
enough to review the code. Titus will try to, within two weeks, find
someone to review the code; if it doesn't work, fallback validation
would involve feedback from pygr.Data users (mostly UCLA people). 

An issue will be created in the tracker, with Titus as assigned
reviewer.


5. SequenceDB review

Titus: pygr-dev post 'short notes on seqdb review' contains observation
from the first pass, combined with integrating Alex's short-read code.
Mostly formatting-related issues; "separate into modules" request has
been preempted by Chris after Titus's last pull from master. Changes
will be submitted as discrete commits and clearly tagged as
non-functional. Moving on to functional issues will be announced.

One peculiarity observed so far has been is that sequences establish
connection to databases, which can be considered a violation of
modularity. Chris: this has been done on purpose and is in fact somewhat
modular, as only two methods per sequence class (strslice and __init__)
contain database-related code. Titus: if we don't move this code to
database classes, the rationale should be documented in docstrings. All
in all, this issue will be revisited.

The second pass will follow soon, to be announced on pygr-dev.

Another matter: both development of the short-read back-end and the
code review would benefit from a short list of required feature of a
SequenceDB. Chris will provide such a list and post it in (suggested by
Titus, in the order of preference): docstrings, tests or the
development guide.


6. Verifying FixedNeedsReview issues

The following convention has been established for specifying the
reviewer:
 - add a 'reviewby-<name>' tag to facilitate searching (Titus has
reconfigured the tracker accordingly)
 - add <name> as the *first* one on the Cc list

Titus: when closing a verified issue, please provide a short comment
that the check has indeed been successful.

MS: in the process of writing up the tracking process; will add today's
changes.


7. The alpha release

It has been clarified that alpha == feature freeze. Titus: we shouldn't
announce this version too widely, leave this up to beta. Chris: agreed.

Timeline - the current plan is to declare the freeze after the review
and incorporation of the metabase patchset, but since that may take a
while everyone not involved can carry on verifying current
FixedNeedsReview issues and/or working on documentation updates (see
below).

Titus: Short-read code will remain a plug-in for now. Incorporation
into the core tentatively planned for Pygr-1.0.


8. Documentation updates

Chris: Right now all updates are blocked by having to migrate from
LaTeX to restructured docs (following the move made by the Python core
between 2.5 and 2.6). The first pass of this migration will therefore
be minimal, i.e. concentrating on reproducing the old effect in the new
format; enhancements such as doctests will come later. Titus:
suggests breaking pygr.tex into multiple files combined using \include,
then converting these files to REST one-by-one - but in general, the
rewrite itself should be simple enough.


9. AOB

Since the UCLA XML-RPC server is based on Pygr from Git, it would make
sense to update it to support regular expressions in pygr.Data.dir() -
however, it must be confirmed that the upgrade won't break 0.7.1
clients. Chris and MS will confirm this, then let Namshin know how to
proceed.


-- 
MS

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pygr-dev" group.
To post to this group, send email to pygr-dev@googlegroups.com
To unsubscribe from this group, send email to 
pygr-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/pygr-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to