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

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions