/**
* Copyright (c) 2009--2014 Red Hat, Inc.
*
* This software is licensed to you under the GNU General Public License,
* version 2 (GPLv2). There is NO WARRANTY for this software, express or
* implied, including the implied warranties of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
* along with this software; if not, see
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
*
* Red Hat trademarks are not licensed under GPLv2. No permission is
* granted to use or replicate Red Hat trademarks that are incorporated
* in this software or its documentation.
*/
package com.redhat.rhn.frontend.action.systems.virtualization.test;
import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.common.localization.LocalizationService;
import com.redhat.rhn.domain.action.Action;
import com.redhat.rhn.domain.action.ActionFactory;
import com.redhat.rhn.domain.action.virtualization.VirtualizationSetMemoryAction;
import com.redhat.rhn.domain.rhnset.RhnSet;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.server.ServerConstants;
import com.redhat.rhn.domain.server.ServerFactory;
import com.redhat.rhn.domain.server.VirtualInstance;
import com.redhat.rhn.domain.server.VirtualInstanceFactory;
import com.redhat.rhn.domain.server.test.ServerFactoryTest;
import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.frontend.taglibs.ListDisplayTag;
import com.redhat.rhn.manager.rhnset.RhnSetDecl;
import com.redhat.rhn.manager.rhnset.RhnSetManager;
import com.redhat.rhn.testing.RhnPostMockStrutsTestCase;
import com.redhat.rhn.testing.ServerTestUtils;
import com.redhat.rhn.testing.TestUtils;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* VirtualGuestsListActionTest
* @version $Rev$
*/
public class VirtualGuestsActionTest extends RhnPostMockStrutsTestCase {
private LocalizationService localization = LocalizationService.getInstance();
private RhnSet submitVirtualGuestsForm(String dispatch, Map requestParams)
throws Exception {
Server guest = ServerFactoryTest.createTestServer(
user,
true,
ServerConstants.getServerGroupTypeEnterpriseEntitled(),
ServerFactoryTest.TYPE_SERVER_NORMAL
);
Server host = ServerFactoryTest.createTestServer(
user,
true,
ServerConstants.getServerGroupTypeEnterpriseEntitled(),
ServerFactoryTest.TYPE_SERVER_NORMAL
);
VirtualInstance virtualInstance = new VirtualInstance();
virtualInstance.setUuid("1234");
virtualInstance.setGuestSystem(guest);
virtualInstance.setHostSystem(host);
virtualInstance.setConfirmed(1L);
virtualInstance.setState(VirtualInstanceFactory.getInstance().getRunningState());
addRequestParameter(RequestContext.SID, host.getId().toString());
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String key = (String)iter.next();
String value = (String)requestParams.get(key);
addRequestParameter(key, value);
}
addDispatchCall(dispatch);
RhnSet set = RhnSetDecl.VIRTUAL_SYSTEMS.get(user);
set.addElement(virtualInstance.getId());
RhnSetManager.store(set);
set = RhnSetDecl.VIRTUAL_SYSTEMS.get(user);
setRequestPathInfo("/systems/details/virtualization/VirtualGuestsListSubmit");
actionPerform();
return set;
}
public void testDeleteGuest() throws Exception {
Map requestParams = new HashMap();
requestParams.put("guestAction",
localization.getMessage("virtualguestslist.jsp.deletesystem"));
RhnSet set = submitVirtualGuestsForm("virtualguestslist.jsp.applyaction",
requestParams);
verifyNoActionMessages();
assertTrue(getActualForward().contains("actionName=delete"));
assertTrue(getActualForward().indexOf("guestSettingValue") <= 0);
// Test some of the base list buttons
addDispatchCall(ListDisplayTag.UNSELECT_ALL_KEY);
assertEquals(1, set.size());
actionPerform();
set = RhnSetDecl.VIRTUAL_SYSTEMS.get(user);
assertEquals(0, set.size());
assertTrue(getActualForward().indexOf("sid=") > 0);
}
public void testDeleteGuestConfirm() throws Exception {
Server host = ServerTestUtils.createVirtHostWithGuests(user, 1);
Server guest =
host.getGuests().iterator().next().getGuestSystem();
VirtualInstance virtualInstance = new VirtualInstance();
virtualInstance.setUuid("1234");
virtualInstance.setGuestSystem(guest);
virtualInstance.setConfirmed(0L);
ServerFactory.save(guest);
new VirtualInstanceFactory().saveVirtualInstance(virtualInstance);
addRequestParameter(RequestContext.SID, host.getId().toString());
addDispatchCall("virtualguests_confirm.jsp.confirm");
RhnSet set = RhnSetDecl.VIRTUAL_SYSTEMS.get(user);
set.addElement(virtualInstance.getId());
RhnSetManager.store(set);
TestUtils.flushAndEvict(virtualInstance);
TestUtils.flushAndEvict(host);
TestUtils.flushAndEvict(guest);
addRequestParameter("actionName", "delete");
setRequestPathInfo("/systems/details/virtualization/VirtualGuestsConfirmSubmit");
actionPerform();
TestUtils.flushAndEvict(virtualInstance);
assertNull(ServerFactory.lookupById(guest.getId()));
assertNotNull(ServerFactory.lookupById(host.getId()));
verifyActionMessage("systems.details.virt.one.virt.deleted");
Map<String, Object> params = new HashMap<String, Object>();
params.put("id", virtualInstance.getId());
DataResult dr = TestUtils.runTestQuery("select_virtual_instance_by_id", params);
assertTrue(dr.size() == 0);
}
public void testSetGuestMemory() throws Exception {
Map requestParams = new HashMap();
requestParams.put("guestSettingToModify",
localization.getMessage("virtualguestslist.jsp.setguestmemory"));
requestParams.put("guestSettingValue", "1000");
submitVirtualGuestsForm("virtualguestslist.jsp.applychanges",
requestParams);
verifyActionMessage("systems.details.virt.memory.check.host");
assertTrue(getActualForward().indexOf("actionName=setMemory") >= 0);
assertTrue(getActualForward().indexOf("guestSettingValue") >= 0);
}
public void testSetGuestMemoryConfirm() throws Exception {
Server host = ServerTestUtils.createVirtHostWithGuests(user, 1);
addRequestParameter(RequestContext.SID, host.getId().toString());
addDispatchCall("virtualguests_confirm.jsp.confirm");
RhnSet set = RhnSetDecl.VIRTUAL_SYSTEMS.get(user);
VirtualInstance vi = host.getGuests().iterator().next();
vi.setState(VirtualInstanceFactory.getInstance().getRunningState());
TestUtils.saveAndFlush(vi);
set.addElement(vi.getId());
RhnSetManager.store(set);
addRequestParameter("actionName", "setMemory");
addRequestParameter("guestSettingValue", "1000");
setRequestPathInfo("/systems/details/virtualization/VirtualGuestsConfirmSubmit");
actionPerform();
List <Action> actions = ActionFactory.listActionsForServer(user, host);
Collections.reverse(actions);
assertNotNull(actions);
VirtualizationSetMemoryAction vaction = null;
for (Action action : actions) {
if (action instanceof VirtualizationSetMemoryAction) {
vaction = (VirtualizationSetMemoryAction) action;
break;
}
}
assertNotNull(vaction);
assertEquals(Integer.valueOf(1024000), vaction.getMemory());
}
public void testSetGuestVcpus() throws Exception {
Map requestParams = new HashMap();
requestParams.put("guestSettingToModify",
localization.getMessage("virtualguestslist.jsp.setguestvcpus"));
requestParams.put("guestSettingValue", "3");
submitVirtualGuestsForm("virtualguestslist.jsp.applychanges",
requestParams);
verifyNoActionMessages();
assertTrue(getActualForward().indexOf("actionName=setVcpu") >= 0);
assertTrue(getActualForward().indexOf("guestSettingValue") >= 0);
}
}