Changeset 11064 in ntrip


Ignore:
Timestamp:
Oct 2, 2026, 1:53:41 PM (4 hours ago)
Author:
stuerze
Message:

test suite description is added

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bnchelp.html

    r11061 r11064  
    9797    &nbsp; &nbsp; &nbsp; 1.6 <a href="#introConf">Configuration</a><br>
    9898    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1.6.1 <a href="#introExamples">Examples</a><br>
     99    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1.6.2 <a href="#introTests">Regression Test Suite</a><br>
    99100    &nbsp; &nbsp; &nbsp; 1.7 <a href="#introLimit">Limitations</a><br>
    100101    &nbsp; &nbsp; &nbsp; 1.8 <a href="#introLBack">Looking Back</a><br><br>
    … …  
    23062307    </li>
    23072308  </ol>
     2309  </p>
     2310
     2311  <p>
     2312  <h4 id="introTests">1.6.2 Regression Test Suite</h4>
     2313  </p>
     2314  <p>
     2315    The source code distribution contains in directory 'tests' a regression test suite which is based on the
     2316    configuration examples described above. It runs BNC headless ('--nw') on fixed input data and compares the
     2317    output files with stored reference outputs. Hence, it shows whether a modification of the source code changes
     2318    BNC's results - intended or not. No network access is needed: real-time examples are tested by replaying short
     2319    raw captures of real streams ('--file' option, see section 'Raw Output File'), uploads are received by a local
     2320    fake Ntrip caster. The test suite requires Python 3; it is intended for developers and is not needed to operate
     2321    BNC.
     2322  </p>
     2323  <p>
     2324    <b>Usage</b><br>
     2325    Compile BNC first, the test suite uses the program './bnc' in the BNC root directory. Then call from that
     2326    directory:
     2327  </p>
     2328  <pre>
     2329tests/run_tests.py                   # run all test cases in parallel
     2330tests/run_tests.py ssr_ rinex_qc     # run only cases whose name contains one of the patterns
     2331tests/run_tests.py --list            # list all cases with a short description
     2332tests/run_tests.py -j 4              # number of cases run in parallel (default: number of CPUs)
     2333tests/run_tests.py --bnc /path/bnc   # test another BNC binary
     2334tests/run_tests.py --update NAME     # accept the current outputs of case NAME as new reference
     2335</pre>
     2336  <p>
     2337    Each case is reported as PASS, FAIL or SKIP; the exit code is 1 if a case failed. For a failed case the first
     2338    differing lines are printed. The full difference is saved in 'tests/work/&lt;case&gt;/&lt;output&gt;.diff' and
     2339    the exact BNC command line in 'tests/work/&lt;case&gt;/command.txt', so that the run can be repeated by hand.
     2340    Each case runs in its own directory 'tests/work/&lt;case&gt;' which contains a link 'Input' to
     2341    'Example_Configs/Input' and an empty directory 'Output'. Thus the example configurations are used unchanged and
     2342    nothing is written into 'Example_Configs'.
     2343  </p>
     2344  <p>
     2345    Before comparing, contents that change with each run or BNC version are removed: wall-clock time stamps of
     2346    logfile lines, 'Start BNC' lines, the BNC version string, the RINEX header line 'PGM / RUN BY / DATE' and the
     2347    'Run by' and 'Date' lines of QC logfiles. Replays in batch mode are reproducible from run to run, including PPP
     2348    with ambiguity resolution; hence most outputs are compared exactly.
     2349  </p>
     2350  <p>
     2351    <b>Test cases</b><br>
     2352    The test cases cover:
     2353  </p>
     2354  <ul>
     2355    <li>File-based examples (RINEX concatenation, RINEX QC, RINEX editing with elevation mask, SP3 comparison, PPP
     2356      in post-processing mode and with plots), partly also as command line variants.</li>
     2357    <li>Stream replays of real-time examples: RINEX observation and navigation files, Feed Engine, SP3/Clock RINEX
     2358      files from broadcast corrections (also Galileo HAS).</li>
     2359    <li>Real-time PPP: float, Quick-Start, ambiguity resolution with CNES and WHU corrections, two stations, Galileo
     2360      HAS.</li>
     2361    <li>Combination of broadcast corrections, also with PPP using the combined corrections ('INTERNAL').</li>
     2362    <li>Upload of broadcast corrections (encoded as IGS-SSR), of broadcast ephemerides and of raw streams to a local
     2363      fake caster; the received streams are decoded again.</li>
     2364    <li>Decoding of SSR streams in IGS-SSR and RTCM-SSR format; besides the decoded corrections files the decoder
     2365      trace on stderr is compared, if BNC is compiled with debug option 'BNC_DEBUG_SSR'.</li>
     2366  </ul>
     2367  <p>
     2368    <b>Accepting changes and adding cases</b><br>
     2369    If a modification changes the results intentionally, the reference outputs of the affected cases are updated
     2370    with option '--update'. Check the differences carefully before: a reference output records what BNC does, not
     2371    what is correct. A new case is a directory 'tests/cases/&lt;name&gt;' with a file 'case.json' (configuration
     2372    file, raw capture, additional command line options, expected exit code and output files to compare; the format
     2373    is documented in the header of 'run_tests.py') and the reference outputs in sub-directory 'expected'. Short raw
     2374    captures for replay cases can be prepared with the tool 'tests/tools/bncraw.py':
     2375  </p>
     2376  <pre>
     2377tests/tools/bncraw.py info capture.raw        # streams, time span and RTCM3 message types
     2378tests/tools/bncraw.py slice capture.raw tests/data/new.raw --stations SSRA00CNE1,BCEP00BKG0 \
     2379                      --start 2026-09-30T14:00:00 --end 2026-09-30T14:03:00
     2380tests/run_tests.py --update new
     2381</pre>
     2382  <p>
     2383    Raw captures are recorded by BNC itself with option 'Raw Output File'. Further details are given in
     2384    'tests/README.md'.
    23082385  </p>
    23092386
Note: See TracChangeset for help on using the changeset viewer.