Fixed discard-changes for mdsal netconf, mapping code cleanup.
[controller.git] / opendaylight / md-sal / forwardingrules-manager / src / test / java / test / mock / MeterListenerTest.java
1 /**
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package test.mock;
9
10 import org.junit.Test;
11 import org.opendaylight.controller.frm.impl.ForwardingRulesManagerImpl;
12 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
13 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
14 import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterKey;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.AddMeterInput;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.RemoveMeterInput;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterInput;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId;
27 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
28 import test.mock.util.FRMTest;
29 import test.mock.util.RpcProviderRegistryMock;
30 import test.mock.util.SalMeterServiceMock;
31
32 import java.util.List;
33
34 import static org.junit.Assert.assertEquals;
35
36 public class MeterListenerTest extends FRMTest {
37     RpcProviderRegistry rpcProviderRegistryMock = new RpcProviderRegistryMock();
38     NodeKey s1Key = new NodeKey(new NodeId("S1"));
39
40     @Test
41     public void addTwoMetersTest() throws Exception {
42         ForwardingRulesManagerImpl forwardingRulesManager = new ForwardingRulesManagerImpl(getDataBroker(), rpcProviderRegistryMock);
43         forwardingRulesManager.start();
44
45         addFlowCapableNode(s1Key);
46
47         MeterKey meterKey = new MeterKey(new MeterId((long) 2000));
48         InstanceIdentifier<Meter> meterII = InstanceIdentifier.create(Nodes.class).child(Node.class, s1Key)
49                 .augmentation(FlowCapableNode.class).child(Meter.class, meterKey);
50         Meter meter = new MeterBuilder().setKey(meterKey).setMeterName("meter_one").build();
51
52         WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction();
53         writeTx.put(LogicalDatastoreType.CONFIGURATION, meterII, meter);
54         assertCommit(writeTx.submit());
55         SalMeterServiceMock salMeterService = (SalMeterServiceMock) forwardingRulesManager.getSalMeterService();
56         List<AddMeterInput> addMeterCalls = salMeterService.getAddMeterCalls();
57         assertEquals(1, addMeterCalls.size());
58         assertEquals("DOM-0", addMeterCalls.get(0).getTransactionUri().getValue());
59
60         meterKey = new MeterKey(new MeterId((long) 2001));
61         meterII = InstanceIdentifier.create(Nodes.class).child(Node.class, s1Key)
62                 .augmentation(FlowCapableNode.class).child(Meter.class, meterKey);
63         meter = new MeterBuilder().setKey(meterKey).setMeterName("meter_two").setBarrier(true).build();
64         writeTx = getDataBroker().newWriteOnlyTransaction();
65         writeTx.put(LogicalDatastoreType.CONFIGURATION, meterII, meter);
66         assertCommit(writeTx.submit());
67         salMeterService = (SalMeterServiceMock) forwardingRulesManager.getSalMeterService();
68         addMeterCalls = salMeterService.getAddMeterCalls();
69         assertEquals(2, addMeterCalls.size());
70         assertEquals("DOM-1", addMeterCalls.get(1).getTransactionUri().getValue());
71         assertEquals(meterII, addMeterCalls.get(1).getMeterRef().getValue());
72
73         forwardingRulesManager.close();
74     }
75
76     @Test
77     public void updateMeterTest() throws Exception {
78         ForwardingRulesManagerImpl forwardingRulesManager = new ForwardingRulesManagerImpl(getDataBroker(), rpcProviderRegistryMock);
79         forwardingRulesManager.start();
80
81         addFlowCapableNode(s1Key);
82
83         MeterKey meterKey = new MeterKey(new MeterId((long) 2000));
84         InstanceIdentifier<Meter> meterII = InstanceIdentifier.create(Nodes.class).child(Node.class, s1Key)
85                 .augmentation(FlowCapableNode.class).child(Meter.class, meterKey);
86         Meter meter = new MeterBuilder().setKey(meterKey).setMeterName("meter_one").setBarrier(false).build();
87
88         WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction();
89         writeTx.put(LogicalDatastoreType.CONFIGURATION, meterII, meter);
90         assertCommit(writeTx.submit());
91         SalMeterServiceMock salMeterService = (SalMeterServiceMock) forwardingRulesManager.getSalMeterService();
92         List<AddMeterInput> addMeterCalls = salMeterService.getAddMeterCalls();
93         assertEquals(1, addMeterCalls.size());
94         assertEquals("DOM-0", addMeterCalls.get(0).getTransactionUri().getValue());
95
96         meter = new MeterBuilder().setKey(meterKey).setMeterName("meter_two").setBarrier(true).build();
97         writeTx = getDataBroker().newWriteOnlyTransaction();
98         writeTx.put(LogicalDatastoreType.CONFIGURATION, meterII, meter);
99         assertCommit(writeTx.submit());
100         salMeterService = (SalMeterServiceMock) forwardingRulesManager.getSalMeterService();
101         List<UpdateMeterInput> updateMeterCalls = salMeterService.getUpdateMeterCalls();
102         assertEquals(1, updateMeterCalls.size());
103         assertEquals("DOM-1", updateMeterCalls.get(0).getTransactionUri().getValue());
104         assertEquals(meterII, updateMeterCalls.get(0).getMeterRef().getValue());
105
106         forwardingRulesManager.close();
107     }
108
109     @Test
110     public void removeMeterTest() throws Exception {
111         ForwardingRulesManagerImpl forwardingRulesManager = new ForwardingRulesManagerImpl(getDataBroker(), rpcProviderRegistryMock);
112         forwardingRulesManager.start();
113
114         addFlowCapableNode(s1Key);
115
116         MeterKey meterKey = new MeterKey(new MeterId((long) 2000));
117         InstanceIdentifier<Meter> meterII = InstanceIdentifier.create(Nodes.class).child(Node.class, s1Key)
118                 .augmentation(FlowCapableNode.class).child(Meter.class, meterKey);
119         Meter meter = new MeterBuilder().setKey(meterKey).setMeterName("meter_one").build();
120
121         WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction();
122         writeTx.put(LogicalDatastoreType.CONFIGURATION, meterII, meter);
123         assertCommit(writeTx.submit());
124         SalMeterServiceMock salMeterService = (SalMeterServiceMock) forwardingRulesManager.getSalMeterService();
125         List<AddMeterInput> addMeterCalls = salMeterService.getAddMeterCalls();
126         assertEquals(1, addMeterCalls.size());
127         assertEquals("DOM-0", addMeterCalls.get(0).getTransactionUri().getValue());
128
129         writeTx = getDataBroker().newWriteOnlyTransaction();
130         writeTx.delete(LogicalDatastoreType.CONFIGURATION, meterII);
131         assertCommit(writeTx.submit());
132         salMeterService = (SalMeterServiceMock) forwardingRulesManager.getSalMeterService();
133         List<RemoveMeterInput> removeMeterCalls = salMeterService.getRemoveMeterCalls();
134         assertEquals(1, removeMeterCalls.size());
135         assertEquals("DOM-1", removeMeterCalls.get(0).getTransactionUri().getValue());
136         assertEquals(meterII, removeMeterCalls.get(0).getMeterRef().getValue());
137
138         forwardingRulesManager.close();
139     }
140
141 }