Skip to content

Commit 48123e1

Browse files
authored
[FEATURE] Improve test coverage for MLHttpClientFactory.java (#3644)
* [FEATURE] Improve test coverage for MLHttpClientFactory.java Improved the test coverage by adding edge cases. The if check (bytes.length != 4) is an unreachable code, Inet4Address always will have array of 4 bytes address. Resolves #1379 Signed-off-by: Abdul Muneer Kolarkunnu <[email protected]> * [FEATURE] Improve test coverage for MLHttpClientFactory.java Improved the test coverage by adding edge cases. The if check (bytes.length != 4) is an unreachable code, Inet4Address always will have array of 4 bytes address. Resolves #1379 Signed-off-by: Abdul Muneer Kolarkunnu <[email protected]> * [FEATURE] Improve test coverage for MLHttpClientFactory.java Improved the test coverage by adding edge cases. The if check (bytes.length != 4) is an unreachable code, Inet4Address always will have array of 4 bytes address. Resolves #1379 Signed-off-by: Abdul Muneer Kolarkunnu <[email protected]> --------- Signed-off-by: Abdul Muneer Kolarkunnu <[email protected]>
1 parent a381e10 commit 48123e1

File tree

1 file changed

+64
-22
lines changed

1 file changed

+64
-22
lines changed

ml-algorithms/src/test/java/org/opensearch/ml/engine/httpclient/MLHttpClientFactoryTests.java

+64-22
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818

1919
public class MLHttpClientFactoryTests {
2020

21+
private static final String TEST_HOST = "api.openai.com";
22+
private static final String HTTP = "http";
23+
private static final String HTTPS = "https";
24+
private static final AtomicBoolean PRIVATE_IP_DISABLED = new AtomicBoolean(false);
25+
private static final AtomicBoolean PRIVATE_IP_ENABLED = new AtomicBoolean(true);
26+
2127
@Rule
2228
public ExpectedException expectedException = ExpectedException.none();
2329

@@ -29,84 +35,120 @@ public void test_getSdkAsyncHttpClient_success() {
2935

3036
@Test
3137
public void test_validateIp_validIp_noException() throws Exception {
32-
AtomicBoolean privateIpEnabled = new AtomicBoolean(false);
33-
MLHttpClientFactory.validate("http", "api.openai.com", 80, privateIpEnabled);
38+
MLHttpClientFactory.validate(HTTP, TEST_HOST, 80, PRIVATE_IP_DISABLED);
39+
MLHttpClientFactory.validate(HTTPS, TEST_HOST, 443, PRIVATE_IP_DISABLED);
40+
MLHttpClientFactory.validate(HTTP, "127.0.0.1", 80, PRIVATE_IP_ENABLED);
41+
MLHttpClientFactory.validate(HTTPS, "127.0.0.1", 443, PRIVATE_IP_ENABLED);
42+
MLHttpClientFactory.validate(HTTP, "177.16.0.1", 80, PRIVATE_IP_DISABLED);
43+
MLHttpClientFactory.validate(HTTP, "177.0.1.1", 80, PRIVATE_IP_DISABLED);
44+
MLHttpClientFactory.validate(HTTP, "177.0.0.2", 80, PRIVATE_IP_DISABLED);
45+
MLHttpClientFactory.validate(HTTP, "::ffff", 80, PRIVATE_IP_DISABLED);
3446
}
3547

3648
@Test
3749
public void test_validateIp_rarePrivateIp_throwException() throws Exception {
38-
AtomicBoolean privateIpEnabled = new AtomicBoolean(false);
3950
try {
40-
MLHttpClientFactory.validate("http", "0254.020.00.01", 80, privateIpEnabled);
51+
MLHttpClientFactory.validate(HTTP, "0254.020.00.01", 80, PRIVATE_IP_DISABLED);
4152
} catch (IllegalArgumentException e) {
4253
assertNotNull(e);
4354
}
4455

4556
try {
46-
MLHttpClientFactory.validate("http", "172.1048577", 80, privateIpEnabled);
57+
MLHttpClientFactory.validate(HTTP, "172.1048577", 80, PRIVATE_IP_DISABLED);
4758
} catch (Exception e) {
4859
assertNotNull(e);
4960
}
5061

5162
try {
52-
MLHttpClientFactory.validate("http", "2886729729", 80, privateIpEnabled);
63+
MLHttpClientFactory.validate(HTTP, "2886729729", 80, PRIVATE_IP_DISABLED);
64+
} catch (IllegalArgumentException e) {
65+
assertNotNull(e);
66+
}
67+
68+
try {
69+
MLHttpClientFactory.validate(HTTP, "192.11010049", 80, PRIVATE_IP_DISABLED);
70+
} catch (IllegalArgumentException e) {
71+
assertNotNull(e);
72+
}
73+
74+
try {
75+
MLHttpClientFactory.validate(HTTP, "3232300545", 80, PRIVATE_IP_DISABLED);
5376
} catch (IllegalArgumentException e) {
5477
assertNotNull(e);
5578
}
5679

5780
try {
58-
MLHttpClientFactory.validate("http", "192.11010049", 80, privateIpEnabled);
81+
MLHttpClientFactory.validate(HTTP, "0:0:0:0:0:ffff:127.0.0.1", 80, PRIVATE_IP_DISABLED);
5982
} catch (IllegalArgumentException e) {
6083
assertNotNull(e);
6184
}
6285

6386
try {
64-
MLHttpClientFactory.validate("http", "3232300545", 80, privateIpEnabled);
87+
MLHttpClientFactory.validate(HTTP, "153.24.76.232", 80, PRIVATE_IP_DISABLED);
6588
} catch (IllegalArgumentException e) {
6689
assertNotNull(e);
6790
}
6891

6992
try {
70-
MLHttpClientFactory.validate("http", "0:0:0:0:0:ffff:127.0.0.1", 80, privateIpEnabled);
93+
MLHttpClientFactory.validate(HTTP, "177.0.0.1", 80, PRIVATE_IP_DISABLED);
7194
} catch (IllegalArgumentException e) {
7295
assertNotNull(e);
7396
}
7497

7598
try {
76-
MLHttpClientFactory.validate("http", "153.24.76.232", 80, privateIpEnabled);
99+
MLHttpClientFactory.validate(HTTP, "12.16.2.3", 80, PRIVATE_IP_DISABLED);
77100
} catch (IllegalArgumentException e) {
78101
assertNotNull(e);
79102
}
80103
}
81104

82105
@Test
83106
public void test_validateIp_rarePrivateIp_NotThrowException() throws Exception {
84-
AtomicBoolean privateIpEnabled = new AtomicBoolean(true);
85-
MLHttpClientFactory.validate("http", "0254.020.00.01", 80, privateIpEnabled);
86-
MLHttpClientFactory.validate("http", "172.1048577", 80, privateIpEnabled);
87-
MLHttpClientFactory.validate("http", "2886729729", 80, privateIpEnabled);
88-
MLHttpClientFactory.validate("http", "192.11010049", 80, privateIpEnabled);
89-
MLHttpClientFactory.validate("http", "3232300545", 80, privateIpEnabled);
90-
MLHttpClientFactory.validate("http", "0:0:0:0:0:ffff:127.0.0.1", 80, privateIpEnabled);
91-
MLHttpClientFactory.validate("http", "153.24.76.232", 80, privateIpEnabled);
107+
MLHttpClientFactory.validate(HTTP, "0254.020.00.01", 80, PRIVATE_IP_ENABLED);
108+
MLHttpClientFactory.validate(HTTPS, "0254.020.00.01", 443, PRIVATE_IP_ENABLED);
109+
MLHttpClientFactory.validate(HTTP, "172.1048577", 80, PRIVATE_IP_ENABLED);
110+
MLHttpClientFactory.validate(HTTP, "2886729729", 80, PRIVATE_IP_ENABLED);
111+
MLHttpClientFactory.validate(HTTP, "192.11010049", 80, PRIVATE_IP_ENABLED);
112+
MLHttpClientFactory.validate(HTTP, "3232300545", 80, PRIVATE_IP_ENABLED);
113+
MLHttpClientFactory.validate(HTTP, "0:0:0:0:0:ffff:127.0.0.1", 80, PRIVATE_IP_ENABLED);
114+
MLHttpClientFactory.validate(HTTPS, "0:0:0:0:0:ffff:127.0.0.1", 443, PRIVATE_IP_ENABLED);
115+
MLHttpClientFactory.validate(HTTP, "153.24.76.232", 80, PRIVATE_IP_ENABLED);
116+
MLHttpClientFactory.validate(HTTP, "10.24.76.186", 80, PRIVATE_IP_ENABLED);
117+
MLHttpClientFactory.validate(HTTPS, "10.24.76.186", 443, PRIVATE_IP_ENABLED);
92118
}
93119

94120
@Test
95121
public void test_validateSchemaAndPort_success() throws Exception {
96-
MLHttpClientFactory.validate("http", "api.openai.com", 80, new AtomicBoolean(false));
122+
MLHttpClientFactory.validate(HTTP, TEST_HOST, 80, PRIVATE_IP_DISABLED);
97123
}
98124

99125
@Test
100126
public void test_validateSchemaAndPort_notAllowedSchema_throwException() throws Exception {
101127
expectedException.expect(IllegalArgumentException.class);
102-
MLHttpClientFactory.validate("ftp", "api.openai.com", 80, new AtomicBoolean(false));
128+
MLHttpClientFactory.validate("ftp", TEST_HOST, 80, PRIVATE_IP_DISABLED);
103129
}
104130

105131
@Test
106-
public void test_validateSchemaAndPort_portNotInRange_throwException() throws Exception {
132+
public void test_validateSchemaAndPort_portNotInRange1_throwException() throws Exception {
107133
expectedException.expect(IllegalArgumentException.class);
108134
expectedException.expectMessage("Port out of range: 65537");
109-
MLHttpClientFactory.validate("https", "api.openai.com", 65537, new AtomicBoolean(false));
135+
MLHttpClientFactory.validate(HTTPS, TEST_HOST, 65537, PRIVATE_IP_DISABLED);
136+
}
137+
138+
@Test
139+
public void test_validateSchemaAndPort_portNotInRange2_throwException() throws Exception {
140+
expectedException.expect(IllegalArgumentException.class);
141+
expectedException.expectMessage("Port out of range: -10");
142+
MLHttpClientFactory.validate(HTTP, TEST_HOST, -10, PRIVATE_IP_DISABLED);
143+
}
144+
145+
@Test
146+
public void test_validatePort_boundaries_success() throws Exception {
147+
MLHttpClientFactory.validate(HTTP, TEST_HOST, 65536, PRIVATE_IP_DISABLED);
148+
MLHttpClientFactory.validate(HTTP, TEST_HOST, 0, PRIVATE_IP_DISABLED);
149+
MLHttpClientFactory.validate(HTTP, TEST_HOST, -1, PRIVATE_IP_DISABLED);
150+
MLHttpClientFactory.validate(HTTPS, TEST_HOST, -1, PRIVATE_IP_DISABLED);
151+
MLHttpClientFactory.validate(null, TEST_HOST, -1, PRIVATE_IP_DISABLED);
110152
}
111153

112154
}

0 commit comments

Comments
 (0)