[Ns-developers] Ns-3 Regression Testing
craigdo@ee.washington.edu
craigdo at ee.washington.edu
Tue Apr 1 09:56:22 PDT 2008
> On Tue, Apr 1, 2008 at 12:24 AM, <craigdo at ee.washington.edu> wrote:
> > [snip]
> > The reference traces are kept in another private repo on
> code.nsnam.org. It
> > will be cloned transparently during execution so you don't
> have to worry
> > about that. Eventually we will have an ns-3-ref-traces
> directory that
> > parallels our release directory. We have this separate
> repository to avoid
> > storing the possibly very large trace files in the main
> code repository.
>
> The clone referred to means "hg clone". I am fine with this for
> developers, but it adds an extra dependency on mercurial for other
> regular users who will have gotten ns-3 from a tarball release (they
> have no need for mercurial).
I have assumed that regression testing is done by developers who are making
changes and need to ensure they have not introduced a regression; and by
someone doing a release as a pass/fail smoke-type test to make sure that
things are consistent.
Passing a regression test would probably give warm and fuzzy feelings to
regular users, that might only have a partial or strange development
environment, though.
> One of the most frustrating things is
> unexpected dependencies when running a script you didn't write.
Agreed. There's a tradeoff, though, as you might expect.
> I'm
> also assuming here that the regression script will run automatically
> at the end of compilation eventually, much like ns-2's installer does
> validation at its end?
There have been conversations regarding a real validation test which this
explicitly is not. I had not assumed that any test script will run
automatically at the end of a compilation.
> Could we tarball up the reference traces with everything else for
> releases? Since the concern is unnecessarily bloating our repos /
> tarballs with trace files however, the other option I see to perform
> the clone is to use something that a regular non-developer type is
> more likely to have installed: something like scp, rsync, wget, curl,
> etc. I can't imagine there is a *nix machine out there that doesn't
> have scp, although I'm not sure if it's presence is part of the POSIX
> spec.
As I said earlier, there are tradeoffs. First, I believe the reference
trace files should be under version control somehow. These trace files need
to be associated somehow with a particular release and a particular
development snapshot. So there should be a repository associated with
ns-3.x, ns-3-dev, etc. Now, during the course of everyday events,
developers shouldn't have to worry about making new tarballs; they should
just be able generate new bits easily and commit and push them -- so there
really is a real need for a mercurial-based regression solution for
developers.
Your argument that people who download tarballs should be able to get a warm
and fuzzy feeling by running regression tests is a good one. This means a
separate way to get at the reference traces for them, though. I'll add a
check for mercurial and if it fails, I'll go out to a well-known place on
the web and look for a tarball.
This does mean more complexity in the release process, but it sounds like
it's worth it.
-- Craig
More information about the Ns-developers
mailing list