[Tarantool-patches] [test-run] Add options for upgrade testing

Alexander Turenko alexander.turenko at tarantool.org
Tue Jun 2 14:13:51 MSK 2020


(Just looked at answers, don't see the new version of the patch for
now.)

On Thu, May 28, 2020 at 12:39:34PM +0300, Sergey Bronnikov wrote:
> Alexander,
> 
> thanks for review. See my comments inline.
> All changes on top of branch.

It is ligurio/gh-4801-add-snapshot-option, right? I see some 'tmp',
'temp' commits. Please, squash fixups if they are not intended to land
as separate commits into master.

> > > diff --git a/lib/options.py b/lib/options.py
> > > index 8bacb4a..d627eb2 100644
> > > --- a/lib/options.py
> > > +++ b/lib/options.py
> > > @@ -201,6 +201,20 @@ class Options:
> > >                  help="""Run the server under 'luacov'.
> > >                  Default: false.""")
> > >  
> > > +        parser.add_argument(
> > > +                "--snapshot-version",
> > > +                dest='snapshot_version',
> > > +                default=None,
> > > +                help="""Version of Tarantool snapshot loaded before
> > > +                testing.""")
> > 
> > I would accept a path to a snapshot file here. This way does not require
> > knowledge from a user where test-run expect snapshots to be placed (and
> > that '.snap' should not be added). It also more flexible: a user may
> > choose where it is better to place snapshots within its project (or even
> > outside it).
> 
> Don't forget we need a way to run upgrade testing for several tarantool
> versions automatically. With your suggestion we should specify one
> option several times and I don't like this approach, because it will
> overload command line for running tests.

For several snapshots? Each is a separate ./test-run.py run I guess. The
option (as it is shown in the snippet above) does not allow to be
specified several times (it would use `nargs='*'` if it would do).
However I don't sure that specifying this option several times would be
intuitive: this way ./test-run.py should run the whole testing several
times with different snapshots. Usually test-run.py run testing only
once.

Just example, I want to verify starting from a snapshot using existing
tests on my own commit:

 | $ (cd test && for s in snapshots/*.snap; do ./test-run.py --snapshot $s; done)

It does not work. Ouch. Okay...

 | $ (cd test && for s in snapshots/*.snap; do ./test-run.py s=${s#snapshots/} --snapshot-verson ${s%.snap}; done)

Doable. Now I got some snapshot from a client and want to answer whether
it is safe to update to a new tarantool version.

 | $ (cd test && ./test-run.py --snapshot ../0000<...>1234.snap)

Ugh, again, I need some additional actions:

 | $ mv 0000<...>1234.snap test/snapshots
 | $ (cd test && ./test-run.py --snapshot-version 0000<...>1234)

Doable too. But do you find it convenient?

> > BTW, CI (`make lint`) show errors:
> > https://travis-ci.com/github/tarantool/test-run/builds/156536350
> 
> Most warnings fixed.

Aren't it is better to keep CI green and fix them all? Or lift the limit
up and keep CI green? I vote for the former, but okay, any way is
acceptable.

> > > +
> > > +    def extract_schema_from_snapshot(self):
> > 
> > Nit: We can make it a class method.
> 
> What do you mean? It's already a class method.

@classmethod


More information about the Tarantool-patches mailing list