Allon Mureinik has uploaded a new change for review.

Change subject: core: Move getOrderedVmGuidsForRunMultipleActions
......................................................................

core: Move getOrderedVmGuidsForRunMultipleActions

Moved getOrderedVmGuidsForRunMultipleActions(List<Guid>) from DbFacade
(which it has nothing to do with) to VmStaticDao, where it makes sense.
The tests for the method were moved from DbFacadeDAOTest to
VmStaticDAOTest.

A neat side bonus of this refactoring is getting all the capabilities of
BaseDbFacadeDAO for free, allowing the method's code to be made much
clearer.

Change-Id: Ide46b9ad358a5de2815b8d41df2f86f950c9127c
Signed-off-by: Allon Mureinik <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVMActionRunner.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAO.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/DbFacadeDAOTest.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmStaticDAOTest.java
6 files changed, 196 insertions(+), 232 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/85/16385/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVMActionRunner.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVMActionRunner.java
index ed0b9c4..4d7a768 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVMActionRunner.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVMActionRunner.java
@@ -27,7 +27,7 @@
 
         List<Guid> guids = new ArrayList<Guid>();
         guids.addAll(runVmCommandsMap.keySet());
-        List<Guid> orderedGuids = 
DbFacade.getInstance().getOrderedVmGuidsForRunMultipleActions(guids);
+        List<Guid> orderedGuids = 
DbFacade.getInstance().getVmStaticDao().getOrderedVmGuidsForRunMultipleActions(guids);
 
         commandsList.clear();
 
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
index 5e09d79..9890f6b 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
@@ -3,7 +3,6 @@
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.sql.Types;
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -35,11 +34,11 @@
 import org.ovirt.engine.core.common.businessentities.VmStatistics;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.businessentities.image_storage_domain_map;
-import org.ovirt.engine.core.common.businessentities.permissions;
-import org.ovirt.engine.core.common.businessentities.vds_spm_id_map;
 import org.ovirt.engine.core.common.businessentities.network.Network;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkStatistics;
+import org.ovirt.engine.core.common.businessentities.permissions;
+import org.ovirt.engine.core.common.businessentities.vds_spm_id_map;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dao.ActionGroupDAO;
 import org.ovirt.engine.core.dao.AdGroupDAO;
@@ -328,31 +327,6 @@
                         .returningResultSet("RETURN_VALUE", 
mapper).execute(parameterSource);
 
         return (Integer) DbFacadeUtils.asSingleResult((List<?>) 
(dbResults.get("RETURN_VALUE")));
-    }
-
-    @SuppressWarnings("unchecked")
-    public List<Guid> getOrderedVmGuidsForRunMultipleActions(List<Guid> guids) 
{
-        RowMapper<Guid> mapper = new RowMapper<Guid>() {
-            @Override
-            public Guid mapRow(ResultSet rs, int rowNum) throws SQLException {
-                return 
Guid.createGuidFromStringDefaultEmpty(rs.getString("vm_guid"));
-            }
-        };
-
-        // Constructing an IN clause of SQL that contains a list of GUIDs
-        // The in clause looks like ('guid1','guid2','guid3')
-        StringBuilder guidsSb = new StringBuilder();
-        guidsSb.append("'").append(StringUtils.join(guids, "','")).append("'");
-
-        MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource().addValue("vm_guids", guidsSb
-                .toString());
-
-        Map<String, Object> dbResults = 
dbEngineDialect.createJdbcCallForQuery(jdbcTemplate).withProcedureName(
-                
"GetOrderedVmGuidsForRunMultipleActions").returningResultSet("RETURN_VALUE", 
mapper).execute(
-                parameterSource);
-
-        return (ArrayList<Guid>) dbResults.get("RETURN_VALUE");
-
     }
 
     /**
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAO.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAO.java
index f548d16..073abc4 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAO.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAO.java
@@ -83,4 +83,6 @@
      * @return
      */
     public void incrementDbGeneration(Guid id);
