package com.thinkbiganalytics.nifi.rest.client;
/*-
* #%L
* thinkbig-nifi-rest-client-api
* %%
* Copyright (C) 2017 ThinkBig Analytics
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
import com.google.common.collect.ImmutableSet;
import org.apache.nifi.web.api.dto.ProcessGroupDTO;
import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import javax.ws.rs.ClientErrorException;
public class AbstractNiFiProcessGroupsRestClientTest {
/**
* Verify deleting a process group.
*/
@Test
public void deleteWithRetries() {
// Mock process group
final ProcessGroupDTO group = new ProcessGroupDTO();
group.setId("d526adec-1f33-463b-8570-e9cf3e6c8703");
group.setParentGroupId("93b1abbb-f805-4f52-8a9e-ffdab224dc44");
// Mock NiFi Process Groups REST client
final AbstractNiFiProcessGroupsRestClient client = Mockito.mock(AbstractNiFiProcessGroupsRestClient.class, Mockito.CALLS_REAL_METHODS);
Mockito.when(client.doDelete(group)).thenThrow(new ClientErrorException(409)).thenReturn(Optional.empty());
// Test delete
Assert.assertEquals(Optional.empty(), client.deleteWithRetries(group, 1, 0, TimeUnit.NANOSECONDS));
}
/**
* Verify failure to delete due to timeout error.
*/
@Test(expected = NifiClientRuntimeException.class)
public void deleteWithTimeout() {
// Mock process group
final ProcessGroupDTO group = new ProcessGroupDTO();
group.setId("d526adec-1f33-463b-8570-e9cf3e6c8703");
group.setParentGroupId("93b1abbb-f805-4f52-8a9e-ffdab224dc44");
// Mock NiFi Process Groups REST client
final AbstractNiFiProcessGroupsRestClient client = Mockito.mock(AbstractNiFiProcessGroupsRestClient.class, Mockito.CALLS_REAL_METHODS);
Mockito.when(client.doDelete(group)).thenThrow(new ClientErrorException(409)).thenReturn(Optional.empty());
// Test failure
client.deleteWithRetries(group, 0, 0, TimeUnit.NANOSECONDS);
}
/**
* Verify finding a process group by name.
*/
@Test
public void findByName() {
// Mock process groups
final ProcessGroupDTO group1 = new ProcessGroupDTO();
group1.setId("b179527b-0a7a-4ba8-9817-60f7a9ffb9d5");
group1.setName("group1");
final ProcessGroupDTO group2 = new ProcessGroupDTO();
group2.setId("7ba659c2-6ddd-4215-8709-1eafff04851d");
group2.setName("group2");
final ProcessGroupDTO group3 = new ProcessGroupDTO();
group3.setId("2dbcc8ce-a0e7-455c-9e3d-f4f82d08acc3");
group3.setName("group3");
final ProcessGroupDTO fullGroup2 = new ProcessGroupDTO();
fullGroup2.setId("7ba659c2-6ddd-4215-8709-1eafff04851d");
fullGroup2.setName("group2");
fullGroup2.setRunningCount(8);
fullGroup2.setStoppedCount(0);
// Mock NiFi Process Groups REST client
final NiFiProcessGroupsRestClient client = Mockito.mock(AbstractNiFiProcessGroupsRestClient.class, Mockito.CALLS_REAL_METHODS);
Mockito.when(client.findAll("parent")).thenReturn(ImmutableSet.of(group1, group2, group3));
Mockito.when(client.findById(group2.getId(), true, true)).thenReturn(Optional.of(fullGroup2));
// Test finding process group by name
Assert.assertEquals(group2, client.findByName("parent", "group2", false, false).get());
Assert.assertEquals(fullGroup2, client.findByName("parent", "group2", true, true).get());
Assert.assertFalse(client.findByName("parent", "invalid", false, false).isPresent());
Assert.assertFalse(client.findByName("parent", "invalid", true, true).isPresent());
}
}