Skip to content
Snippets Groups Projects
Commit 1a3b5233 authored by Yaroslav Dynnikov's avatar Yaroslav Dynnikov
Browse files

test: almost entirely refactor pytest

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
parent 5447da4f
No related branches found
No related tags found
1 merge request!83test: almost entirely refactor pytest
Pipeline #4476 passed
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment