/**
* Copyright (c) 2009--2010 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.kickstart.test;
import com.redhat.rhn.domain.kickstart.KickstartData;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
import com.redhat.rhn.domain.kickstart.KickstartScript;
import com.redhat.rhn.testing.BaseTestCaseWithUser;
import com.redhat.rhn.testing.TestUtils;
import org.apache.commons.lang.RandomStringUtils;
import java.util.Iterator;
/**
*
* KickstartScriptTest
* @version $Rev$
*/
public class KickstartScriptTest extends BaseTestCaseWithUser {
public static final byte[] DATA = "echo \"hello world\"".getBytes();
/*
public void testRevision() throws Exception {
KickstartData ksdata = KickstartDataTest.createKickstartWithOptions(user.getOrg());
KickstartScript script = KickstartScriptTest.createPost(ksdata);
script.setRevision(new Long(1));
System.out.println("\n\n\n\n\nSSSSSSSSSSSS\n\n\n\n");
ksdata = (KickstartData) TestUtils.saveAndReload(ksdata);
System.out.println("\n\n\n\n\nZZZZZZZZZZZZ\n\n\n\n");
script = ksdata.getScripts().iterator().next();
assertNotNull(script.getRevision());
assertNotNull(script.getId());
KickstartScript lookedUp = (KickstartScript) HibernateFactory.getSession()
.getNamedQuery("KickstartScript.findLatestScriptRevisionByID")
.setLong("id", script.getId())
.uniqueResult();
assertNotNull(lookedUp);
}*/
public void testScript() throws Exception {
KickstartData ksdata = KickstartDataTest.createKickstartWithOptions(user.getOrg());
KickstartFactory.saveKickstartData(ksdata);
ksdata = (KickstartData) reload(ksdata);
assertNotNull(ksdata.getScripts());
assertEquals(5, ksdata.getScripts().size());
KickstartScript ks2 = ksdata.getScripts().iterator().next();
assertNotNull(ks2.getDataContents());
// Test delete
ksdata.removeScript(ks2);
KickstartFactory.saveKickstartData(ksdata);
ksdata = (KickstartData) reload(ksdata);
assertEquals(4, ksdata.getScripts().size());
}
public void testMultiplePreScripts() throws Exception {
KickstartData ksdata = KickstartDataTest.createKickstartWithOptions(user.getOrg());
KickstartScript kss1 = createPre(ksdata);
KickstartScript kss2 = createPre(ksdata);
ksdata.addScript(kss1);
ksdata.addScript(kss2);
assertTrue(kss1.getPosition().longValue() < kss2.getPosition().longValue());
KickstartFactory.saveKickstartData(ksdata);
ksdata = (KickstartData) reload(ksdata);
assertTrue(kss1.getPosition().longValue() < kss2.getPosition().longValue());
}
public void testLargeScript() throws Exception {
String largeString = RandomStringUtils.randomAscii(4000);
KickstartData ksdata = KickstartDataTest.createKickstartWithOptions(user.getOrg());
ksdata.getScripts().clear();
KickstartFactory.saveKickstartData(ksdata);
ksdata = (KickstartData) reload(ksdata);
// Create 2 scripts, one with data, one without.
KickstartScript script = createPost(ksdata);
script.setPosition(1L);
KickstartScript scriptEmpty = createPost(ksdata);
script.setData(largeString.getBytes("UTF-8"));
// Make sure we are setting the blob to be an empty byte
// array. The bug happens when one script is empty.
scriptEmpty.setData(new byte[0]);
scriptEmpty.setPosition(2L);
ksdata.addScript(script);
ksdata.addScript(scriptEmpty);
TestUtils.saveAndFlush(script);
TestUtils.saveAndFlush(scriptEmpty);
KickstartFactory.saveKickstartData(ksdata);
ksdata = (KickstartData) reload(ksdata);
Iterator i = ksdata.getScripts().iterator();
boolean found = false;
assertTrue(ksdata.getScripts().size() == 2);
while (i.hasNext()) {
KickstartScript loaded = (KickstartScript) i.next();
if (loaded.getDataContents().equals(largeString)) {
found = true;
}
}
assertTrue(found);
}
public static KickstartScript createPreInterpreter(KickstartData k) {
KickstartScript ks = new KickstartScript();
ks.setInterpreter("/usr/bin/perl");
ks.setChroot("Y");
ks.setData(DATA);
ks.setPosition(new Long(1));
ks.setScriptType(KickstartScript.TYPE_PRE);
ks.setKsdata(k);
ks.setRaw(true);
return ks;
}
public static KickstartScript createPostInterpreter(KickstartData k) {
KickstartScript ks = new KickstartScript();
ks.setInterpreter("/usr/bin/python");
ks.setChroot("Y");
ks.setPosition(new Long(2));
ks.setData(DATA);
ks.setScriptType(KickstartScript.TYPE_POST);
ks.setKsdata(k);
ks.setRaw(true);
return ks;
}
public static KickstartScript createPostChrootInt(KickstartData k) {
KickstartScript ks = new KickstartScript();
ks.setInterpreter("/usr/bin/python");
ks.setData(DATA);
ks.setChroot("N");
ks.setPosition(new Long(3));
ks.setScriptType(KickstartScript.TYPE_POST);
ks.setKsdata(k);
ks.setRaw(true);
return ks;
}
public static KickstartScript createPre(KickstartData k) {
KickstartScript ks = new KickstartScript();
ks.setChroot("Y");
ks.setData(DATA);
ks.setPosition(new Long(4));
ks.setScriptType(KickstartScript.TYPE_PRE);
ks.setKsdata(k);
ks.setRaw(true);
return ks;
}
public static KickstartScript createPost(KickstartData k) {
KickstartScript ks = new KickstartScript();
ks.setChroot("Y");
ks.setData(DATA);
ks.setPosition(new Long(5));
ks.setScriptType(KickstartScript.TYPE_POST);
ks.setKsdata(k);
ks.setRaw(true);
return ks;
}
}