blob: 30dd5ae11a19e916327a57cb1e7f96f458be0048 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
package org.apache.nifi.minifi.toolkit.configuration.dto;
import org.apache.nifi.minifi.commons.schema.RemotePortSchema;
import org.apache.nifi.minifi.commons.schema.RemoteProcessGroupSchema;
import org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys;
import org.apache.nifi.web.api.dto.RemoteProcessGroupContentsDTO;
import org.apache.nifi.web.api.dto.RemoteProcessGroupDTO;
import org.junit.Before;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
public class RemoteProcessGroupSchemaTest extends BaseSchemaTester<RemoteProcessGroupSchema, RemoteProcessGroupDTO> {
private final RemoteInputPortSchemaTest remoteInputPortSchemaTest;
private String testId = UUID.randomUUID().toString();
private String testName = "testName";
private String testUrl = "testUrl";
private String testComment = "testComment";
private String testTimeout = "11 s";
private String testYieldPeriod = "22 s";
private String transportProtocol = "HTTP";
private String localNetworkInterface = "eth0";
public RemoteProcessGroupSchemaTest() {
super(new RemoteProcessGroupSchemaFunction(new RemotePortSchemaFunction()), RemoteProcessGroupSchema::new);
remoteInputPortSchemaTest = new RemoteInputPortSchemaTest();
}
@Before
public void setup() {
remoteInputPortSchemaTest.setup();
dto = new RemoteProcessGroupDTO();
dto.setId(testId);
dto.setName(testName);
dto.setTargetUri(testUrl);
RemoteProcessGroupContentsDTO contents = new RemoteProcessGroupContentsDTO();
contents.setInputPorts(Arrays.asList(remoteInputPortSchemaTest.dto).stream().collect(Collectors.toSet()));
dto.setContents(contents);
dto.setComments(testComment);
dto.setCommunicationsTimeout(testTimeout);
dto.setYieldDuration(testYieldPeriod);
dto.setTransportProtocol(transportProtocol);
map = new HashMap<>();
map.put(CommonPropertyKeys.ID_KEY, testId);
map.put(CommonPropertyKeys.NAME_KEY, testName);
map.put(RemoteProcessGroupSchema.URL_KEY, testUrl);
map.put(CommonPropertyKeys.INPUT_PORTS_KEY, new ArrayList<>(Arrays.asList(remoteInputPortSchemaTest.map)));
map.put(CommonPropertyKeys.COMMENT_KEY, testComment);
map.put(RemoteProcessGroupSchema.TIMEOUT_KEY, testTimeout);
map.put(CommonPropertyKeys.YIELD_PERIOD_KEY, testYieldPeriod);
map.put(RemoteProcessGroupSchema.TRANSPORT_PROTOCOL_KEY, transportProtocol);
}
@Test
public void testNoId() {
dto.setId(null);
map.remove(CommonPropertyKeys.ID_KEY);
assertDtoAndMapConstructorAreSame(1);
}
@Test
public void testNoName() {
dto.setName(null);
map.remove(CommonPropertyKeys.NAME_KEY);
assertDtoAndMapConstructorAreSame(0);
}
@Test
public void testNoUrl() {
dto.setTargetUri(null);
map.remove(RemoteProcessGroupSchema.URL_KEY);
assertDtoAndMapConstructorAreSame(1);
}
@Test
public void testNoInputPorts() {
dto.getContents().setInputPorts(null);
map.remove(CommonPropertyKeys.INPUT_PORTS_KEY);
assertDtoAndMapConstructorAreSame(1);
}
@Test
public void testNoComment() {
dto.setComments(null);
map.remove(CommonPropertyKeys.COMMENT_KEY);
assertDtoAndMapConstructorAreSame(0);
}
@Test
public void testNoTimeout() {
dto.setCommunicationsTimeout(null);
map.remove(RemoteProcessGroupSchema.TIMEOUT_KEY);
assertDtoAndMapConstructorAreSame(0);
}
@Test
public void testNoYield() {
dto.setYieldDuration(null);
map.remove(CommonPropertyKeys.YIELD_PERIOD_KEY);
assertDtoAndMapConstructorAreSame(0);
}
@Test
public void testNoTransportProtocol() {
dto.setTransportProtocol(null);
map.remove(RemoteProcessGroupSchema.TRANSPORT_PROTOCOL_KEY);
assertDtoAndMapConstructorAreSame(0);
}
@Test
public void testNoLocalNetworkInterface() {
dto.setLocalNetworkInterface(null);
map.remove(RemoteProcessGroupSchema.LOCAL_NETWORK_INTERFACE_KEY);
assertDtoAndMapConstructorAreSame(0);
}
@Test
public void testLocalNetworkInterface() {
dto.setLocalNetworkInterface(localNetworkInterface);
map.put(RemoteProcessGroupSchema.LOCAL_NETWORK_INTERFACE_KEY, localNetworkInterface);
assertDtoAndMapConstructorAreSame(0);
}
@Override
public void assertSchemaEquals(RemoteProcessGroupSchema one, RemoteProcessGroupSchema two) {
assertEquals(one.getName(), two.getName());
assertEquals(one.getUrl(), two.getUrl());
List<RemotePortSchema> oneInputPorts = one.getInputPorts();
List<RemotePortSchema> twoInputPorts = two.getInputPorts();
if (oneInputPorts == null) {
assertNull(twoInputPorts);
} else {
assertNotNull(twoInputPorts);
assertEquals(oneInputPorts.size(), twoInputPorts.size());
for (int i = 0; i < oneInputPorts.size(); i++) {
remoteInputPortSchemaTest.assertSchemaEquals(oneInputPorts.get(i), twoInputPorts.get(i));
}
}
assertEquals(one.getComment(), two.getComment());
assertEquals(one.getTimeout(), two.getTimeout());
assertEquals(one.getYieldPeriod(), two.getYieldPeriod());
assertEquals(one.getLocalNetworkInterface(), two.getLocalNetworkInterface());
}
}