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