Conformance Testing Multi-Threaded Software Event Serialization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current techniques for conformance testing of multi-threaded and distributed software systems are inadequate as they cannot directly observe a totally ordered sequence of system actions, making it difficult to validate the behavior of these systems against their specifications.

Innovation Solution

A tool that models system behavior as partially ordered events, generates fully serialized orderings, and multiplexes events from multiple agents into total orderings to facilitate conformance testing without perturbing the system's behavior, using an agent event log creator and multiplexing event serializer to create and validate serialized event listings against a system specification.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If existing conformance testing techniques are applied to multi-threaded and distributed systems, then testing can be performed against specifications, but the techniques cannot directly observe totally ordered sequences of system actions due to concurrent execution

Engineering Contradiction:
Improveconformance testing accuracyVSAvoidobservation of system actions
Core Design Contradiction:
ReliabilityVSDifficulty of detecting and measuring

Solution Approach 1:

The system divides the observation task into segments by creating separate event logs for each thread or agent. Each log captures events in the local temporal order of that specific thread, avoiding the need to observe a global total order directly. This segmentation allows conformance testing to proceed by comparing individual thread behaviors against their respective specifications.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary component that collects and merges event logs from multiple threads into a combined view. This intermediary enables the testing framework to reconstruct potential global orderings from local thread perspectives without requiring direct observation of a total order, thus bridging the gap between concurrent execution and sequential specification verification.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of operation

If serialization is introduced to enable conformance testing, then event ordering can be established for comparison with specifications, but serialization may alter or perturb the original system behavior

Engineering Contradiction:
Improveconformance testing capabilityVSAvoidsystem behavior fidelity
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The system performs preliminary recording of all thread events in their natural execution order before any serialization or reordering occurs. By capturing the complete event sequence from each thread as it naturally happens, the original system behavior is preserved intact. Subsequent serialization operations work on these pre-recorded logs rather than interfering with live system execution.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates copies of event data from the original system execution and stores them in event logs. These copies can then be manipulated, serialized, and compared against specifications without affecting the original system behavior. The testing framework operates on replicated event data rather than the live system state, ensuring fidelity to the original execution.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS7747985B2Conformance testing of multi-threaded and distributed software systems
Publication Date: 2010.06.29 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7747985B2 patent drawing
  • US7747985B2 patent drawing
  • US7747985B2 patent drawing

AI summary

Techniques and tools for testing multi-threaded or distributed software systems are described. For example, a multi-threaded system is instrumented and executed to produce logs of events that are performed by each of its agents. The agent logs contain a totally ordered series of events per agent, as well as information about accesses to resources shared between the agents. With this information, a partial ordering of the events performed by all the agents is described for the execution. The agent logs are then multiplexed into one or more serialized event orderings, which can then be compared to a specification of the system in a conformance testing engine.