Update MRI projects for Aluminium
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / GroupStatsResponseConvertorTest.java
1 /*
2  * Copyright (c) 2014 Pantheon Technologies s.r.o. 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
9 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
10
11 import java.math.BigInteger;
12 import java.util.ArrayList;
13 import java.util.Iterator;
14 import java.util.List;
15 import java.util.Optional;
16 import org.junit.Assert;
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.opendaylight.openflowplugin.api.OFConstants;
20 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionConvertorData;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.buckets.BucketCounter;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.GroupId;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.multipart.reply.group.GroupStats;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.multipart.reply.group.GroupStatsBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.multipart.reply.group.group.stats.BucketStats;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.multipart.reply.group.group.stats.BucketStatsBuilder;
27
28 /**
29  * Unit tests for GroupStats conversion.
30  *
31  * @author michal.polkorab
32  */
33 public class GroupStatsResponseConvertorTest {
34     private ConvertorManager convertorManager;
35
36     @Before
37     public void setUp() {
38         convertorManager = ConvertorManagerFactory.createDefaultManager();
39     }
40
41     /**
42      * Test empty GroupStats conversion.
43      */
44     @Test
45     public void testEmptyGroupStats() {
46         List<GroupStats> groupStats = new ArrayList<>();
47
48         Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply
49                 .GroupStats>> salGroupStats = convertorManager.convert(groupStats,
50                         new VersionConvertorData(OFConstants.OFP_VERSION_1_3));
51
52         Assert.assertFalse("Group stats response should be not present", salGroupStats.isPresent());
53     }
54
55     /**
56      * Test single GroupStat conversion.
57      */
58     @Test
59     public void testSingleGroupStat() {
60         GroupStatsBuilder statsBuilder = new GroupStatsBuilder();
61         statsBuilder.setByteCount(new BigInteger("12345"));
62         statsBuilder.setDurationNsec(1000000L);
63         statsBuilder.setDurationSec(5000L);
64         statsBuilder.setGroupId(new GroupId(42L));
65         statsBuilder.setPacketCount(new BigInteger("54321"));
66         statsBuilder.setRefCount(24L);
67         statsBuilder.setBucketStats(new ArrayList<BucketStats>());
68         List<GroupStats> groupStats = new ArrayList<>();
69         groupStats.add(statsBuilder.build());
70
71         Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply
72                 .GroupStats>> salGroupStatsOptional = convertorManager.convert(groupStats,
73                         new VersionConvertorData(OFConstants.OFP_VERSION_1_3));
74         Assert.assertTrue("Group stats response convertor not found", salGroupStatsOptional.isPresent());
75         List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply
76                 .GroupStats> salGroupStats = salGroupStatsOptional.get();
77
78         Assert.assertEquals("Wrong group stats size", 1, salGroupStats.size());
79         org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply
80                 .GroupStats stat = salGroupStats.get(0);
81         Assert.assertEquals("Wrong group-id", 42, stat.getGroupId().getValue().intValue());
82         Assert.assertEquals("Wrong ref-count", 24, stat.getRefCount().getValue().intValue());
83         Assert.assertEquals("Wrong packet count", 54321, stat.getPacketCount().getValue().intValue());
84         Assert.assertEquals("Wrong byte count", 12345, stat.getByteCount().getValue().intValue());
85         Assert.assertEquals("Wrong duration sec", 5000, stat.getDuration().getSecond().getValue().intValue());
86         Assert.assertEquals("Wrong duration n sec", 1000000, stat.getDuration().getNanosecond().getValue().intValue());
87         Assert.assertEquals("Wrong bucket stats", 0, stat.getBuckets().nonnullBucketCounter().size());
88     }
89
90     /**
91      * Test two GroupStats conversion.
92      */
93     @Test
94     public void testTwoGroupStats() {
95         GroupStatsBuilder statsBuilder = new GroupStatsBuilder();
96         statsBuilder.setByteCount(new BigInteger("12345"));
97         statsBuilder.setDurationNsec(1000000L);
98         statsBuilder.setDurationSec(5000L);
99         statsBuilder.setGroupId(new GroupId(42L));
100         statsBuilder.setPacketCount(new BigInteger("54321"));
101         statsBuilder.setRefCount(24L);
102         statsBuilder.setBucketStats(new ArrayList<BucketStats>());
103
104         List<GroupStats> groupStats = new ArrayList<>();
105         groupStats.add(statsBuilder.build());
106         statsBuilder = new GroupStatsBuilder();
107         statsBuilder.setByteCount(new BigInteger("1"));
108         statsBuilder.setDurationNsec(2L);
109         statsBuilder.setDurationSec(3L);
110         statsBuilder.setGroupId(new GroupId(4L));
111         statsBuilder.setPacketCount(new BigInteger("5"));
112         statsBuilder.setRefCount(6L);
113         statsBuilder.setBucketStats(new ArrayList<BucketStats>());
114         groupStats.add(statsBuilder.build());
115
116         Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply
117                 .GroupStats>> salGroupStatsOptional = convertorManager.convert(groupStats,
118                         new VersionConvertorData(OFConstants.OFP_VERSION_1_3));
119         Assert.assertTrue("Group stats response convertor not found", salGroupStatsOptional.isPresent());
120         List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply
121                 .GroupStats> salGroupStats = salGroupStatsOptional.get();
122
123         Assert.assertEquals("Wrong group stats size", 2, salGroupStats.size());
124         org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply
125                 .GroupStats stat = salGroupStats.get(0);
126         Assert.assertEquals("Wrong group-id", 42, stat.getGroupId().getValue().intValue());
127         Assert.assertEquals("Wrong key", 42, stat.key().getGroupId().getValue().intValue());
128         Assert.assertEquals("Wrong ref-count", 24, stat.getRefCount().getValue().intValue());
129         Assert.assertEquals("Wrong packet count", 54321, stat.getPacketCount().getValue().intValue());
130         Assert.assertEquals("Wrong byte count", 12345, stat.getByteCount().getValue().intValue());
131         Assert.assertEquals("Wrong duration sec", 5000, stat.getDuration().getSecond().getValue().intValue());
132         Assert.assertEquals("Wrong duration n sec", 1000000, stat.getDuration().getNanosecond().getValue().intValue());
133         Assert.assertEquals("Wrong bucket stats", 0, stat.getBuckets().nonnullBucketCounter().size());
134         stat = salGroupStats.get(1);
135         Assert.assertEquals("Wrong group-id", 4, stat.getGroupId().getValue().intValue());
136         Assert.assertEquals("Wrong key", 4, stat.key().getGroupId().getValue().intValue());
137         Assert.assertEquals("Wrong ref-count", 6, stat.getRefCount().getValue().intValue());
138         Assert.assertEquals("Wrong packet count", 5, stat.getPacketCount().getValue().intValue());
139         Assert.assertEquals("Wrong byte count", 1, stat.getByteCount().getValue().intValue());
140         Assert.assertEquals("Wrong duration sec", 3, stat.getDuration().getSecond().getValue().intValue());
141         Assert.assertEquals("Wrong duration n sec", 2, stat.getDuration().getNanosecond().getValue().intValue());
142         Assert.assertEquals("Wrong bucket stats", 0, stat.getBuckets().nonnullBucketCounter().size());
143     }
144
145     /**
146      * Test GroupStats with buckets conversion.
147      */
148     @Test
149     public void testGroupStatsWithBuckets() {
150         GroupStatsBuilder statsBuilder = new GroupStatsBuilder();
151         statsBuilder.setByteCount(new BigInteger("12345"));
152         statsBuilder.setDurationNsec(1000000L);
153         statsBuilder.setDurationSec(5000L);
154         statsBuilder.setGroupId(new GroupId(42L));
155         statsBuilder.setPacketCount(new BigInteger("54321"));
156         statsBuilder.setRefCount(24L);
157         List<BucketStats> bucketStats = new ArrayList<>();
158         BucketStatsBuilder bucketStatsBuilder = new BucketStatsBuilder();
159         bucketStatsBuilder.setByteCount(new BigInteger("987"));
160         bucketStatsBuilder.setPacketCount(new BigInteger("654"));
161         bucketStats.add(bucketStatsBuilder.build());
162         bucketStatsBuilder = new BucketStatsBuilder();
163         bucketStatsBuilder.setByteCount(new BigInteger("123"));
164         bucketStatsBuilder.setPacketCount(new BigInteger("456"));
165         bucketStats.add(bucketStatsBuilder.build());
166         statsBuilder.setBucketStats(bucketStats);
167
168         List<GroupStats> groupStats = new ArrayList<>();
169         groupStats.add(statsBuilder.build());
170
171         Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply
172                 .GroupStats>> salGroupStatsOptional = convertorManager.convert(groupStats,
173                         new VersionConvertorData(OFConstants.OFP_VERSION_1_3));
174         Assert.assertTrue("Group stats response convertor not found", salGroupStatsOptional.isPresent());
175         List<org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply
176                 .GroupStats> salGroupStats = salGroupStatsOptional.get();
177
178         Assert.assertEquals("Wrong group stats size", 1, salGroupStats.size());
179         org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.group.statistics.reply
180                 .GroupStats stat = salGroupStats.get(0);
181         Assert.assertEquals("Wrong group-id", 42, stat.getGroupId().getValue().intValue());
182         Assert.assertEquals("Wrong ref-count", 24, stat.getRefCount().getValue().intValue());
183         Assert.assertEquals("Wrong packet count", 54321, stat.getPacketCount().getValue().intValue());
184         Assert.assertEquals("Wrong byte count", 12345, stat.getByteCount().getValue().intValue());
185         Assert.assertEquals("Wrong duration sec", 5000, stat.getDuration().getSecond().getValue().intValue());
186         Assert.assertEquals("Wrong duration n sec", 1000000, stat.getDuration().getNanosecond().getValue().intValue());
187         Assert.assertEquals("Wrong bucket stats", 2, stat.getBuckets().getBucketCounter().size());
188         Iterator<BucketCounter> it = stat.getBuckets().nonnullBucketCounter().values().iterator();
189         BucketCounter counter = it.next();
190         Assert.assertEquals("Wrong bucket-id", 0, counter.getBucketId().getValue().intValue());
191         Assert.assertEquals("Wrong bucket packet count", 654, counter.getPacketCount().getValue().intValue());
192         Assert.assertEquals("Wrong bucket byte count", 987, counter.getByteCount().getValue().intValue());
193         counter = it.next();
194         Assert.assertEquals("Wrong bucket-id", 1, counter.getBucketId().getValue().intValue());
195         Assert.assertEquals("Wrong bucket packet count", 456, counter.getPacketCount().getValue().intValue());
196         Assert.assertEquals("Wrong bucket byte count", 123, counter.getByteCount().getValue().intValue());
197     }
198 }