4b47c63db406545b21fda6597e38690f192df8b9
[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.context.test.distribution;
22
23 import java.util.Collection;
24 import java.util.Date;
25 import java.util.HashMap;
26 import java.util.LinkedHashMap;
27 import java.util.Locale;
28 import java.util.Map;
29 import java.util.Map.Entry;
30 import java.util.Set;
31 import java.util.TimeZone;
32 import java.util.TreeSet;
33
34 import org.onap.policy.apex.context.ContextAlbum;
35 import org.onap.policy.apex.context.ContextException;
36 import org.onap.policy.apex.context.ContextRuntimeException;
37 import org.onap.policy.apex.context.Distributor;
38 import org.onap.policy.apex.context.impl.distribution.DistributorFactory;
39 import org.onap.policy.apex.context.test.concepts.TestContextItem000;
40 import org.onap.policy.apex.context.test.concepts.TestContextItem001;
41 import org.onap.policy.apex.context.test.concepts.TestContextItem002;
42 import org.onap.policy.apex.context.test.concepts.TestContextItem003;
43 import org.onap.policy.apex.context.test.concepts.TestContextItem004;
44 import org.onap.policy.apex.context.test.concepts.TestContextItem005;
45 import org.onap.policy.apex.context.test.concepts.TestContextItem006;
46 import org.onap.policy.apex.context.test.concepts.TestContextItem007;
47 import org.onap.policy.apex.context.test.concepts.TestContextItem008;
48 import org.onap.policy.apex.context.test.concepts.TestContextItem009;
49 import org.onap.policy.apex.context.test.concepts.TestContextItem00A;
50 import org.onap.policy.apex.context.test.concepts.TestContextItem00B;
51 import org.onap.policy.apex.context.test.concepts.TestContextItem00C;
52 import org.onap.policy.apex.context.test.concepts.TestExternalContextItem;
53 import org.onap.policy.apex.context.test.concepts.TestGlobalContextItem;
54 import org.onap.policy.apex.context.test.concepts.TestPolicyContextItem;
55 import org.onap.policy.apex.context.test.factory.TestContextAlbumFactory;
56 import org.onap.policy.apex.model.basicmodel.concepts.AxArtifactKey;
57 import org.onap.policy.apex.model.basicmodel.concepts.AxValidationResult;
58 import org.onap.policy.apex.model.contextmodel.concepts.AxContextModel;
59 import org.slf4j.ext.XLogger;
60 import org.slf4j.ext.XLoggerFactory;
61
62 /**
63  * The Class TestContextInstantiation is used to test Apex context insitiation is correct.
64  *
65  * @author Sergey Sachkov (sergey.sachkov@ericsson.com)
66  */
67 public class ContextInstantiation {
68     // Logger for this class
69     private static final XLogger LOGGER = XLoggerFactory.getXLogger(ContextInstantiation.class);
70
71     /**
72      * Test context instantiation.
73      *
74      * @throws ContextException the context exception
75      */
76     // CHECKSTYLE:OFF: checkstyle:MaximumMethodLength
77     public void testContextInstantiation() throws ContextException {
78         // CHECKSTYLE:ON: checkstyle:MaximumMethodLength
79         LOGGER.debug("Running TestContextInstantiation test . . .");
80
81         final AxArtifactKey distributorKey = new AxArtifactKey("ApexDistributorInit", "0.0.1");
82         Distributor contextDistributor = null;
83         try {
84             contextDistributor = new DistributorFactory().getDistributor(distributorKey);
85         } catch (final Exception exception) {
86             LOGGER.error("Error occured while Instantiating Distributor for : {}", distributorKey, exception);
87             return;
88         }
89
90         // @formatter:off
91         final AxArtifactKey[] usedArtifactStackArray = {
92                 new AxArtifactKey("testC-top", "0.0.1"), new AxArtifactKey("testC-next", "0.0.1"),
93                 new AxArtifactKey("testC-bot", "0.0.1")
94         };
95         // @formatter:on
96
97         try {
98             // CHECKSTYLE:OFF: checkstyle:magicNumber
99             final AxContextModel policyContextModel = TestContextAlbumFactory.createPolicyContextModel();
100             final AxValidationResult result = new AxValidationResult();
101             policyContextModel.validate(result);
102             LOGGER.debug(result.toString());
103             assert (result.isValid());
104
105             contextDistributor.registerModel(policyContextModel);
106
107             final ContextAlbum policyContextAlbum =
108                     contextDistributor.createContextAlbum(new AxArtifactKey("PolicyContextAlbum", "0.0.1"));
109             assert (policyContextAlbum != null);
110             policyContextAlbum.setUserArtifactStack(usedArtifactStackArray);
111
112             final Float testFloat = new Float(3.14159265359);
113             final Date testDate = new Date();
114
115             final TestContextItem009 tci9 = new TestContextItem009();
116             tci9.setDateValue(new TestContextItem008(testDate));
117             tci9.setTZValue(TimeZone.getTimeZone("Europe/Dublin").getDisplayName());
118             tci9.setDST(true);
119
120             final TestContextItem00A tciA = new TestContextItem00A();
121             tciA.setDateValue(new TestContextItem008(testDate));
122             tciA.setTZValue(TimeZone.getTimeZone("Europe/Dublin").getDisplayName());
123             tciA.setDST(true);
124             tciA.setUTCOffset(-600);
125             tciA.setLocale(Locale.ENGLISH);
126
127             final TreeSet<String> testTreeSet = new TreeSet<>();
128             testTreeSet.add("one hundred");
129             testTreeSet.add("one hundred and one");
130             testTreeSet.add("one hundred and two");
131             testTreeSet.add("one hundred and three");
132             testTreeSet.add("one hundred and four");
133
134             final Map<String, String> testHashMap = new HashMap<>();
135             testHashMap.put("0", "zero");
136             testHashMap.put("1", "one");
137             testHashMap.put("2", "two");
138             testHashMap.put("3", "three");
139             testHashMap.put("4", "four");
140
141             final TestContextItem006 testPolicyContextItem000 =
142                     new TestContextItem006("This is a policy context string");
143             final TestContextItem003 testPolicyContextItem001 = new TestContextItem003(0xFFFFFFFFFFFFFFFFL);
144             final TestContextItem005 testPolicyContextItem002 = new TestContextItem005(Math.PI);
145             final TestContextItem000 testPolicyContextItem003 = new TestContextItem000(true);
146             final TestContextItem003 testPolicyContextItem004 = new TestContextItem003(testDate.getTime());
147             final TestContextItem00C testPolicyContextItem005 = new TestContextItem00C(testHashMap);
148
149             final Map<String, Object> valueMapA = new LinkedHashMap<>();
150             valueMapA.put("TestPolicyContextItem001", testPolicyContextItem001);
151             valueMapA.put("TestPolicyContextItem002", testPolicyContextItem002);
152             valueMapA.put("TestPolicyContextItem003", testPolicyContextItem003);
153             valueMapA.put("TestPolicyContextItem004", testPolicyContextItem004);
154             valueMapA.put("TestPolicyContextItem005", testPolicyContextItem005);
155             valueMapA.put("TestPolicyContextItem000", testPolicyContextItem000);
156
157             try {
158                 policyContextAlbum.put("TestPolicyContextItem000", testPolicyContextItem000);
159                 assert ("Test should throw an exception".equals(""));
160             } catch (final ContextRuntimeException e) {
161                 assert (e.getMessage()
162                         .equals("Failed to set context value for key \"TestPolicyContextItem000\" in album \"PolicyContextAlbum:0.0.1\": "
163                                 + "PolicyContextAlbum:0.0.1: object \"TestContextItem006 [stringValue=This is a policy context string]\" "
164                                 + "of class \"org.onap.policy.apex.context.test.concepts.TestContextItem006\""
165                                 + " not compatible with class \"org.onap.policy.apex.context.test.concepts.TestPolicyContextItem\""));
166             }
167
168             try {
169                 policyContextAlbum.putAll(valueMapA);
170                 assert ("Test should throw an exception".equals(""));
171             } catch (final ContextRuntimeException e) {
172                 assert (e.getMessage()
173                         .equals("Failed to set context value for key \"TestPolicyContextItem001\" in album \"PolicyContextAlbum:0.0.1\": "
174                                 + "PolicyContextAlbum:0.0.1: object \"TestContextItem003 [longValue=-1]\" "
175                                 + "of class \"org.onap.policy.apex.context.test.concepts.TestContextItem003\""
176                                 + " not compatible with class \"org.onap.policy.apex.context.test.concepts.TestPolicyContextItem\""));
177             }
178
179             final TestPolicyContextItem policyContext = new TestPolicyContextItem();
180
181             LOGGER.debug(policyContextAlbum.toString());
182
183             policyContext.setTestPolicyContextItem000(testPolicyContextItem000);
184             policyContext.setTestPolicyContextItem001(testPolicyContextItem001);
185             policyContext.setTestPolicyContextItem002(testPolicyContextItem002);
186             policyContext.setTestPolicyContextItem003(testPolicyContextItem003);
187             policyContext.setTestPolicyContextItem004(testPolicyContextItem004);
188             policyContext.setTestPolicyContextItem005(testPolicyContextItem005);
189
190             final Map<String, Object> valueMap0 = new HashMap<>();
191             valueMap0.put("TestPolicyContextItem", policyContext);
192
193             policyContextAlbum.putAll(valueMap0);
194
195             final TestPolicyContextItem contextItem =
196                     (TestPolicyContextItem) policyContextAlbum.get("TestPolicyContextItem");
197             assert (contextItem.getTestPolicyContextItem000().getStringValue()
198                     .equals("This is a policy context string"));
199             assert (contextItem.getTestPolicyContextItem001().getLongValue() == 0xFFFFFFFFFFFFFFFFL);
200             assert (Double.compare(contextItem.getTestPolicyContextItem002().getDoubleValue(), Math.PI) == 0);
201             assert (contextItem.getTestPolicyContextItem003().getFlag());
202             assert (contextItem.getTestPolicyContextItem004().getLongValue() == testDate.getTime());
203             assert (contextItem.getTestPolicyContextItem005().getMapValue().equals(testHashMap));
204
205             final AxContextModel globalContextModel = TestContextAlbumFactory.createGlobalContextModel();
206
207             final TestContextItem000 testGlobalContextItem000 = new TestContextItem000(false);
208             final TestContextItem001 testGlobalContextItem001 = new TestContextItem001((byte) 0xFF);
209             final TestContextItem002 testGlobalContextItem002 = new TestContextItem002(0xFFFFFFFF);
210             final TestContextItem003 testGlobalContextItem003 = new TestContextItem003(0xFFFFFFFFFFFFFFFFL);
211             final TestContextItem004 testGlobalContextItem004 = new TestContextItem004(testFloat);
212             final TestContextItem005 testGlobalContextItem005 = new TestContextItem005(Math.PI);
213             final TestContextItem006 testGlobalContextItem006 =
214                     new TestContextItem006("This is a global context string");
215             final TestContextItem007 testGlobalContextItem007 = new TestContextItem007(testDate.getTime());
216             final TestContextItem008 testGlobalContextItem008 = new TestContextItem008(testDate);
217             final TestContextItem00B testGlobalContextItem00B = new TestContextItem00B(testTreeSet);
218             final TestContextItem00C testGlobalContextItem00C = new TestContextItem00C(testHashMap);
219
220             final TestGlobalContextItem globalContext = new TestGlobalContextItem();
221
222             globalContext.setTestGlobalContextItem000(testGlobalContextItem000);
223             globalContext.setTestGlobalContextItem001(testGlobalContextItem001);
224             globalContext.setTestGlobalContextItem002(testGlobalContextItem002);
225             globalContext.setTestGlobalContextItem003(testGlobalContextItem003);
226             globalContext.setTestGlobalContextItem004(testGlobalContextItem004);
227             globalContext.setTestGlobalContextItem005(testGlobalContextItem005);
228             globalContext.setTestGlobalContextItem006(testGlobalContextItem006);
229             globalContext.setTestGlobalContextItem007(testGlobalContextItem007);
230             globalContext.setTestGlobalContextItem008(testGlobalContextItem008);
231             globalContext.setTestGlobalContextItem009(tci9);
232             globalContext.setTestGlobalContextItem00A(tciA);
233             globalContext.setTestGlobalContextItem00B(testGlobalContextItem00B);
234             globalContext.setTestGlobalContextItem00C(testGlobalContextItem00C);
235             final Map<String, Object> valueMap1 = new HashMap<>();
236             valueMap1.put("globalContext", globalContext);
237
238             try {
239                 contextDistributor.registerModel(globalContextModel);
240             } catch (final ContextException e) {
241                 assert (e.getMessage().equals(
242                         "active context albums found in distributor, clear the distributor before registering models"));
243             }
244
245             contextDistributor.registerModel(globalContextModel);
246
247             final ContextAlbum globalContextAlbum =
248                     contextDistributor.createContextAlbum(new AxArtifactKey("GlobalContextAlbum", "0.0.1"));
249             assert (globalContextAlbum != null);
250             globalContextAlbum.setUserArtifactStack(usedArtifactStackArray);
251
252             globalContextAlbum.putAll(valueMap1);
253
254             final TestGlobalContextItem globalContextItem =
255                     (TestGlobalContextItem) globalContextAlbum.get("globalContext");
256             assert (!globalContextItem.getTestGlobalContextItem000().getFlag());
257             assert (globalContextItem.getTestGlobalContextItem001().getByteValue() == (byte) 0xFF);
258             assert (globalContextItem.getTestGlobalContextItem002().getIntValue() == 0xFFFFFFFF);
259             assert (globalContextItem.getTestGlobalContextItem003().getLongValue() == 0xFFFFFFFFFFFFFFFFL);
260             assert (Float.compare(globalContextItem.getTestGlobalContextItem004().getFloatValue(), testFloat) == 0);
261             assert (Double.compare(globalContextItem.getTestGlobalContextItem005().getDoubleValue(), Math.PI) == 0);
262             assert (globalContextItem.getTestGlobalContextItem006().getStringValue()
263                     .equals("This is a global context string"));
264             assert (globalContextItem.getTestGlobalContextItem007().getLongValue() == testDate.getTime());
265             assert (globalContextItem.getTestGlobalContextItem008().getDateValue().equals(testDate));
266             assert (globalContextItem.getTestGlobalContextItem009().getDateValue().getTime() == tci9.getDateValue()
267                     .getTime());
268             assert (globalContextItem.getTestGlobalContextItem00A().getDateValue().getTime() == tciA.getDateValue()
269                     .getTime());
270             assert (globalContextItem.getTestGlobalContextItem00B().getSetValue().equals(testTreeSet));
271             assert (globalContextItem.getTestGlobalContextItem00C().getMapValue().equals(testHashMap));
272
273             final AxContextModel externalContextModel = TestContextAlbumFactory.createExternalContextModel();
274
275             final TestExternalContextItem externalContext = new TestExternalContextItem();
276
277             final TestContextItem000 testExternalContextItem000 = new TestContextItem000(false);
278             final TestContextItem001 testExternalContextItem001 = new TestContextItem001((byte) 0xFF);
279             final TestContextItem002 testExternalContextItem002 = new TestContextItem002(0xFFFFFFFF);
280             final TestContextItem003 testExternalContextItem003 = new TestContextItem003(0xFFFFFFFFFFFFFFFFL);
281             final TestContextItem004 testExternalContextItem004 = new TestContextItem004(testFloat);
282             final TestContextItem005 testExternalContextItem005 = new TestContextItem005(Math.PI);
283             final TestContextItem006 testExternalContextItem006 =
284                     new TestContextItem006("This is an external context string");
285             final TestContextItem007 testExternalContextItem007 = new TestContextItem007(testDate.getTime());
286             final TestContextItem008 testExternalContextItem008 = new TestContextItem008(testDate);
287             final TestContextItem00B testExternalContextItem00B = new TestContextItem00B(testTreeSet);
288             final TestContextItem00C testExternalContextItem00C = new TestContextItem00C(testHashMap);
289
290             final TestContextItem009 tci9A = new TestContextItem009(tci9);
291             final TestContextItem00A tciAA = new TestContextItem00A(tciA);
292
293             externalContext.setTestExternalContextItem000(testExternalContextItem000);
294             externalContext.setTestExternalContextItem001(testExternalContextItem001);
295             externalContext.setTestExternalContextItem002(testExternalContextItem002);
296             externalContext.setTestExternalContextItem003(testExternalContextItem003);
297             externalContext.setTestExternalContextItem004(testExternalContextItem004);
298             externalContext.setTestExternalContextItem005(testExternalContextItem005);
299             externalContext.setTestExternalContextItem006(testExternalContextItem006);
300             externalContext.setTestExternalContextItem007(testExternalContextItem007);
301             externalContext.setTestExternalContextItem008(testExternalContextItem008);
302             externalContext.setTestExternalContextItem009(tci9A);
303             externalContext.setTestExternalContextItem00A(tciAA);
304             externalContext.setTestExternalContextItem00B(testExternalContextItem00B);
305             externalContext.setTestExternalContextItem00C(testExternalContextItem00C);
306
307             final Map<String, Object> valueMap2 = new HashMap<>();
308             valueMap2.put("externalContext", externalContext);
309
310             contextDistributor.clear();
311             contextDistributor.init(new AxArtifactKey("ClearedandInittedDistributor", "0.0.1"));
312             contextDistributor.registerModel(externalContextModel);
313
314             final ContextAlbum externalContextAlbum =
315                     contextDistributor.createContextAlbum(new AxArtifactKey("ExternalContextAlbum", "0.0.1"));
316             assert (externalContextAlbum != null);
317             externalContextAlbum.setUserArtifactStack(usedArtifactStackArray);
318
319             externalContextAlbum.putAll(valueMap2);
320             externalContextAlbum.getAlbumDefinition().setWritable(false);
321
322             final TestExternalContextItem externalContextItem =
323                     (TestExternalContextItem) externalContextAlbum.get("externalContext");
324
325             assert (!externalContextItem.getTestExternalContextItem000().getFlag());
326             assert (externalContextItem.getTestExternalContextItem001().getByteValue() == (byte) 0xFF);
327             assert (externalContextItem.getTestExternalContextItem002().getIntValue() == 0xFFFFFFFF);
328             assert (externalContextItem.getTestExternalContextItem003().getLongValue() == 0xFFFFFFFFFFFFFFFFL);
329             assert (Float.compare(externalContextItem.getTestExternalContextItem004().getFloatValue(), testFloat) == 0);
330             assert (Double.compare(externalContextItem.getTestExternalContextItem005().getDoubleValue(), Math.PI) == 0);
331             assert (externalContextItem.getTestExternalContextItem006().getStringValue()
332                     .equals("This is an external context string"));
333             assert (externalContextItem.getTestExternalContextItem007().getLongValue() == testDate.getTime());
334             assert (externalContextItem.getTestExternalContextItem008().getDateValue().equals(testDate));
335             assert (externalContextItem.getTestExternalContextItem009().getDateValue().getTime() == tci9A.getDateValue()
336                     .getTime());
337             assert (externalContextItem.getTestExternalContextItem00A().getDateValue().getTime() == tciAA.getDateValue()
338                     .getTime());
339             assert (externalContextItem.getTestExternalContextItem00B().getSetValue().equals(testTreeSet));
340             assert (externalContextItem.getTestExternalContextItem00C().getMapValue().equals(testHashMap));
341
342             final Collection<Object> mapValues = externalContextAlbum.values();
343             assert (externalContextAlbum.values().containsAll(mapValues));
344
345             // Check that clearing does not work
346             try {
347                 externalContextAlbum.clear();
348                 assert ("Test should throw an exception".equals(""));
349             } catch (final ContextRuntimeException e) {
350                 assert (e.getMessage()
351                         .equals("album \"ExternalContextAlbum:0.0.1\" clear() not allowed on read only albums"));
352             }
353
354             assert (externalContextAlbum.size() == 1);
355
356             try {
357                 externalContextAlbum.containsKey(null);
358             } catch (final ContextRuntimeException e) {
359                 assert (e.getMessage().equals("null values are illegal on method parameter \"key\""));
360             }
361
362             assert (externalContextAlbum.containsKey("externalContext"));
363             assert (!externalContextAlbum.containsKey("globalContext"));
364
365             try {
366                 externalContextAlbum.containsValue(null);
367             } catch (final ContextRuntimeException e) {
368                 assert (e.getMessage().equals("null values are illegal on method parameter \"value\""));
369             }
370
371             assert (externalContextAlbum.containsValue(externalContext));
372             assert (!externalContextAlbum.containsValue(new String("Hello")));
373
374             final Set<Entry<String, Object>> entrySet = externalContextAlbum.entrySet();
375             assert (entrySet.size() == 1);
376
377             try {
378                 externalContextAlbum.get(null);
379             } catch (final ContextRuntimeException e) {
380                 assert (e.getMessage()
381                         .equals("album \"ExternalContextAlbum:0.0.1\" null keys are illegal on keys for get()"));
382             }
383
384             final Object aObject = externalContextAlbum.get("externalContext");
385             assert (aObject.equals(externalContext));
386
387             // put null keys should fail, throws a runtime exception
388             try {
389                 externalContextAlbum.put(null, null);
390             } catch (final ContextRuntimeException e) {
391                 assert (e.getMessage()
392                         .equals("album \"ExternalContextAlbum:0.0.1\" null keys are illegal on keys for put()"));
393             }
394
395             try {
396                 externalContextAlbum.put("TestExternalContextItem00A", null);
397             } catch (final ContextRuntimeException e) {
398                 assert (e.getMessage().equals(
399                         "album \"ExternalContextAlbum:0.0.1\" null values are illegal on key \"TestExternalContextItem00A\" for put()"));
400             }
401             assert (externalContextItem.getTestExternalContextItem00A().equals(tciAA));
402
403             // Should return the hash set
404             assert (externalContextItem.getTestExternalContextItem00B().getSetValue().equals(testTreeSet));
405
406             assert (externalContextAlbum.values().containsAll(mapValues));
407
408             // Set the write flag back as it should be
409             externalContextAlbum.getAlbumDefinition().setWritable(true);
410
411             // Put should return the previous contextItem
412             final TestExternalContextItem externalContextOther = new TestExternalContextItem();
413             externalContextOther.setTestExternalContextItem002(new TestContextItem002());
414             externalContextOther.getTestExternalContextItem002().setIntValue(2000);
415
416             final Object object = externalContextAlbum.put("externalContext", externalContextOther);
417             assert (object.equals(externalContext));
418
419             final TestExternalContextItem item = (TestExternalContextItem) externalContextAlbum.get("externalContext");
420             assert (item.getTestExternalContextItem002().getIntValue() == 2000);
421             final Object actualExternalContext = externalContextAlbum.put("externalContext", externalContext);
422             assert (actualExternalContext.equals(externalContextOther));
423             assert (externalContextItem.getTestExternalContextItem002().getIntValue() == -1);
424
425             try {
426                 externalContextAlbum.put("TestExternalContextItem00A", null);
427             } catch (final ContextRuntimeException e) {
428                 assert (e.getMessage().equals(
429                         "album \"ExternalContextAlbum:0.0.1\" null values are illegal on key \"TestExternalContextItem00A\" for put()"));
430             }
431             assert (externalContextAlbum.get("externalContext").equals(externalContext));
432
433             try {
434                 externalContextAlbum.put("TestExternalContextItemFFF", null);
435             } catch (final ContextRuntimeException e) {
436                 assert (e.getMessage().equals(
437                         "album \"ExternalContextAlbum:0.0.1\" null values are illegal on key \"TestExternalContextItemFFF\" for put()"));
438             }
439             assert (externalContextAlbum.size() == 1);
440
441             try {
442                 externalContextAlbum.put("TestExternalContextItemFFF", null);
443             } catch (final ContextRuntimeException e) {
444                 assert (e.getMessage().equals(
445                         "album \"ExternalContextAlbum:0.0.1\" null values are illegal on key \"TestExternalContextItemFFF\" for put()"));
446             }
447             assert (externalContextAlbum.size() == 1);
448
449             // Should ignore remove
450             externalContextAlbum.remove("TestExternalContextItem017");
451             assert (externalContextAlbum.size() == 1);
452
453             assert (externalContextAlbum.values().size() == 1);
454             assert (externalContextAlbum.values().containsAll(mapValues));
455             // CHECKSTYLE:ON: checkstyle:magicNumber
456         } catch (final Exception exception) {
457             LOGGER.error("Error: ", exception);
458             contextDistributor.clear();
459             assert ("Test has failed".equals(""));
460         }
461
462         try {
463             contextDistributor.clear();
464         } catch (final Exception exception) {
465             LOGGER.error("Error occured while clearing context distributor: ", exception);
466             assert ("Test has failed".equals(""));
467         }
468     }
469 }