-
Notifications
You must be signed in to change notification settings - Fork 51
/
Copy pathbuilder_coverage.rs
86 lines (84 loc) · 5.24 KB
/
builder_coverage.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
use std::collections::HashMap;
use qdrant_client::qdrant::{
AbortShardTransferBuilder, BinaryQuantizationBuilder, ClearPayloadPointsBuilder,
ContextInputBuilder, ContextInputPairBuilder, CountPointsBuilder, CreateAliasBuilder,
CreateFieldIndexCollectionBuilder, CreateShardKeyRequestBuilder, DeleteCollectionBuilder,
DeleteFieldIndexCollectionBuilder, DeletePayloadPointsBuilder, DeletePointVectorsBuilder,
DeletePointsBuilder, DeleteShardKeyRequestBuilder, DeleteSnapshotRequestBuilder,
DiscoverBatchPointsBuilder, DiscoverInputBuilder, DiscoverPointsBuilder, Distance,
FacetCountsBuilder, FieldType, GetPointsBuilder, LookupLocationBuilder, MoveShardBuilder,
MultiVectorComparator, MultiVectorConfigBuilder, OrderByBuilder, ProductQuantizationBuilder,
QueryBatchPointsBuilder, QueryPointGroupsBuilder, QueryPointsBuilder,
RecommendBatchPointsBuilder, RecommendPointGroupsBuilder, RecommendPointsBuilder,
RenameAliasBuilder, ReplicaBuilder, ReplicateShardBuilder, ScrollPointsBuilder,
SearchBatchPointsBuilder, SearchMatrixPointsBuilder, SearchPointGroupsBuilder,
SearchPointsBuilder, SetPayloadPointsBuilder, TextIndexParamsBuilder, TokenizerType,
UpdateBatchPointsBuilder, UpdateCollectionBuilder, UpdateCollectionClusterSetupRequestBuilder,
UpdatePointVectorsBuilder, UpsertPointsBuilder, VectorParamsBuilder, WithLookupBuilder,
};
/// TLDR; Ensures new fields introduced in protobuf updates won't cause a panic at runtime due to missing derive_builder attributes.
///
/// Builder with required fields may lack coverage for all required fields in their custom constructor.
/// This can happen if a new (even optional) field gets introduced in an API update. Those fields need to be
/// explicitly set to 'default' using the #[builder(default)] attribute. However this can easily be forgotten
/// when updating the clients protobuf types. This test covers all builder with required parameters in order
/// to catch new fields lacking the above described field attribute.
/// Simply calling build() is sufficient as derive_builder will fail on unset fields without #[builder(default)].
///
/// Builder without any required fields will throw a compiler error due to the 'error = "std::convert::Infallible"'
/// builder config. For this reason testing them is not needed.
#[test]
fn builder_coverage() {
VectorParamsBuilder::new(1, Distance::Cosine).build();
ProductQuantizationBuilder::new(1).build();
BinaryQuantizationBuilder::new(true).build();
SearchPointsBuilder::new("my_collection", [11.; 5], 3).build();
UpdateCollectionBuilder::new("my_collection").build();
SetPayloadPointsBuilder::new("my_collection", HashMap::default()).build();
UpdateBatchPointsBuilder::new("my_collection", []).build();
DeletePayloadPointsBuilder::new("my_collection", []).build();
ClearPayloadPointsBuilder::new("my_collection").build();
GetPointsBuilder::new("my_collection", []).build();
SearchBatchPointsBuilder::new("my_collection", []).build();
SearchPointGroupsBuilder::new("my_collection", [11.; 5], 10, "mygroup", 5).build();
WithLookupBuilder::new("my_collection").build();
DeletePointsBuilder::new("my_collection").build();
DeletePointVectorsBuilder::new("my_collection").build();
UpdatePointVectorsBuilder::new("my_collection", []).build();
ScrollPointsBuilder::new("my_collection").build();
OrderByBuilder::new("key").build();
RecommendPointsBuilder::new("my_collection", 10).build();
LookupLocationBuilder::new("my_collection").build();
RecommendBatchPointsBuilder::new("my_collection", []).build();
RecommendPointGroupsBuilder::new("my_collection", "group", 10, 10).build();
DiscoverPointsBuilder::new("my_collection", [], 10).build();
DiscoverBatchPointsBuilder::new("my_collection", []).build();
CountPointsBuilder::new("my_collection").build();
UpsertPointsBuilder::new("my_collection", []).build();
CreateFieldIndexCollectionBuilder::new("my_collection", " myfield", FieldType::Integer).build();
DeleteFieldIndexCollectionBuilder::new("my_collection", " myfield").build();
UpdateCollectionClusterSetupRequestBuilder::new(
"my_collection",
MoveShardBuilder::new(0, 0, 0),
)
.build();
MoveShardBuilder::new(0, 0, 0).build();
ReplicateShardBuilder::new(0, 0, 0).build();
ReplicaBuilder::new(0, 0).build();
AbortShardTransferBuilder::new(0, 0, 0).build();
CreateShardKeyRequestBuilder::new("my_collection").build();
DeleteShardKeyRequestBuilder::new("my_collection").build();
DeleteCollectionBuilder::new("my_collection").build();
TextIndexParamsBuilder::new(TokenizerType::Word).build();
CreateAliasBuilder::new("", "").build();
RenameAliasBuilder::new("", "").build();
QueryPointsBuilder::new("my_collection").build();
QueryBatchPointsBuilder::new("my_collection", []).build();
DeleteSnapshotRequestBuilder::new("my_collection", "snapshot").build();
ContextInputPairBuilder::new(vec![1.0], vec![2.0]).build();
DiscoverInputBuilder::new(vec![1.0], ContextInputBuilder::default()).build();
MultiVectorConfigBuilder::new(MultiVectorComparator::MaxSim).build();
QueryPointGroupsBuilder::new("", "").build();
FacetCountsBuilder::new("", "").build();
SearchMatrixPointsBuilder::new("").build();
}