Distributed Test Generation Using Logical Timestamp Synchronization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Generating distributed test programs for distributed systems with multiple execution engines poses challenges in ensuring synchronized access to shared resources, leading to non-deterministic states that hinder verification and debugging.

Innovation Solution

A test generation software employs a logical timestamp system to synchronize instructions across execution engines by maintaining up-to-date access histories, ensuring that only the most recent instructions are executed, and using SET and WAIT-AND-CLEAR instructions to manage event synchronization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If distributed test programs execute parallel instructions across multiple execution engines, then test coverage and productivity are improved, but synchronization of shared resources becomes difficult leading to non-deterministic states

Engineering Contradiction:
Improvetest generation efficiencyVSAvoiddeterministic state of shared resources
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system performs preliminary actions by generating logical timestamps and access histories before executing parallel instructions. Each execution engine receives pre-synchronized timestamps that dictate the order of operations, ensuring deterministic state transitions even during parallel execution. This preliminary synchronization prevents race conditions and ensures reliable test results while maintaining high productivity.

Inventive Principle:
Principle #10Preliminary action

2Ease of operation

If manual test crafting is used to mimic real-life operations, then ease of operation is improved, but test coverage is limited to a small fraction of system capabilities

Engineering Contradiction:
Improvetest creation simplicityVSAvoidsystem capability coverage
Core Design Contradiction:
Ease of operationVSAdaptability or versatility

Solution Approach 1:

The system creates simplified models or templates of real-life operations that can be automatically instantiated and varied. Instead of manually crafting each test case, the system generates multiple copies of test patterns with different parameters, covering a broader range of system capabilities while maintaining the operational realism of manual testing. This approach preserves ease of operation through template-based design while dramatically expanding test coverage.

Inventive Principle:
Principle #26Copying

3Adaptability or versatility

If automatic test generation is used to exercise full system capabilities, then test coverage is improved, but complexity of test synchronization increases

Engineering Contradiction:
Improvesystem capability coverageVSAvoidsynchronization mechanism complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The system manages synchronization complexity by dynamically adjusting parameters such as logical timestamps, access histories, and event synchronization points. Rather than implementing a fixed complex synchronization protocol, the system adapts these parameters based on the specific test scenario and system state, enabling full capability coverage with manageable complexity through parameter-driven flexibility.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS11275661B1Test generation of a distributed system
Publication Date: 2022.03.15 AMAZON TECH INC
  • US11275661B1 patent drawing
  • US11275661B1 patent drawing
  • US11275661B1 patent drawing

AI summary

A method of generating instructions to be executed by a plurality of execution engines that shares a resource is provided. The method comprises, in a first generation step: reading a first engine logical timestamp vector of a first execution engine of the execution engines, the logical timestamp representing a history of access operations for the resource; determining whether the first engine logical timestamp vector includes a most-up-to-date logical timestamp of the resource in the first generation step; based on the first engine logical timestamp vector including the most-up-to-date logical timestamp of the resource in the first generation step, generating an access instruction to be executed by the first execution engine to access the resource; and scheduling the first execution engine to execute the access instruction.