+
+    List<Guid> getOrderedVmGuidsForRunMultipleActions(List<Guid> guids);
 }
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
index 38b4aba..ad5487b 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmStaticDAODbFacadeImpl.java
@@ -5,6 +5,7 @@
 import java.util.List;
 
 import org.apache.commons.lang.NotImplementedException;
+import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.common.businessentities.DisplayType;
 import org.ovirt.engine.core.common.businessentities.MigrationSupport;
 import org.ovirt.engine.core.common.businessentities.VmStatic;
@@ -168,6 +169,20 @@
                         .addValue("vm_guid", id));
     }
 
+    public List<Guid> getOrderedVmGuidsForRunMultipleActions(List<Guid> guids) 
{
+        // Constructing an IN clause of SQL that contains a list of GUIDs
+        // The in clause looks like ('guid1','guid2','guid3')
+        StringBuilder guidsSb = new StringBuilder();
+        guidsSb.append("'").append(StringUtils.join(guids, "','")).append("'");
+
+        MapSqlParameterSource parameterSource = 
getCustomMapSqlParameterSource().addValue("vm_guids", guidsSb
+                .toString());
+
+        return 
getCallsHandler().executeReadList("GetOrderedVmGuidsForRunMultipleActions", 
createGuidMapper()
+                , getCustomMapSqlParameterSource().addValue("vm_guids", guidsSb
+                .toString()));
+    }
+
     /**
      * JDBC row mapper for VM static
      */
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/DbFacadeDAOTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/DbFacadeDAOTest.java
index e0fc04b8..fa9d22d 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/DbFacadeDAOTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/DbFacadeDAOTest.java
@@ -8,22 +8,16 @@
 
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Properties;
 
 import javax.sql.DataSource;
 
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.businessentities.ActionGroup;
 import org.ovirt.engine.core.common.businessentities.BaseDisk;
 import org.ovirt.engine.core.common.businessentities.Bookmark;
 import org.ovirt.engine.core.common.businessentities.DbUser;
-import org.ovirt.engine.core.common.businessentities.MigrationSupport;
 import org.ovirt.engine.core.common.businessentities.Quota;
 import org.ovirt.engine.core.common.businessentities.Role;
 import org.ovirt.engine.core.common.businessentities.RoleType;
@@ -71,10 +65,6 @@
     private static final Guid SYSTEM_OBJECT_ID = new 
Guid("AAA00000-0000-0000-0000-123456789AAA");
     private static final String STATIC_VM_NAME = "rhel5-pool-50";
     private static final int NUM_OF_VM_STATIC_IN_FIXTURES = 3;
-    List<VmStatic> vmStatics;
-    VmStatic[] vmStaticArrayInDescOrder;
-    Guid[] guidsArrayToBeChecked;
-    List<Guid> vmStaticGuidsInDb;
     private static final int NUM_OF_VM_IN_FIXTURES_WITH_STATUS_MIGRATING_FROM 
= 2;
     private static final int NUM_OF_USERS_IN_FIXTURES = 2;
     private static final Guid STORAGE_POOL_WITH_MASTER_UP = new 
Guid("386BFFD1-E7ED-4B08-BCE9-D7DF10F8C9A0");
@@ -83,31 +73,6 @@
     private static final Guid DIRECTORY_ELEMENT_ID_WITH_BASIC_PERMISSIONS =
             new Guid("88D4301A-17AF-496C-A793-584640853D4B");
     private static final Guid VMT_ID = new 
