blob: 6a8a37be9bf38954c4e5108291c2372261e8b0b5 [file] [log] [blame]
Rusty Eddy1da61a22015-09-01 00:48:58 +00001/*
2 * Copyright 2015 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onlab.packet;
17
18import org.junit.Before;
19import org.junit.Test;
20
21import static junit.framework.Assert.assertTrue;
22
23/**
24 * Unit tests for IGMP class.
25 */
26public class IGMPTest {
27 private Deserializer<IGMP> deserializer;
28
29 private IGMP igmpQuery;
30 private IGMP igmpMembership;
31
32 private Ip4Address gaddr1;
33 private Ip4Address gaddr2;
34 private Ip4Address saddr1;
35 private Ip4Address saddr2;
36
37 @Before
38 public void setUp() throws Exception {
39 gaddr1 = Ip4Address.valueOf(0xe1010101);
40 gaddr2 = Ip4Address.valueOf(0xe2020202);
41 saddr1 = Ip4Address.valueOf(0x0a010101);
42 saddr2 = Ip4Address.valueOf(0x0b020202);
43
44 deserializer = IGMP.deserializer();
45
46 // Create an IGMP Query object
47 igmpQuery = new IGMP();
48 igmpQuery.setIgmpType(IGMP.TYPE_IGMPV3_MEMBERSHIP_QUERY);
49 igmpQuery.setMaxRespCode((byte) 0x7f);
50 IGMPQuery q = new IGMPQuery(gaddr1, (byte) 0x7f);
51 q.addSource(saddr1);
52 q.addSource(saddr2);
53 q.setSbit(false);
54 igmpQuery.groups.add(q);
55
56 // Create an IGMP Membership Object
57 igmpMembership = new IGMP();
58 igmpMembership.setIgmpType(IGMP.TYPE_IGMPV3_MEMBERSHIP_REPORT);
59 IGMPMembership g1 = new IGMPMembership(gaddr1);
60 g1.addSource(saddr1);
61 g1.addSource(saddr2);
62 igmpMembership.groups.add(g1);
63 IGMPMembership g2 = new IGMPMembership(gaddr2);
64 g2.addSource(saddr1);
65 g2.addSource(saddr2);
66 igmpMembership.groups.add(g2);
67 }
68
69 @Test
70 public void testDeserializeBadInput() throws Exception {
71 PacketTestUtils.testDeserializeBadInput(deserializer);
72 }
73
74 @Test
75 public void testDeserializeTruncated() throws Exception {
Jian Li68c4fc42016-01-11 16:07:03 -080076 byte[] bits = igmpQuery.serialize();
Rusty Eddy1da61a22015-09-01 00:48:58 +000077 PacketTestUtils.testDeserializeTruncated(deserializer, bits);
78
79 bits = igmpMembership.serialize();
80 PacketTestUtils.testDeserializeTruncated(deserializer, bits);
81 }
82
83 @Test
84 public void testDeserializeQuery() throws Exception {
Jian Li68c4fc42016-01-11 16:07:03 -080085 byte[] data = igmpQuery.serialize();
Rusty Eddy1da61a22015-09-01 00:48:58 +000086 IGMP igmp = deserializer.deserialize(data, 0, data.length);
87 assertTrue(igmp.equals(igmpQuery));
88 }
89
90 @Test
91 public void testDeserializeMembership() throws Exception {
Jian Li68c4fc42016-01-11 16:07:03 -080092 byte[] data = igmpMembership.serialize();
Rusty Eddy1da61a22015-09-01 00:48:58 +000093 IGMP igmp = deserializer.deserialize(data, 0, data.length);
94 assertTrue(igmp.equals(igmpMembership));
95 }
Jian Li5fc14292015-12-04 11:30:46 -080096
97 /**
98 * Tests toString.
99 */
100 @Test
101 public void testToStringIgmp() throws Exception {
102 // TODO: add toString unit test
103 }
Rusty Eddy1da61a22015-09-01 00:48:58 +0000104}