/**
* Copyright (c) 2009--2012 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.domain.action.script.test;
import com.redhat.rhn.domain.action.Action;
import com.redhat.rhn.domain.action.ActionFactory;
import com.redhat.rhn.domain.action.script.ScriptActionDetails;
import com.redhat.rhn.domain.action.script.ScriptResult;
import com.redhat.rhn.domain.action.script.ScriptRunAction;
import com.redhat.rhn.domain.action.test.ActionFactoryTest;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.server.test.ServerFactoryTest;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.testing.RhnBaseTestCase;
import com.redhat.rhn.testing.UserTestUtils;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* ScriptActionTest
* Test suite for ScriptAction and ScriptResult
* @version $Rev$
*/
public class ScriptRunActionTest extends RhnBaseTestCase {
public void testScriptAction() throws Exception {
User usr = UserTestUtils.findNewUser("testUser",
"testOrg" + this.getClass().getSimpleName());
Action newA = ActionFactoryTest.createAction(usr, ActionFactory.TYPE_SCRIPT_RUN);
Long id = newA.getId();
assertTrue(newA instanceof ScriptRunAction);
ScriptRunAction action = (ScriptRunAction) newA;
ScriptResult result1 = new ScriptResult();
Server s1 = ServerFactoryTest.createTestServer(usr);
result1.setServerId(s1.getId());
result1.setReturnCode(new Long(1));
result1.setStartDate(new Date());
Calendar futureCal = GregorianCalendar.getInstance();
futureCal.set(2050, 12, 14);
result1.setStopDate(futureCal.getTime());
Server s2 = ServerFactoryTest.createTestServer(usr);
ScriptResult result2 = new ScriptResult();
result2.setServerId(s2.getId());
result2.setReturnCode(new Long(1));
result2.setStartDate(new Date());
result2.setStopDate(futureCal.getTime());
ScriptActionDetails sad = action.getScriptActionDetails();
result1.setActionScriptId(sad.getId());
result2.setActionScriptId(sad.getId());
sad.setParentAction(action);
sad.setUsername("SRTestUser");
sad.setGroupname("SRTestGroup");
sad.setTimeout(new Long(9999));
result1.setParentScriptActionDetails(sad);
result2.setParentScriptActionDetails(sad);
sad.addResult(result1);
sad.addResult(result2);
String expectedScript = "#!/bin/csh";
//sad.setScript(expectedScript.getBytes("UTF-8"));
sad.setScript(expectedScript.getBytes("UTF-8"));
action.setScriptActionDetails(sad);
ActionFactory.save(action);
flushAndEvict(action);
/**
* Get action back out of db and make sure
* getResults().size() is 2
*/
Action a = ActionFactory.lookupById(id);
assertTrue(a instanceof ScriptRunAction);
ScriptRunAction scriptaction = (ScriptRunAction) a;
assertNotNull(scriptaction.getScriptActionDetails().getId());
assertNotNull(scriptaction.getScriptActionDetails().getParentAction().getId());
assertNotNull(scriptaction.getScriptActionDetails().getScript());
assertNotNull(scriptaction.getScriptActionDetails().getResults());
assertEquals(2, scriptaction.getScriptActionDetails().getResults().size());
assertEquals(expectedScript,
scriptaction.getScriptActionDetails().getScriptContents());
assertTrue(scriptaction.getScriptActionDetails().getParentAction()
.equals(scriptaction));
}
public void testScriptActionDetails() throws Exception {
User usr = UserTestUtils.findNewUser("testUser",
"testOrg" + this.getClass().getSimpleName());
Action newA = ActionFactoryTest.createAction(usr, ActionFactory.TYPE_SCRIPT_RUN);
Long id = newA.getId();
assertTrue(newA instanceof ScriptRunAction);
ScriptRunAction action = (ScriptRunAction) newA;
Date startDate = new Date();
Calendar futureCal = GregorianCalendar.getInstance();
futureCal.set(2050, 12, 14);
Date stopDate = futureCal.getTime();
ScriptResult result1 = new ScriptResult();
Server s1 = ServerFactoryTest.createTestServer(usr);
result1.setServerId(s1.getId());
result1.setReturnCode(new Long(1));
result1.setStartDate(startDate);
result1.setStopDate(stopDate);
ScriptActionDetails sad = action.getScriptActionDetails();
result1.setActionScriptId(sad.getId());
sad.setParentAction(action);
sad.setUsername("SRTestUser");
sad.setGroupname("SRTestGroup");
sad.setTimeout(new Long(9999));
result1.setParentScriptActionDetails(sad);
sad.addResult(result1);
action.setScriptActionDetails(sad);
ActionFactory.save(action);
flushAndEvict(action);
Action a = ActionFactory.lookupById(id);
ScriptRunAction scriptaction = (ScriptRunAction) a;
assertEquals(1, scriptaction.getScriptActionDetails().getResults().size());
ScriptResult lookupResult = scriptaction.getScriptActionDetails().
getResults().iterator().next();
assertEquals(startDate.getTime() / 1000,
lookupResult.getStartDate().getTime() / 1000);
assertEquals(stopDate.getTime() / 1000,
lookupResult.getStopDate().getTime() / 1000);
}
}