2 * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.
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
9 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor;
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;
29 * Unit tests for GroupStats conversion.
31 * @author michal.polkorab
33 public class GroupStatsResponseConvertorTest {
34 private ConvertorManager convertorManager;
38 convertorManager = ConvertorManagerFactory.createDefaultManager();
42 * Test empty GroupStats conversion.
45 public void testEmptyGroupStats() {
46 List<GroupStats> groupStats = new ArrayList<>();
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));
52 Assert.assertFalse("Group stats response should be not present", salGroupStats.isPresent());
56 * Test single GroupStat conversion.
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());
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();
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());
91 * Test two GroupStats conversion.
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>());
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());
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();
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());
146 * Test GroupStats with buckets conversion.
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);
168 List<GroupStats> groupStats = new ArrayList<>();
169 groupStats.add(statsBuilder.build());
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();
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());
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());