/* * Copyright 2016 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * 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.kie.server.router.proxy.aggregate; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import java.util.ArrayList; import java.util.List; import org.jboss.logging.Logger; import org.junit.Test; import org.kie.server.router.proxy.aggragate.JaxbXMLResponseAggregator; import org.w3c.dom.Document; import org.w3c.dom.NodeList; public class JAXBAggregatorTest extends AbstractAggregateTest { private static final Logger logger = Logger.getLogger(JAXBAggregatorTest.class); @Test public void testAggregateProcessDefinitions() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-def-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-def-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-definitions"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processDefs = xml.getElementsByTagName("processes"); assertNotNull(processDefs); assertEquals(5, processDefs.getLength()); } @Test public void testAggregateProcessDefinitionsTargetEmpty() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-def-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-def-empty.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-definitions"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processDefs = xml.getElementsByTagName("processes"); assertNotNull(processDefs); assertEquals(2, processDefs.getLength()); } @Test public void testAggregateProcessDefinitionsSourceEmpty() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-def-empty.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-def-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-definitions"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processDefs = xml.getElementsByTagName("processes"); assertNotNull(processDefs); assertEquals(3, processDefs.getLength()); } @Test public void testAggregateProcessDefinitionsEmpty() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-def-empty.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-def-empty.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-definitions"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processDefs = xml.getElementsByTagName("processes"); assertNotNull(processDefs); assertEquals(0, processDefs.getLength()); } @Test public void testAggregateProcessInstances() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-instance-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-instance-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-instance-list"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processInstances = xml.getElementsByTagName("process-instance"); assertNotNull(processInstances); assertEquals(4, processInstances.getLength()); } @Test public void testAggregateProcessInstancesTargetEmpty() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-instance-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-instance-empty.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-instance-list"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processInstances = xml.getElementsByTagName("process-instance"); assertNotNull(processInstances); assertEquals(1, processInstances.getLength()); } @Test public void testAggregateProcessInstancesSourceEmpty() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-instance-empty.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-instance-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-instance-list"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processInstances = xml.getElementsByTagName("process-instance"); assertNotNull(processInstances); assertEquals(3, processInstances.getLength()); } @Test public void testAggregateProcessInstancesEmpty() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-instance-empty.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-instance-empty.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-instance-list"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processInstances = xml.getElementsByTagName("process-instance"); assertNotNull(processInstances); assertEquals(0, processInstances.getLength()); } @Test public void testAggregateTaskSummaries() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/task-summary-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/task-summary-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("task-summary-list"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processInstances = xml.getElementsByTagName("task-summary"); assertNotNull(processInstances); assertEquals(5, processInstances.getLength()); } @Test public void testAggregateTaskSummariesTargetEmpty() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/task-summary-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/task-summary-empty.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("task-summary-list"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processInstances = xml.getElementsByTagName("task-summary"); assertNotNull(processInstances); assertEquals(3, processInstances.getLength()); } @Test public void testAggregateTaskSummariesSourceEmpty() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/task-summary-empty.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/task-summary-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("task-summary-list"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processInstances = xml.getElementsByTagName("task-summary"); assertNotNull(processInstances); assertEquals(2, processInstances.getLength()); } @Test public void testAggregateTaskSummariesEmpty() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/task-summary-empty.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/task-summary-empty.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("task-summary-list"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processInstances = xml.getElementsByTagName("task-summary"); assertNotNull(processInstances); assertEquals(0, processInstances.getLength()); } @Test public void testSortProcessDefinitions() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-def-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-def-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data, "ProcessId", true, 0, 2); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-definitions"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processDefs = xml.getElementsByTagName("processes"); assertNotNull(processDefs); assertEquals(2, processDefs.getLength()); NodeList processDefIds = xml.getElementsByTagName("process-id"); assertNotNull(processDefIds); assertEquals(2, processDefIds.getLength()); // make sure it's properly sorted and paged String value1 = processDefIds.item(0).getFirstChild().getNodeValue(); assertEquals("1", value1); String value2 = processDefIds.item(1).getFirstChild().getNodeValue(); assertEquals("2", value2); } @Test public void testSortProcessDefinitionsDescending() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-def-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-def-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data, "ProcessId", false, 0, 2); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-definitions"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processDefs = xml.getElementsByTagName("processes"); assertNotNull(processDefs); assertEquals(2, processDefs.getLength()); NodeList processDefIds = xml.getElementsByTagName("process-id"); assertNotNull(processDefIds); assertEquals(2, processDefIds.getLength()); // make sure it's properly sorted and paged String value1 = processDefIds.item(0).getFirstChild().getNodeValue(); assertEquals("5", value1); String value2 = processDefIds.item(1).getFirstChild().getNodeValue(); assertEquals("4", value2); } @Test public void testSortProcessDefinitionsNextPage() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-def-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-def-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data, "ProcessId", true, 1, 2); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-definitions"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processDefs = xml.getElementsByTagName("processes"); assertNotNull(processDefs); assertEquals(2, processDefs.getLength()); NodeList processDefIds = xml.getElementsByTagName("process-id"); assertNotNull(processDefIds); assertEquals(2, processDefIds.getLength()); // make sure it's properly sorted and paged String value1 = processDefIds.item(0).getFirstChild().getNodeValue(); assertEquals("3", value1); String value2 = processDefIds.item(1).getFirstChild().getNodeValue(); assertEquals("4", value2); } @Test public void testSortProcessDefinitionsNextPageDescending() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-def-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-def-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data, "ProcessId", false, 1, 2); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-definitions"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processDefs = xml.getElementsByTagName("processes"); assertNotNull(processDefs); assertEquals(2, processDefs.getLength()); NodeList processDefIds = xml.getElementsByTagName("process-id"); assertNotNull(processDefIds); assertEquals(2, processDefIds.getLength()); // make sure it's properly sorted and paged String value1 = processDefIds.item(0).getFirstChild().getNodeValue(); assertEquals("3", value1); String value2 = processDefIds.item(1).getFirstChild().getNodeValue(); assertEquals("2", value2); } @Test public void testSortProcessDefinitionsOutOPage() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/process-def-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/process-def-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data, "ProcessId", true, 5, 2); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("process-definitions"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList processDefs = xml.getElementsByTagName("processes"); assertNotNull(processDefs); assertEquals(0, processDefs.getLength()); } @Test public void testAggregateContainers() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/containers-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/containers-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("response"); assertNotNull(processes); assertEquals(1, processes.getLength()); NodeList wrapper = xml.getElementsByTagName("kie-containers"); assertNotNull(wrapper); assertEquals(1, wrapper.getLength()); NodeList containers = xml.getElementsByTagName("kie-container"); assertNotNull(containers); assertEquals(6, containers.getLength()); } @Test public void testAggregateRawList() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/raw-list-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/raw-list-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("value"); assertNotNull(processes); assertEquals(5, processes.getLength()); } @Test public void testAggregateRawListWithPaging() throws Exception { String xml1 = read(this.getClass().getResourceAsStream("/jaxb/raw-list-1.xml")); String xml2 = read(this.getClass().getResourceAsStream("/jaxb/raw-list-2.xml")); JaxbXMLResponseAggregator aggregate = new JaxbXMLResponseAggregator(); List<String> data = new ArrayList<>(); data.add(xml1); data.add(xml2); String result = aggregate.aggregate(data, null, true, 1, 2); logger.debug(result); Document xml = toXml(result); assertNotNull(xml); NodeList processes = xml.getElementsByTagName("value"); assertNotNull(processes); assertEquals(2, processes.getLength()); } }