update link to upper-constraints.txt
[dmaap/datarouter.git] / datarouter-node / src / test / java / org / onap / dmaap / datarouter / node / DeliveryTest.java
1 /*******************************************************************************
2  * ============LICENSE_START==================================================
3  * * org.onap.dmaap
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
10  * *
11  *  *      http://www.apache.org/licenses/LICENSE-2.0
12  * *
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====================================================
19  * *
20  * * ECOMP is a trademark and service mark of AT&T Intellectual Property.
21  * *
22  ******************************************************************************/
23 package org.onap.dmaap.datarouter.node;
24
25 import static org.mockito.Mockito.mock;
26 import static org.mockito.Mockito.times;
27 import static org.mockito.Mockito.verify;
28
29 import java.io.File;
30 import java.io.IOException;
31 import java.util.HashMap;
32 import org.apache.commons.lang3.reflect.FieldUtils;
33 import org.junit.After;
34 import org.junit.Assert;
35 import org.junit.Before;
36 import org.junit.Test;
37 import org.junit.runner.RunWith;
38 import org.mockito.Mock;
39 import org.onap.dmaap.datarouter.node.delivery.Delivery;
40 import org.onap.dmaap.datarouter.node.delivery.Delivery.DelItem;
41 import org.onap.dmaap.datarouter.node.delivery.DeliveryQueue;
42 import org.powermock.api.mockito.PowerMockito;
43 import org.powermock.core.classloader.annotations.PowerMockIgnore;
44 import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor;
45 import org.powermock.modules.junit4.PowerMockRunner;
46
47 @RunWith(PowerMockRunner.class)
48 @SuppressStaticInitializationFor("org.onap.dmaap.datarouter.node.NodeConfigManager")
49 @PowerMockIgnore({"com.sun.org.apache.xerces.*", "javax.xml.*", "org.xml.*"})
50 public class DeliveryTest {
51
52     @Mock
53     private DeliveryQueue deliveryQueue;
54     @Mock
55     private NodeConfigManager config;
56     private File nDir = new File("tmp/n");
57     private File newNDir = new File("tmp/n/0");
58     private File newNFile = new File("tmp/n/0/testN.txt");
59     private File sDir = new File("tmp/s");
60     private File newSDir = new File("tmp/s/0/1");
61     private File newSpoolFile = new File("tmp/s/0/1/123456789.dmaap-dr-node");
62     private File spoolFileMeta = new File("tmp/s/0/1/123456789.dmaap-dr-node.M");
63
64     @Before
65     public void setUp() throws IOException {
66         nDir.mkdirs();
67         sDir.mkdirs();
68         newNDir.mkdirs();
69         newNFile.createNewFile();
70         newSDir.mkdirs();
71         newSpoolFile.createNewFile();
72         spoolFileMeta.createNewFile();
73         config = mockNodeConfigManager();
74     }
75
76     @Test
77     public void Validate_Reset_Queue_Calls_Reset_Queue_On_Delivery_Queue_Object() throws IllegalAccessException {
78         Delivery delivery = new Delivery(config);
79         HashMap<String, DeliveryQueue> dqs = new HashMap<>();
80         dqs.put("tmp/s/0/1", deliveryQueue);
81         FieldUtils.writeDeclaredField(delivery, "dqs", dqs, true);
82         delivery.resetQueue("tmp/s/0/1");
83         verify(deliveryQueue, times(1)).resetQueue();
84     }
85
86     @Test
87     public void Validate_Mark_Success_Calls_Mark_Success_On_Delivery_Queue_Object() throws IllegalAccessException {
88         Delivery delivery = new Delivery(config);
89         HashMap<String, DeliveryQueue> dqs = new HashMap<>();
90         dqs.put("tmp/s/0/1", deliveryQueue);
91         FieldUtils.writeDeclaredField(delivery, "dqs", dqs, true);
92         delivery.markTaskSuccess("tmp/s/0/1", "123456789.dmaap-dr-node");
93         verify(deliveryQueue, times(1)).markTaskSuccess("123456789.dmaap-dr-node");
94     }
95
96     @Test
97     public void Validate_DelItem_With_Equal_Spool_And_PubId_Are_Equal() {
98         DelItem delItem1 = new DelItem("123456789.dmaap-dr-node", "tmp/s/0/1");
99         DelItem delItem2 = new DelItem("123456789.dmaap-dr-node", "tmp/s/0/1");
100         Assert.assertEquals(delItem1, delItem2);
101         Assert.assertEquals(0, delItem1.compareTo(delItem2));
102     }
103
104     @Test
105     public void Validate_DelItem_With_Unequal_Spool_And_PubId_Are_Not_Equal() {
106         DelItem delItem1 = new DelItem("123456789.dmaap-dr-node", "tmp/s/0/1");
107         DelItem delItem2 = new DelItem("000000000.dmaap-dr-node", "tmp/s/0/2");
108         Assert.assertNotEquals(delItem1, delItem2);
109         Assert.assertNotEquals(0, delItem1.compareTo(delItem2));
110     }
111
112     @After
113     public void tearDown() {
114         newSpoolFile.delete();
115         spoolFileMeta.delete();
116         newNFile.delete();
117         newNDir.delete();
118         newSDir.delete();
119         new File("tmp/s/0").delete();
120         nDir.delete();
121         sDir.delete();
122         File tmpDir = new File("tmp");
123         tmpDir.delete();
124     }
125
126     private NodeConfigManager mockNodeConfigManager() {
127         NodeConfigManager config = mock(NodeConfigManager.class);
128         PowerMockito.when(config.isConfigured()).thenReturn(true);
129         PowerMockito.when(config.getAllDests()).thenReturn(createDestInfoObjects());
130         PowerMockito.when(config.getFreeDiskStart()).thenReturn(0.9);
131         PowerMockito.when(config.getFreeDiskStop()).thenReturn(0.2);
132         PowerMockito.when(config.getDeliveryThreads()).thenReturn(0);
133         PowerMockito.when(config.getSpoolBase()).thenReturn("tmp");
134         return config;
135     }
136
137     private DestInfo[] createDestInfoObjects() {
138         DestInfo[] destInfos = new DestInfo[1];
139         DestInfo destInfo = new DestInfoBuilder().setName("node.datarouternew.com").setSpool("tmp/s/0/1")
140                 .setSubid("1")
141                 .setLogdata("logs/").setUrl("/subs/1").setAuthuser("user1")
142                 .setAuthentication("Basic dXNlcjE6cGFzc3dvcmQx")
143                 .setMetaonly(false).setUse100(true).setPrivilegedSubscriber(false).setFollowRedirects(false)
144                 .setDecompress(false).createDestInfo();
145         destInfos[0] = destInfo;
146         return destInfos;
147     }
148 }