Skip to content

Commit d7d933c

Browse files
committed
debezium/dbz#1097 Add Milvus version property and enhance connection validation tests
Signed-off-by: Kartik Angiras <angiraskartik@gmail.com>
1 parent 0375cc8 commit d7d933c

File tree

5 files changed

+125
-8
lines changed

5 files changed

+125
-8
lines changed

debezium-platform-conductor/pom.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
<version.nats>2.17.6</version.nats>
5252
<version.oras>0.1.3</version.oras>
5353
<version.rabbitmq>5.20.0</version.rabbitmq>
54+
<version.milvus>2.6.4</version.milvus>
5455

5556
<format.formatter.goal>format</format.formatter.goal>
5657
<format.imports.goal>sort</format.imports.goal>
@@ -379,7 +380,7 @@
379380
<dependency>
380381
<groupId>io.milvus</groupId>
381382
<artifactId>milvus-sdk-java</artifactId>
382-
<version>2.6.4</version>
383+
<version>${version.milvus}</version>
383384
</dependency>
384385

385386
<dependency>

debezium-platform-conductor/src/main/java/io/debezium/platform/environment/connection/destination/MilvusConnectionValidator.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
* </ul>
3939
* </p>
4040
*
41-
* @author Pranav Tiwari
4241
*/
4342
@ApplicationScoped
4443
@Named("MILVUS")

debezium-platform-conductor/src/main/java/io/debezium/platform/environment/database/MilvusTestResource.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
* </ul>
2929
* </p>
3030
*
31-
* @author Pranav Tiwari
3231
*/
3332
public class MilvusTestResource implements QuarkusTestResourceLifecycleManager {
3433

@@ -62,4 +61,4 @@ public void stop() {
6261
public static GenericContainer<?> getContainer() {
6362
return milvusContainer;
6463
}
65-
}
64+
}

debezium-platform-conductor/src/test/java/io/debezium/platform/environment/connection/MilvusConnectionValidatorIT.java

Lines changed: 121 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
import io.debezium.platform.data.model.ConnectionEntity;
2424
import io.debezium.platform.domain.views.Connection;
2525
import io.debezium.platform.environment.connection.destination.MilvusConnectionValidator;
26-
import io.debezium.platform.environment.database.MilvusTestResource;
2726
import io.quarkus.test.common.QuarkusTestResource;
2827
import io.quarkus.test.junit.QuarkusTest;
2928

@@ -34,7 +33,6 @@
3433
* connection validation against an actual Milvus instance without authentication.
3534
* </p>
3635
*
37-
* @author Pranav Tiwari
3836
*/
3937
@QuarkusTest
4038
@QuarkusTestResource(MilvusTestResource.class)
@@ -62,6 +60,7 @@ void shouldConnectWithoutAuth() {
6260
ConnectionValidationResult result = connectionValidator.validate(connectionConfig);
6361

6462
assertTrue(result.valid(), "Connection validation should succeed");
63+
assertThat(result.message()).doesNotContainIgnoringCase("error", "fail", "invalid");
6564
}
6665

6766
@Test
@@ -84,6 +83,7 @@ void shouldConnectWithDatabase() {
8483
ConnectionValidationResult result = connectionValidator.validate(connectionConfig);
8584

8685
assertTrue(result.valid(), "Connection validation with database should succeed");
86+
assertThat(result.message()).doesNotContainIgnoringCase("error", "fail", "invalid");
8787
}
8888

