Skip to content

test: almost entirely refactor pytest

Yaroslav Dynnikov requested to merge 59-pytest into master

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().

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 #59 (closed)

Edited by Yaroslav Dynnikov

Merge request reports