1 /*******************************************************************************
2 * ============LICENSE_START==================================================
4 * * ===========================================================================
5 * * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6 * * ===========================================================================
7 * * Licensed under the Apache License, Version 2.0 (the "License");
8 * * you may not use this file except in compliance with the License.
9 * * You may obtain a copy of the License at
11 * * http://www.apache.org/licenses/LICENSE-2.0
13 * * Unless required by applicable law or agreed to in writing, software
14 * * distributed under the License is distributed on an "AS IS" BASIS,
15 * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * * See the License for the specific language governing permissions and
17 * * limitations under the License.
18 * * ============LICENSE_END====================================================
20 * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
22 ******************************************************************************/
23 package org.onap.dmaap.datarouter.node;
25 import static org.mockito.Mockito.mock;
26 import static org.mockito.Mockito.times;
27 import static org.mockito.Mockito.verify;
30 import java.io.IOException;
31 import java.util.HashMap;
32 import java.util.Hashtable;
33 import org.apache.commons.lang3.reflect.FieldUtils;
34 import org.junit.After;
35 import org.junit.Assert;
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.junit.runner.RunWith;
39 import org.mockito.Mock;
40 import org.onap.dmaap.datarouter.node.Delivery.DelItem;
41 import org.powermock.api.mockito.PowerMockito;
42 import org.powermock.core.classloader.annotations.PowerMockIgnore;
43 import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
44 import org.powermock.modules.junit4.PowerMockRunner;
46 @RunWith(PowerMockRunner.class)
47 @SuppressStaticInitializationFor("org.onap.dmaap.datarouter.node.NodeConfigManager")
48 @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*"})
49 public class DeliveryTest {
52 private DeliveryQueue deliveryQueue;
54 private NodeConfigManager config;
55 private File nDir = new File("tmp/n");
56 private File newNDir = new File("tmp/n/0");
57 private File newNFile = new File("tmp/n/0/testN.txt");
58 private File sDir = new File("tmp/s");
59 private File newSDir = new File("tmp/s/0/1");
60 private File newSpoolFile = new File("tmp/s/0/1/123456789.dmaap-dr-node");
61 private File spoolFileMeta = new File("tmp/s/0/1/123456789.dmaap-dr-node.M");
64 public void setUp() throws IOException {
68 newNFile.createNewFile();
70 newSpoolFile.createNewFile();
71 spoolFileMeta.createNewFile();
72 config = mockNodeConfigManager();
76 public void Validate_Reset_Queue_Calls_Reset_Queue_On_Delivery_Queue_Object() throws IllegalAccessException {
77 Delivery delivery = new Delivery(config);
78 HashMap<String, DeliveryQueue> dqs = new HashMap<>();
79 dqs.put("tmp/s/0/1", deliveryQueue);
80 FieldUtils.writeDeclaredField(delivery, "dqs", dqs, true);
81 delivery.resetQueue("tmp/s/0/1");
82 verify(deliveryQueue, times(1)).resetQueue();
86 public void Validate_Mark_Success_Calls_Mark_Success_On_Delivery_Queue_Object() throws IllegalAccessException {
87 Delivery delivery = new Delivery(config);
88 HashMap<String, DeliveryQueue> dqs = new HashMap<>();
89 dqs.put("tmp/s/0/1", deliveryQueue);
90 FieldUtils.writeDeclaredField(delivery, "dqs", dqs, true);
91 delivery.markTaskSuccess("tmp/s/0/1", "123456789.dmaap-dr-node");
92 verify(deliveryQueue, times(1)).markTaskSuccess("123456789.dmaap-dr-node");
96 public void Validate_DelItem_With_Equal_Spool_And_PubId_Are_Equal() {
97 DelItem delItem1 = new DelItem("123456789.dmaap-dr-node", "tmp/s/0/1");
98 DelItem delItem2 = new DelItem("123456789.dmaap-dr-node", "tmp/s/0/1");
99 Assert.assertEquals(delItem1, delItem2);
100 Assert.assertEquals(0, delItem1.compareTo(delItem2));
104 public void Validate_DelItem_With_Unequal_Spool_And_PubId_Are_Not_Equal() {
105 DelItem delItem1 = new DelItem("123456789.dmaap-dr-node", "tmp/s/0/1");
106 DelItem delItem2 = new DelItem("000000000.dmaap-dr-node", "tmp/s/0/2");
107 Assert.assertNotEquals(delItem1, delItem2);
108 Assert.assertNotEquals(0, delItem1.compareTo(delItem2));
112 public void tearDown() {
113 newSpoolFile.delete();
114 spoolFileMeta.delete();
118 new File("tmp/s/0").delete();
121 File tmpDir = new File("tmp");
125 private NodeConfigManager mockNodeConfigManager() {
126 NodeConfigManager config = mock(NodeConfigManager.class);
127 PowerMockito.when(config.isConfigured()).thenReturn(true);
128 PowerMockito.when(config.getAllDests()).thenReturn(createDestInfoObjects());
129 PowerMockito.when(config.getFreeDiskStart()).thenReturn(0.9);
130 PowerMockito.when(config.getFreeDiskStop()).thenReturn(0.2);
131 PowerMockito.when(config.getDeliveryThreads()).thenReturn(0);
132 PowerMockito.when(config.getSpoolBase()).thenReturn("tmp");
136 private DestInfo[] createDestInfoObjects() {
137 DestInfo[] destInfos = new DestInfo[1];
138 DestInfo destInfo = new DestInfoBuilder().setName("node.datarouternew.com").setSpool("tmp/s/0/1")
140 .setLogdata("logs/").setUrl("/subs/1").setAuthuser("user1")
141 .setAuthentication("Basic dXNlcjE6cGFzc3dvcmQx")
142 .setMetaonly(false).setUse100(true).setPrivilegedSubscriber(false).setFollowRedirects(false)
143 .setDecompress(false).createDestInfo();
144 destInfos[0] = destInfo;