• Kirill Smelkov's avatar
    go/neo/t: Neotest start · c12f2991
    Kirill Smelkov authored
    For testing and benchmarking how NEO/py & NEO/go interact with each
    other we need corresponding test driver. Neotest will be that driver and
    present patch begins it:
    
    - neotest can deploy NEO/{go,py} checkout either locally or on remote node;
    - it can run NEO/{go,py} unit tests either locally or on remote node;
    - it can also show information about a system - either local or remote.
    
    Examples in action. Banner:
    
        x/src/lab.nexedi.com/kirr/neo/go/neo/t$ ./neotest
        Neotest is a tool to test and benchmark NEO.
    
        Usage:
    
                neotest command [arguments]
    
        The commands are:
    
                test            run all tests on a remote host
                test-local      run all tests locally
    
                test-go         run NEO/go unit tests   (part of test-local)
                test-py         run NEO/py unit tests   (part of test-local)
    
                deploy          deploy NEO & needed software for tests to remote host
                deploy-local    deploy NEO & needed software for tests locally
    
                info            print information about a node
                info-local      print information about local deployment
    
    Deploy to another node:
    
        x/src/lab.nexedi.com/kirr/neo/go/neo/t$ ./neotest deploy neotest@rio.kirr.nexedi.com:3
        *** deploying to neotest@rio.kirr.nexedi.com:3 ...
        ...
        # deployed ok
    
    Print information about that node:
    
        x/lab.nexedi.com/kirr/neo/go/neo/t$ ./neotest info neotest@rio.kirr.nexedi.com:3
        date:   Sun, 08 Jul 2018 21:30:43 +0300
        xnode:  neotest@rio.kirr.nexedi.com (2401:5180:0:2a::1 192.168.0.8)
        uname:  Linux rio 4.16.0-2-amd64 #1 SMP Debian 4.16.16-2 (2018-06-22) x86_64 GNU/Linux
        sw/python:          Python 2.7.15
        sw/go:              go version go1.10.3 linux/amd64
        sw/sqlite:          sqlite 3.24.0 (py mod 2.6.0)
        sw/mysqld:          mysqld  Ver 10.1.29-MariaDB-6+b1 for debian-linux-gnu on x86_64 (Debian buildd-unstable)
        sw/neo:             v1.9-42-g972ff5f9
        sw/zodb:            5.4.0
        sw/zeo:             5.2.0
        sw/mysqlclient:     1.3.13
    
    Run NEO/{py,go} unit tests there:
    
        x/src/lab.nexedi.com/kirr/neo/go/neo/t$ ./neotest test neotest@rio.kirr.nexedi.com:4
        ?       lab.nexedi.com/kirr/neo/go/internal/packed      [no test files]
        ok      lab.nexedi.com/kirr/neo/go/neo/neonet   (cached)
        ok      lab.nexedi.com/kirr/neo/go/neo/proto    (cached)
        ok      lab.nexedi.com/kirr/neo/go/zodb (cached)
        ?       lab.nexedi.com/kirr/neo/go/zodb/cmd/zodb        [no test files]
        ?       lab.nexedi.com/kirr/neo/go/zodb/internal/pickletools    [no test files]
        ?       lab.nexedi.com/kirr/neo/go/zodb/storage [no test files]
        ok      lab.nexedi.com/kirr/neo/go/zodb/storage/fs1     (cached)
        ?       lab.nexedi.com/kirr/neo/go/zodb/storage/fs1/cmd/fs1     [no test files]
        ok      lab.nexedi.com/kirr/neo/go/zodb/storage/fs1/fs1tools    (cached)
        ?       lab.nexedi.com/kirr/neo/go/zodb/storage/fs1/fsb [no test files]
        ?       lab.nexedi.com/kirr/neo/go/zodb/storage/zeo     [no test files]
        ?       lab.nexedi.com/kirr/neo/go/zodb/wks     [no test files]
        ok      lab.nexedi.com/kirr/neo/go/zodb/zodbtools       (cached)
        ...........................................................................E.EE....c....^C
    
    Neotest will be the driver that was used to prepare benchmarks in
    http://navytux.spb.ru/~kirr/neo.html and http://navytux.spb.ru/~kirr/misc/neo·P4.html .
    
    Some draft history related to this patch:
    
    lab.nexedi.com/kirr/neo/commit/d46afb3e		X neotest: Teach it to also run go & py unit tests; hook it into nxd/runTestSuite
    lab.nexedi.com/kirr/neo/commit/f694d643		X neotest: Don't fail silently if network address detection fails
    lab.nexedi.com/kirr/neo/commit/fa78290a		X neotest: FQDN host name might be not configured
    lab.nexedi.com/kirr/neo/commit/56faccad		X neotest/info-local: Don't crash if a prog could not be found
    lab.nexedi.com/kirr/neo/commit/f2932247		X neotest/info-local: Don't crash if an egg could not be found
    lab.nexedi.com/kirr/neo/commit/f06b7302		X neotest: Determine machine IP addresses via `ip ...` directly, not `getent ...`
    lab.nexedi.com/kirr/neo/commit/42e5fe71		X neotest info
    c12f2991
neotest 8.12 KB