29
29
namespace milvus {
30
30
namespace test {
31
31
32
- inline void
33
- waitMilvusServerReady (const PythonMilvusServer& server) {
34
- int max_retry = 60 , retry = 0 ;
35
- bool has;
36
-
37
- auto client = milvus::MilvusClient::Create ();
38
- auto param = server.TestClientParam ();
39
- client->Connect (*param);
40
- auto status = client->HasCollection (" no_such" , has);
41
-
42
- while (!status.IsOk () && retry++ < max_retry) {
43
- std::this_thread::sleep_for (std::chrono::seconds{5 });
44
- client = milvus::MilvusClient::Create ();
45
- client->Connect (*param);
46
- status = client->HasCollection (" no_such" , has);
47
- std::cout << " Wait milvus start done, try: " << retry << " , status: " << status.Message () << std::endl;
48
- }
49
- std::cout << " Wait milvus start done, status: " << status.Message () << std::endl;
50
- }
51
-
52
- class MilvusServerTest : public ::testing::Test {
53
- protected:
32
+ class MilvusServerClientPair {
33
+ private:
54
34
PythonMilvusServer server_{};
55
35
std::shared_ptr<milvus::MilvusClient> client_{nullptr };
56
36
37
+ public:
38
+ std::string collection_name{" Foo" };
39
+ std::string partition_name{" Bar" };
40
+
57
41
void
58
- SetUp () override {
42
+ startServer () {
59
43
server_.Start ();
60
44
client_ = milvus::MilvusClient::Create ();
61
- waitMilvusServerReady (server_);
45
+ waitMilvusServerReady ();
46
+ }
47
+
48
+ PythonMilvusServer&
49
+ server () {
50
+ return server_;
51
+ }
52
+
53
+ milvus::MilvusClient&
54
+ client () {
55
+ return *client_;
56
+ }
57
+
58
+ void
59
+ waitMilvusServerReady () {
60
+ int max_retry = 60 , retry = 0 ;
61
+ bool has;
62
+
63
+ auto client = milvus::MilvusClient::Create ();
64
+ auto param = server_.TestClientParam ();
65
+ client->Connect (*param);
66
+ auto status = client->HasCollection (" no_such" , has);
67
+
68
+ while (!status.IsOk () && retry++ < max_retry) {
69
+ std::this_thread::sleep_for (std::chrono::seconds{5 });
70
+ client = milvus::MilvusClient::Create ();
71
+ client->Connect (*param);
72
+ status = client->HasCollection (" no_such" , has);
73
+ std::cout << " Wait milvus start done, try: " << retry << " , status: " << status.Message () << std::endl;
74
+ }
75
+ std::cout << " Wait milvus start done, status: " << status.Message () << std::endl;
76
+ }
77
+
78
+ void
79
+ createBinaryCollectionAndPartitions () {
80
+ milvus::CollectionSchema collection_schema (collection_name);
81
+ collection_schema.AddField (milvus::FieldSchema (" id" , milvus::DataType::INT64, " id" , true , true ));
82
+ collection_schema.AddField (milvus::FieldSchema (" age" , milvus::DataType::INT16, " age" ));
83
+ collection_schema.AddField (
84
+ milvus::FieldSchema (" face" , milvus::DataType::BINARY_VECTOR, " face signature" ).WithDimension (32 ));
85
+
86
+ auto status = client_->CreateCollection (collection_schema);
87
+ EXPECT_EQ (status.Message (), " OK" );
88
+ EXPECT_TRUE (status.IsOk ());
89
+
90
+ status = client_->CreatePartition (collection_name, partition_name);
91
+ EXPECT_EQ (status.Message (), " OK" );
92
+ EXPECT_TRUE (status.IsOk ());
93
+ }
94
+
95
+ void
96
+ createCollectionAndPartitions (bool create_flat_index) {
97
+ milvus::CollectionSchema collection_schema (collection_name);
98
+ collection_schema.AddField (milvus::FieldSchema (" id" , milvus::DataType::INT64, " id" , true , true ));
99
+ collection_schema.AddField (milvus::FieldSchema (" age" , milvus::DataType::INT16, " age" ));
100
+ collection_schema.AddField (milvus::FieldSchema (" name" , milvus::DataType::VARCHAR, " name" ).WithMaxLength (64 ));
101
+ collection_schema.AddField (
102
+ milvus::FieldSchema (" face" , milvus::DataType::FLOAT_VECTOR, " face signature" ).WithDimension (4 ));
103
+
104
+ auto status = client_->CreateCollection (collection_schema);
105
+ EXPECT_EQ (status.Message (), " OK" );
106
+ EXPECT_TRUE (status.IsOk ());
107
+
108
+ if (create_flat_index) {
109
+ milvus::IndexDesc index_desc (" face" , " " , milvus::IndexType::FLAT, milvus::MetricType::L2, 0 );
110
+ status = client_->CreateIndex (collection_name, index_desc);
111
+ EXPECT_EQ (status.Message (), " OK" );
112
+ EXPECT_TRUE (status.IsOk ());
113
+ }
114
+
115
+ status = client_->CreatePartition (collection_name, partition_name);
116
+ EXPECT_EQ (status.Message (), " OK" );
117
+ EXPECT_TRUE (status.IsOk ());
118
+ }
119
+
120
+ milvus::DmlResults
121
+ insertRecords (const std::vector<milvus::FieldDataPtr>& fields) {
122
+ milvus::DmlResults dml_results;
123
+ auto status = client_->Insert (collection_name, partition_name, fields, dml_results);
124
+ EXPECT_EQ (status.Message (), " OK" );
125
+ EXPECT_TRUE (status.IsOk ());
126
+ EXPECT_EQ (dml_results.IdArray ().IntIDArray ().size (), fields.front ()->Count ());
127
+ return dml_results;
128
+ }
129
+
130
+ void
131
+ loadCollection () {
132
+ auto status = client_->LoadCollection (collection_name);
133
+ EXPECT_EQ (status.Message (), " OK" );
134
+ EXPECT_TRUE (status.IsOk ());
135
+ }
136
+
137
+ void
138
+ dropCollection () {
139
+ auto status = client_->DropCollection (collection_name);
140
+ EXPECT_TRUE (status.IsOk ());
141
+ }
142
+ };
143
+
144
+ class MilvusServerTest : public ::testing::Test, public MilvusServerClientPair {
145
+ protected:
146
+ void
147
+ SetUp () override {
148
+ startServer ();
62
149
}
63
150
64
151
void
@@ -67,21 +154,17 @@ class MilvusServerTest : public ::testing::Test {
67
154
};
68
155
69
156
template <typename T>
70
- class MilvusServerTestWithParam : public ::testing::TestWithParam<T> {
157
+ class MilvusServerTestWithParam : public ::testing::TestWithParam<T>, public MilvusServerClientPair {
71
158
protected:
72
- PythonMilvusServer server_{};
73
- std::shared_ptr<milvus::MilvusClient> client_{nullptr };
74
-
75
159
void
76
160
SetUp () override {
77
- server_.Start ();
78
- client_ = milvus::MilvusClient::Create ();
79
- waitMilvusServerReady (server_);
161
+ startServer ();
80
162
}
81
163
82
164
void
83
165
TearDown () override {
84
166
}
85
167
};
168
+
86
169
} // namespace test
87
170
} // namespace milvus
0 commit comments