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

Reply via email to