Martin Mucha has uploaded a new change for review. Change subject: core: introducing queries for ReportedConfigurations business entity. ......................................................................
core: introducing queries for ReportedConfigurations business entity. Change-Id: I4c8cb1020263988af7a09c0cf86772965e9d3560 Signed-off-by: Martin Mucha <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/FillReportedConfigurations.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetNetworkAttachmentsByHostIdQuery.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetNetworkAttachmentsByHostNicIdQuery.java A backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkInSyncWithVdsNetworkInterface.java M backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java A backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/NetworkInSyncWithVdsNetworkInterfaceTest.java M backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommandTest.java 7 files changed, 421 insertions(+), 34 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/74/37874/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/FillReportedConfigurations.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/FillReportedConfigurations.java new file mode 100644 index 0000000..a8a81309 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/FillReportedConfigurations.java @@ -0,0 +1,51 @@ +package org.ovirt.engine.core.bll.network.host; + +import java.util.List; + +import org.ovirt.engine.core.common.businessentities.BusinessEntityMap; +import org.ovirt.engine.core.common.businessentities.VDS; +import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; +import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dal.dbbroker.DbFacade; +import org.ovirt.engine.core.dao.VdsDAO; +import org.ovirt.engine.core.dao.network.InterfaceDao; +import org.ovirt.engine.core.dao.network.NetworkDao; +import org.ovirt.engine.core.utils.NetworkInSyncWithVdsNetworkInterface; + +public class FillReportedConfigurations { + + private BusinessEntityMap<VdsNetworkInterface> vdsNetworkInterfaceMap; + private BusinessEntityMap<Network> networkMap; + private final QosDaoCache qosDaoCache; + + public FillReportedConfigurations(Guid hostId) { + DbFacade dbFacade = DbFacade.getInstance(); + + InterfaceDao interfaceDao = dbFacade.getInterfaceDao(); + NetworkDao networkDao = dbFacade.getNetworkDao(); + VdsDAO vdsDao = dbFacade.getVdsDao(); + qosDaoCache = new QosDaoCache(dbFacade.getHostNetworkQosDao()); + + VDS host = vdsDao.get(hostId); + vdsNetworkInterfaceMap = new BusinessEntityMap<>(interfaceDao.getAllInterfacesForVds(hostId)); + networkMap = new BusinessEntityMap<>(networkDao.getAllForCluster(host.getVdsGroupId())); + } + + public void fillReportedConfigurations(List<NetworkAttachment> networkAttachments) { + for (NetworkAttachment networkAttachment : networkAttachments) { + fillReportedConfiguration(networkAttachment); + } + } + + public void fillReportedConfiguration(NetworkAttachment networkAttachment) { + Network network = networkMap.get(networkAttachment.getNetworkId()); + VdsNetworkInterface iface = vdsNetworkInterfaceMap.get(networkAttachment.getNicId()); + HostNetworkQos networkQos = qosDaoCache.get(network.getQosId()); + + networkAttachment.setReportedConfigurations( + new NetworkInSyncWithVdsNetworkInterface(iface, network, networkQos).reportConfigurationsOnHost()); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetNetworkAttachmentsByHostIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetNetworkAttachmentsByHostIdQuery.java index 09661e1..21a8585 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetNetworkAttachmentsByHostIdQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetNetworkAttachmentsByHostIdQuery.java @@ -1,7 +1,12 @@ package org.ovirt.engine.core.bll.network.host; +import java.util.List; + import org.ovirt.engine.core.bll.QueriesCommandBase; +import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.network.NetworkAttachmentDao; public class GetNetworkAttachmentsByHostIdQuery<P extends IdQueryParameters> extends QueriesCommandBase<P> { public GetNetworkAttachmentsByHostIdQuery(P parameters) { @@ -10,8 +15,13 @@ @Override protected void executeQueryCommand() { - // TODO populate reported configuration - getQueryReturnValue().setReturnValue(getDbFacade().getNetworkAttachmentDao() - .getAllForHost(getParameters().getId())); + NetworkAttachmentDao networkAttachmentDao = getDbFacade().getNetworkAttachmentDao(); + Guid hostId = getParameters().getId(); + + List<NetworkAttachment> networkAttachments = networkAttachmentDao.getAllForHost(hostId); + new FillReportedConfigurations(hostId).fillReportedConfigurations(networkAttachments); + getQueryReturnValue().setReturnValue(networkAttachments); } + + } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetNetworkAttachmentsByHostNicIdQuery.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetNetworkAttachmentsByHostNicIdQuery.java index deb0032..84aa183 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetNetworkAttachmentsByHostNicIdQuery.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/GetNetworkAttachmentsByHostNicIdQuery.java @@ -1,7 +1,12 @@ package org.ovirt.engine.core.bll.network.host; +import java.util.List; + import org.ovirt.engine.core.bll.QueriesCommandBase; +import org.ovirt.engine.core.common.businessentities.network.NetworkAttachment; import org.ovirt.engine.core.common.queries.IdQueryParameters; +import org.ovirt.engine.core.compat.Guid; +import org.ovirt.engine.core.dao.network.NetworkAttachmentDao; public class GetNetworkAttachmentsByHostNicIdQuery<P extends IdQueryParameters> extends QueriesCommandBase<P> { public GetNetworkAttachmentsByHostNicIdQuery(P parameters) { @@ -10,8 +15,13 @@ @Override protected void executeQueryCommand() { - // TODO populate reported configuration - getQueryReturnValue().setReturnValue(getDbFacade().getNetworkAttachmentDao() - .getAllForNic(getParameters().getId())); + NetworkAttachmentDao networkAttachmentDao = getDbFacade().getNetworkAttachmentDao(); + Guid nicId = getParameters().getId(); + + Guid hostId = getDbFacade().getInterfaceDao().get(nicId).getVdsId(); + + List<NetworkAttachment> networkAttachments = networkAttachmentDao.getAllForNic(nicId); + new FillReportedConfigurations(hostId).fillReportedConfigurations(networkAttachments); + getQueryReturnValue().setReturnValue(networkAttachments); } } diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkInSyncWithVdsNetworkInterface.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkInSyncWithVdsNetworkInterface.java new file mode 100644 index 0000000..1fbf3ac --- /dev/null +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkInSyncWithVdsNetworkInterface.java @@ -0,0 +1,103 @@ +package org.ovirt.engine.core.utils; + +import java.util.Objects; + +import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.ReportedConfigurations; +import org.ovirt.engine.core.common.businessentities.network.ReportedConfigurations.Type; +import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; +import org.ovirt.engine.core.common.utils.ObjectUtils; + +public class NetworkInSyncWithVdsNetworkInterface { + + private final VdsNetworkInterface iface; + private final Network network; + private final HostNetworkQos ifaceQos; + private final HostNetworkQos networkQos; + + public NetworkInSyncWithVdsNetworkInterface(VdsNetworkInterface iface, Network network, HostNetworkQos networkQos) { + this.iface = iface; + this.network = network; + this.networkQos = networkQos; + + ifaceQos = iface.getQos(); + } + + public NetworkInSyncWithVdsNetworkInterface(VdsNetworkInterface iface, + Network network, + HostNetworkQos ifaceQos, + HostNetworkQos networkQos) { + this.iface = iface; + this.network = network; + this.ifaceQos = ifaceQos; + this.networkQos = networkQos; + } + + public boolean isNetworkInSync() { + return isNetworkMtuInSync() + && isNetworkVlanIdInSync() + && isNetworkBridgedFlagInSync() + && (qosParametersEqual() || iface.isQosOverridden()); + } + + public ReportedConfigurations reportConfigurationsOnHost () { + ReportedConfigurations result = new ReportedConfigurations(); + + result.setNetworkInSync(isNetworkInSync()); + + result.add(Type.MTU, iface.getMtu(), isNetworkMtuInSync()); + result.add(Type.BRIDGED, iface.isBridged(), isNetworkBridgedFlagInSync()); + result.add(Type.VLAN, iface.getVlanId(), isNetworkVlanIdInSync()); + + boolean reportHostQos = ifaceQos != null; + if (reportHostQos) { + //TODO MM: lets say, that Qos is overridden, so whole network is 'inSync' while following parameters are 'out of sync'. Can be little bit confusing. + result.add(Type.OUT_AVERAGE_LINK_SHARE, ifaceQos.getOutAverageLinkshare(), isOutAverageLinkShareInSync()); + result.add(Type.OUT_AVERAGE_UPPER_LIMIT, ifaceQos.getOutAverageUpperlimit(), isOutAverageUpperLimitInSync()); + result.add(Type.OUT_AVERAGE_REAL_TIME, ifaceQos.getOutAverageRealtime(), isOutAverageRealTimeInSync()); + } + + return result; + } + + private boolean isNetworkBridgedFlagInSync() { + return iface.isBridged() == network.isVmNetwork(); + } + + private boolean isNetworkVlanIdInSync() { + return Objects.equals(iface.getVlanId(), network.getVlanId()); + } + + private boolean isNetworkMtuInSync() { + boolean networkValueSetToDefaultMtu = network.getMtu() == 0; + boolean ifaceValueSetToDefaultMtu = iface.getMtu() == NetworkUtils.getDefaultMtu(); + boolean bothUsesDefaultValue = networkValueSetToDefaultMtu && ifaceValueSetToDefaultMtu; + return (bothUsesDefaultValue || iface.getMtu() == network.getMtu()); + } + + public boolean qosParametersEqual() { + if (ifaceQos == networkQos) { + return true; + } + + if (ifaceQos == null || networkQos == null) { + return false; + } + + return isOutAverageLinkShareInSync() && isOutAverageUpperLimitInSync() && isOutAverageRealTimeInSync(); + } + + private boolean isOutAverageRealTimeInSync() { + return ObjectUtils.objectsEqual(ifaceQos.getOutAverageRealtime(), networkQos.getOutAverageRealtime()); + } + + private boolean isOutAverageUpperLimitInSync() { + return ObjectUtils.objectsEqual(ifaceQos.getOutAverageUpperlimit(), networkQos.getOutAverageUpperlimit()); + } + + private boolean isOutAverageLinkShareInSync() { + return ObjectUtils.objectsEqual(ifaceQos.getOutAverageLinkshare(), networkQos.getOutAverageLinkshare()); + } + +} diff --git a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java index ac915f5..a28f5de 100644 --- a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java +++ b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/NetworkUtils.java @@ -6,7 +6,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; import org.apache.commons.codec.digest.DigestUtils; @@ -17,7 +16,6 @@ import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; -import org.ovirt.engine.core.common.utils.ObjectUtils; public final class NetworkUtils { public static final String OS_REFERENCE_TO_MACHINE_NAME = "HOSTNAME"; @@ -120,14 +118,14 @@ */ public static VdsNetworkInterface.NetworkImplementationDetails calculateNetworkImplementationDetails( Network network, - HostNetworkQos qos, + HostNetworkQos networkQos, VdsNetworkInterface iface) { if (StringUtils.isEmpty(iface.getNetworkName())) { return null; } if (network != null) { - if (isNetworkInSync(iface, network, qos)) { + if (new NetworkInSyncWithVdsNetworkInterface(iface, network, networkQos).isNetworkInSync()) { return new VdsNetworkInterface.NetworkImplementationDetails(true, true); } else { return new VdsNetworkInterface.NetworkImplementationDetails(false, true); @@ -154,28 +152,8 @@ } } - public static boolean isNetworkInSync(VdsNetworkInterface iface, Network network, HostNetworkQos qos) { - return ((network.getMtu() == 0 && iface.getMtu() == getDefaultMtu()) || iface.getMtu() == network.getMtu()) - && Objects.equals(iface.getVlanId(), network.getVlanId()) - && iface.isBridged() == network.isVmNetwork() - && (isQosInSync(iface, qos) || iface.isQosOverridden()); - } - - private static boolean isQosInSync(VdsNetworkInterface iface, HostNetworkQos networkQos) { - HostNetworkQos ifaceQos = iface.getQos(); - return qosParametersEqual(ifaceQos, networkQos); - } - - public static boolean qosParametersEqual(HostNetworkQos qos, HostNetworkQos otherQos) { - if (qos == otherQos) { - return true; - } else if (qos == null || otherQos == null) { - return false; - } else { - return ObjectUtils.objectsEqual(qos.getOutAverageLinkshare(), otherQos.getOutAverageLinkshare()) - && ObjectUtils.objectsEqual(qos.getOutAverageUpperlimit(), otherQos.getOutAverageUpperlimit()) - && ObjectUtils.objectsEqual(qos.getOutAverageRealtime(), otherQos.getOutAverageRealtime()); - } + public static boolean isNetworkInSync(VdsNetworkInterface iface, Network network, HostNetworkQos networkQos) { + return new NetworkInSyncWithVdsNetworkInterface(iface, network, networkQos).isNetworkInSync(); } /** diff --git a/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/NetworkInSyncWithVdsNetworkInterfaceTest.java b/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/NetworkInSyncWithVdsNetworkInterfaceTest.java new file mode 100644 index 0000000..97a3d50 --- /dev/null +++ b/backend/manager/modules/utils/src/test/java/org/ovirt/engine/core/utils/NetworkInSyncWithVdsNetworkInterfaceTest.java @@ -0,0 +1,235 @@ +package org.ovirt.engine.core.utils; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.ovirt.engine.core.utils.MockConfigRule.mockConfig; + +import java.util.Arrays; +import java.util.List; + +import org.junit.Before; +import org.junit.ClassRule; +import org.junit.Test; +import org.ovirt.engine.core.common.businessentities.network.HostNetworkQos; +import org.ovirt.engine.core.common.businessentities.network.Network; +import org.ovirt.engine.core.common.businessentities.network.ReportedConfigurations; +import org.ovirt.engine.core.common.businessentities.network.ReportedConfigurations.ReportedConfiguration; +import org.ovirt.engine.core.common.businessentities.network.ReportedConfigurations.Type; +import org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface; +import org.ovirt.engine.core.common.config.ConfigValues; + +public class NetworkInSyncWithVdsNetworkInterfaceTest { + + private VdsNetworkInterface iface; + private Network network; + private HostNetworkQos ifaceQos; + private HostNetworkQos networkQos; + + @ClassRule + public static MockConfigRule mcr = new MockConfigRule(mockConfig(ConfigValues.DefaultMTU, 1500)); + + @Before + public void setUp() throws Exception { + ifaceQos = new HostNetworkQos(); + networkQos = new HostNetworkQos(); + iface = new VdsNetworkInterface(); + network = new Network(); + + iface.setQos(ifaceQos); + } + + @Test + public void testIsNetworkInSyncWhenMtuDifferent() throws Exception { + iface.setMtu(1); + network.setMtu(2); + assertThat(createTestedInstance().isNetworkInSync(), is(false)); + } + + @Test + public void testIsNetworkInSyncWhenMtuSameViaDefault() throws Exception { + NetworkInSyncWithVdsNetworkInterface testedInstanceWithSameNonQosValues = + createTestedInstanceWithSameNonQosValues(); + + iface.setMtu(1500); + network.setMtu(0); + + assertThat(testedInstanceWithSameNonQosValues.isNetworkInSync(), is(true)); + } + + + + @Test + public void testIsNetworkInSyncWhenVlanIdDifferent() throws Exception { + iface.setMtu(1); + network.setMtu(1); + + iface.setVlanId(1); + network.setVlanId(2); + assertThat(createTestedInstance().isNetworkInSync(), is(false)); + } + + @Test + public void testIsNetworkInSyncWhenBridgedFlagDifferent() throws Exception { + iface.setMtu(1); + network.setMtu(1); + + iface.setVlanId(1); + network.setVlanId(1); + + iface.setBridged(true); + network.setVmNetwork(false); + assertThat(createTestedInstance().isNetworkInSync(), is(false)); + } + + @Test + public void testIsNetworkInSyncWhenIfaceQosEqual() throws Exception { + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(true)); + } + + @Test + public void testIsNetworkInSyncWhenIfaceQosIsNull() throws Exception { + iface.setQos(null); + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(false)); + } + + @Test + public void testIsNetworkInSyncWhenNetworkQosIsNull() throws Exception { + networkQos = null; + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(false)); + } + + @Test + public void testIsNetworkInSyncWhenBothQosIsNull() throws Exception { + iface.setQos(null); + networkQos = null; + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(true)); + } + + @Test + public void testIsNetworkInSyncWhenIfaceQosIsNullIfaceQosOverridden() throws Exception { + iface.setQos(null); + iface.setQosOverridden(true); + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(true)); + } + + @Test + public void testIsNetworkInSyncWhenNetworkQosIsNullIfaceQosOverridden() throws Exception { + networkQos = null; + iface.setQosOverridden(true); + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(true)); + } + + @Test + public void testIsNetworkInSyncWhenAverageLinkShareDifferent() throws Exception { + ifaceQos.setOutAverageLinkshare(1); + networkQos.setOutAverageLinkshare(2); + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(false)); + } + + @Test + public void testIsNetworkInSyncWhenAverageLinkShareDifferentIfaceQosOverridden() throws Exception { + ifaceQos.setOutAverageLinkshare(1); + networkQos.setOutAverageLinkshare(2); + iface.setQosOverridden(true); + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(true)); + } + + @Test + public void testIsNetworkInSyncWhenAverageUpperLimitDifferent() throws Exception { + ifaceQos.setOutAverageUpperlimit(1); + networkQos.setOutAverageUpperlimit(2); + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(false)); + } + + @Test + public void testIsNetworkInSyncWhenAverageUpperLimitDifferentIfaceQosOverridden() throws Exception { + ifaceQos.setOutAverageUpperlimit(1); + networkQos.setOutAverageUpperlimit(2); + iface.setQosOverridden(true); + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(true)); + } + + @Test + public void testIsNetworkInSyncWhenAverageRealTimeDifferent() throws Exception { + ifaceQos.setOutAverageRealtime(1); + networkQos.setOutAverageRealtime(2); + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(false)); + } + + @Test + public void testIsNetworkInSyncWhenAverageRealTimeDifferentIfaceQosOverridden() throws Exception { + ifaceQos.setOutAverageRealtime(1); + networkQos.setOutAverageRealtime(2); + iface.setQosOverridden(true); + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(true)); + } + + public NetworkInSyncWithVdsNetworkInterface createTestedInstanceWithSameNonQosValues() { + iface.setMtu(1); + network.setMtu(1); + + iface.setVlanId(1); + network.setVlanId(1); + + iface.setBridged(true); + network.setVmNetwork(true); + return createTestedInstance(); + } + + public NetworkInSyncWithVdsNetworkInterface createTestedInstance() { + return new NetworkInSyncWithVdsNetworkInterface(iface, network, networkQos); + } + + @Test + public void testReportConfigurationsOnHost() throws Exception { + NetworkInSyncWithVdsNetworkInterface testedInstanceWithSameNonQosValues = + createTestedInstanceWithSameNonQosValues(); + ifaceQos.setOutAverageLinkshare(1); + ifaceQos.setOutAverageUpperlimit(1); + ifaceQos.setOutAverageRealtime(1); + + ReportedConfigurations reportedConfigurations = testedInstanceWithSameNonQosValues.reportConfigurationsOnHost(); + + + assertThat(reportedConfigurations.isNetworkInSync(), is(false)); + List<ReportedConfiguration> reportedConfigurationList = reportedConfigurations.getReportedConfigurationList(); + + List<ReportedConfiguration> expectedReportedConfigurations = Arrays.asList( + new ReportedConfiguration(Type.MTU, Integer.toString(iface.getMtu()), true), + new ReportedConfiguration(Type.BRIDGED, Boolean.toString(iface.isBridged()), true), + new ReportedConfiguration(Type.VLAN, Integer.toString(iface.getVlanId()), true), + + new ReportedConfiguration(Type.OUT_AVERAGE_LINK_SHARE, ifaceQos.getOutAverageLinkshare().toString(), false), + new ReportedConfiguration(Type.OUT_AVERAGE_UPPER_LIMIT, ifaceQos.getOutAverageUpperlimit().toString(), false), + new ReportedConfiguration(Type.OUT_AVERAGE_REAL_TIME, ifaceQos.getOutAverageRealtime().toString(), false) + ); + + assertThat(reportedConfigurationList.containsAll(expectedReportedConfigurations), is(true)); + assertThat(reportedConfigurationList.size(), is(6)); + } + @Test + public void testReportConfigurationsOnHostWhenIfaceQosIsNull() throws Exception { + ifaceQos = null; + iface.setQos(null); + NetworkInSyncWithVdsNetworkInterface testedInstanceWithSameNonQosValues = + createTestedInstanceWithSameNonQosValues(); + networkQos.setOutAverageLinkshare(1); + networkQos.setOutAverageUpperlimit(1); + networkQos.setOutAverageRealtime(1); + + ReportedConfigurations reportedConfigurations = testedInstanceWithSameNonQosValues.reportConfigurationsOnHost(); + + assertThat(createTestedInstanceWithSameNonQosValues().isNetworkInSync(), is(false)); + assertThat(reportedConfigurations.isNetworkInSync(), is(false)); + List<ReportedConfiguration> reportedConfigurationList = reportedConfigurations.getReportedConfigurationList(); + + List<ReportedConfiguration> expectedReportedConfigurations = Arrays.asList( + new ReportedConfiguration(Type.MTU, Integer.toString(iface.getMtu()), true), + new ReportedConfiguration(Type.BRIDGED, Boolean.toString(iface.isBridged()), true), + new ReportedConfiguration(Type.VLAN, Integer.toString(iface.getVlanId()), true) + ); + + assertThat(reportedConfigurationList.containsAll(expectedReportedConfigurations), is(true)); + assertThat(reportedConfigurationList.size(), is(3)); + } +} diff --git a/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommandTest.java b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommandTest.java index 267823d..801947b 100644 --- a/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommandTest.java +++ b/backend/manager/modules/vdsbroker/src/test/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetupNetworksVDSCommandTest.java @@ -38,7 +38,7 @@ import org.ovirt.engine.core.dao.VdsStaticDAO; import org.ovirt.engine.core.dao.network.HostNetworkQosDao; import org.ovirt.engine.core.utils.MockConfigRule; -import org.ovirt.engine.core.utils.NetworkUtils; +import org.ovirt.engine.core.utils.NetworkInSyncWithVdsNetworkInterface; import org.ovirt.engine.core.utils.RandomUtils; @RunWith(MockitoJUnitRunner.class) @@ -188,7 +188,7 @@ verifyMethodPassedToHost(); Map<String, Object> networkStruct = assertNeworkWasSent(network); HostNetworkQos result = new HostNetworkQosMapper(networkStruct).deserialize(); - assertTrue(NetworkUtils.qosParametersEqual(expectedQos, result)); + assertTrue(new NetworkInSyncWithVdsNetworkInterface(iface, network, result, expectedQos).qosParametersEqual()); } private void qos(Network network, VdsNetworkInterface iface, HostNetworkQos expectedQos) { -- To view, visit http://gerrit.ovirt.org/37874 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4c8cb1020263988af7a09c0cf86772965e9d3560 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Martin Mucha <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
