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