Search in sources :

Example 11 with RestartRequest

use of org.apache.kafka.connect.runtime.RestartRequest in project kafka by apache.

the class ConnectorsResourceTest method testRestartConnectorAndTasksLeaderRedirect.

@Test
public void testRestartConnectorAndTasksLeaderRedirect() throws Throwable {
    RestartRequest restartRequest = new RestartRequest(CONNECTOR_NAME, true, false);
    final Capture<Callback<ConnectorStateInfo>> cb = Capture.newInstance();
    herder.restartConnectorAndTasks(EasyMock.eq(restartRequest), EasyMock.capture(cb));
    expectAndCallbackNotLeaderException(cb);
    EasyMock.expect(RestClient.httpRequest(EasyMock.eq("http://leader:8083/connectors/" + CONNECTOR_NAME + "/restart?forward=true&includeTasks=" + restartRequest.includeTasks() + "&onlyFailed=" + restartRequest.onlyFailed()), EasyMock.eq("POST"), EasyMock.isNull(), EasyMock.isNull(), EasyMock.anyObject(), EasyMock.anyObject(WorkerConfig.class))).andReturn(new RestClient.HttpResponse<>(202, new HashMap<>(), null));
    PowerMock.replayAll();
    Response response = connectorsResource.restartConnector(CONNECTOR_NAME, NULL_HEADERS, restartRequest.includeTasks(), restartRequest.onlyFailed(), null);
    assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatus());
    PowerMock.verifyAll();
}
Also used : Response(javax.ws.rs.core.Response) Callback(org.apache.kafka.connect.util.Callback) HashMap(java.util.HashMap) MultivaluedHashMap(javax.ws.rs.core.MultivaluedHashMap) RestartRequest(org.apache.kafka.connect.runtime.RestartRequest) RestClient(org.apache.kafka.connect.runtime.rest.RestClient) WorkerConfig(org.apache.kafka.connect.runtime.WorkerConfig) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Example 12 with RestartRequest

use of org.apache.kafka.connect.runtime.RestartRequest in project kafka by apache.

the class StandaloneHerderTest method testRestartConnectorAndTasksNoStatus.

@Test
public void testRestartConnectorAndTasksNoStatus() throws Exception {
    RestartRequest restartRequest = new RestartRequest(CONNECTOR_NAME, false, true);
    EasyMock.expect(herder.buildRestartPlan(restartRequest)).andReturn(Optional.empty()).anyTimes();
    connector = PowerMock.createMock(BogusSinkConnector.class);
    expectAdd(SourceSink.SINK);
    Map<String, String> connectorConfig = connectorConfig(SourceSink.SINK);
    Connector connectorMock = PowerMock.createMock(SinkConnector.class);
    expectConfigValidation(connectorMock, true, connectorConfig);
    PowerMock.replayAll();
    herder.putConnectorConfig(CONNECTOR_NAME, connectorConfig, false, createCallback);
    Herder.Created<ConnectorInfo> connectorInfo = createCallback.get(1000L, TimeUnit.SECONDS);
    assertEquals(createdInfo(SourceSink.SINK), connectorInfo.result());
    FutureCallback<ConnectorStateInfo> restartCallback = new FutureCallback<>();
    herder.restartConnectorAndTasks(restartRequest, restartCallback);
    ExecutionException ee = assertThrows(ExecutionException.class, () -> restartCallback.get(1000L, TimeUnit.MILLISECONDS));
    assertTrue(ee.getCause() instanceof NotFoundException);
    assertTrue(ee.getMessage().contains("Status for connector"));
    PowerMock.verifyAll();
}
Also used : SourceConnector(org.apache.kafka.connect.source.SourceConnector) WorkerConnector(org.apache.kafka.connect.runtime.WorkerConnector) Connector(org.apache.kafka.connect.connector.Connector) SinkConnector(org.apache.kafka.connect.sink.SinkConnector) ConnectorInfo(org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo) RestartRequest(org.apache.kafka.connect.runtime.RestartRequest) NotFoundException(org.apache.kafka.connect.errors.NotFoundException) ExecutionException(java.util.concurrent.ExecutionException) Herder(org.apache.kafka.connect.runtime.Herder) ConnectorStateInfo(org.apache.kafka.connect.runtime.rest.entities.ConnectorStateInfo) FutureCallback(org.apache.kafka.connect.util.FutureCallback) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Example 13 with RestartRequest

use of org.apache.kafka.connect.runtime.RestartRequest in project kafka by apache.

