Skip to content
Tracon

EvalStoreContract

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

Behavior tests for the IEvalStore contract.

public abstract class EvalStoreContract : TenantIsolationContract<IEvalStore>, IAsyncLifetime, IAsyncDisposable

objectTenantIsolationContract<IEvalStore>EvalStoreContract

IAsyncLifetime, IAsyncDisposable

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

protected EvalStoreContract()
[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 159)]
public Task AddCaseAsync_assigns_seq_atomically()

Task

AddCaseAsync_concurrent_promotions_produce_distinct_seq()

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

Task

AddCaseAsync_does_not_separate_sourceless_cases_from_hand_written_ones()

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

Task

AddCaseAsync_returns_the_existing_case_the_second_time_for_the_same_source_run_id()

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

Task

AddCaseAsync_stores_source_fields_and_expected_fields()

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

Task

Case_result_is_recorded_and_filtered_by_tenant()

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

Task

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.

DeleteSuiteAsync_also_deletes_its_cases_and_runs()

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

Task

DiffRunsAsync_counts_a_case_recorded_twice_once()

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

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 572)]
public Task DiffRunsAsync_observes_cancellation()

Task

DiffRunsAsync_refuses_an_unfinished_run()

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

Task

DiffRunsAsync_refuses_two_runs_of_different_suites()

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

Task

DiffRunsAsync_returns_null_for_an_unknown_run()

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

Task

DiffRunsAsync_returns_null_for_another_tenants_run()

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

Task

DiffRunsAsync_separates_the_six_buckets()

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

Task

DiffRunsAsync_throws_when_retention_removed_only_SOME_of_the_results()

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

Task

DiffRunsAsync_throws_when_the_baseline_details_were_removed_by_retention()

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

Task

DiffRunsAsync_throws_when_the_candidate_details_were_removed_by_retention()

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

Task

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.

GetSuiteAsync_returns_null_for_another_tenant()

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

Task

ListSuitesAsync_returns_only_that_tenant()

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

Task

QueryRunsAsync_filters_by_suite_and_puts_the_newest_first()

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

Task

ReplaceCasesAsync_assigns_sequence_numbers_and_replaces_previous_cases()

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

Task

ReplaceCasesAsync_leaves_parameters_null_for_a_case_that_declares_none()

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

Task

ReplaceCasesAsync_stores_expected_tools_and_context()

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

Task

ReplaceCasesAsync_stores_parameter_values_for_a_parameterized_agent()

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

Task

Run_lifecycle_transitions_from_running_to_completed()

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

Task

[Fact("/Users/farukatasoy/Desktop/projects/Tracon/src/Tracon.Testing.Contracts.Xunit/Contracts/EvalStoreContract.cs", 334)]
public Task Run_reads_do_not_leak_across_tenants()

Task

SaveSuiteAsync_assigns_an_id_to_a_new_suite()

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

Task

SaveSuiteAsync_keeps_the_id_for_the_same_name_and_updates()

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

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.

Attempts to delete the record on behalf of the given tenant.

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

tenantId string

The tenant attempting the delete.

key object

The key returned by TenantIsolationContract.SeedAsync.

ValueTask<bool?>

true if the delete succeeded, false if the record was not found; null if the store does not offer deletion.