Skip to content

Step tree seems not correct in multithreaded testing #872

@SalHe

Description

@SalHe

I'm submitting a ...

  • bug report
  • feature request
  • support request => Please do not submit support request here, see note at the top of this template.

What is the current behavior?

When Thead#entrance spawned Thread#node, Thread#node spawned Thread#session, step tree of allure seems incorrect?

Image

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem

from concurrent.futures import ThreadPoolExecutor
import allure


def session_on_node(node_id, session):
    with allure.step(f"Session#{session} on node {node_id}"):
        pass


def parallel_task_for_specific_node(node_id):
    with allure.step(f"Parallel task for node {node_id}"):
        with ThreadPoolExecutor() as executor:
            for session in range(5):
                executor.submit(session_on_node, node_id, session)

            executor.shutdown(wait=True)


def test_multithreaded():
    with allure.step("Entrance"):
        with ThreadPoolExecutor() as executor:
            for node_id in range(3):
                executor.submit(parallel_task_for_specific_node, node_id)

            executor.shutdown(wait=True)

What is the expected behavior?

step tree should be like this?

Thread#entrance
        - Thread#node
                - Thread#session
                - Thread#session
                - Thread#session
        - Thread#node
                - Thread#session
                - Thread#session
                - Thread#session

What is the motivation / use case for changing the behavior?

There is a service combined of multiple nodes. Every node could handle several sessions from client.
Sometimes, parallel testing is needed: Multi sessions for multi nodes, which means main thread is to spawn threads of different node, thread of a single node is to spawn different threads of multiple session, and finally we collect every step and organize them in a friendly tree.

Please tell us about your environment:

  • Allure version: 2.32.0
  • Test framework: pytest@7.4.4
  • Allure adaptor: allure-pytest@2.13.5

Other information

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions