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