Guid("1b85420c-b84c-4f29-997e-0eb674b40b79");
-
-    @Before
-    @Override
-    public void setUp() throws Exception {
-        super.setUp();
-
-        // Retrieve all three vmstatics that were defined by fixtures and put 
in an array
-        vmStatics = dbFacade.getVmStaticDao().getAllByName(STATIC_VM_NAME);
-        vmStaticArrayInDescOrder = new VmStatic[NUM_OF_VM_STATIC_IN_FIXTURES];
-        guidsArrayToBeChecked = new Guid[NUM_OF_VM_STATIC_IN_FIXTURES];
-        vmStaticGuidsInDb = getListOfGuidFromListOfVmStatics(vmStatics);
-    }
-
-    /**
-     * Restores the fixtures back to initial status
-     *
-     * @param vmStatics
-     */
-    @After
-    public void restoreFixtures() {
-        Iterator<VmStatic> vmStaticIterator = vmStatics.iterator();
-        while (vmStaticIterator.hasNext()) {
-            dbFacade.getVmStaticDao().update(vmStaticIterator.next());
-        }
-    }
 
     /**
      * Ensures that the checkDBConnection method returns true when the 
connection is up
@@ -199,174 +164,6 @@
         nonAdminUser = dbFacade.getDbUserDao().get(nonAdminUser.getuser_id());
 
         assertTrue(nonAdminUser.getLastAdminCheckStatus());
-    }
-
-    /**
-     * Checking if the function gets the VmStatics in correct order according 
to priority
-     */
-    @Test
-    public void testGetOrderedVmGuidsForRunMultipleActionsByPriority() {
-        assertNotNull(vmStatics);
-        vmStaticArrayInDescOrder = initVmStaticsOrderedByPriority(vmStatics);
-
-        // execute
-        vmStaticGuidsInDb = 
dbFacade.getOrderedVmGuidsForRunMultipleActions(vmStaticGuidsInDb);
-        assertNotNull(vmStaticGuidsInDb);
-        guidsArrayToBeChecked = 
vmStaticGuidsInDb.toArray(guidsArrayToBeChecked);
-
-        boolean result = compareGuidArrays(guidsArrayToBeChecked, 
vmStaticArrayInDescOrder);
-        assertTrue(result);
-    }
-
-    /**
-     * Checking if the function gets the VmStatics in correct order according 
to auto_startup
-     */
-    @Test
-    public void testGetOrderedVmGuidsForRunMultipleActionsByAutoStartup() {
-        assertNotNull(vmStatics);
-        vmStaticArrayInDescOrder = 
initVmStaticsOrderedByAutoStartup(vmStatics);
-
-        // execute
-        vmStaticGuidsInDb = 
dbFacade.getOrderedVmGuidsForRunMultipleActions(vmStaticGuidsInDb);
-        assertNotNull(vmStaticGuidsInDb);
-        guidsArrayToBeChecked = 
vmStaticGuidsInDb.toArray(guidsArrayToBeChecked);
-
-        boolean result = compareGuidArrays(guidsArrayToBeChecked, 
vmStaticArrayInDescOrder);
-        assertTrue(result);
-    }
-
-    /**
-     * Checking if the function gets the VmStatics in correct order according 
to MigrationSupport
-     */
-    @Test
-    public void testGetOrderedVmGuidsForRunMultipleActionsByMigrationSupport() 
{
-        assertNotNull(vmStatics);
-        vmStaticArrayInDescOrder = 
initVmStaticsOrderedByMigrationSupport(vmStatics);
-
-        // execute
-        vmStaticGuidsInDb = 
dbFacade.getOrderedVmGuidsForRunMultipleActions(vmStaticGuidsInDb);
-        assertNotNull(vmStaticGuidsInDb);
-        guidsArrayToBeChecked = 
vmStaticGuidsInDb.toArray(guidsArrayToBeChecked);
-
-        boolean result = compareGuidArrays(guidsArrayToBeChecked, 
vmStaticArrayInDescOrder);
-        assertTrue(result);
-    }
-
-    /**
-     * {@code initVmStaticsOrderedByAutoStartup(List)} is the first method in 
VMs order selection tests. The other init
-     * methods: <br>
-     * {@code initVmStaticsOrderedByPriority} and {@code 
initVmStaticsOrderedByAutoStartup} are relying on each other
-     * for creating an array of VM Static objects.<br>
-     * Each of the methods modifies the VM static array according to the 
column which is being tested, started from the
-     * least important column to the most.<br>
-     * That way prioritizing a preceded column should be reflected in the 
selection and therefore to validate the order
-     * is maintained.
-     *
-     * @return an array of VmStatics, in descending order according to: 
auto_startup, priority, MigrationSupport.<br>
-     *         The MigrationSupport is the one being checked.<br>
-     */
-    private VmStatic[] initVmStaticsOrderedByMigrationSupport(List<VmStatic> 
vmStatics) {
-        VmStatic[] vmStaticArray = new VmStatic[NUM_OF_VM_STATIC_IN_FIXTURES];
-
-        vmStaticArray = vmStatics.toArray(vmStaticArray);
-
-        // initialize the VMs with equal settings: non HA, priority 1 and 
MIGRATABLE
-        for (VmStatic element : vmStaticArray) {
-            element.setAutoStartup(false);
-            element.setPriority(1);
-            element.setMigrationSupport(MigrationSupport.MIGRATABLE);
-        }
-
-        // set higher migration support value for the first VM
-        vmStaticArray[0].setMigrationSupport(MigrationSupport.PINNED_TO_HOST);
-        
vmStaticArray[1].setMigrationSupport(MigrationSupport.IMPLICITLY_NON_MIGRATABLE);
-        updateArrayOfVmStaticsInDb(vmStaticArray);
-        return vmStaticArray;
-    }
-
-    /**
-     * Creates an array of VM static which was initiated for MigrationSupport 
order, and modified the priority to
-     * reflect the precedence of the priority column on top the 
MigrationSupport.
-     *
-     * @return an array of VmStatics, in descending order according to: 
auto_startup, priority, MigrationSupport. The
-     *         priority is the one being checked.
-     */
-    private VmStatic[] initVmStaticsOrderedByPriority(List<VmStatic> 
vmStatics) {
-        VmStatic[] vmStaticArray = 
initVmStaticsOrderedByMigrationSupport(vmStatics);
-
-        // Swapping the first two VmStatics
-        VmStatic tempVmStatic = vmStaticArray[0];
-        vmStaticArray[0] = vmStaticArray[1];
-        vmStaticArray[1] = tempVmStatic;
-
-        int arrayLength = vmStaticArray.length;
-
-        // Setting the array in descending order due to their priorities to 
maintain its correctness
-        for (int i = 0; i < arrayLength; i++) {
-            vmStaticArray[i].setPriority(arrayLength - i + 1);
-        }
-
-        updateArrayOfVmStaticsInDb(vmStaticArray);
-        return vmStaticArray;
-    }
-
-    /**
-     * Creates an array of VM static which was initiated for Priority and 
MigrationSupport order, and modified the
-     * auto-startup to reflect the precedence of the auto-startup column on 
top the Priority.
-     *
-     * @return an array of VmStatics, in descending order according to: 
auto_startup, priority, MigrationSupport. The
-     *         auto_startup is the one being checked
-     */
-    private VmStatic[] initVmStaticsOrderedByAutoStartup(List<VmStatic> 
vmStatics) {
-        VmStatic[] vmStaticArray = initVmStaticsOrderedByPriority(vmStatics);
-
-        // Swapping the first two VmStatics
-        VmStatic tempVmStatic = vmStaticArray[0];
-        vmStaticArray[0] = vmStaticArray[1];
-        vmStaticArray[1] = tempVmStatic;
-
-        // Maintaining the order correctness of the elements by incrementing 
the auto_startup of the first element
-        vmStaticArray[0].setAutoStartup(true);
-
-        updateArrayOfVmStaticsInDb(vmStaticArray);
-        return vmStaticArray;
-    }
-
-    /**
-     * Converts a list of vmStatics to a list if Guids
-     */
-    private List<Guid> getListOfGuidFromListOfVmStatics(List<VmStatic> 
vmStatics) {
-        List<Guid> listOfGuidToReturn = new ArrayList<Guid>();
-        for (VmStatic vmStatic : vmStatics) {
-            listOfGuidToReturn.add(vmStatic.getId());
-        }
-        return listOfGuidToReturn;
-    }
-
-    /**
-     * Updates the given array of vmStatics in the Database
-     */
-    private void updateArrayOfVmStaticsInDb(VmStatic[] vmStaticArray) {
-        for (VmStatic element : vmStaticArray) {
-            dbFacade.getVmStaticDao().update(element);
-        }
-    }
-
-    /**
-     * Compares between the two given guid arrays, returns true if they are 
equal and false otherwise
-     */
-    private boolean compareGuidArrays(Guid[] guidsArrayToBeChecked, VmStatic[] 
vmStaticArrayInDescOrder) {
-        boolean returnValue = true;
-        if (guidsArrayToBeChecked.length == vmStaticArrayInDescOrder.length) {
-            for (int i = 0; i < guidsArrayToBeChecked.length; i++) {
-                if 
(!guidsArrayToBeChecked[i].equals(vmStaticArrayInDescOrder[i].getId())) {
-                    returnValue = false;
-                    break;
-                }
-            }
-        }
-
-        return returnValue;
     }
 
     @Test
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmStaticDAOTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmStaticDAOTest.java
index 0bfe7f8..f412d71 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmStaticDAOTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmStaticDAOTest.java
@@ -9,10 +9,12 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
+import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.commons.lang.NotImplementedException;
 import org.junit.Test;