the class DistributedHerderTest method testDoRestartConnectorAndTasksEmptyPlan.

@Test
public void testDoRestartConnectorAndTasksEmptyPlan() {
    RestartRequest restartRequest = new RestartRequest(CONN1, false, true);
    EasyMock.expect(herder.buildRestartPlan(restartRequest)).andReturn(Optional.empty()).anyTimes();
    PowerMock.replayAll();
    herder.doRestartConnectorAndTasks(restartRequest);
    PowerMock.verifyAll();
}
Also used : RestartRequest(org.apache.kafka.connect.runtime.RestartRequest) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Example 14 with RestartRequest

use of org.apache.kafka.connect.runtime.RestartRequest in project kafka by apache.

the class DistributedHerderTest method preserveHighestImpactRestartRequest.

@Test
public void preserveHighestImpactRestartRequest() {
    member.wakeup();
    PowerMock.expectLastCall().anyTimes();
    PowerMock.replayAll();
    final String connectorName = "foo";
    RestartRequest restartRequest = new RestartRequest(connectorName, false, false);
    configUpdateListener.onRestartRequest(restartRequest);
    // will overwrite as this is higher impact
    restartRequest = new RestartRequest(connectorName, false, true);
    configUpdateListener.onRestartRequest(restartRequest);
    assertEquals(1, herder.pendingRestartRequests.size());
    assertFalse(herder.pendingRestartRequests.get(connectorName).onlyFailed());
    assertTrue(herder.pendingRestartRequests.get(connectorName).includeTasks());
    // will be ignored as the existing request has higher impact
    restartRequest = new RestartRequest(connectorName, true, false);
    configUpdateListener.onRestartRequest(restartRequest);
    assertEquals(1, herder.pendingRestartRequests.size());
    // compare against existing request
    assertFalse(herder.pendingRestartRequests.get(connectorName).onlyFailed());
    assertTrue(herder.pendingRestartRequests.get(connectorName).includeTasks());
}
Also used : RestartRequest(org.apache.kafka.connect.runtime.RestartRequest) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Example 15 with RestartRequest

use of org.apache.kafka.connect.runtime.RestartRequest in project kafka by apache.

the class DistributedHerderTest method processRestartRequestsFailureSuppression.

@Test
public void processRestartRequestsFailureSuppression() {
    member.wakeup();
    PowerMock.expectLastCall().anyTimes();
    final String connectorName = "foo";
    RestartRequest restartRequest = new RestartRequest(connectorName, false, false);
    EasyMock.expect(herder.buildRestartPlan(restartRequest)).andThrow(new RuntimeException()).anyTimes();
    PowerMock.replayAll();
    configUpdateListener.onRestartRequest(restartRequest);
    assertEquals(1, herder.pendingRestartRequests.size());
    herder.processRestartRequests();
    assertTrue(herder.pendingRestartRequests.isEmpty());
}
Also used : RestartRequest(org.apache.kafka.connect.runtime.RestartRequest) PrepareForTest(org.powermock.core.classloader.annotations.PrepareForTest) Test(org.junit.Test)

Aggregations

RestartRequest (org.apache.kafka.connect.runtime.RestartRequest)29 Test (org.junit.Test)27 PrepareForTest (org.powermock.core.classloader.annotations.PrepareForTest)27 ConnectorStateInfo (org.apache.kafka.connect.runtime.rest.entities.ConnectorStateInfo)13 FutureCallback (org.apache.kafka.connect.util.FutureCallback)13 RestartPlan (org.apache.kafka.connect.runtime.RestartPlan)10 Callback (org.apache.kafka.connect.util.Callback)9 ConnectorTaskId (org.apache.kafka.connect.util.ConnectorTaskId)7 Connector (org.apache.kafka.connect.connector.Connector)6 NotFoundException (org.apache.kafka.connect.errors.NotFoundException)6 ConnectorInfo (org.apache.kafka.connect.runtime.rest.entities.ConnectorInfo)6 SinkConnector (org.apache.kafka.connect.sink.SinkConnector)6 ExecutionException (java.util.concurrent.ExecutionException)5 Herder (org.apache.kafka.connect.runtime.Herder)5 WorkerConnector (org.apache.kafka.connect.runtime.WorkerConnector)5 SourceConnector (org.apache.kafka.connect.source.SourceConnector)5 TargetState (org.apache.kafka.connect.runtime.TargetState)4 HashMap (java.util.HashMap)3 Response (javax.ws.rs.core.Response)3 ConsumerRecord (org.apache.kafka.clients.consumer.ConsumerRecord)3