8989
@Test
@@ -132,4 +132,123 @@ void shouldHandleTimeout() {
132132
assertFalse(result.valid(), "Connection validation should fail");
133133
assertThat(result.message()).containsAnyOf("timeout", "connect", "Connection timeout");
134134
}
135+
136+
@Test
137+
@DisplayName("Should successfully connect with username and password authentication")
138+
void shouldConnectWithUsernamePassword() {
139+
GenericContainer<?> container = MilvusTestResource.getContainer();
140+
141+
Awaitility.await()
142+
.atMost(300, TimeUnit.SECONDS)
143+
.until(container::isRunning);
144+
145+
String uri = String.format("http://%s:%d",
146+
container.getHost(),
147+
container.getMappedPort(19530));
148+
149+
Connection connectionConfig = new TestConnectionView(ConnectionEntity.Type.MILVUS, Map.of(
150+
"uri", uri,
151+
"username", "root",
152+
"password", "milvus"));
153+
154+
ConnectionValidationResult result = connectionValidator.validate(connectionConfig);
155+
156+
assertTrue(result.valid(), "Connection validation with username and password should succeed");
157+
assertThat(result.message()).doesNotContainIgnoringCase("error", "fail", "invalid", "authentication");
158+
}
159+
160+
@Test
161+
@DisplayName("Should successfully connect with token authentication")
162+
void shouldConnectWithTokenAuth() {
163+
GenericContainer<?> container = MilvusTestResource.getContainer();
164+
165+
Awaitility.await()
166+
.atMost(300, TimeUnit.SECONDS)
167+
.until(container::isRunning);
168+
169+
String uri = String.format("http://%s:%d",
170+
container.getHost(),
171+
container.getMappedPort(19530));
172+
173+
Connection connectionConfig = new TestConnectionView(ConnectionEntity.Type.MILVUS, Map.of(
174+
"uri", uri,
175+
"token", "root:milvus"));
176+
177+
ConnectionValidationResult result = connectionValidator.validate(connectionConfig);
178+
179+
assertTrue(result.valid(), "Connection validation with token authentication should succeed");
180+
assertThat(result.message()).doesNotContainIgnoringCase("error", "fail", "invalid", "authentication");
181+
}
182+
183+
@Test
184+
@DisplayName("Should fail with invalid username and password")
185+
void shouldFailWithInvalidCredentials() {
186+
GenericContainer<?> container = MilvusTestResource.getContainer();
187+
188+
Awaitility.await()
189+
.atMost(300, TimeUnit.SECONDS)
190+
.until(container::isRunning);
191+
192+
String uri = String.format("http://%s:%d",
193+
container.getHost(),
194+
container.getMappedPort(19530));
195+
196+
Connection connectionConfig = new TestConnectionView(ConnectionEntity.Type.MILVUS, Map.of(
197+
"uri", uri,
198+
"username", "root",
199+
"password", "wrongpassword"));
200+
201+
ConnectionValidationResult result = connectionValidator.validate(connectionConfig);
202+
203+
assertFalse(result.valid(), "Connection validation with invalid credentials should fail");
204+
assertThat(result.message()).containsAnyOf("authentication", "auth", "permission", "credentials");
205+
}
206+
207+
@Test
208+
@DisplayName("Should fail with invalid token")
209+
void shouldFailWithInvalidToken() {
210+
GenericContainer<?> container = MilvusTestResource.getContainer();
211+
212+
Awaitility.await()
213+
.atMost(300, TimeUnit.SECONDS)
214+
.until(container::isRunning);
215+
216+
String uri = String.format("http://%s:%d",
217+
container.getHost(),
218+
container.getMappedPort(19530));
219+
220+
Connection connectionConfig = new TestConnectionView(ConnectionEntity.Type.MILVUS, Map.of(
221+
"uri", uri,
222+
"token", "root:invalidtoken"));
223+
224+
ConnectionValidationResult result = connectionValidator.validate(connectionConfig);
225+
226+
assertFalse(result.valid(), "Connection validation with invalid token should fail");
227+
assertThat(result.message()).containsAnyOf("authentication", "auth", "permission", "credentials");
228+
}
229+
230+
@Test
231+
@DisplayName("Should successfully connect with all parameters including authentication")
232+
void shouldConnectWithAllParams() {
233+
GenericContainer<?> container = MilvusTestResource.getContainer();
234+
235+
Awaitility.await()
236+
.atMost(300, TimeUnit.SECONDS)
237+
.until(container::isRunning);
238+
239+
String uri = String.format("http://%s:%d",
240+
container.getHost(),
241+
container.getMappedPort(19530));
242+
243+
Connection connectionConfig = new TestConnectionView(ConnectionEntity.Type.MILVUS, Map.of(
244+
"uri", uri,
245+
"database", "default",
246+
"username", "root",
247+
"password", "milvus"));
248+
249+
ConnectionValidationResult result = connectionValidator.validate(connectionConfig);
250+
251+
assertTrue(result.valid(), "Connection validation with all parameters should succeed");
252+
assertThat(result.message()).doesNotContainIgnoringCase("error", "fail", "invalid", "authentication");
253+
}
135254
}

debezium-platform-conductor/src/test/java/io/debezium/platform/environment/connection/MilvusConnectionValidatorTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
* and edge cases in the validator implementation.
2929
* </p>
3030
*
31-
* @author Pranav Tiwari
3231
*/
3332
class MilvusConnectionValidatorTest {
3433

@@ -85,7 +84,7 @@ void shouldFailWhenUriIsWhitespace() {
8584
@Test
8685
@DisplayName("Should fail validation when URI doesn't start with http:// or https://")
8786
void shouldFailWhenUriHasInvalidProtocol() {
88-
Connection connectionConfig = new TestConnectionView(ConnectionEntity.Type.MILVUS,
87+
Connection connectionConfig = new TestConnectionView(ConnectionEntity.Type.MILVUS,
8988
Map.of("uri", "localhost:19530"));
9089

9190
ConnectionValidationResult result = connectionValidator.validate(connectionConfig);

0 commit comments

Comments
 (0)