Skip to content

Commit acb6ce1

Browse files
committed
add parsing tests
1 parent 49de425 commit acb6ce1

File tree

13 files changed

+250
-2
lines changed

13 files changed

+250
-2
lines changed

src/main/java/org/sourcelab/kafka/connect/apiclient/request/dto/ConnectorDefinition.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,17 @@ public class ConnectorDefinition {
1212
private Map<String, String> config;
1313
private List<TaskDefinition> tasks;
1414

15+
/**
16+
* Default constructor.
17+
*/
1518
public ConnectorDefinition() {
16-
1719
}
1820

21+
/**
22+
* Constructor
23+
* @param name Name of Connector.
24+
* @param config Configuration values for connector.
25+
*/
1926
public ConnectorDefinition(final String name, final Map<String, String> config) {
2027
this.name = name;
2128
this.config = Collections.unmodifiableMap(new HashMap<>(config));

src/test/java/org/sourcelab/kafka/connect/apiclient/ApiClientTest.java

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
/**
1313
* Integration test over ApiClient.
1414
*
15-
* Assumes kafka-connect is running at localhost.
15+
* Assumes kafka-connect is running at localhost. More or less a sanity test
16+
* rather than checking assertions.
1617
*/
1718
public class ApiClientTest {
1819
private static final Logger logger = LoggerFactory.getLogger(ApiClientTest.class);
@@ -30,26 +31,46 @@ public void setup() {
3031
this.apiClient = new ApiClient(new Configuration(apiHost));
3132
}
3233

34+
/**
35+
* Tests retrieving all connectors deployed.
36+
* https://docs.confluent.io/current/connect/restapi.html#get--connectors
37+
*/
3338
@Test
3439
public void testGetConnectors() {
3540
logger.info("Result: {}", apiClient.getConnectors());
3641
}
3742

43+
/**
44+
* Test getting a specific connector.
45+
* https://docs.confluent.io/current/connect/restapi.html#get--connectors-(string-name)
46+
*/
3847
@Test
3948
public void testGetConnector() {
4049
logger.info("Result: {}", apiClient.getConnector("My Test Connector"));
4150
}
4251

52+
/**
53+
* Test getting a specific connectors config.
54+
* https://docs.confluent.io/current/connect/restapi.html#get--connectors-(string-name)
55+
*/
4356
@Test
4457
public void testGetConnectorConfig() {
4558
logger.info("Result: {}", apiClient.getConnectorConfig("My Test Connector"));
4659
}
4760

61+
/**
62+
* Test getting the status of a specific connector.
63+
* https://docs.confluent.io/current/connect/restapi.html#get--connectors-(string-name)
64+
*/
4865
@Test
4966
public void testGetConnectorStatus() {
5067
logger.info("Result: {}", apiClient.getConnectorStatus("My Test Connector"));
5168
}
5269

70+
/**
71+
* Test adding a connector.
72+
* https://docs.confluent.io/current/connect/restapi.html#get--connectors-(string-name)
73+
*/
5374
@Test
5475
public void testAddConnector() {
5576
apiClient.addConnector(ConnectorDefinition.newBuilder()
@@ -61,6 +82,10 @@ public void testAddConnector() {
6182
);
6283
}
6384

85+
/**
86+
* Test updating a connector's config.
87+
* https://docs.confluent.io/current/connect/restapi.html#get--connectors-(string-name)
88+
*/
6489
@Test
6590
public void testUpdateConnectorConfig() {
6691
final Map<String, String> config = new HashMap<>();
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.sourcelab.kafka.connect.apiclient.request;
2+
3+
import org.apache.commons.io.IOUtils;
4+
import org.junit.Test;
5+
6+
import java.io.IOException;
7+
import java.net.URL;
8+
import java.nio.charset.StandardCharsets;
9+
10+
/**
11+
* Abstract / Base Request Test Class.
12+
*/
13+
abstract public class AbstractRequestTest {
14+
15+
/**
16+
* Test Parsing response.
17+
*/
18+
@Test
19+
public abstract void testParseResponse() throws Exception;
20+
21+
/**
22+
* Utility method to help load mock responses from resources.
23+
* @param fileName file name to load from resources
24+
* @return The contents of the file, as a UTF-8 string.
25+
* @throws IOException on error reading from resource file.
26+
*/
27+
protected String readFile(final String fileName) throws IOException {
28+
final URL inputFile = getClass().getClassLoader().getResource("mockResponses/" + fileName);
29+
return IOUtils.toString(inputFile, StandardCharsets.UTF_8);
30+
}
31+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package org.sourcelab.kafka.connect.apiclient.request.get.connector;
2+
3+
import org.sourcelab.kafka.connect.apiclient.request.AbstractRequestTest;
4+
5+
import java.util.Map;
6+
7+
import static org.junit.Assert.assertEquals;
8+
import static org.junit.Assert.assertNotNull;
9+
10+
public class GetConnectorConfigTest extends AbstractRequestTest {
11+
12+
@Override
13+
public void testParseResponse() throws Exception {
14+
final String mockResponse = readFile("getConnectorConfig.json");
15+
final Map<String, String> result = new GetConnectorConfig("Test Name").parseResponse(mockResponse);
16+
17+
// validate config
18+
assertNotNull("Should not be null", result);
19+
assertEquals("Should have 4 entries", 4, result.size());
20+
assertEquals("org.apache.kafka.connect.tools.MockConnector", result.get("connector.class"));
21+
assertEquals("10", result.get("tasks.max"));
22+
assertEquals("test-topic", result.get("topics"));
23+
assertEquals("My Test Connector", result.get("name"));
24+
}
25+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package org.sourcelab.kafka.connect.apiclient.request.get.connector;
2+
3+
import org.sourcelab.kafka.connect.apiclient.request.AbstractRequestTest;
4+
import org.sourcelab.kafka.connect.apiclient.request.dto.ConnectorDefinition;
5+
6+
import static org.junit.Assert.*;
7+
8+
public class GetConnectorStatusTest extends AbstractRequestTest {
9+
10+
@Override
11+
public void testParseResponse() throws Exception {
12+
final String mockResponse = readFile("getConnectorStatus.json");
13+
final ConnectorDefinition result = new GetConnector("My Test Connector").parseResponse(mockResponse);
14+
15+
// Validate
16+
assertNotNull("Should not be null", result);
17+
assertEquals("My Test Connector", result.getName());
18+
assertEquals("unknown", result.getType());
19+
20+
// validate config
21+
assertNull("Should be null", result.getConfig());
22+
23+
// Validate tasks
24+
assertNotNull("Should not be null", result.getTasks());
25+
assertTrue("Should be empty", result.getTasks().isEmpty());
26+
}
27+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package org.sourcelab.kafka.connect.apiclient.request.get.connector;
2+
3+
import org.sourcelab.kafka.connect.apiclient.request.AbstractRequestTest;
4+
import org.sourcelab.kafka.connect.apiclient.request.dto.ConnectorDefinition;
5+
6+
import static org.junit.Assert.*;
7+
8+
public class GetConnectorTest extends AbstractRequestTest {
9+
10+
@Override
11+
public void testParseResponse() throws Exception {
12+
final String mockResponse = readFile("getConnector.json");
13+
final ConnectorDefinition result = new GetConnector("My Test Connector").parseResponse(mockResponse);
14+
15+
// Validate
16+
assertNotNull("Should not be null", result);
17+
assertEquals("My Test Connector", result.getName());
18+
assertEquals("unknown", result.getType());
19+
20+
// validate config
21+
assertNotNull("Should not be null", result.getConfig());
22+
assertEquals("Should have 4 entries", 4, result.getConfig().size());
23+
assertEquals("org.apache.kafka.connect.tools.MockConnector", result.getConfig().get("connector.class"));
24+
assertEquals("10", result.getConfig().get("tasks.max"));
25+
assertEquals("test-topic", result.getConfig().get("topics"));
26+
assertEquals("My Test Connector", result.getConfig().get("name"));
27+
28+
// Validate tasks
29+
assertNotNull("Should not be null", result.getTasks());
30+
assertTrue("Should be empty", result.getTasks().isEmpty());
31+
}
32+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.sourcelab.kafka.connect.apiclient.request.get.connector;
2+
3+
import org.junit.Test;
4+
import org.slf4j.Logger;
5+
import org.slf4j.LoggerFactory;
6+
import org.sourcelab.kafka.connect.apiclient.request.AbstractRequestTest;
7+
8+
import java.io.IOException;
9+
import java.util.Collection;
10+
11+
import static org.junit.Assert.*;
12+
13+
public class GetConnectorsTest extends AbstractRequestTest {
14+
private static final Logger logger = LoggerFactory.getLogger(GetConnectorsTest.class);
15+
16+
/**
17+
* Test Parsing GET /connectors response.
18+
*/
19+
@Test
20+
public void testParseResponse() throws IOException {
21+
final String mockResponse = readFile("getConnectors.json");
22+
final Collection<String> result = new GetConnectors().parseResponse(mockResponse);
23+
24+
// Validate
25+
assertNotNull("Should not be null", result);
26+
assertEquals("Should have two entries", 2, result.size());
27+
assertTrue("Should have connector", result.contains("My Test Connector"));
28+
assertTrue("Should have connector", result.contains("My Other Test Connector"));
29+
}
30+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package org.sourcelab.kafka.connect.apiclient.request.put.connector;
2+
3+
import org.sourcelab.kafka.connect.apiclient.request.AbstractRequestTest;
4+
import org.sourcelab.kafka.connect.apiclient.request.dto.ConnectorDefinition;
5+
import org.sourcelab.kafka.connect.apiclient.request.get.connector.GetConnector;
6+
7+
import static org.junit.Assert.*;
8+
9+
public class PutConnectorConfigTest extends AbstractRequestTest {
10+
11+
@Override
12+
public void testParseResponse() throws Exception {
13+
final String mockResponse = readFile("putConnector.json");
14+
final ConnectorDefinition result = new GetConnector("My Test Connector").parseResponse(mockResponse);
15+
16+
// Validate
17+
assertNotNull("Should not be null", result);
18+
assertEquals("My Test Connector", result.getName());
19+
assertEquals("unknown", result.getType());
20+
21+
// validate config
22+
assertNotNull("Should not be null", result.getConfig());
23+
assertEquals("Should have 4 entries", 4, result.getConfig().size());
24+
assertEquals("org.apache.kafka.connect.tools.MockConnector", result.getConfig().get("connector.class"));
25+
assertEquals("10", result.getConfig().get("tasks.max"));
26+
assertEquals("test-topic", result.getConfig().get("topics"));
27+
assertEquals("My Test Connector", result.getConfig().get("name"));
28+
29+
// Validate tasks
30+
assertNotNull("Should not be null", result.getTasks());
31+
assertTrue("Should be empty", result.getTasks().isEmpty());
32+
}
33+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"name": "My Test Connector",
3+
"config": {
4+
"connector.class": "org.apache.kafka.connect.tools.MockConnector",
5+
"tasks.max": "10",
6+
"topics": "test-topic",
7+
"name": "My Test Connector"
8+
},
9+
"tasks": [],
10+
"type": "unknown"
11+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"connector.class": "org.apache.kafka.connect.tools.MockConnector",
3+
"tasks.max": "10",
4+
"topics": "test-topic",
5+
"name": "My Test Connector"
6+
}

0 commit comments

Comments
 (0)