blob: 860bf41fe2a6a78bb205f544c4971cb222bc78cd [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.commons.schema;
import org.apache.nifi.minifi.commons.schema.common.CommonPropertyKeys;
import org.junit.Before;
import org.junit.Test;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import static org.junit.Assert.assertEquals;
public class ConnectionSchemaTest {
private String testId;
private String testName;
private String testSourceId;
private String testSourceRelationShip1;
private String testSourceRelationShip2;
private List<String> testSourceRelationships;
private String testDestinationId;
private int testMaxWorkQueueSize;
private String testMaxWorkQueueDataSize;
private String testFlowfileExpiration;
private String testQueuePrioritizerClass;
@Before
public void setup() {
testId = UUID.nameUUIDFromBytes("testId".getBytes(StandardCharsets.UTF_8)).toString();
testName = "testName";
testSourceId = "testSourceId";
testSourceRelationShip1 = "testSourceRelationShip1";
testSourceRelationShip2 = "testSourceRelationShip2";
testSourceRelationships = Arrays.asList(testSourceRelationShip1, testSourceRelationShip2);
testDestinationId = "testDestinationId";
testMaxWorkQueueSize = 55;
testMaxWorkQueueDataSize = "testMaxWorkQueueDataSize";
testFlowfileExpiration = "testFlowfileExpiration";
testQueuePrioritizerClass = "testQueuePrioritizerClass";
}
private ConnectionSchema createSchema(int expectedValidationIssues) {
return createSchema(createMap(), expectedValidationIssues);
}
private ConnectionSchema createSchema(Map<String, Object> map, int expectedValidationIssues) {
ConnectionSchema connectionSchema = new ConnectionSchema(map);
assertEquals(connectionSchema.getValidationIssues().toString(), expectedValidationIssues, connectionSchema.getValidationIssues().size());
return connectionSchema;
}
private Map<String, Object> createMap() {
Map<String, Object> map = new HashMap<>();
map.put(CommonPropertyKeys.ID_KEY, testId);
map.put(CommonPropertyKeys.NAME_KEY, testName);
map.put(ConnectionSchema.SOURCE_ID_KEY, testSourceId);
map.put(ConnectionSchema.SOURCE_RELATIONSHIP_NAMES_KEY, testSourceRelationships);
map.put(ConnectionSchema.DESTINATION_ID_KEY, testDestinationId);
map.put(ConnectionSchema.MAX_WORK_QUEUE_SIZE_KEY, testMaxWorkQueueSize);
map.put(ConnectionSchema.MAX_WORK_QUEUE_DATA_SIZE_KEY, testMaxWorkQueueDataSize);
map.put(ConnectionSchema.FLOWFILE_EXPIRATION__KEY, testFlowfileExpiration);
map.put(ConnectionSchema.QUEUE_PRIORITIZER_CLASS_KEY, testQueuePrioritizerClass);
return map;
}
@Test
public void testIdKey() {
ConnectionSchema schema = createSchema(0);
assertEquals(testId, schema.getId());
assertEquals(schema.getId(), schema.toMap().get(CommonPropertyKeys.ID_KEY));
}
@Test
public void testNoId() {
Map<String, Object> map = createMap();
map.remove(CommonPropertyKeys.ID_KEY);
ConnectionSchema schema = createSchema(map, 1);
assertEquals("", schema.getId());
assertEquals(schema.getId(), schema.toMap().get(CommonPropertyKeys.ID_KEY));
}
@Test
public void testName() {
ConnectionSchema schema = createSchema(0);
assertEquals(testName, schema.getName());
assertEquals(schema.getName(), schema.toMap().get(CommonPropertyKeys.NAME_KEY));
}
@Test
public void testNoName() {
Map<String, Object> map = createMap();
map.remove(CommonPropertyKeys.NAME_KEY);
ConnectionSchema schema = createSchema(map, 0);
assertEquals("", schema.getName());
assertEquals(schema.getName(), schema.toMap().get(CommonPropertyKeys.NAME_KEY));
}
@Test
public void testSourceId() {
ConnectionSchema schema = createSchema(0);
assertEquals(testSourceId, schema.getSourceId());
assertEquals(schema.getSourceId(), schema.toMap().get(ConnectionSchema.SOURCE_ID_KEY));
}
@Test
public void testNoSourceId() {
Map<String, Object> map = createMap();
map.remove(ConnectionSchema.SOURCE_ID_KEY);
ConnectionSchema schema = createSchema(map, 1);
assertEquals("", schema.getSourceId());
assertEquals(schema.getSourceId(), schema.toMap().get(ConnectionSchema.SOURCE_ID_KEY));
}
@Test
public void testSourceRelationshipNames() {
ConnectionSchema schema = createSchema(0);
assertEquals(testSourceRelationships, schema.getSourceRelationshipNames());
assertEquals(schema.getSourceRelationshipNames(), schema.toMap().get(ConnectionSchema.SOURCE_RELATIONSHIP_NAMES_KEY));
}
@Test
public void testNoSourceRelationshipNames() {
Map<String, Object> map = createMap();
map.remove(ConnectionSchema.SOURCE_RELATIONSHIP_NAMES_KEY);
ConnectionSchema schema = createSchema(map, 1);
assertEquals(new ArrayList<>(), schema.getSourceRelationshipNames());
assertEquals(schema.getSourceRelationshipNames(), schema.toMap().get(ConnectionSchema.SOURCE_RELATIONSHIP_NAMES_KEY));
}
@Test
public void testDestinationId() {
ConnectionSchema schema = createSchema(0);
assertEquals(testDestinationId, schema.getDestinationId());
assertEquals(schema.getDestinationId(), schema.toMap().get(ConnectionSchema.DESTINATION_ID_KEY));
}
@Test
public void testNoDestinationId() {
Map<String, Object> map = createMap();
map.remove(ConnectionSchema.DESTINATION_ID_KEY);
ConnectionSchema schema = createSchema(map, 1);
assertEquals("", schema.getDestinationId());
assertEquals(schema.getDestinationId(), schema.toMap().get(ConnectionSchema.DESTINATION_ID_KEY));
}
@Test
public void testMaxWorkQueueSize() {
ConnectionSchema schema = createSchema(0);
assertEquals(testMaxWorkQueueSize, schema.getMaxWorkQueueSize());
assertEquals(schema.getMaxWorkQueueSize(), schema.toMap().get(ConnectionSchema.MAX_WORK_QUEUE_SIZE_KEY));
}
@Test
public void testNoMaxWorkQueueSize() {
Map<String, Object> map = createMap();
map.remove(ConnectionSchema.MAX_WORK_QUEUE_SIZE_KEY);
ConnectionSchema schema = createSchema(map, 0);
assertEquals(ConnectionSchema.DEFAULT_MAX_WORK_QUEUE_SIZE, schema.getMaxWorkQueueSize());
assertEquals(schema.getMaxWorkQueueSize(), schema.toMap().get(ConnectionSchema.MAX_WORK_QUEUE_SIZE_KEY));
}
@Test
public void testMaxWorkQueueDataSize() {
ConnectionSchema schema = createSchema(0);
assertEquals(testMaxWorkQueueDataSize, schema.getMaxWorkQueueDataSize());
assertEquals(schema.getMaxWorkQueueDataSize(), schema.toMap().get(ConnectionSchema.MAX_WORK_QUEUE_DATA_SIZE_KEY));
}
@Test
public void testNoMaxWorkQueueDataSize() {
Map<String, Object> map = createMap();
map.remove(ConnectionSchema.MAX_WORK_QUEUE_DATA_SIZE_KEY);
ConnectionSchema schema = createSchema(map, 0);
assertEquals(ConnectionSchema.DEFAULT_MAX_QUEUE_DATA_SIZE, schema.getMaxWorkQueueDataSize());
assertEquals(schema.getMaxWorkQueueDataSize(), schema.toMap().get(ConnectionSchema.MAX_WORK_QUEUE_DATA_SIZE_KEY));
}
@Test
public void testFlowFileExpiration() {
ConnectionSchema schema = createSchema(0);
assertEquals(testFlowfileExpiration, schema.getFlowfileExpiration());
assertEquals(schema.getFlowfileExpiration(), schema.toMap().get(ConnectionSchema.FLOWFILE_EXPIRATION__KEY));
}
@Test
public void testNoFlowFileExpiration() {
Map<String, Object> map = createMap();
map.remove(ConnectionSchema.FLOWFILE_EXPIRATION__KEY);
ConnectionSchema schema = createSchema(map, 0);
assertEquals(ConnectionSchema.DEFAULT_FLOWFILE_EXPIRATION, schema.getFlowfileExpiration());
assertEquals(schema.getFlowfileExpiration(), schema.toMap().get(ConnectionSchema.FLOWFILE_EXPIRATION__KEY));
}
@Test
public void testQueuePrioritizer() {
ConnectionSchema schema = createSchema(0);
assertEquals(testQueuePrioritizerClass, schema.getQueuePrioritizerClass());
assertEquals(schema.getQueuePrioritizerClass(), schema.toMap().get(ConnectionSchema.QUEUE_PRIORITIZER_CLASS_KEY));
}
@Test
public void testNoQueuePrioritizer() {
Map<String, Object> map = createMap();
map.remove(ConnectionSchema.QUEUE_PRIORITIZER_CLASS_KEY);
ConnectionSchema schema = createSchema(map, 0);
assertEquals("", schema.getQueuePrioritizerClass());
assertEquals(schema.getQueuePrioritizerClass(), schema.toMap().get(ConnectionSchema.QUEUE_PRIORITIZER_CLASS_KEY));
}
}