Skip to content
Snippets Groups Projects
  1. May 23, 2022
    • Yaroslav Dynnikov's avatar
      fix: test running on macos · 46eaf810
      Yaroslav Dynnikov authored
      Pytest supports running tests in parallel using the `xdist` plugin. In
      order to support it in Picodata, one should avoid ports collision. It
      assigns each worker a dedicated IP address `127.7.n.1`, where
      `n = xdist_worker_number`. Unfortunately, it doesn't work on MacOS,
      because Mac doesn't provide any loopback aliases except `127.0.0.1`
      by default.
      
      This patch provides another address generation logics. The `subnet`
      parameter is superseeded with a `base_port`, that is `3300 + n * 100`.
      In this way, every pytest (xdist) worker gets a dedicated port range
      `[3301, 3399]`, `[3401, 3499]` and so on.
      
      Close https://git.picodata.io/picodata/picodata/picodata/-/issues/65
      46eaf810
  2. May 17, 2022
  3. May 13, 2022
  4. May 12, 2022
  5. May 11, 2022
    • Yaroslav Dynnikov's avatar
      test: arrange pytest logging · 71d5bb1f
      Yaroslav Dynnikov authored
      1. Print logs to the stderr so that they interleave with tarantool logs.
      2. Fix `cluster.__repr__()`.
      71d5bb1f
    • Yaroslav Dynnikov's avatar
      test: almost entirely refactor pytest · 1a3b5233
      Yaroslav Dynnikov authored
      In `conftest.py`:
      
        - *Add* function `xdist_worker_number`. It converts `str(worker_id)` into `int`.
          It serves as a substitute for `session_data_mutex` for parallel test runs.
      
        - *Change* `normalize_net_box_result`. Replace a function with a decorator. Also,
          handle typical kinds of picodata responses. Extensively test it in
          `test_basics.py::test_eval/call_normalization`.
      
        - *Add* dataclass `RaftStatus`. It shouldn't be used outside `conftest.py`. It only makes
          assertions more brief in logs and understndable in code.
      
        - *Add* all raft stuff into the `Instance` class. This implies `raft_propose_eval`,
          `assert_raft_status` all `promote_or_fail` moved from `util.py`.
      
        - *Change* fixture `compile`. No need in extra logics since commit 59c31cb8.
      
        - *Preserve* fixture `binary_path`.
      
        - *Remove* fixtures `session_data_mutex` and `run_id`. Superseded with `xdist_worker_number`.
      
        - *Remove* fixtures `run_cluster` and `run_instance`. Superseded with `cluster.deploy(...)`.
      
        - *Remove* function `wait_tcp_port`. It's never enough to check raw socket. Superseded with
          `instance.wait_ready()`.
      
        - Give the instances clean names `i1, i2, ...`, and simple addresses `127.7.0.1:3301`.
          For the parallel test run use different IPs `127.7.N.1` etc.
      
      In `test_basics.py`:
      
        - *Add* `test_xdist_worker_number`.
      
        - *Add* `test_call_normalization` and `test_eval_normalization`.
      
        - *Add* `test_process_management`. It's brand new, never implemented in luatest before.
      
        - *Rename* `test_single_instance_raft_eval` to `test_propose_eval` and extend it with additional
          assertion from `single_test.lua`.
      
        - *Remove* `test_instance`. A part of its logics is moved to `test_call/eval_normalization`. The
          other part is rewritten and extended in `test_process_management`.
      
        - *Remove* `test_cluster`. It was completely useless because of inappropriate synchronization and
          no valuable assertions.
      
        - *Remove* `test_propose_eval`. It wasn't that useful, but failed because of inappropriate
          synchronization.
      
      In `test_couple.py`:
      
        - *Preserve* `test_follower_proposal` and `test_failover`. Just slightly refactor according to the
          new `conftest.py` API.
      
      In `util.py` (completely removed):
      
        - *Remove* decorator `retry`. Needless.
      
        - *Remove* decorator `retry_on_network_errors`. Inappropriate predicate didn't catch Lua errors.
      
        - *Remove* everything related to raft. Move it into `conftest.py`.
      
      Part of https://git.picodata.io/picodata/picodata/picodata/-/issues/59
      1a3b5233
  6. Apr 28, 2022
Loading