Table of Contents

Class TestExecutionBatchOptimizer

Namespace
Xping.Sdk.Core.Upload
Assembly
Xping.Sdk.Core.dll

Optimizes batches of test executions by deduplicating session context. Preserves session context only at session boundaries while maintaining all unique sessions, reducing payload size significantly for large test runs with one or multiple test sessions.

public static class TestExecutionBatchOptimizer
Inheritance
TestExecutionBatchOptimizer
Inherited Members

Methods

OptimizeForTransport(IEnumerable<TestExecution>)

Optimizes a batch of test executions by deduplicating session context across consecutive executions.

public static IReadOnlyList<TestExecution> OptimizeForTransport(IEnumerable<TestExecution> executions)

Parameters

executions IEnumerable<TestExecution>

The test executions to optimize.

Returns

IReadOnlyList<TestExecution>

Optimized list where only session boundary executions contain session context.

Remarks

This method intelligently handles multiple test sessions within a batch. It preserves session context only at session boundaries (first occurrence of each unique session), while removing duplicate session references for subsequent executions in the same session. This significantly reduces payload size while maintaining all session information.

Example: If executions have sessions [A,A,A,B,B,C,C,C], the optimized result keeps sessions at positions [0,3,5] and nulls the rest, preserving all three unique sessions.

Exceptions

ArgumentNullException

Thrown when executions is null.

RehydrateFromTransport(IEnumerable<TestExecution>)

Rehydrates session context for all executions in a batch after receiving from transport.

public static IReadOnlyList<TestExecution> RehydrateFromTransport(IEnumerable<TestExecution> executions)

Parameters

executions IEnumerable<TestExecution>

The test executions received from transport.

Returns

IReadOnlyList<TestExecution>

List with session context populated for all executions.

Remarks

This method restores session context for all executions by propagating sessions forward from session boundaries. When it encounters an execution with a session context, that session becomes the "current" session and is applied to all subsequent executions until a new session boundary is encountered.

This correctly handles multiple sessions in a batch, ensuring each execution receives the appropriate session context based on the session boundaries preserved during optimization.

Exceptions

ArgumentNullException

Thrown when executions is null.