+import org.ovirt.engine.core.common.businessentities.MigrationSupport;
 import org.ovirt.engine.core.common.businessentities.OriginType;
 import org.ovirt.engine.core.common.businessentities.Snapshot;
 import org.ovirt.engine.core.common.businessentities.VmStatic;
@@ -27,6 +29,9 @@
     private static final Guid EXISTING_VM_ID = new 
Guid("77296e00-0cad-4e5a-9299-008a7b6f4355");
     private static final Guid VDS_STATIC_ID = new 
Guid("afce7a39-8e8c-4819-ba9c-796d316592e6");
     private static final Guid VDS_GROUP_ID = new 
Guid("b399944a-81ab-4ec5-8266-e19ba7c3c9d1");
+
+    private static final String STATIC_VM_NAME = "rhel5-pool-50";
+    private static final int NUM_OF_VM_STATIC_IN_FIXTURES = 3;
 
     private VmStaticDAO dao;
     private VmStatic existingVmStatic;
@@ -221,4 +226,175 @@
         assertFalse(namesPinnedToHost.isEmpty());
         assertTrue(namesPinnedToHost.contains(existingVmStatic.getName()));
     }
+
+    /**
+     * Checking if the function gets the VmStatics in correct order according 
to priority
+     */
+    @Test
+    public void testGetOrderedVmGuidsForRunMultipleActionsByPriority() {
+        List<VmStatic> vmStatics = dao.getAllByName(STATIC_VM_NAME);
+        VmStatic[] vmStaticArrayInDescOrder = 
initVmStaticsOrderedByPriority(vmStatics);
+
+        // execute
+        List<Guid> vmStaticGuidsInDb =
+                
dao.getOrderedVmGuidsForRunMultipleActions(getListOfGuidFromListOfVmStatics(vmStatics));
+        assertNotNull(vmStaticGuidsInDb);
+        Guid[] guidsArrayToBeChecked = vmStaticGuidsInDb.toArray(new 
Guid[vmStaticGuidsInDb.size()]);
+
+        boolean result = compareGuidArrays(guidsArrayToBeChecked, 
vmStaticArrayInDescOrder);
+        assertTrue(result);
+    }
+
+    /**
+     * Checking if the function gets the VmStatics in correct order according 
to auto_startup
+     */
+    @Test
+    public void testGetOrderedVmGuidsForRunMultipleActionsByAutoStartup() {
+        List<VmStatic> vmStatics = dao.getAllByName(STATIC_VM_NAME);
+        VmStatic[] vmStaticArrayInDescOrder = 
initVmStaticsOrderedByAutoStartup(vmStatics);
+
+        // execute
+        List<Guid> vmStaticGuidsInDb =
+                
dao.getOrderedVmGuidsForRunMultipleActions(getListOfGuidFromListOfVmStatics(vmStatics));
+        assertNotNull(vmStaticGuidsInDb);
+        Guid[] guidsArrayToBeChecked = vmStaticGuidsInDb.toArray(new 
Guid[vmStaticGuidsInDb.size()]);
+
+        boolean result = compareGuidArrays(guidsArrayToBeChecked, 
vmStaticArrayInDescOrder);
+        assertTrue(result);
+    }
+
+    /**
+     * Checking if the function gets the VmStatics in correct order according 
to MigrationSupport
+     */
+    @Test
+    public void testGetOrderedVmGuidsForRunMultipleActionsByMigrationSupport() 
{
+        List<VmStatic> vmStatics = dao.getAllByName(STATIC_VM_NAME);
+        VmStatic[] vmStaticArrayInDescOrder = 
initVmStaticsOrderedByMigrationSupport(vmStatics);
+
+        // execute
+        List<Guid> vmStaticGuidsInDb =
+                
dao.getOrderedVmGuidsForRunMultipleActions(getListOfGuidFromListOfVmStatics(vmStatics));
+        assertNotNull(vmStaticGuidsInDb);
+        Guid[] guidsArrayToBeChecked = vmStaticGuidsInDb.toArray(new 
Guid[vmStaticGuidsInDb.size()]);
+
+        boolean result = compareGuidArrays(guidsArrayToBeChecked, 
vmStaticArrayInDescOrder);
+        assertTrue(result);
+    }
+
+    /**
+     * {@code initVmStaticsOrderedByAutoStartup(List)} is the first method in 
VMs order selection tests. The other init
+     * methods: <br>
+     * {@code initVmStaticsOrderedByPriority} and {@code 
initVmStaticsOrderedByAutoStartup} are relying on each other
+     * for creating an array of VM Static objects.<br>
+     * Each of the methods modifies the VM static array according to the 
column which is being tested, started from the
+     * least important column to the most.<br>
+     * That way prioritizing a preceded column should be reflected in the 
selection and therefore to validate the order
+     * is maintained.
+     *
+     * @return an array of VmStatics, in descending order according to: 
auto_startup, priority, MigrationSupport.<br>
+     *         The MigrationSupport is the one being checked.<br>
+     */
+    private VmStatic[] initVmStaticsOrderedByMigrationSupport(List<VmStatic> 
vmStatics) {
+        VmStatic[] vmStaticArray = new VmStatic[NUM_OF_VM_STATIC_IN_FIXTURES];
+
+        vmStaticArray = vmStatics.toArray(vmStaticArray);
+
+        // initialize the VMs with equal settings: non HA, priority 1 and 
MIGRATABLE
+        for (VmStatic element : vmStaticArray) {
+            element.setAutoStartup(false);
+            element.setPriority(1);
+            element.setMigrationSupport(MigrationSupport.MIGRATABLE);
+        }
+
+        // set higher migration support value for the first VM
+        vmStaticArray[0].setMigrationSupport(MigrationSupport.PINNED_TO_HOST);
+        
vmStaticArray[1].setMigrationSupport(MigrationSupport.IMPLICITLY_NON_MIGRATABLE);
+        updateArrayOfVmStaticsInDb(vmStaticArray);
+        return vmStaticArray;
+    }
+
+    /**
+     * Creates an array of VM static which was initiated for MigrationSupport 
order, and modified the priority to
+     * reflect the precedence of the priority column on top the 
MigrationSupport.
+     *
+     * @return an array of VmStatics, in descending order according to: 
auto_startup, priority, MigrationSupport. The
+     *         priority is the one being checked.
+     */
+    private VmStatic[] initVmStaticsOrderedByPriority(List<VmStatic> 
vmStatics) {
+        VmStatic[] vmStaticArray = 
initVmStaticsOrderedByMigrationSupport(vmStatics);
+
+        // Swapping the first two VmStatics
+        VmStatic tempVmStatic = vmStaticArray[0];
+        vmStaticArray[0] = vmStaticArray[1];
+        vmStaticArray[1] = tempVmStatic;
+
+        int arrayLength = vmStaticArray.length;
+
+        // Setting the array in descending order due to their priorities to 
maintain its correctness
+        for (int i = 0; i < arrayLength; i++) {
+            vmStaticArray[i].setPriority(arrayLength - i + 1);
+        }
+
+        updateArrayOfVmStaticsInDb(vmStaticArray);
+        return vmStaticArray;
+    }
+
+    /**
+     * Creates an array of VM static which was initiated for Priority and 
MigrationSupport order, and modified the
+     * auto-startup to reflect the precedence of the auto-startup column on 
top the Priority.
+     *
+     * @return an array of VmStatics, in descending order according to: 
auto_startup, priority, MigrationSupport. The
+     *         auto_startup is the one being checked
+     */
+    private VmStatic[] initVmStaticsOrderedByAutoStartup(List<VmStatic> 
vmStatics) {
+        VmStatic[] vmStaticArray = initVmStaticsOrderedByPriority(vmStatics);
+
+        // Swapping the first two VmStatics
+        VmStatic tempVmStatic = vmStaticArray[0];
+        vmStaticArray[0] = vmStaticArray[1];
+        vmStaticArray[1] = tempVmStatic;
+
+        // Maintaining the order correctness of the elements by incrementing 
the auto_startup of the first element
+        vmStaticArray[0].setAutoStartup(true);
+
+        updateArrayOfVmStaticsInDb(vmStaticArray);
+        return vmStaticArray;
+    }
+
+    /**
+     * Updates the given array of vmStatics in the Database
+     */
+    private void updateArrayOfVmStaticsInDb(VmStatic[] vmStaticArray) {
+        for (VmStatic element : vmStaticArray) {
+            dao.update(element);
+        }
+    }
+
+    /**
+     * Converts a list of vmStatics to a list if Guids
+     */
+    private static List<Guid> getListOfGuidFromListOfVmStatics(List<VmStatic> 
vmStatics) {
+        List<Guid> listOfGuidToReturn = new ArrayList<Guid>();
+        for (VmStatic vmStatic : vmStatics) {
+            listOfGuidToReturn.add(vmStatic.getId());
+        }
+        return listOfGuidToReturn;
+    }
+
+    /**
+     * Compares between the two given guid arrays, returns true if they are 
equal and false otherwise
+     */
+    private static boolean compareGuidArrays(Guid[] guidsArrayToBeChecked, 
VmStatic[] vmStaticArrayInDescOrder) {
+        boolean returnValue = true;
+        if (guidsArrayToBeChecked.length == vmStaticArrayInDescOrder.length) {
+            for (int i = 0; i < guidsArrayToBeChecked.length; i++) {
+                if 
(!guidsArrayToBeChecked[i].equals(vmStaticArrayInDescOrder[i].getId())) {
+                    returnValue = false;
+                    break;
+                }
+            }
+        }
+
+        return returnValue;
+    }
 }


-- 
To view, visit http://gerrit.ovirt.org/16385
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ide46b9ad358a5de2815b8d41df2f86f950c9127c
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Allon Mureinik <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to