Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

.Net NEVM: Specification test suite for providers #10194

Open
roji opened this issue Jan 15, 2025 · 2 comments
Open

.Net NEVM: Specification test suite for providers #10194

roji opened this issue Jan 15, 2025 · 2 comments
Assignees
Labels
memory connector memory msft.ext.vectordata Related to Microsoft.Extensions.VectorData .NET Issue or Pull requests regarding .NET code

Comments

@roji
Copy link
Member

roji commented Jan 15, 2025

The current integration tests for NEVM providers are implemented separately for each provider, with no support from the abstraction. To promote better universal coverage and reduce the per-provider work needed, we could expoes a "specification test suite" with the abstraction, which providers implement, and which execute a set of standardized tests to ensure the provider works correctly. A good model here would be the Entity Framework Core specification test suite, which exercises an EF provider in a myriad of ways.

/cc @westey-m

@markwallace-microsoft markwallace-microsoft added .NET Issue or Pull requests regarding .NET code triage labels Jan 15, 2025
@github-actions github-actions bot changed the title .NET NEVM: Specification test suite for providers .Net NEVM: Specification test suite for providers Jan 15, 2025
@markwallace-microsoft markwallace-microsoft added msft.ext.vectordata Related to Microsoft.Extensions.VectorData memory connector memory and removed triage labels Jan 16, 2025
@dmytrostruk
Copy link
Member

dmytrostruk commented Jan 21, 2025

Small note: I already refactored the integration tests for IVectorStore interface to have a single set of tests for each provider:
https://github.com/microsoft/semantic-kernel/blob/main/dotnet/src/IntegrationTests/Connectors/Memory/BaseVectorStoreTests.cs

I tried to do the same with IVectorStoreRecordCollection interface and it appeared that it's more complicated than IVectorStore, since each provider has some limitations (e.g. the requirements for collection/table/field names, supported index kinds, dimensions etc), which makes it harder to unify into a single test suite to cover all methods in that abstraction and all available connectors. At the end, I noticed that I still need to override some test cases for specific connectors to ensure high coverage and this put the idea of a single test suite under the question.

As an alternative solution, we can keep current tests for specific providers to ensure high coverage but add separate set of test cases (maybe basic ones) using abstraction only and enable it for as many connectors as we can.

@roji
Copy link
Member Author

roji commented Jan 22, 2025

@dmytrostruk thanks for the context, yeah, that all makes sense. I plan to take a look at this, will share what i come up with. I agree that it's OK if an implementation needs to have its own tests in addition to the "standard" ones it can get for free - I do hope we'll be able to provide a meaningful set of standard ones, without being prevented from testing too much by differences between the database etc.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
memory connector memory msft.ext.vectordata Related to Microsoft.Extensions.VectorData .NET Issue or Pull requests regarding .NET code
Projects
None yet
Development

No branches or pull requests

3 participants