blob: 222455191de67e6271385546b0a02cc92dff87b0 [file] [log] [blame]
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -08001/**
2 *
3 */
4package net.floodlightcontroller.devicemanager.test;
5
6import static net.floodlightcontroller.devicemanager.IDeviceService.DeviceField.MAC;
7import static net.floodlightcontroller.devicemanager.IDeviceService.DeviceField.PORT;
8import static net.floodlightcontroller.devicemanager.IDeviceService.DeviceField.SWITCH;
9import static net.floodlightcontroller.devicemanager.IDeviceService.DeviceField.VLAN;
10
11import java.util.EnumSet;
12import java.util.HashMap;
13import java.util.Map;
14
15import net.floodlightcontroller.devicemanager.IDeviceService;
16import net.floodlightcontroller.devicemanager.IEntityClass;
17import net.floodlightcontroller.devicemanager.IDeviceService.DeviceField;
18import net.floodlightcontroller.devicemanager.internal.DefaultEntityClassifier;
19import net.floodlightcontroller.devicemanager.internal.Entity;
20
21/**
22 * Extension to simple entity classifier to help in unit tests to provide table
23 * based multiple entity classification mock for reclassification tests
24 *
25 */
26public class MockFlexEntityClassifier extends DefaultEntityClassifier {
27 Map <Long, IEntityClass> switchEntities;
28 Map <Short, IEntityClass> vlanEntities;
29
30 public static class TestEntityClass implements IEntityClass {
31 String name;
32 public TestEntityClass(String name) {
33 this.name = name;
34 }
35 @Override
36 public EnumSet<DeviceField> getKeyFields() {
37 return EnumSet.of(MAC);
38 }
39
40 @Override
41 public String getName() {
42 return name;
43 }
44 }
45 public static IEntityClass defaultClass = new TestEntityClass("default");
46 public MockFlexEntityClassifier() {
47 switchEntities = new HashMap<Long, IEntityClass> ();
48 vlanEntities = new HashMap<Short, IEntityClass> ();
49 }
50 public IEntityClass createTestEntityClass(String name) {
51 return new TestEntityClass(name);
52 }
53
54 public void addSwitchEntity(Long dpid, IEntityClass entityClass) {
55 switchEntities.put(dpid, entityClass);
56 }
57 public void removeSwitchEntity(Long dpid) {
58 switchEntities.remove(dpid);
59 }
60 public void addVlanEntities(Short vlan, IEntityClass entityClass) {
61 vlanEntities.put(vlan, entityClass);
62 }
63 public void removeVlanEntities(Short vlan) {
64 vlanEntities.remove(vlan);
65 }
66 @Override
67 public IEntityClass classifyEntity(Entity entity) {
68 if (switchEntities.containsKey(entity.getSwitchDPID()))
69 return switchEntities.get(entity.getSwitchDPID());
70 if (vlanEntities.containsKey(entity.getVlan()))
71 return vlanEntities.get(entity.getVlan());
72 return defaultClass;
73 }
74 @Override
75 public EnumSet<IDeviceService.DeviceField> getKeyFields() {
76 return EnumSet.of(MAC, VLAN, SWITCH, PORT);
77 }
78}