package net.floodlightcontroller.core.test; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import net.floodlightcontroller.core.FloodlightContext; import net.floodlightcontroller.core.IOFConnectionBackend; import net.floodlightcontroller.core.IOFSwitch; import net.floodlightcontroller.core.IOFSwitch.SwitchStatus; import net.floodlightcontroller.core.IOFSwitchBackend; import net.floodlightcontroller.core.IOFSwitchDriver; import net.floodlightcontroller.core.IOFSwitchListener; import net.floodlightcontroller.core.LogicalOFMessageCategory; import net.floodlightcontroller.core.PortChangeType; import net.floodlightcontroller.core.SwitchDescription; import net.floodlightcontroller.core.internal.IAppHandshakePluginFactory; import net.floodlightcontroller.core.internal.IOFSwitchManager; import net.floodlightcontroller.core.internal.IOFSwitchService; import net.floodlightcontroller.core.internal.OFSwitchHandshakeHandler; import net.floodlightcontroller.core.internal.SwitchManagerCounters; import net.floodlightcontroller.core.module.FloodlightModuleContext; import net.floodlightcontroller.core.module.FloodlightModuleException; import net.floodlightcontroller.core.module.IFloodlightModule; import net.floodlightcontroller.core.module.IFloodlightService; import net.floodlightcontroller.debugcounter.DebugCounterServiceImpl; import org.projectfloodlight.openflow.protocol.OFFactory; import org.projectfloodlight.openflow.protocol.OFMessage; import org.projectfloodlight.openflow.protocol.OFPortDesc; import org.projectfloodlight.openflow.types.DatapathId; import com.google.common.collect.ImmutableList; public class MockSwitchManager implements IFloodlightModule, IOFSwitchManager, IOFSwitchService { private Map<DatapathId, OFSwitchHandshakeHandler> switchHandlers; private Map<DatapathId, IOFSwitch> switches; private final SwitchManagerCounters counters; //private final CopyOnWriteArrayList<IOFSwitchListener> switchListeners; public MockSwitchManager(){ switchHandlers = new ConcurrentHashMap<DatapathId, OFSwitchHandshakeHandler>(); switches = new ConcurrentHashMap<DatapathId, IOFSwitch>(); counters = new SwitchManagerCounters(new DebugCounterServiceImpl()); //switchListeners = new CopyOnWriteArrayList<IOFSwitchListener>(); } @Override public void switchAdded(IOFSwitchBackend sw) { // do nothing } @Override public void switchDisconnected(IOFSwitchBackend sw) { // do nothing } @Override public void handshakeDisconnected(DatapathId dpid) { // do nothing } @Override public void notifyPortChanged(IOFSwitchBackend sw, OFPortDesc port, PortChangeType type) { // do nothing } @Override public IOFSwitchBackend getOFSwitchInstance(IOFConnectionBackend connection, SwitchDescription description, OFFactory factory, DatapathId datapathId) { return null; } @Override public void handleMessage(IOFSwitchBackend sw, OFMessage m, FloodlightContext bContext) { // do nothing } @Override public void handleOutgoingMessage(IOFSwitch sw, OFMessage m) { // do nothing } public void setSwitchHandshakeHandlers(Map<DatapathId, OFSwitchHandshakeHandler> handlers) { this.switchHandlers = handlers; } @Override public ImmutableList<OFSwitchHandshakeHandler> getSwitchHandshakeHandlers() { return ImmutableList.copyOf(this.switchHandlers.values()); } @Override public void addOFSwitchDriver(String manufacturerDescriptionPrefix, IOFSwitchDriver driver) { // do nothing } @Override public void switchStatusChanged(IOFSwitchBackend sw, SwitchStatus oldStatus, SwitchStatus newStatus) { // do nothing } @Override public int getNumRequiredConnections() { return 0; } @Override public void addSwitchEvent(DatapathId switchDpid, String reason, boolean flushNow) { // do nothing } @Override public List<IAppHandshakePluginFactory> getHandshakePlugins() { return null; } @Override public SwitchManagerCounters getCounters() { return this.counters; } @Override public boolean isCategoryRegistered(LogicalOFMessageCategory category) { return false; } public void setSwitches(Map<DatapathId, IOFSwitch> switches) { this.switches = switches; } @Override public Map<DatapathId, IOFSwitch> getAllSwitchMap() { return Collections.unmodifiableMap(switches); } @Override public IOFSwitch getSwitch(DatapathId dpid) { return this.switches.get(dpid); } @Override public IOFSwitch getActiveSwitch(DatapathId dpid) { IOFSwitch sw = this.switches.get(dpid); if(sw != null && sw.getStatus().isVisible()) return sw; else return null; } @Override public void addOFSwitchListener(IOFSwitchListener listener) { // do nothing } @Override public void removeOFSwitchListener(IOFSwitchListener listener) { // do nothing } @Override public void registerLogicalOFMessageCategory(LogicalOFMessageCategory category) { // do nothing } @Override public void registerHandshakePlugin(IAppHandshakePluginFactory plugin) { // do nothing } @Override public Set<DatapathId> getAllSwitchDpids() { return this.switches.keySet(); } @Override public Collection<Class<? extends IFloodlightService>> getModuleServices() { Collection<Class<? extends IFloodlightService>> services = new ArrayList<Class<? extends IFloodlightService>>(1); services.add(IOFSwitchService.class); return services; } @Override public Map<Class<? extends IFloodlightService>, IFloodlightService> getServiceImpls() { Map<Class<? extends IFloodlightService>, IFloodlightService> m = new HashMap<Class<? extends IFloodlightService>, IFloodlightService>(); m.put(IOFSwitchService.class, this); return m; } @Override public Collection<Class<? extends IFloodlightService>> getModuleDependencies() { return null; } @Override public void init(FloodlightModuleContext context) throws FloodlightModuleException { // do nothing } @Override public void startUp(FloodlightModuleContext context) throws FloodlightModuleException { // do nothing } }