From 8f3ca995f59949006c2cb877066110421b59de10 Mon Sep 17 00:00:00 2001 From: Jozef Bacigal Date: Wed, 2 Mar 2016 12:25:23 +0100 Subject: [PATCH] Post "Clustering optimization" updates 3/2/16 - small updates after clustering optimizations - grammar policy for method names, class name and logs - clean ups 3/3/16 - deviceState class, set SLAVE after init - deviceStateTest updates Change-Id: Ia38b125cb974fc15a49ce288f9880278d4db6288 Signed-off-by: Jozef Bacigal --- .../api/openflow/device/DeviceContext.java | 4 +-- .../openflow/md/core/HandshakeListener.java | 2 +- .../impl/OpenFlowPluginProviderImpl.java | 2 +- .../listener/HandshakeListenerImpl.java | 4 +-- .../impl/device/DeviceContextImpl.java | 33 +++++++++-------- .../impl/device/DeviceStateImpl.java | 1 + .../impl/role/RoleContextImpl.java | 19 +++++----- .../impl/role/RoleManagerImpl.java | 20 +++++------ .../impl/rpc/RpcContextImpl.java | 4 +-- .../impl/rpc/RpcManagerImpl.java | 18 +++++----- .../statistics/StatisticsManagerImpl.java | 5 ++- ...Utils.java => MdSalRegistrationUtils.java} | 6 ++-- .../listener/HandshakeListenerImplTest.java | 2 +- .../impl/device/DeviceContextImplTest.java | 4 +-- .../impl/device/DeviceStateImplTest.java | 36 +++++++++++++++++++ ...t.java => MdSalRegistrationUtilsTest.java} | 10 +++--- .../md/core/ConnectionConductorImpl.java | 4 +-- .../md/core/HandshakeManagerImpl.java | 2 +- .../md/core/HandshakeManagerImplTest.java | 36 +++++++++---------- .../translator/PacketInV10TranslatorTest.java | 2 +- 20 files changed, 126 insertions(+), 88 deletions(-) rename openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/{MdSalRegistratorUtils.java => MdSalRegistrationUtils.java} (98%) rename openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/{MdSalRegistratorUtilsTest.java => MdSalRegistrationUtilsTest.java} (85%) diff --git a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/DeviceContext.java b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/DeviceContext.java index 0e96d1aeb8..85cb3636c5 100644 --- a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/DeviceContext.java +++ b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/device/DeviceContext.java @@ -66,14 +66,14 @@ public interface DeviceContext extends AutoCloseable, * * @param connectionContext */ - void addAuxiliaryConenctionContext(ConnectionContext connectionContext); + void addAuxiliaryConnectionContext(ConnectionContext connectionContext); /** * Method removes auxiliary connection context from this context representing single device connection. * * @param connectionContext */ - void removeAuxiliaryConenctionContext(ConnectionContext connectionContext); + void removeAuxiliaryConnectionContext(ConnectionContext connectionContext); /** diff --git a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/core/HandshakeListener.java b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/core/HandshakeListener.java index deb2efc341..5140977e4f 100644 --- a/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/core/HandshakeListener.java +++ b/openflowplugin-api/src/main/java/org/opendaylight/openflowplugin/api/openflow/md/core/HandshakeListener.java @@ -20,7 +20,7 @@ public interface HandshakeListener { * @param featureOutput obtained * @param version negotiated */ - void onHandshakeSuccessfull(GetFeaturesOutput featureOutput, Short version); + void onHandshakeSuccessful(GetFeaturesOutput featureOutput, Short version); /** * This method is called when handshake fails for some reason. It allows diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java index a7c74d618c..b9d58c9f9c 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/OpenFlowPluginProviderImpl.java @@ -172,7 +172,7 @@ public class OpenFlowPluginProviderImpl implements OpenFlowPluginProvider, OpenF deviceManager = new DeviceManagerImpl(dataBroker, messageIntelligenceAgency, globalNotificationQuota, switchFeaturesMandatory); ((ExtensionConverterProviderKeeper) deviceManager).setExtensionConverterProvider(extensionConverterManager); - roleManager = new RoleManagerImpl(entityOwnershipService, dataBroker, switchFeaturesMandatory); + roleManager = new RoleManagerImpl(entityOwnershipService, dataBroker); statisticsManager = new StatisticsManagerImpl(rpcProviderRegistry, isStatisticsPollingOff); rpcManager = new RpcManagerImpl(rpcProviderRegistry, rpcRequestsQuota); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/connection/listener/HandshakeListenerImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/connection/listener/HandshakeListenerImpl.java index 61480de5f0..f1c7a9a2e4 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/connection/listener/HandshakeListenerImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/connection/listener/HandshakeListenerImpl.java @@ -48,7 +48,7 @@ public class HandshakeListenerImpl implements HandshakeListener { } @Override - public void onHandshakeSuccessfull(final GetFeaturesOutput featureOutput, final Short version) { + public void onHandshakeSuccessful(final GetFeaturesOutput featureOutput, final Short version) { LOG.debug("handshake succeeded: {}", connectionContext.getConnectionAdapter().getRemoteAddress()); closeHandshakeContext(); connectionContext.changeStateToWorking(); @@ -102,7 +102,7 @@ public class HandshakeListenerImpl implements HandshakeListener { handshakeContext.close(); } catch (final Exception e) { LOG.warn("Closing handshake context failed: {}", e.getMessage()); - LOG.debug("Detail in hanshake context close:", e); + LOG.debug("Detail in handshake context close:", e); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java index e5c62d7e65..43cb394dbf 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImpl.java @@ -77,7 +77,7 @@ import org.opendaylight.openflowplugin.impl.registry.flow.FlowRegistryKeyFactory import org.opendaylight.openflowplugin.impl.registry.group.DeviceGroupRegistryImpl; import org.opendaylight.openflowplugin.impl.registry.meter.DeviceMeterRegistryImpl; import org.opendaylight.openflowplugin.impl.util.DeviceInitializationUtils; -import org.opendaylight.openflowplugin.impl.util.MdSalRegistratorUtils; +import org.opendaylight.openflowplugin.impl.util.MdSalRegistrationUtils; import org.opendaylight.openflowplugin.openflow.md.core.session.SwitchConnectionCookieOFImpl; import org.opendaylight.yang.gen.v1.urn.opendaylight.experimenter.message.service.rev151020.ExperimenterMessageFromDevBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; @@ -155,7 +155,7 @@ public class DeviceContextImpl implements DeviceContext, ExtensionConverterProvi private ExtensionConverterProvider extensionConverterProvider; private final boolean switchFeaturesMandatory; - private StatisticsContext statCtx; + private StatisticsContext statisticsContext; @VisibleForTesting @@ -214,7 +214,7 @@ public class DeviceContextImpl implements DeviceContext, ExtensionConverterProvi } @Override - public void addAuxiliaryConenctionContext(final ConnectionContext connectionContext) { + public void addAuxiliaryConnectionContext(final ConnectionContext connectionContext) { final SwitchConnectionDistinguisher connectionDistinguisher = createConnectionDistinguisher(connectionContext); auxiliaryConnectionContexts.put(connectionDistinguisher, connectionContext); } @@ -224,8 +224,11 @@ public class DeviceContextImpl implements DeviceContext, ExtensionConverterProvi } @Override - public void removeAuxiliaryConenctionContext(final ConnectionContext connectionContext) { - // TODO Auto-generated method stub + public void removeAuxiliaryConnectionContext(final ConnectionContext connectionContext) { + final SwitchConnectionDistinguisher connectionDistinguisher = createConnectionDistinguisher(connectionContext); + if (null != connectionDistinguisher) { + auxiliaryConnectionContexts.remove(connectionDistinguisher); + } } @Override @@ -247,7 +250,7 @@ public class DeviceContextImpl implements DeviceContext, ExtensionConverterProvi return Futures.immediateFuture(null); } if (OfpRole.BECOMEMASTER.equals(role)) { - MdSalRegistratorUtils.registerMasterServices(getRpcContext(), DeviceContextImpl.this, role); + MdSalRegistrationUtils.registerMasterServices(getRpcContext(), DeviceContextImpl.this, role); getRpcContext().registerStatCompatibilityServices(); if (!deviceState.deviceSynchronized()) { //TODO: no necessary code for yet - it needs for initialization phase only @@ -267,7 +270,7 @@ public class DeviceContextImpl implements DeviceContext, ExtensionConverterProvi @Override public void onFailure(Throwable throwable) { LOG.debug("Device {} init unexpected fail. Unregister RPCs", getDeviceState().getNodeId()); - MdSalRegistratorUtils.unregisterServices(getRpcContext()); + MdSalRegistrationUtils.unregisterServices(getRpcContext()); } }); @@ -276,13 +279,13 @@ public class DeviceContextImpl implements DeviceContext, ExtensionConverterProvi } else if (OfpRole.BECOMESLAVE.equals(role)) { if (null != rpcContext) { - MdSalRegistratorUtils.registerSlaveServices(rpcContext, role); + MdSalRegistrationUtils.registerSlaveServices(rpcContext, role); } return transactionChainManager.deactivateTransactionManager(); } else { LOG.warn("Unknown OFCluster Role {} for Node {}", role, deviceState.getNodeId()); if (null != rpcContext) { - MdSalRegistratorUtils.unregisterServices(rpcContext); + MdSalRegistrationUtils.unregisterServices(rpcContext); } return transactionChainManager.deactivateTransactionManager(); } @@ -294,7 +297,7 @@ public class DeviceContextImpl implements DeviceContext, ExtensionConverterProvi * all possible MultipartTypes for polling in StatTypeList */ private ListenableFuture asyncClusterRoleChange() { - if (statCtx == null) { + if (statisticsContext == null) { final String errMsg = String.format("DeviceCtx %s is up but we are missing StatisticsContext", deviceState.getNodeId()); LOG.warn(errMsg); return Futures.immediateFailedFuture(new IllegalStateException(errMsg)); @@ -590,7 +593,7 @@ public class DeviceContextImpl implements DeviceContext, ExtensionConverterProvi @Override public void onSuccess(final Void result) { - LOG.info("TxChain {} was shutdown successfull.", getDeviceState().getNodeId()); + LOG.info("TxChain {} was shutdown successful.", getDeviceState().getNodeId()); tearDownClean(); } @@ -643,8 +646,8 @@ public class DeviceContextImpl implements DeviceContext, ExtensionConverterProvi } @Override - public void setNotificationService(final NotificationService notificationServiceParam) { - notificationService = notificationServiceParam; + public void setNotificationService(final NotificationService notificationService) { + this.notificationService = notificationService; } @Override @@ -719,11 +722,11 @@ public class DeviceContextImpl implements DeviceContext, ExtensionConverterProvi @Override public void setStatisticsContext(final StatisticsContext statisticsContext) { - this.statCtx = statisticsContext; + this.statisticsContext = statisticsContext; } @Override public StatisticsContext getStatisticsContext() { - return statCtx; + return statisticsContext; } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceStateImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceStateImpl.java index d49021ed1e..efbeefdbc7 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceStateImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/device/DeviceStateImpl.java @@ -58,6 +58,7 @@ class DeviceStateImpl implements DeviceState { version = featuresReply.getVersion(); statPollEnabled = false; deviceSynchronized = false; + role = OfpRole.BECOMESLAVE; } @Override diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/role/RoleContextImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/role/RoleContextImpl.java index d2e8fb80e0..7fc9739892 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/role/RoleContextImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/role/RoleContextImpl.java @@ -55,23 +55,24 @@ public class RoleContextImpl implements RoleContext { private final EntityOwnershipService entityOwnershipService; private EntityOwnershipCandidateRegistration entityOwnershipCandidateRegistration; + private EntityOwnershipCandidateRegistration txEntityOwnershipCandidateRegistration; + private final DeviceContext deviceContext; - private final Entity entity; - private SalRoleService salRoleService; - private EntityOwnershipCandidateRegistration txEntityOwnershipCandidateRegistration; + private final Entity entity; private final Entity txEntity; + private SalRoleService salRoleService; + private final Semaphore mainCandidateGuard = new Semaphore(1, true); private final Semaphore txCandidateGuard = new Semaphore(1, true); public RoleContextImpl(final DeviceContext deviceContext, final EntityOwnershipService entityOwnershipService, - final Entity entity, final Entity txEnitity) { + final Entity entity, final Entity txEntity) { this.entityOwnershipService = Preconditions.checkNotNull(entityOwnershipService); this.deviceContext = Preconditions.checkNotNull(deviceContext); this.entity = Preconditions.checkNotNull(entity); - this.txEntity = Preconditions.checkNotNull(txEnitity); - + this.txEntity = Preconditions.checkNotNull(txEntity); salRoleService = new SalRoleServiceImpl(this, deviceContext); } @@ -110,7 +111,7 @@ public class RoleContextImpl implements RoleContext { LOG.trace("onRoleChanged method call for Entity {}", entity); if (!isDeviceConnected()) { - // this can happen as after the disconnect, we still get a last messsage from EntityOwnershipService. + // this can happen as after the disconnect, we still get a last message from EntityOwnershipService. LOG.info("Device {} is disconnected from this node. Hence not attempting a role change.", deviceContext.getPrimaryConnectionContext().getNodeId()); LOG.debug("SetRole cancelled for entity [{}], reason = device disconnected.", entity); @@ -210,7 +211,7 @@ public class RoleContextImpl implements RoleContext { } private ListenableFuture sendRoleChangeToDevice(final OfpRole newRole, final AsyncFunction, Void> function) { - LOG.debug("Send new Role {} to Device {}", newRole, deviceContext.getDeviceState().getNodeId()); + LOG.debug("Send new role {} to device {}", newRole, deviceContext.getDeviceState().getNodeId()); final Future> setRoleOutputFuture; if (deviceContext.getDeviceState().getFeatures().getVersion() < OFConstants.OFP_VERSION_1_3) { LOG.debug("Device OF version {} not support ROLE", deviceContext.getDeviceState().getFeatures().getVersion()); @@ -224,7 +225,7 @@ public class RoleContextImpl implements RoleContext { @Override public void run(final Timeout timeout) throws Exception { if (!setRoleOutputFuture.isDone()) { - LOG.info("New Role {} was not propagated to device {} during 10 sec. Close connection immediately.", + LOG.info("New role {} was not propagated to device {} during 10 sec. Close connection immediately.", newRole, deviceContext.getDeviceState().getNodeId()); deviceContext.close(); } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/role/RoleManagerImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/role/RoleManagerImpl.java index b365c797b7..fc159499cf 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/role/RoleManagerImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/role/RoleManagerImpl.java @@ -63,15 +63,13 @@ public class RoleManagerImpl implements RoleManager, EntityOwnershipListener { private final ConcurrentMap txContexts = new ConcurrentHashMap<>(); private final EntityOwnershipListenerRegistration entityOwnershipListenerRegistration; private final EntityOwnershipListenerRegistration txEntityOwnershipListenerRegistration; - private final boolean switchFeaturesMandatory; - public RoleManagerImpl(final EntityOwnershipService entityOwnershipService, final DataBroker dataBroker, final boolean switchFeaturesMandatory) { + public RoleManagerImpl(final EntityOwnershipService entityOwnershipService, final DataBroker dataBroker) { this.entityOwnershipService = Preconditions.checkNotNull(entityOwnershipService); this.dataBroker = Preconditions.checkNotNull(dataBroker); - this.switchFeaturesMandatory = switchFeaturesMandatory; this.entityOwnershipListenerRegistration = Preconditions.checkNotNull(entityOwnershipService.registerListener(RoleManager.ENTITY_TYPE, this)); this.txEntityOwnershipListenerRegistration = Preconditions.checkNotNull(entityOwnershipService.registerListener(TX_ENTITY_TYPE, this)); - LOG.debug("Registering OpenflowOwnershipListener listening to all entity ownership changes"); + LOG.debug("Register OpenflowOwnershipListener to all entity ownership changes"); } @Override @@ -81,14 +79,14 @@ public class RoleManagerImpl implements RoleManager, EntityOwnershipListener { @Override public void onDeviceContextLevelUp(@CheckForNull final DeviceContext deviceContext) throws Exception { - LOG.debug("RoleManager called for device:{}", deviceContext.getPrimaryConnectionContext().getNodeId()); + LOG.trace("Role manager called for device:{}", deviceContext.getPrimaryConnectionContext().getNodeId()); final RoleContext roleContext = new RoleContextImpl(deviceContext, entityOwnershipService, makeEntity(deviceContext.getDeviceState().getNodeId()), makeTxEntity(deviceContext.getDeviceState().getNodeId())); - Verify.verify(contexts.putIfAbsent(roleContext.getEntity(), roleContext) == null, "RoleCtx for master Node {} is still not closed.", deviceContext.getDeviceState().getNodeId()); + Verify.verify(contexts.putIfAbsent(roleContext.getEntity(), roleContext) == null, "Role context for master Node {} is still not closed.", deviceContext.getDeviceState().getNodeId()); Verify.verify(!txContexts.containsKey(roleContext.getTxEntity()), - "RoleCtx for master Node {} is still not closed. TxEntity was not unregistered yet.", deviceContext.getDeviceState().getNodeId()); + "Role context for master Node {} is still not closed. TxEntity was not unregistered yet.", deviceContext.getDeviceState().getNodeId()); // if the device context gets closed (mostly on connection close), we would need to cleanup deviceContext.addDeviceContextClosedHandler(this); @@ -124,7 +122,7 @@ public class RoleManagerImpl implements RoleManager, EntityOwnershipListener { @Override public void onDeviceContextClosed(final DeviceContext deviceContext) { final NodeId nodeId = deviceContext.getDeviceState().getNodeId(); - LOG.debug("onDeviceContextClosed for node {}", nodeId); + LOG.trace("onDeviceContextClosed for node {}", nodeId); final Entity entity = makeEntity(nodeId); final RoleContext roleContext = contexts.get(entity); if (roleContext != null) { @@ -148,7 +146,7 @@ public class RoleManagerImpl implements RoleManager, EntityOwnershipListener { // TODO : is there a chance to have TxEntity ? } } else { - LOG.warn("EntityOwnershipService doesn't return state for entity: {} in close proces", entity); + LOG.warn("EntityOwnershipService doesn't return state for entity: {} in close process", entity); } roleContext.close(); } @@ -380,14 +378,14 @@ public class RoleManagerImpl implements RoleManager, EntityOwnershipListener { Futures.addCallback(removeDeviceFromOperDS(roleContext), new FutureCallback() { @Override public void onSuccess(@Nullable final Void aVoid) { - LOG.debug("Freeing roleContext slot for device: {}", roleContext.getDeviceState().getNodeId()); + LOG.debug("Removing context for device: {}", roleContext.getDeviceState().getNodeId()); contexts.remove(ownershipChange.getEntity(), roleContext); roleContext.suspendTxCandidate(); } @Override public void onFailure(final Throwable throwable) { - LOG.warn("NOT freeing roleContext slot for device: {}, {}", roleContext.getDeviceState() + LOG.warn("Removing role context for device: {}, but {}", roleContext.getDeviceState() .getNodeId(), throwable.getMessage()); contexts.remove(ownershipChange.getEntity(), roleContext); roleContext.suspendTxCandidate(); diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcContextImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcContextImpl.java index ba7d36f4ab..bb4e658441 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcContextImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcContextImpl.java @@ -23,7 +23,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.RequestContext; import org.opendaylight.openflowplugin.api.openflow.rpc.RpcContext; import org.opendaylight.openflowplugin.api.openflow.statistics.ofpspecific.MessageSpy; -import org.opendaylight.openflowplugin.impl.util.MdSalRegistratorUtils; +import org.opendaylight.openflowplugin.impl.util.MdSalRegistrationUtils; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeContext; import org.opendaylight.yangtools.yang.binding.RpcService; import org.slf4j.Logger; @@ -72,7 +72,7 @@ public class RpcContextImpl implements RpcContext { @Override public void registerStatCompatibilityServices() { if (isStatisticsRpcEnabled) { - MdSalRegistratorUtils.registerStatCompatibilityServices(RpcContextImpl.this, deviceContext, + MdSalRegistrationUtils.registerStatCompatibilityServices(RpcContextImpl.this, deviceContext, notificationPublishService, new AtomicLong()); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImpl.java index 523ccc5aee..4681d12381 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/rpc/RpcManagerImpl.java @@ -19,7 +19,7 @@ import org.opendaylight.openflowplugin.api.openflow.device.DeviceContext; import org.opendaylight.openflowplugin.api.openflow.device.handlers.DeviceInitializationPhaseHandler; import org.opendaylight.openflowplugin.api.openflow.rpc.RpcContext; import org.opendaylight.openflowplugin.api.openflow.rpc.RpcManager; -import org.opendaylight.openflowplugin.impl.util.MdSalRegistratorUtils; +import org.opendaylight.openflowplugin.impl.util.MdSalRegistrationUtils; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.role.service.rev150727.OfpRole; import org.slf4j.Logger; @@ -55,21 +55,21 @@ public class RpcManagerImpl implements RpcManager { final RpcContext rpcContext = new RpcContextImpl(deviceContext.getMessageSpy(), rpcProviderRegistry, deviceContext, maxRequestsQuota, isStatisticsRpcEnabled, notificationPublishService); - Verify.verify(contexts.putIfAbsent(deviceContext, rpcContext) == null, "RpcCtx still not closed for node {}", nodeId); + Verify.verify(contexts.putIfAbsent(deviceContext, rpcContext) == null, "RPC context still not closed for node {}", nodeId); deviceContext.addDeviceContextClosedHandler(this); if (OfpRole.BECOMEMASTER.equals(ofpRole)) { - LOG.info("Registering Openflow RPCs for node:{}, role:{}", nodeId, ofpRole); - MdSalRegistratorUtils.registerMasterServices(rpcContext, deviceContext, ofpRole); + LOG.info("Registering Openflow RPCs services for node:{}, role:{}", nodeId, ofpRole); + MdSalRegistrationUtils.registerMasterServices(rpcContext, deviceContext, ofpRole); } else if(OfpRole.BECOMESLAVE.equals(ofpRole)) { // if slave, we need to de-register rpcs if any have been registered, in case of master to slave - LOG.info("Unregistering RPC registration (if any) for slave role for node:{}", deviceContext.getDeviceState().getNodeId()); - MdSalRegistratorUtils.registerSlaveServices(rpcContext, ofpRole); + LOG.info("Unregister RPC services (if any) for slave role for node:{}", deviceContext.getDeviceState().getNodeId()); + MdSalRegistrationUtils.registerSlaveServices(rpcContext, ofpRole); } else { // if we don't know role, we need to unregister rpcs if any have been registered - LOG.info("Unregistering RPC registration (if any) for slave role for node:{}", deviceContext.getDeviceState().getNodeId()); - MdSalRegistratorUtils.unregisterServices(rpcContext); + LOG.info("Unregister RPC services (if any) for slave role for node:{}", deviceContext.getDeviceState().getNodeId()); + MdSalRegistrationUtils.unregisterServices(rpcContext); } // finish device initialization cycle back to DeviceManager @@ -89,7 +89,7 @@ public class RpcManagerImpl implements RpcManager { public void onDeviceContextClosed(final DeviceContext deviceContext) { final RpcContext removedContext = contexts.remove(deviceContext); if (removedContext != null) { - LOG.info("Unregistering rpcs for device context closure"); + LOG.info("Unregister RPCs services for device context closure"); removedContext.close(); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java index 3cb77d0bdd..992275175e 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/statistics/StatisticsManagerImpl.java @@ -126,7 +126,6 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag public void onSuccess(final Boolean statisticsGathered) { if (statisticsGathered) { //there are some statistics on device worth gathering - contexts.put(deviceContext, statisticsContext); final TimeCounter timeCounter = new TimeCounter(); deviceContext.getDeviceState().setStatisticsPollingEnabledProp(true); scheduleNextPolling(deviceContext, statisticsContext, timeCounter); @@ -140,8 +139,8 @@ public class StatisticsManagerImpl implements StatisticsManager, StatisticsManag } deviceContext.getDeviceState().setDeviceSynchronized(true); } else { - final String deviceAdress = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().getRemoteAddress().toString(); - LOG.info("Statistics for device {} could not be gathered. Closing its device context.", deviceAdress); + final String deviceAddress = deviceContext.getPrimaryConnectionContext().getConnectionAdapter().getRemoteAddress().toString(); + LOG.info("Statistics for device {} could not be gathered. Closing its device context.", deviceAddress); deviceContext.close(); } } diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistratorUtils.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtils.java similarity index 98% rename from openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistratorUtils.java rename to openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtils.java index 1531023711..70390535ba 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistratorUtils.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtils.java @@ -51,7 +51,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216. import org.opendaylight.yang.gen.v1.urn.opendaylight.role.service.rev150727.OfpRole; import org.opendaylight.yang.gen.v1.urn.opendaylight.table.service.rev131026.SalTableService; -public class MdSalRegistratorUtils { +public class MdSalRegistrationUtils { //TODO: Make one register and one unregister method for all services @@ -60,7 +60,7 @@ public class MdSalRegistratorUtils { //NOBODY }; - private MdSalRegistratorUtils() { + private MdSalRegistrationUtils() { throw new IllegalStateException(); } @@ -94,7 +94,7 @@ public class MdSalRegistratorUtils { } /** - * Method unregisters all services in first step. So we don't need to call {@link MdSalRegistratorUtils#unregisterServices(RpcContext)} + * Method unregisters all services in first step. So we don't need to call {@link MdSalRegistrationUtils#unregisterServices(RpcContext)} * directly before by change role from {@link OfpRole#BECOMEMASTER} to {@link OfpRole#BECOMESLAVE}. * Method registers {@link SalEchoService} in next step only because we would like to have SalEchoService as local service for all apps * to be able actively check connection status for slave connection too. diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/connection/listener/HandshakeListenerImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/connection/listener/HandshakeListenerImplTest.java index 73d2a36709..90d908b6b4 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/connection/listener/HandshakeListenerImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/connection/listener/HandshakeListenerImplTest.java @@ -74,7 +74,7 @@ public class HandshakeListenerImplTest { @Test public void testOnHandshakeSuccessfull() throws Exception { - handshakeListener.onHandshakeSuccessfull(features, version); + handshakeListener.onHandshakeSuccessful(features, version); Mockito.verify(connectionContextSpy).changeStateToWorking(); Mockito.verify(connectionContextSpy).setFeatures(Matchers.any(FeaturesReply.class)); Mockito.verify(connectionContextSpy).setNodeId(nodeIdCaptor.capture()); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImplTest.java index 63cdfceb05..0a4bb06eb1 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceContextImplTest.java @@ -268,7 +268,7 @@ public class DeviceContextImplTest { private ConnectionContext addDummyAuxiliaryConnectionContext() { ConnectionContext mockedConnectionContext = prepareConnectionContext(); - deviceContext.addAuxiliaryConenctionContext(mockedConnectionContext); + deviceContext.addAuxiliaryConnectionContext(mockedConnectionContext); return mockedConnectionContext; } @@ -392,7 +392,7 @@ public class DeviceContextImplTest { when(deviceState.getNodeId()).thenReturn(dummyNodeId); ConnectionContext mockedAuxiliaryConnectionContext = prepareConnectionContext(); - deviceContext.addAuxiliaryConenctionContext(mockedAuxiliaryConnectionContext); + deviceContext.addAuxiliaryConnectionContext(mockedAuxiliaryConnectionContext); DeviceContextClosedHandler mockedDeviceContextClosedHandler = mock(DeviceContextClosedHandler.class); deviceContext.addDeviceContextClosedHandler(mockedDeviceContextClosedHandler); when(deviceState.isValid()).thenReturn(true); diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceStateImplTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceStateImplTest.java index 1a854dfc00..8affe98015 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceStateImplTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/device/DeviceStateImplTest.java @@ -23,6 +23,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.GetFeaturesOutputBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.features.reply.PhyPort; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.features.reply.PhyPortBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.role.service.rev150727.OfpRole; /** * openflowplugin-impl @@ -94,4 +95,39 @@ public class DeviceStateImplTest { Assert.assertEquals(expetedResult.getPhyPort(), getFeatures.getPhyPort()); } + @Test + public void testIsValid_initialValue(){ + Assert.assertFalse(deviceState.isValid()); + } + + @Test + public void testDeviceSynchronized_initialValue(){ + Assert.assertFalse(deviceState.deviceSynchronized()); + } + + @Test + public void testStatPollEnabled_initialValue(){ + Assert.assertFalse(deviceState.isStatisticsPollingEnabled()); + } + + @Test + public void testRole_initialValue(){ + Assert.assertFalse(deviceState.getRole().equals(OfpRole.BECOMEMASTER)); + Assert.assertFalse(deviceState.getRole().equals(OfpRole.NOCHANGE)); + } + + @Test + public void testStatistics_initialValue(){ + Assert.assertFalse(deviceState.isFlowStatisticsAvailable()); + Assert.assertFalse(deviceState.isPortStatisticsAvailable()); + Assert.assertFalse(deviceState.isQueueStatisticsAvailable()); + Assert.assertFalse(deviceState.isTableStatisticsAvailable()); + } + + @Test + public void testMeterAndGroupAvailable_initialValue(){ + Assert.assertFalse(deviceState.isGroupAvailable()); + Assert.assertFalse(deviceState.isMetersAvailable()); + } + } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistratorUtilsTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtilsTest.java similarity index 85% rename from openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistratorUtilsTest.java rename to openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtilsTest.java index f8f08b6ad3..1147120edc 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistratorUtilsTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/MdSalRegistrationUtilsTest.java @@ -27,10 +27,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731 import org.opendaylight.yang.gen.v1.urn.opendaylight.role.service.rev150727.OfpRole; import org.opendaylight.yangtools.yang.binding.RpcService; -public class MdSalRegistratorUtilsTest { +public class MdSalRegistrationUtilsTest { /** - * Number of currently registrated services (can be changed) in {@link MdSalRegistratorUtils#registerMasterServices + * Number of currently registrated services (can be changed) in {@link MdSalRegistrationUtils#registerServices * (RpcContext, DeviceContext)} */ private static final int NUMBER_OF_RPC_SERVICE_REGISTRATION = 11; @@ -49,9 +49,9 @@ public class MdSalRegistratorUtilsTest { when(mockedFeatures.getDatapathId()).thenReturn(mockedDataPathId); when(mockedDeviceContext.getPrimaryConnectionContext()).thenReturn(mockedConnectionContext); - MdSalRegistratorUtils.registerMasterServices(mockedRpcContext,mockedDeviceContext, OfpRole.BECOMEMASTER); - verify(mockedRpcContext, times(NUMBER_OF_RPC_SERVICE_REGISTRATION)).registerRpcServiceImplementation(any - (RpcService.class.getClass()), any(RpcService.class)); + MdSalRegistrationUtils.registerMasterServices(mockedRpcContext,mockedDeviceContext, OfpRole.BECOMEMASTER); + verify(mockedRpcContext, times(NUMBER_OF_RPC_SERVICE_REGISTRATION)).registerRpcServiceImplementation( + any(RpcService.class.getClass()), any(RpcService.class)); } } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImpl.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImpl.java index e9ad1e3d1b..8c3f2901f0 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImpl.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/ConnectionConductorImpl.java @@ -456,8 +456,8 @@ public class ConnectionConductorImpl implements OpenflowProtocolListener, } @Override - public void onHandshakeSuccessfull(GetFeaturesOutput featureOutput, - Short negotiatedVersion) { + public void onHandshakeSuccessful(GetFeaturesOutput featureOutput, + Short negotiatedVersion) { postHandshakeBasic(featureOutput, negotiatedVersion); } diff --git a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/HandshakeManagerImpl.java b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/HandshakeManagerImpl.java index 0a4e98c47d..78997ef27c 100644 --- a/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/HandshakeManagerImpl.java +++ b/openflowplugin/src/main/java/org/opendaylight/openflowplugin/openflow/md/core/HandshakeManagerImpl.java @@ -389,7 +389,7 @@ public class HandshakeManagerImpl implements HandshakeManager { featureOutput.getAuxiliaryId()); LOG.trace("handshake SETTLED: version={}, datapathId={}, auxiliaryId={}", version, featureOutput.getDatapathId(), featureOutput.getAuxiliaryId()); - handshakeListener.onHandshakeSuccessfull(featureOutput, proposedVersion); + handshakeListener.onHandshakeSuccessful(featureOutput, proposedVersion); } else { // handshake failed LOG.warn("issuing disconnect during handshake [{}]", connectionAdapter.getRemoteAddress()); diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/HandshakeManagerImplTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/HandshakeManagerImplTest.java index deaa7aa002..2b1210bdfc 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/HandshakeManagerImplTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/HandshakeManagerImplTest.java @@ -163,7 +163,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(version, helloXid).build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull(resultFeatures.getResult(), version); + Mockito.verify(handshakeListener).onHandshakeSuccessful(resultFeatures.getResult(), version); } /** @@ -181,7 +181,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(version, helloXid).build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull(resultFeatures.getResult(), version); + Mockito.verify(handshakeListener).onHandshakeSuccessful(resultFeatures.getResult(), version); } /** @@ -197,7 +197,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(version, helloXid).build()); - Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessfull( + Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessful( Matchers.any(GetFeaturesOutput.class), Matchers.anyShort()); } @@ -216,7 +216,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(version, helloXid).build()); - Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessfull( + Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessful( Matchers.any(GetFeaturesOutput.class), Matchers.anyShort()); } @@ -238,7 +238,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(expVersion, helloXid).build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull( + Mockito.verify(handshakeListener).onHandshakeSuccessful( resultFeatures.getResult(), expVersion); } @@ -262,7 +262,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(expVersion, helloXid).build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull( + Mockito.verify(handshakeListener).onHandshakeSuccessful( resultFeatures.getResult(), expVersion); } @@ -281,7 +281,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(version, helloXid).build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull( + Mockito.verify(handshakeListener).onHandshakeSuccessful( resultFeatures.getResult(), version); } @@ -302,7 +302,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(version, helloXid).build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull( + Mockito.verify(handshakeListener).onHandshakeSuccessful( resultFeatures.getResult(), version); } @@ -324,7 +324,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(expVersion, helloXid).build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull( + Mockito.verify(handshakeListener).onHandshakeSuccessful( resultFeatures.getResult(), expVersion); } @@ -346,7 +346,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(expVersion, helloXid).build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull( + Mockito.verify(handshakeListener).onHandshakeSuccessful( resultFeatures.getResult(), expVersion); } @@ -365,7 +365,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(version, helloXid).build()); - Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessfull( + Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessful( Matchers.any(GetFeaturesOutput.class), Matchers.anyShort()); } @@ -386,7 +386,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(createHelloMessage(version, helloXid).build()); - Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessfull( + Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessful( Matchers.any(GetFeaturesOutput.class), Matchers.anyShort()); } @@ -409,7 +409,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(helloMessage.build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull( + Mockito.verify(handshakeListener).onHandshakeSuccessful( resultFeatures.getResult(), version); } @@ -434,7 +434,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(helloMessage.build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull( + Mockito.verify(handshakeListener).onHandshakeSuccessful( resultFeatures.getResult(), version); } @@ -457,7 +457,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(helloMessage.build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull( + Mockito.verify(handshakeListener).onHandshakeSuccessful( resultFeatures.getResult(), version); } @@ -482,7 +482,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(helloMessage.build()); - Mockito.verify(handshakeListener).onHandshakeSuccessfull( + Mockito.verify(handshakeListener).onHandshakeSuccessful( resultFeatures.getResult(), version); } @@ -503,7 +503,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(helloMessage.build()); - Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessfull( + Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessful( Matchers.any(GetFeaturesOutput.class), Matchers.anyShort()); } @@ -526,7 +526,7 @@ public class HandshakeManagerImplTest { handshakeManager.shake(helloMessage.build()); - Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessfull( + Mockito.verify(handshakeListener, Mockito.never()).onHandshakeSuccessful( Matchers.any(GetFeaturesOutput.class), Matchers.anyShort()); } diff --git a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/PacketInV10TranslatorTest.java b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/PacketInV10TranslatorTest.java index 043811a68c..a31d89fd89 100644 --- a/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/PacketInV10TranslatorTest.java +++ b/openflowplugin/src/test/java/org/opendaylight/openflowplugin/openflow/md/core/translator/PacketInV10TranslatorTest.java @@ -273,6 +273,6 @@ public class PacketInV10TranslatorTest { connectionConductor.setQueueProcessor(queueProcessor); connectionConductor.init(); connectionConductor - .onHandshakeSuccessfull(featuresOutput, (short) 0x01); + .onHandshakeSuccessful(featuresOutput, (short) 0x01); } } -- 2.36.6