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