com.redhat.rhn.domain.kickstart.test.KickstartScriptTest.java Source code

Java tutorial

Introduction

Here is the source code for com.redhat.rhn.domain.kickstart.test.KickstartScriptTest.java

Source

/**
 * 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;
    }

}