Skip to content
Tracon

ToolInvocationContract

Namespace Tracon.Testing.Contracts.Storage · Assembly Tracon.Testing.Contracts.Xunit.dll

Behavior tests for the IRunStore tool-invocation contract.

public abstract class ToolInvocationContract : TenantIsolationContract<IRunStore>, IAsyncLifetime, IAsyncDisposable

objectTenantIsolationContract<IRunStore>ToolInvocationContract

IAsyncLifetime, IAsyncDisposable

TenantIsolationContract<IRunStore>.TenantA, TenantIsolationContract<IRunStore>.TenantB, TenantIsolationContract<IRunStore>.CreateStoreAsync(), TenantIsolationContract<IRunStore>.UseAmbientTenant(MutableTenantContext), TenantIsolationContract<IRunStore>.InitializeAsync(), TenantIsolationContract<IRunStore>.DisposeAsync(), TenantIsolationContract<IRunStore>.OnDisposeAsync(), TenantIsolationContract<IRunStore>.SeedAsync(string, string), TenantIsolationContract<IRunStore>.ExistsAsync(string, object), TenantIsolationContract<IRunStore>.CountAsync(string), TenantIsolationContract<IRunStore>.TryDeleteAsync(string, object), TenantIsolationContract<IRunStore>.TryOverwriteAsync(string, string), TenantIsolationContract<IRunStore>.Tenant_cannot_read_another_tenants_record(), TenantIsolationContract<IRunStore>.Tenant_reads_its_own_record(), TenantIsolationContract<IRunStore>.Tenant_does_not_see_another_tenants_record_in_the_list(), TenantIsolationContract<IRunStore>.Tenant_cannot_delete_another_tenants_record(), TenantIsolationContract<IRunStore>.Same_name_lives_independently_across_two_tenants(), TenantIsolationContract<IRunStore>.AmbientTenant, TenantIsolationContract<IRunStore>.Store, object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()

Every implementation must pass the same scenarios; the summary is computed in the store itself, not by fetching rows and aggregating them in memory.

protected ToolInvocationContract()

Reports how many records the given tenant sees through the listing endpoint.

protected override ValueTask<int> CountAsync(string tenantId)

tenantId string

The reading tenant.

ValueTask<int>

The number of records seen.

Reports whether the record is visible from the given tenant’s viewpoint.

protected override ValueTask<bool> ExistsAsync(string tenantId, object key)

tenantId string

The reading tenant.

key object

The key returned by TenantIsolationContract.SeedAsync.

ValueTask<bool>

true if the record is visible.

Failed_invocation_is_counted_as_unsuccessful()

Section titled “ Failed_invocation_is_counted_as_unsuccessful()”
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/ToolInvocationContract.cs", 148)]
public Task Failed_invocation_is_counted_as_unsuccessful()

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/ToolInvocationContract.cs", 44)]
public Task Invocation_fields_round_trip()

Task

Invocation_with_no_reported_usage_comes_back_with_EMPTY_usage()

Section titled “ Invocation_with_no_reported_usage_comes_back_with_EMPTY_usage()”
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/ToolInvocationContract.cs", 117)]
public Task Invocation_with_no_reported_usage_comes_back_with_EMPTY_usage()

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/ToolInvocationContract.cs", 166)]
public Task Invocations_come_back_in_time_order()

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/ToolInvocationContract.cs", 76)]
public Task Non_token_measurement_round_trips()

Task

Writes a sample record for the given tenant.

protected override ValueTask<object> SeedAsync(string tenantId, string name)

tenantId string

The tenant that owns the record.

name string

The name distinguishing the record. The same name may be used by two tenants.

ValueTask<object>

The key to use for reading the record back.

A tool invocation is attached to a run; isolation is established through the run’s tenant.

Summary_does_not_count_another_tenants_invocations()

Section titled “ Summary_does_not_count_another_tenants_invocations()”
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/ToolInvocationContract.cs", 236)]
public Task Summary_does_not_count_another_tenants_invocations()

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/ToolInvocationContract.cs", 188)]
public Task Summary_is_aggregated_per_tool()

Task

Summary_is_ordered_by_call_count_and_limited()

Section titled “ Summary_is_ordered_by_call_count_and_limited()”
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/ToolInvocationContract.cs", 217)]
public Task Summary_is_ordered_by_call_count_and_limited()

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/ToolInvocationContract.cs", 132)]
public Task Unknown_duration_stays_empty()

Task