d2be213e86
IHistorianDataSource.TimestampResolutionTicks (default 1; QuestDB 10). A drained tie cluster now steps off T by the resolution, so a forward one-value-per-page read on a microsecond backend no longer re-reads the same sample forever (C1). QuestDB AtTime results carry the client's original request time (M3); regression for the NEXT seek skipping a tombstone (M1). Conformance backend wires the real writer and updater. Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
56 lines
2.1 KiB
C#
56 lines
2.1 KiB
C#
using ZB.MOM.WW.OtOpcUa.Driver.Historian.Conformance;
|
|
using Xunit;
|
|
|
|
namespace ZB.MOM.WW.OtOpcUa.Driver.Historian.QuestDb.IntegrationTests;
|
|
|
|
// One concrete subclass per conformance class: the suite's tests run here against QuestDB.
|
|
|
|
[Collection(QuestDbCollection.Name)]
|
|
public sealed class QuestDbRawReadConformance(QuestDbFixture fx) : RawReadConformance
|
|
{
|
|
/// <inheritdoc/>
|
|
protected override Task<IConformanceBackend> CreateBackendAsync() => QuestDbConformanceBackend.CreateAsync(fx);
|
|
}
|
|
|
|
[Collection(QuestDbCollection.Name)]
|
|
public sealed class QuestDbAtTimeConformance(QuestDbFixture fx) : AtTimeConformance
|
|
{
|
|
/// <inheritdoc/>
|
|
protected override Task<IConformanceBackend> CreateBackendAsync() => QuestDbConformanceBackend.CreateAsync(fx);
|
|
}
|
|
|
|
[Collection(QuestDbCollection.Name)]
|
|
public sealed class QuestDbProcessedConformance(QuestDbFixture fx) : ProcessedConformance
|
|
{
|
|
/// <inheritdoc/>
|
|
protected override Task<IConformanceBackend> CreateBackendAsync() => QuestDbConformanceBackend.CreateAsync(fx);
|
|
}
|
|
|
|
[Collection(QuestDbCollection.Name)]
|
|
public sealed class QuestDbQualityContractConformance(QuestDbFixture fx) : QualityContractConformance
|
|
{
|
|
/// <inheritdoc/>
|
|
protected override Task<IConformanceBackend> CreateBackendAsync() => QuestDbConformanceBackend.CreateAsync(fx);
|
|
}
|
|
|
|
[Collection(QuestDbCollection.Name)]
|
|
public sealed class QuestDbLiveWriteConformance(QuestDbFixture fx) : LiveWriteConformance
|
|
{
|
|
/// <inheritdoc/>
|
|
protected override Task<IConformanceBackend> CreateBackendAsync() => QuestDbConformanceBackend.CreateAsync(fx);
|
|
}
|
|
|
|
[Collection(QuestDbCollection.Name)]
|
|
public sealed class QuestDbUpdateConformance(QuestDbFixture fx) : UpdateConformance
|
|
{
|
|
/// <inheritdoc/>
|
|
protected override Task<IConformanceBackend> CreateBackendAsync() => QuestDbConformanceBackend.CreateAsync(fx);
|
|
}
|
|
|
|
[Collection(QuestDbCollection.Name)]
|
|
public sealed class QuestDbTagNameConformance(QuestDbFixture fx) : TagNameConformance
|
|
{
|
|
/// <inheritdoc/>
|
|
protected override Task<IConformanceBackend> CreateBackendAsync() => QuestDbConformanceBackend.CreateAsync(fx);
|
|
}
|