blob: 4582a43b9ae07ba8285e97affe66f7cf08a57168 [file] [log] [blame]
Harshada Chaundkardcd1b142019-03-25 17:27:44 -04001/*
2 * Copyright 2018-present Open Networking Foundation
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.onosproject.packetthrottle;
17
18import com.google.common.collect.ImmutableList;
19import org.junit.After;
20import org.junit.Before;
21import org.junit.Test;
22import org.onosproject.cfg.ComponentConfigAdapter;
23import org.onosproject.net.packet.OutboundPacket;
24import org.onosproject.net.packet.PacketContext;
25import org.onosproject.net.packet.PacketProcessor;
26import org.onosproject.net.packet.PacketServiceAdapter;
27import org.onosproject.net.packet.PacketInFilter;
28import com.google.common.collect.Sets;
29import org.onosproject.net.packet.packetfilter.ArpPacketClassifier;
30import org.onosproject.net.packet.packetfilter.DefaultPacketInFilter;
31import static org.junit.Assert.*;
32
33
34import java.util.ArrayList;
35import java.util.Set;
36import java.util.List;
37
38/**
39 * Set of tests of the PacketThrottleManager.
40 */
41public class PacketThrottleManagerTest {
42
43 private PacketThrottleManager manager;
44
45
46 @Before
47 public void setUp() {
48 manager = new PacketThrottleManager();
49 manager.configService = new TestComponentConfig();
50 manager.packetService = new MockPacketService();
51 manager.activate();
52 }
53
54 @After
55 public void tearDown() {
56 manager.deactivate();
57 }
58
59 @Test
60 public void testFilter() {
61 DefaultPacketInFilter filter;
62 ArpPacketClassifier arp = new ArpPacketClassifier();
63 filter = new DefaultPacketInFilter(100, 500, 10, 10, PacketThrottleManager.ARP_FILTER, arp);
64 manager.packetService.addFilter(filter);
65 assertEquals(9, manager.packetService.getFilters().size());
66 manager.packetService.removeFilter(filter);
67 assertEquals(8, manager.packetService.getFilters().size());
68 }
69
70 private class MockPacketService extends PacketServiceAdapter {
71 Set<PacketProcessor> packetProcessors = Sets.newHashSet();
72 OutboundPacket emittedPacket;
73 private List<PacketInFilter> filters = new ArrayList<>();
74
75 @Override
76 public void addProcessor(PacketProcessor processor, int priority) {
77
78 packetProcessors.add(processor);
79 }
80
81 public void processPacket(PacketContext packetContext) {
82 packetProcessors.forEach(p -> p.process(packetContext));
83 }
84
85 @Override
86 public void emit(OutboundPacket packet) {
87
88 this.emittedPacket = packet;
89 }
90
91 @Override
92 public void addFilter(PacketInFilter filter) {
93 filters.add(filter);
94 }
95
96 @Override
97 public void removeFilter(PacketInFilter filter) {
98 filters.remove(filter);
99 }
100
101 @Override
102 public List<PacketInFilter> getFilters() {
103 return ImmutableList.copyOf(filters);
104 }
105 }
106
107 /**
108 * Mocks the ComponentConfigRegistry.
109 */
110 private class TestComponentConfig extends ComponentConfigAdapter {
111
112 }
113}