/**
* 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.domain.kickstart.test;
import com.redhat.rhn.domain.action.Action;
import com.redhat.rhn.domain.channel.Channel;
import com.redhat.rhn.domain.channel.test.ChannelFactoryTest;
import com.redhat.rhn.domain.kickstart.KickstartData;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
import com.redhat.rhn.domain.kickstart.KickstartSession;
import com.redhat.rhn.domain.kickstart.KickstartSessionState;
import com.redhat.rhn.domain.kickstart.KickstartVirtualizationType;
import com.redhat.rhn.domain.rhnpackage.profile.Profile;
import com.redhat.rhn.domain.rhnpackage.profile.test.ProfileTest;
import com.redhat.rhn.domain.role.RoleFactory;
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.BaseTestCaseWithUser;
import com.redhat.rhn.testing.TestUtils;
import java.util.Date;
/**
* KickstartSessionTest
* @version $Rev$
*/
public class KickstartSessionTest extends BaseTestCaseWithUser {
private KickstartData k;
private KickstartSession ksession;
private Server s;
public void setUp() throws Exception {
super.setUp();
user.addPermanentRole(RoleFactory.ORG_ADMIN);
k = KickstartDataTest.createKickstartWithOptions(user.getOrg());
assertNotNull(k);
Profile p = ProfileTest.createTestProfile(user,
k.getKickstartDefaults().getKstree().getChannel());
ksession = createKickstartSession(k, user);
s = ksession.getOldServer();
ksession.setServerProfile(p);
TestUtils.saveAndFlush(ksession);
}
public void testIdsForSS() throws Exception {
assertNotNull(KickstartFactory.SESSION_STATE_CREATED.getId());
assertNotNull(KickstartFactory.SESSION_STATE_COMPLETE.getId());
assertNotNull(KickstartFactory.SESSION_STATE_FAILED.getId());
assertNotNull(KickstartFactory.SESSION_STATE_STARTED.getId());
}
public void testKickstartDataTest() throws Exception {
KickstartSession ks2 = KickstartFactory.
lookupKickstartSessionById(ksession.getId());
assertEquals(ksession.getId(), ks2.getId());
assertEquals(ksession.getKsdata(), k);
assertNotNull(ks2.getServerProfile());
}
public void testLookupByServer() throws Exception {
KickstartSession lookedUp = KickstartFactory.
lookupKickstartSessionByServer(s.getId());
assertEquals(lookedUp.getId(), ksession.getId());
}
public void testLookupAllForServerAndFail() throws Exception {
KickstartSession session2 = createKickstartSession(s, k, user);
KickstartFactory.saveKickstartSession(session2);
assertEquals(2, KickstartFactory.
lookupAllKickstartSessionsByServer(s.getId()).size());
session2.setState(KickstartFactory.SESSION_STATE_CREATED);
session2.markFailed("some failed message");
KickstartFactory.saveKickstartSession(session2);
session2 = (KickstartSession) reload(session2);
assertEquals("Got wrong status: " + session2.getState().getLabel(),
KickstartFactory.SESSION_STATE_FAILED, session2.getState());
}
public void testHistory() throws Exception {
ksession = addHistory(ksession);
Thread.sleep(2000);
KickstartFactory.saveKickstartSession(ksession);
ksession = (KickstartSession) reload(ksession);
assertNotNull(ksession.getHistory());
assertEquals(2, ksession.getHistory().size());
ksession.addHistory(KickstartFactory.SESSION_STATE_FAILED, "FAILED");
KickstartFactory.saveKickstartSession(ksession);
ksession = (KickstartSession) reload(ksession);
assertTrue(ksession.getMostRecentHistory().startsWith("FAILED"));
}
public void testGetUrl() {
String url = ksession.getUrl("xmlrpc.rhn.webdev.redhat.com", new Date());
assertNotNull(url);
// http://xmlrpc.rhn.webdev.redhat.com/ty/gtIKQrRN
assertTrue(url.startsWith("http"));
assertTrue(url.indexOf("http://xmlrpc.rhn.webdev.redhat.com/ty/") == 0);
}
public static KickstartSession addHistory(KickstartSession session)
throws Exception {
session.addHistory(KickstartFactory.SESSION_STATE_STARTED,
"some hist" + TestUtils.randomString());
return session;
}
public static KickstartSession createKickstartSession(Server s, KickstartData k,
User userIn) throws Exception {
return createKickstartSession(s, k, userIn, null);
}
public static KickstartSession createKickstartSession(Server s, KickstartData k,
User userIn, Action actionIn) throws Exception {
KickstartSessionState state = KickstartFactory.SESSION_STATE_CREATED;
KickstartSession ksession = new KickstartSession();
ksession.setKsdata(k);
ksession.setKickstartMode("label");
ksession.setKstree(KickstartableTreeTest.createTestKickstartableTree());
ksession.setOrg(k.getOrg());
ksession.setState(state);
ksession.setCreated(new Date());
ksession.setModified(new Date());
ksession.setPackageFetchCount(new Long(0));
ksession.setDeployConfigs(Boolean.FALSE);
ksession.setOldServer(s);
ksession.setNewServer(s);
ksession.setVirtualizationType(KickstartFactory.
lookupKickstartVirtualizationTypeByLabel(
KickstartVirtualizationType.XEN_PARAVIRT));
if (actionIn != null) {
ksession.setAction(actionIn);
}
return ksession;
}
public static KickstartSession createKickstartSession(KickstartData k,
User userIn) throws Exception {
Server s = ServerFactoryTest.createTestServer(userIn, true);
Channel baseChannel = ChannelFactoryTest.createTestChannel(userIn);
baseChannel.setParentChannel(null);
s.addChannel(baseChannel);
TestUtils.saveAndFlush(s);
return createKickstartSession(s, k, userIn);
}
}