Mock Framework Thread Actor Segmentation for Multi-Threaded Testing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing mock frameworks struggle to efficiently perform unit tests on multi-threaded applications, as they cannot effectively report failures across spawned threads and do not support defining thread-specific tests or expectations.

Innovation Solution

The LMock framework identifies threads through actors or roles, associates errors with these entities, and shares them across threads, enabling efficient mock testing in multi-threaded environments by tying threads to actors and roles, and ensuring that errors are properly reported and handled.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If current mock frameworks are used for multi-threaded applications, then testing can be performed on single-threaded code, but the frameworks cannot efficiently report failures across spawned threads or define thread-specific tests

Engineering Contradiction:
Improvesupport for multi-threaded applicationsVSAvoidfailure reporting accuracy
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent segments the testing framework by introducing thread-specific actors that can be independently associated with different threads. Each actor can be linked to a specific thread through the `threadChecker`, allowing independent tracking and reporting of failures for each thread. This segmentation enables the framework to handle multi-threaded applications while maintaining reliable failure reporting for each thread.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a `threadChecker` as an intermediary component that mediates between threads and actors. The threadChecker verifies that a thread matches the expected thread criteria before allowing the actor to be associated with it. This intermediary mechanism enables reliable thread-specific test definition and failure reporting without requiring direct thread-to-actor mapping, solving the reliability issue in multi-threaded environments.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If the main thread runs testing code that spawns other threads, then multi-threaded functionality can be tested, but exceptions thrown in spawned threads cannot be caught and reported by the main thread

Engineering Contradiction:
Improvetesting capability for multi-threaded codeVSAvoidfailure information from spawned threads
Core Design Contradiction:
ProductivityVSLoss of information

Solution Approach 1:

The patent implements a feedback mechanism where actors associated with threads provide feedback about their execution state and failures back to the main thread. When a thread executes an actor, the actor's results (including failures) are fed back to the main thread through the actor's `execute` method, which returns execution results that can be captured and reported. This feedback loop enables the main thread to receive and report on failures from spawned threads.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The patent enables threads to self-report their own failures through the actor execution mechanism. When a thread executes an actor, any failures thrown during execution are automatically captured and returned through the actor's execution result, allowing the thread to essentially report its own state back to the main thread without requiring explicit error handling code in the tested code itself.

Inventive Principle:
Principle #25Self-service

3Ease of operation

If current mocking frameworks provide stubs and expectations, then single-threaded testing can be defined, but thread-specific stubs or expectations cannot be defined

Engineering Contradiction:
Improvedefinition of stubs and expectationsVSAvoidthread-specific test definition
Core Design Contradiction:
Ease of operationVSAdaptability or versatility

Solution Approach 1:

The patent segments the stubs and expectations mechanism by associating them with specific actors that are linked to specific threads. Instead of defining thread-independent stubs, the framework allows definition of thread-specific stubs through thread-specific actors. Each actor can have its own stubs and expectations that are specific to the thread it represents, enabling fine-grained control over thread-specific behavior while maintaining ease of operation through the same familiar stubs/expectations syntax.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9158665B2Unit test of multi-threaded object-oriented applications using mocks
Publication Date: 2015.10.13 VMWARE INC
  • US9158665B2 patent drawing
  • US9158665B2 patent drawing
  • US9158665B2 patent drawing

AI summary

One embodiment of the present invention provides a system that facilitates testing a multi-threaded software application. During operation, the system, in response to invocation of a mock object, identifies a thread and determines whether the identified thread matches a description associated with an actor. The system, in response to the identified thread matching the description associated with the actor, evaluates whether an expectation is met or a stub is executed and returns a value based on the evaluation. In some embodiments, the expectation and the stub are expressed based on a role, wherein the role includes the actor and, optionally, one or more additional actors.