Merge "Custom mailbox that is bounded and instrumented."
[controller.git] / opendaylight / config / config-api / src / test / java / org / opendaylight / controller / config / api / ValidationExceptionTest.java
1 package org.opendaylight.controller.config.api;
2
3 import static junit.framework.Assert.assertEquals;
4 import static junit.framework.Assert.assertTrue;
5 import static junit.framework.Assert.fail;
6 import static org.junit.Assert.assertThat;
7 import static org.junit.matchers.JUnitMatchers.containsString;
8
9 import com.google.common.collect.Lists;
10 import java.util.Map;
11 import org.junit.Test;
12
13 public class ValidationExceptionTest {
14
15     private String instance = "instance";
16     private final ModuleIdentifier mi = new ModuleIdentifier("module", instance);
17     private String instance2 = "instance2";
18     private final ModuleIdentifier mi2 = new ModuleIdentifier("module", instance2);
19     private final String message = "ex message";
20     private final Exception e = new IllegalStateException(message);
21
22     @Test
23     public void testCreateFromCollectedValidationExceptions() throws Exception {
24         ValidationException single = ValidationException.createForSingleException(mi, e);
25         ValidationException single2 = ValidationException.createForSingleException(mi2, e);
26
27         ValidationException collected = ValidationException.createFromCollectedValidationExceptions(Lists.newArrayList(single, single2));
28
29         Map<String, Map<String, ValidationException.ExceptionMessageWithStackTrace>> failedMap = collected.getFailedValidations();
30         assertEquals(1, failedMap.size());
31         assertTrue(failedMap.containsKey("module"));
32
33         Map<String, ValidationException.ExceptionMessageWithStackTrace> failedModule = failedMap.get("module");
34         assertEquals(2, failedModule.size());
35         assertTrue(failedModule.containsKey(instance));
36         assertEquals(message, failedModule.get(instance).getMessage());
37         assertEquals(message, failedModule.get(instance2).getMessage());
38         assertEquals(failedModule.get(instance), failedModule.get(instance2));
39     }
40
41     @Test
42     public void testCreateFromCollectedValidationExceptionsWithDuplicate() throws Exception {
43         ValidationException single = ValidationException.createForSingleException(mi, e);
44         ValidationException single2 = ValidationException.createForSingleException(mi, e);
45         try {
46             ValidationException.createFromCollectedValidationExceptions(Lists.newArrayList(single, single2));
47         } catch (IllegalArgumentException ex) {
48             // Duplicate exception
49             assertThat(ex.getMessage(), containsString("Cannot merge"));
50             return;
51         }
52         fail("Duplicate exception should have failed");
53     }
54 }