Tests for iovisor.sf
[groupbasedpolicy.git] / renderers / iovisor / src / test / java / org / opendaylight / groupbasedpolicy / renderer / iovisor / sf / ClassifierDefinitionListenerTest.java
1 package org.opendaylight.groupbasedpolicy.renderer.iovisor.sf;\r
2 \r
3 import static org.mockito.Mockito.mock;\r
4 import static org.mockito.Mockito.spy;\r
5 import static org.mockito.Mockito.verify;\r
6 import static org.mockito.Mockito.when;\r
7 \r
8 import java.util.Set;\r
9 \r
10 import com.google.common.collect.ImmutableSet;\r
11 import com.google.common.util.concurrent.CheckedFuture;\r
12 import org.junit.Before;\r
13 import org.junit.Test;\r
14 import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
15 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;\r
16 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;\r
17 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;\r
18 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;\r
19 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
20 import org.opendaylight.groupbasedpolicy.api.sf.EtherTypeClassifierDefinition;\r
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.SubjectFeatureDefinitions;\r
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ClassifierDefinition;\r
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ClassifierDefinitionBuilder;\r
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ClassifierDefinitionKey;\r
25 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
26 \r
27 public class ClassifierDefinitionListenerTest {\r
28 \r
29     private ClassifierDefinitionListener listener;\r
30     private DataObjectModification<ClassifierDefinition> rootNode;\r
31     private Set<DataTreeModification<ClassifierDefinition>> changes;\r
32 \r
33     private InstanceIdentifier<ClassifierDefinition> rootIdentifier;\r
34     private DataBroker dataProvider;\r
35 \r
36     @SuppressWarnings("unchecked")\r
37     @Before\r
38     public void init() {\r
39         dataProvider = mock(DataBroker.class);\r
40 \r
41         listener = spy(new ClassifierDefinitionListener(dataProvider));\r
42 \r
43         ClassifierDefinitionKey key = mock(ClassifierDefinitionKey.class);\r
44         rootNode = mock(DataObjectModification.class);\r
45         rootIdentifier = InstanceIdentifier.builder(SubjectFeatureDefinitions.class)\r
46             .child(ClassifierDefinition.class, key)\r
47             .build();\r
48         DataTreeIdentifier<ClassifierDefinition> rootPath =\r
49                 new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, rootIdentifier);\r
50 \r
51         DataTreeModification<ClassifierDefinition> change = mock(DataTreeModification.class);\r
52 \r
53         when(change.getRootNode()).thenReturn(rootNode);\r
54         when(change.getRootPath()).thenReturn(rootPath);\r
55 \r
56         changes = ImmutableSet.of(change);\r
57 \r
58         ClassifierDefinition def = new ClassifierDefinitionBuilder().setId(EtherTypeClassifierDefinition.ID).build();\r
59 \r
60         when(rootNode.getDataBefore()).thenReturn(def);\r
61         when(rootNode.getDataAfter()).thenReturn(def);\r
62     }\r
63 \r
64     @Test\r
65     public void testOnWrite() {\r
66         when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);\r
67         WriteTransaction wt = resetTransaction();\r
68 \r
69         listener.onDataTreeChanged(changes);\r
70 \r
71         verify(listener).onSubtreeModified(rootNode, rootIdentifier);\r
72     }\r
73 \r
74     @Test\r
75     public void testOnDelete() {\r
76         when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.DELETE);\r
77         WriteTransaction wt = resetTransaction();\r
78 \r
79         listener.onDataTreeChanged(changes);\r
80 \r
81         verify(listener).onDelete(rootNode, rootIdentifier);\r
82     }\r
83 \r
84     @Test\r
85     public void testOnSubtreeModified() {\r
86         when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.SUBTREE_MODIFIED);\r
87         WriteTransaction wt = resetTransaction();\r
88 \r
89         listener.onDataTreeChanged(changes);\r
90 \r
91         verify(listener).onSubtreeModified(rootNode, rootIdentifier);\r
92     }\r
93 \r
94     private WriteTransaction resetTransaction() {\r
95         WriteTransaction wt = mock(WriteTransaction.class);\r
96         CheckedFuture checkedFuture = mock(CheckedFuture.class);\r
97         when(wt.submit()).thenReturn(checkedFuture);\r
98         when(dataProvider.newWriteOnlyTransaction()).thenReturn(wt);\r
99         return wt;\r
100     }\r
101 \r
102 }\r