package com.thinkbiganalytics.nifi.rest.model.visitor; /*- * #%L * thinkbig-nifi-rest-model * %% * 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.thinkbiganalytics.nifi.rest.model.flow.NifiFlowProcessGroup; import org.apache.nifi.web.api.dto.ProcessGroupDTO; import org.apache.nifi.web.api.dto.ProcessorDTO; import org.junit.Assert; import org.junit.Test; import java.util.UUID; import java.util.concurrent.atomic.AtomicLong; /** * Test the NiFiFlowBuilder */ public class TestFlowBuilder { private AtomicLong groupCounter = new AtomicLong(0L); private AtomicLong processorCounter = new AtomicLong(0L); private ProcessGroupDTO processGroupDTO() { ProcessGroupDTO groupDTO = new ProcessGroupDTO(); groupDTO.setName("Group " + groupCounter.incrementAndGet()); groupDTO.setId(UUID.randomUUID().toString()); return groupDTO; } private ProcessorDTO processorDTO() { ProcessorDTO processorDTO = new ProcessorDTO(); processorDTO.setName("Processor " + processorCounter.incrementAndGet()); processorDTO.setId(UUID.randomUUID().toString()); return processorDTO; } private NifiVisitableProcessor processor() { return new NifiVisitableProcessor(processorDTO()); } private void connect(NifiVisitableProcessor source, NifiVisitableProcessor dest) { dest.addSource(source); source.addDestination(dest); } @Test public void testFlowBuilder() { //build a graph of processors NifiVisitableProcessGroup parent = new NifiVisitableProcessGroup(processGroupDTO()); NifiVisitableProcessor processor1 = processor(); NifiVisitableProcessor processor2 = processor(); NifiVisitableProcessor processor3 = processor(); NifiVisitableProcessor processor4 = processor(); NifiVisitableProcessor processor5 = processor(); NifiVisitableProcessor processor6 = processor(); NifiVisitableProcessor processor7 = processor(); //connect processors connect(processor1, processor2); connect(processor2, processor3); connect(processor2, processor4); connect(processor4, processor5); connect(processor5, processor6); connect(processor5, processor7); parent.getStartingProcessors().add(processor1); NifiFlowBuilder builder = new NifiFlowBuilder(); NifiFlowProcessGroup group = builder.build(parent); Assert.assertTrue(group.getStartingProcessors().size() == 1); //assert processors 3,6,7 are ending/leaf processors Assert.assertTrue(group.getEndingProcessors().size() == 3); } }