761357a1d9fc22d6f82f83b22062c001ae2ab6fc
[policy/apex-pdp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2016-2018 Ericsson. All rights reserved.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.apex.plugins.event.protocol.xml;
22
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertFalse;
25 import static org.junit.Assert.assertNull;
26 import static org.junit.Assert.assertTrue;
27
28 import java.io.ByteArrayInputStream;
29 import java.io.IOException;
30 import java.io.InputStream;
31
32 import org.junit.Test;
33 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.HeaderDelimitedTextBlockReader;
34 import org.onap.policy.apex.service.engine.event.impl.filecarrierplugin.consumer.TextBlock;
35
36 /**
37  * @author Liam Fallon (liam.fallon@ericsson.com)
38  */
39 public class TestXMLTaggedEventConsumer {
40     @Test
41     public void testGarbageTextLine() throws IOException {
42         final InputStream xmlInputStream = new ByteArrayInputStream("hello there".getBytes());
43
44         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
45         xmlTaggedReader.init(xmlInputStream);
46
47         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
48         assertNull(textBlock.getText());
49         assertTrue(textBlock.isEndOfText());
50     }
51
52     @Test
53     public void testPartialEventLine() throws IOException {
54         final InputStream xmlInputStream =
55                 new ByteArrayInputStream("1469781869268</TestTimestamp></MainTag>".getBytes());
56
57         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
58         xmlTaggedReader.init(xmlInputStream);
59
60         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
61         assertNull(textBlock.getText());
62         assertTrue(textBlock.isEndOfText());
63     }
64
65     @Test
66     public void testFullEventLine() throws IOException {
67         final InputStream xmlInputStream = new ByteArrayInputStream(
68                 "<?xml><MainTag><TestTimestamp>1469781869268</TestTimestamp></MainTag>".getBytes());
69
70         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
71         xmlTaggedReader.init(xmlInputStream);
72
73         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
74         assertEquals(textBlock.getText(), "<?xml><MainTag><TestTimestamp>1469781869268</TestTimestamp></MainTag>");
75         assertTrue(textBlock.isEndOfText());
76     }
77
78     @Test
79     public void testFullEventGarbageBeforeLine() throws IOException {
80         final InputStream xmlInputStream = new ByteArrayInputStream(
81                 "Garbage<?xml><MainTag><TestTimestamp>1469781869268</TestTimestamp></MainTag>".getBytes());
82
83         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
84         xmlTaggedReader.init(xmlInputStream);
85
86         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
87         assertTrue(textBlock.isEndOfText());
88     }
89
90     @Test
91     public void testFullEventGarbageBeforeAfterLine() throws IOException {
92         final InputStream xmlInputStream = new ByteArrayInputStream(
93                 "Garbage<?xml><MainTag><TestTimestamp>1469781869268</TestTimestamp></MainTag>Rubbish".getBytes());
94
95         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
96         xmlTaggedReader.init(xmlInputStream);
97
98         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
99         assertTrue(textBlock.isEndOfText());
100     }
101
102     @Test
103     public void testFullEventGarbageAfterLine() throws IOException {
104         final InputStream xmlInputStream = new ByteArrayInputStream(
105                 "<?xml><MainTag><TestTimestamp>1469781869268</TestTimestamp></MainTag>Rubbish".getBytes());
106
107         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
108         xmlTaggedReader.init(xmlInputStream);
109
110         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
111         assertEquals(textBlock.getText(),
112                 "<?xml><MainTag><TestTimestamp>1469781869268</TestTimestamp></MainTag>Rubbish");
113         assertTrue(textBlock.isEndOfText());
114     }
115
116     @Test
117     public void testGarbageTextMultiLine() throws IOException {
118         final InputStream xmlInputStream = new ByteArrayInputStream("hello\nthere".getBytes());
119
120         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
121         xmlTaggedReader.init(xmlInputStream);
122
123         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
124         assertTrue(textBlock.isEndOfText());
125     }
126
127     @Test
128     public void testPartialEventMultiLine() throws IOException {
129         final InputStream xmlInputStream =
130                 new ByteArrayInputStream("1469781869268\n</TestTimestamp>\n</MainTag>".getBytes());
131
132         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
133         xmlTaggedReader.init(xmlInputStream);
134
135         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
136         assertTrue(textBlock.isEndOfText());
137     }
138
139     @Test
140     public void testFullEventMultiLine() throws IOException {
141         final InputStream xmlInputStream = new ByteArrayInputStream(
142                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\n\n".getBytes());
143
144         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
145         xmlTaggedReader.init(xmlInputStream);
146
147         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
148         assertEquals(textBlock.getText(),
149                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>");
150         assertTrue(textBlock.isEndOfText());
151     }
152
153     @Test
154     public void testFullEventGarbageBeforeMultiLine() throws IOException {
155         final InputStream xmlInputStream = new ByteArrayInputStream(
156                 "Garbage\n<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\n\n".getBytes());
157
158         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
159         xmlTaggedReader.init(xmlInputStream);
160
161         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
162         assertEquals(textBlock.getText(),
163                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>");
164         assertTrue(textBlock.isEndOfText());
165     }
166
167     @Test
168     public void testFullEventGarbageBeforeAfterMultiLine() throws IOException {
169         final InputStream xmlInputStream = new ByteArrayInputStream(
170                 "Garbage\n<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\nRubbish\n\n"
171                         .getBytes());
172
173         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
174         xmlTaggedReader.init(xmlInputStream);
175
176         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
177         assertEquals(textBlock.getText(),
178                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\nRubbish");
179         assertTrue(textBlock.isEndOfText());
180     }
181
182     @Test
183     public void testFullEventGarbageAfterMultiLine() throws IOException {
184         final InputStream xmlInputStream = new ByteArrayInputStream(
185                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\nRubbish".getBytes());
186
187         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
188         xmlTaggedReader.init(xmlInputStream);
189
190         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
191         assertEquals(textBlock.getText(),
192                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\nRubbish");
193         assertTrue(textBlock.isEndOfText());
194     }
195
196     @Test
197     public void testPartialEventsLine() throws IOException {
198         final InputStream xmlInputStream = new ByteArrayInputStream(
199                 "1469781869268</TestTimestamp></MainTag><?xml><MainTag><TestTimestamp>1469781869268</TestTimestamp>"
200                         .getBytes());
201
202         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
203         xmlTaggedReader.init(xmlInputStream);
204
205         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
206         assertTrue(textBlock.isEndOfText());
207     }
208
209     @Test
210     public void testFullEventsGarbageBeforeLine() throws IOException {
211         final InputStream xmlInputStream = new ByteArrayInputStream(
212                 "Garbage<?xml><MainTag><TestTimestamp>1469781869268</TestTimestamp></MainTag><?xml><MainTag><TestTimestamp>"
213                         .getBytes());
214
215         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
216         xmlTaggedReader.init(xmlInputStream);
217
218         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
219         assertTrue(textBlock.isEndOfText());
220     }
221
222     @Test
223     public void testFullEventsGarbageBeforeAfterLine() throws IOException {
224         final InputStream xmlInputStream = new ByteArrayInputStream(
225                 "Garbage<?xml><MainTag><TestTimestamp>1469781869268</TestTimestamp></MainTag>Rubbish<?xml><MainTag><TestTimestamp>\nRefuse"
226                         .getBytes());
227
228         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
229         xmlTaggedReader.init(xmlInputStream);
230
231         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
232         assertTrue(textBlock.isEndOfText());
233     }
234
235     @Test
236     public void testFullEventsGarbageAfterLine() throws IOException {
237         final InputStream xmlInputStream = new ByteArrayInputStream(
238                 "<?xml><MainTag><TestTimestamp>1469781869268</TestTimestamp></MainTag>Rubbish<?xml><MainTag><TestTimestamp>Refuse"
239                         .getBytes());
240
241         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
242         xmlTaggedReader.init(xmlInputStream);
243
244         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
245         assertEquals(textBlock.getText(),
246                 "<?xml><MainTag><TestTimestamp>1469781869268</TestTimestamp></MainTag>Rubbish<?xml><MainTag><TestTimestamp>Refuse");
247         assertTrue(textBlock.isEndOfText());
248     }
249
250     @Test
251     public void testPartialEventsMultiLine() throws IOException {
252         final InputStream xmlInputStream = new ByteArrayInputStream(
253                 "1469781869268\n</TestTimestamp>\n</MainTag>\n<?xml>\n<MainTag>\n<TestTimestamp>".getBytes());
254
255         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
256         xmlTaggedReader.init(xmlInputStream);
257
258         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
259         assertEquals(textBlock.getText(), "<?xml>\n<MainTag>\n<TestTimestamp>");
260         assertTrue(textBlock.isEndOfText());
261     }
262
263     @Test
264     public void testFullEventsMultiLine() throws IOException {
265         final InputStream xmlInputStream = new ByteArrayInputStream(
266                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\n<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\n"
267                         .getBytes());
268
269         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
270         xmlTaggedReader.init(xmlInputStream);
271
272         TextBlock textBlock = xmlTaggedReader.readTextBlock();
273         assertEquals(textBlock.getText(),
274                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>");
275         assertFalse(textBlock.isEndOfText());
276
277         textBlock = xmlTaggedReader.readTextBlock();
278         assertEquals(textBlock.getText(),
279                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>");
280         assertTrue(textBlock.isEndOfText());
281     }
282
283     @Test
284     public void testFullEventsGarbageBeforeMultiLine() throws IOException {
285         final InputStream xmlInputStream = new ByteArrayInputStream(
286                 "Garbage\n<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\n\n<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\n"
287                         .getBytes());
288
289         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
290         xmlTaggedReader.init(xmlInputStream);
291
292         TextBlock textBlock = xmlTaggedReader.readTextBlock();
293         assertEquals(textBlock.getText(),
294                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>");
295         assertFalse(textBlock.isEndOfText());
296
297         textBlock = xmlTaggedReader.readTextBlock();
298         assertEquals(textBlock.getText(),
299                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>");
300         assertTrue(textBlock.isEndOfText());
301     }
302
303     @Test
304     public void testFullEventsGarbageBeforeAfterMultiLine() throws IOException {
305         final InputStream xmlInputStream = new ByteArrayInputStream(
306                 "Garbage\n<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\nRubbish\n<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\nRefuse\n"
307                         .getBytes());
308
309         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
310         xmlTaggedReader.init(xmlInputStream);
311
312         TextBlock textBlock = xmlTaggedReader.readTextBlock();
313         assertEquals(textBlock.getText(),
314                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\nRubbish");
315         assertFalse(textBlock.isEndOfText());
316
317         textBlock = xmlTaggedReader.readTextBlock();
318         assertEquals(textBlock.getText(),
319                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\nRefuse");
320         assertTrue(textBlock.isEndOfText());
321     }
322
323     @Test
324     public void testFullEventsGarbageAfterMultiLine() throws IOException {
325         final InputStream xmlInputStream = new ByteArrayInputStream(
326                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\nRubbish".getBytes());
327
328         final HeaderDelimitedTextBlockReader xmlTaggedReader = new HeaderDelimitedTextBlockReader("<?xml");
329         xmlTaggedReader.init(xmlInputStream);
330
331         final TextBlock textBlock = xmlTaggedReader.readTextBlock();
332         assertEquals(textBlock.getText(),
333                 "<?xml>\n<MainTag>\n<TestTimestamp>1469781869268</TestTimestamp>\n</MainTag>\nRubbish");
334         assertTrue(textBlock.isEndOfText());
335     }
336 }