/** * 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.xmlrpc.kickstart.profile.test; import com.redhat.rhn.common.hibernate.HibernateFactory; import com.redhat.rhn.domain.channel.Channel; import com.redhat.rhn.domain.channel.test.ChannelFactoryTest; import com.redhat.rhn.domain.kickstart.KickstartCommand; import com.redhat.rhn.domain.kickstart.KickstartCommandName; import com.redhat.rhn.domain.kickstart.KickstartData; import com.redhat.rhn.domain.kickstart.KickstartFactory; import com.redhat.rhn.domain.kickstart.KickstartIpRange; import com.redhat.rhn.domain.kickstart.KickstartPackage; import com.redhat.rhn.domain.kickstart.KickstartScript; import com.redhat.rhn.domain.kickstart.KickstartVirtualizationType; import com.redhat.rhn.domain.kickstart.KickstartableTree; import com.redhat.rhn.domain.kickstart.test.KickstartDataTest; import com.redhat.rhn.domain.kickstart.test.KickstartableTreeTest; import com.redhat.rhn.domain.rhnpackage.Package; import com.redhat.rhn.domain.rhnpackage.PackageFactory; import com.redhat.rhn.domain.rhnpackage.test.PackageTest; import com.redhat.rhn.domain.token.ActivationKey; import com.redhat.rhn.domain.token.test.ActivationKeyTest; import com.redhat.rhn.frontend.dto.kickstart.KickstartOptionValue; import com.redhat.rhn.frontend.xmlrpc.kickstart.KickstartHandler; import com.redhat.rhn.frontend.xmlrpc.kickstart.profile.ProfileHandler; import com.redhat.rhn.frontend.xmlrpc.test.BaseHandlerTestCase; import com.redhat.rhn.manager.kickstart.IpAddress; import com.redhat.rhn.manager.kickstart.KickstartOptionsCommand; import com.redhat.rhn.manager.token.ActivationKeyManager; import com.redhat.rhn.testing.TestUtils; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; /** * ProfileHandlerTest * @version $Rev$ */ public class ProfileHandlerTest extends BaseHandlerTestCase { private ProfileHandler handler = new ProfileHandler(); private KickstartHandler ksHandler = new KickstartHandler(); public void testKickstartTree() throws Exception { // test the setKickstartTree and getKickstartTree APIs Channel baseChan = ChannelFactoryTest.createTestChannel(admin); KickstartableTree testTree = KickstartableTreeTest. createTestKickstartableTree(baseChan); String profileLabel = "new-ks-profile"; ksHandler.createProfile(admin, profileLabel, KickstartVirtualizationType.XEN_PARAVIRT, testTree.getLabel(), "localhost", "rootpw"); KickstartData newKsProfile = KickstartFactory.lookupKickstartDataByLabelAndOrgId( profileLabel, admin.getOrg().getId()); assertNotNull(newKsProfile); assertTrue(newKsProfile.getCommand("url").getArguments().contains("/ks/dist/org/")); KickstartableTree anotherTestTree = KickstartableTreeTest. createTestKickstartableTree(baseChan); int result = handler.setKickstartTree(admin, profileLabel, anotherTestTree.getLabel()); assertEquals(1, result); String tree = handler.getKickstartTree(admin, profileLabel); assertEquals(anotherTestTree.getLabel(), tree); } public void testCfgPreservation() throws Exception { // test the setCfgPreservation and getCfgPreservation APIs Channel baseChan = ChannelFactoryTest.createTestChannel(admin); KickstartableTree testTree = KickstartableTreeTest. createTestKickstartableTree(baseChan); String profileLabel = "new-ks-profile"; ksHandler.createProfile(admin, profileLabel, KickstartVirtualizationType.XEN_PARAVIRT, testTree.getLabel(), "localhost", "rootpw"); KickstartData newKsProfile = KickstartFactory.lookupKickstartDataByLabelAndOrgId( profileLabel, admin.getOrg().getId()); assertNotNull(newKsProfile); assertTrue(newKsProfile.getCommand("url").getArguments().contains("/ks/dist/org/")); int result = handler.setCfgPreservation(admin, profileLabel, true); assertEquals(1, result); assertTrue(handler.getCfgPreservation(admin, profileLabel)); result = handler.setCfgPreservation(admin, profileLabel, false); assertEquals(1, result); assertFalse(handler.getCfgPreservation(admin, profileLabel)); } public void testChildChannels() throws Exception { // test the setChildChannels and getChildChannels APIs Channel baseChan = ChannelFactoryTest.createTestChannel(admin); KickstartableTree testTree = KickstartableTreeTest. createTestKickstartableTree(baseChan); String profileLabel = "new-ks-profile"; ksHandler.createProfile(admin, profileLabel, KickstartVirtualizationType.XEN_PARAVIRT, testTree.getLabel(), "localhost", "rootpw"); KickstartData newKsProfile = KickstartFactory.lookupKickstartDataByLabelAndOrgId( profileLabel, admin.getOrg().getId()); assertNotNull(newKsProfile); assertTrue(newKsProfile.getCommand("url").getArguments().contains("/ks/dist/org/")); Channel c1 = ChannelFactoryTest.createTestChannel(admin); Channel c2 = ChannelFactoryTest.createTestChannel(admin); assertFalse(c1.getLabel().equals(c2.getLabel())); List<String> channelsToSubscribe = new ArrayList<String>(); channelsToSubscribe.add(c1.getLabel()); channelsToSubscribe.add(c2.getLabel()); int result = handler.setChildChannels(admin, profileLabel, channelsToSubscribe); assertEquals(1, result); List<String> channels = handler.getChildChannels(admin, profileLabel); assertEquals(channelsToSubscribe.size(), channels.size()); boolean foundC1 = false, foundC2 = false; for (String channel : channels) { if (channel.equals(c1.getLabel())) { foundC1 = true; } if (channel.equals(c2.getLabel())) { foundC2 = true; } } assertTrue(foundC1); assertTrue(foundC2); } public void testListScript() throws Exception { KickstartData ks = KickstartDataTest.createKickstartWithChannel(admin.getOrg()); int id = handler.addScript(admin, ks.getLabel(), "sample", "This is a script", "", "post", true); ks = (KickstartData) HibernateFactory.reload(ks); boolean found = false; for (KickstartScript script : handler.listScripts(admin, ks.getLabel())) { if (script.getId().intValue() == id && script.getDataContents().equals( "This is a script")) { found = true; } } assertTrue(found); } public void testOrderScripts() throws Exception { KickstartData ks = KickstartDataTest.createKickstartWithChannel(admin.getOrg()); // delete kickstart scripts that are already there List<KickstartScript> scripts = handler.listScripts(admin, ks.getLabel()); for (KickstartScript script : scripts) { handler.removeScript(admin, ks.getLabel(), script.getId().intValue()); } ks = (KickstartData) HibernateFactory.reload(ks); int idPost1 = handler.addScript(admin, ks.getLabel(), "myPost1", "This is a script", "", "post", true); int idPost2 = handler.addScript(admin, ks.getLabel(), "myPost2", "This is a script", "", "post", true); int idPostNochroot1 = handler.addScript(admin, ks.getLabel(), "myPostNochroot1", "This is a script", "", "post", false); int idPostNochroot2 = handler.addScript(admin, ks.getLabel(), "myPostNochroot2", "This is a script", "", "post", false); int idPre1 = handler.addScript(admin, ks.getLabel(), "myPre1", "This is a script", "", "pre", false); int idPre2 = handler.addScript(admin, ks.getLabel(), "myPre2", "This is a script", "", "pre", false); ks = (KickstartData) HibernateFactory.reload(ks); // make sure they're in the proper order initially scripts = handler.listScripts(admin, ks.getLabel()); assertNotNull(scripts); assertEquals(6, scripts.size()); assertEquals(idPre1, scripts.get(0).getId().intValue()); assertEquals(scripts.get(1).getId().intValue(), idPre2); assertEquals(scripts.get(2).getId().intValue(), idPostNochroot1); assertEquals(scripts.get(3).getId().intValue(), idPostNochroot2); assertEquals(scripts.get(4).getId().intValue(), idPost1); assertEquals(scripts.get(5).getId().intValue(), idPost2); List<Integer> orderedPre = new ArrayList<Integer>(); List<Integer> orderedPostBefore = new ArrayList<Integer>(); List<Integer> orderedPostAfter = new ArrayList<Integer>(); orderedPre.add(idPre2); orderedPre.add(idPre1); orderedPostBefore.add(idPost1); orderedPostBefore.add(idPostNochroot1); orderedPostAfter.add(idPost2); orderedPostAfter.add(idPostNochroot2); //make the acutal call handler.orderScripts(admin, ks.getLabel(), orderedPre, orderedPostBefore, orderedPostAfter); //test results scripts = handler.listScripts(admin, ks.getLabel()); assertTrue(scripts.get(0).getId().intValue() == idPre2); assertTrue(scripts.get(1).getId().intValue() == idPre1); assertTrue(scripts.get(2).getId().intValue() == idPost1); assertTrue(scripts.get(3).getId().intValue() == idPostNochroot1); assertTrue(scripts.get(4).getId().intValue() == idPost2); assertTrue(scripts.get(5).getId().intValue() == idPostNochroot2); } public void testAddScript() throws Exception { KickstartData ks = KickstartDataTest.createKickstartWithChannel(admin.getOrg()); int id = handler.addScript(admin, ks.getLabel(), "sample", "This is a script", "", "post", true); ks = (KickstartData) HibernateFactory.reload(ks); boolean found = false; for (KickstartScript script : ks.getScripts()) { if (script.getId().intValue() == id && script.getDataContents().equals("This is a script")) { found = true; } } assertTrue(found); } public void testRemoveScript() throws Exception { KickstartData ks = KickstartDataTest.createKickstartWithChannel(admin.getOrg()); KickstartScript script = new KickstartScript(); script.setKsdata(ks); script.setChroot("Y"); script.setData(new String("blah").getBytes()); script.setInterpreter("/bin/bash"); script.setScriptType("post"); script.setPosition(new Long(0)); script = (KickstartScript) TestUtils.saveAndReload(script); assertEquals(1, handler.removeScript(admin, ks.getLabel(), script.getId().intValue())); ks = (KickstartData) TestUtils.saveAndReload(ks); boolean found = false; for (KickstartScript scriptTmp : ks.getScripts()) { if (script.getId().equals(scriptTmp.getId())) { found = true; } } assertFalse(found); } public void testDownloadKickstart() throws Exception { KickstartData ks1 = KickstartDataTest.createKickstartWithProfile(admin); ks1.addKsPackage(new KickstartPackage(ks1, PackageFactory.lookupOrCreatePackageByName("blahPackage"))); ActivationKey key = ActivationKeyTest.createTestActivationKey(admin); ks1.addDefaultRegToken(key.getToken()); ks1 = (KickstartData) TestUtils.saveAndReload(ks1); String file = handler.downloadKickstart(admin, ks1.getLabel(), "hostName"); assertTrue(file.contains("blahPackage")); } public void testSetAdvancedOptions() throws Exception { //setup KickstartData ks = KickstartDataTest.createKickstartWithProfile(admin); Object[] s1 = handler.getAdvancedOptions(admin, ks.getLabel()); List<Map> l1 = new ArrayList(); for (int i = 0; i < s1.length; i++) { l1.add((Map) s1[i]); } Map m1 = new HashMap(); Map m2 = new HashMap(); Map m3 = new HashMap(); Map m4 = new HashMap(); Map m5 = new HashMap(); Map m6 = new HashMap(); //all required options m1.put("name", "lang"); m1.put("arguments", "abcd"); l1.add(m1); m2.put("name", "keyboard"); m2.put("arguments", "abcd"); l1.add(m2); m3.put("name", "bootloader"); m3.put("arguments", "abcd"); l1.add(m3); m4.put("name", "timezone"); m4.put("arguments", "abcd"); l1.add(m4); m5.put("name", "auth"); m5.put("arguments", "abcd"); l1.add(m5); //Check encrypted password handling m6.put("name", "rootpw"); m6.put("arguments", "$1$ltNG2yv4$5QpgeI1bDZykCIvC.gnGJ/"); l1.add(m6); //test int result = handler.setAdvancedOptions(admin, ks.getLabel(), l1); Object[] s2 = handler.getAdvancedOptions(admin, ks.getLabel()); //verify for (int i = 0; i < s1.length; i++) { KickstartCommand k = (KickstartCommand) s2[i]; if (k.getCommandName().getName().equals("url")) { assertTrue(k.getArguments(). equals("--url /rhn/kickstart/ks-rhel-i386-kkk")); } } assertTrue(s1.length <= s2.length); assertEquals(1, result); } public void testGetAdvancedOptions() throws Exception { //setup KickstartData ks = KickstartDataTest.createKickstartWithProfile(admin); Object[] s1 = handler.getAdvancedOptions(admin, ks.getLabel()); List<Map> l1 = new ArrayList(); for (int i = 0; i < s1.length; i++) { l1.add((Map) s1[i]); } Map m1 = new HashMap(); Map m2 = new HashMap(); Map m3 = new HashMap(); Map m4 = new HashMap(); Map m5 = new HashMap(); Map m6 = new HashMap(); //all required options m1.put("name", "lang"); m1.put("arguments", "abcd"); l1.add(m1); m2.put("name", "keyboard"); m2.put("arguments", "abcd"); l1.add(m2); m3.put("name", "bootloader"); m3.put("arguments", "abcd"); l1.add(m3); m4.put("name", "timezone"); m4.put("arguments", "abcd"); l1.add(m4); m5.put("name", "auth"); m5.put("arguments", "abcd"); l1.add(m5); //Check encrypted password handling m6.put("name", "rootpw"); m6.put("arguments", "asdf1234"); l1.add(m6); //test int result = handler.setAdvancedOptions(admin, ks.getLabel(), l1); Object[] s2 = handler.getAdvancedOptions(admin, ks.getLabel()); //verify for (int i = 0; i < s1.length; i++) { KickstartCommand k = (KickstartCommand) s2[i]; if (k.getCommandName().getName().equals("url")) { assertTrue(k.getArguments(). equals("--url /rhn/kickstart/ks-rhel-i386-kkk")); } } assertTrue(s1.length <= s2.length); assertEquals(1, result); } public void testListIpRanges() throws Exception { KickstartData ks1 = setupIpRanges(100); KickstartData ks2 = setupIpRanges(110); Set set = handler.listIpRanges(admin, ks1.getLabel()); assertTrue(set.contains(ks1.getIps().iterator().next())); assertFalse(set.contains(ks2.getIps().iterator().next())); } public void testAddIpRange() throws Exception { KickstartData ks1 = setupIpRanges(100); handler.addIpRange(admin, ks1.getLabel(), "192.168.1.1", "192.168.1.10"); ks1 = KickstartFactory.lookupKickstartDataByLabelAndOrgId(ks1.getLabel(), admin.getOrg().getId()); assertTrue(ks1.getIps().size() == 2); } public void testAddIpRange1() throws Exception { KickstartData ks1 = setupIpRanges(100); boolean caught = false; try { handler.addIpRange(admin, ks1.getLabel(), "192.168.0.3", "192.168.1.10"); } catch (Exception e) { caught = true; } assertTrue(caught); ks1 = KickstartFactory.lookupKickstartDataByLabelAndOrgId(ks1.getLabel(), admin.getOrg().getId()); assertTrue(ks1.getIps().size() == 1); } public void testRemoveIpRange() throws Exception { KickstartData ks1 = setupIpRanges(100); assertTrue(ks1.getIps().size() == 1); handler.removeIpRange(admin, ks1.getLabel(), "192.168.0.1"); ks1 = KickstartFactory.lookupKickstartDataByLabelAndOrgId(ks1.getLabel(), admin.getOrg().getId()); assertTrue(ks1.getIps().size() == 0); } public void testCompareActivationKeys() throws Exception { // Setup KickstartData ks1 = KickstartDataTest.createKickstartWithProfile(admin); KickstartData ks2 = KickstartDataTest.createKickstartWithProfile(admin); ActivationKeyManager manager = ActivationKeyManager.getInstance(); ActivationKey activationKey1 = manager.createNewActivationKey(admin, "Test1"); ActivationKey activationKey2 = manager.createNewActivationKey(admin, "Test2"); ActivationKey activationKey3 = manager.createNewActivationKey(admin, "Test3"); ks1.getDefaultRegTokens().add(activationKey1.getToken()); ks1.getDefaultRegTokens().add(activationKey2.getToken()); ks2.getDefaultRegTokens().add(activationKey1.getToken()); ks2.getDefaultRegTokens().add(activationKey3.getToken()); KickstartFactory.saveKickstartData(ks1); KickstartFactory.saveKickstartData(ks2); // Test Map<String, List<ActivationKey>> keysDiff = handler.compareActivationKeys(admin, ks1.getLabel(), ks2.getLabel()); // Verify assertNotNull(keysDiff); List<ActivationKey> ks1KeyList = keysDiff.get(ks1.getLabel()); assertNotNull(ks1KeyList); assertEquals(ks1KeyList.size(), 1); ActivationKey ks1DiffKey = ks1KeyList.iterator().next(); assertEquals(ks1DiffKey.getToken(), activationKey2.getToken()); List<ActivationKey> ks2KeyList = keysDiff.get(ks2.getLabel()); assertNotNull(ks2KeyList); assertEquals(ks2KeyList.size(), 1); ActivationKey ks2DiffKey = ks2KeyList.iterator().next(); assertEquals(ks2DiffKey.getToken(), activationKey3.getToken()); } public void testCompareActivationKeysSameProfile() throws Exception { // Setup KickstartData ks1 = KickstartDataTest.createKickstartWithProfile(admin); ActivationKeyManager manager = ActivationKeyManager.getInstance(); ActivationKey activationKey1 = manager.createNewActivationKey(admin, "Test1"); ks1.getDefaultRegTokens().add(activationKey1.getToken()); KickstartFactory.saveKickstartData(ks1); // Test Map<String, List<ActivationKey>> keysDiff = handler.compareActivationKeys(admin, ks1.getLabel(), ks1.getLabel()); // Verify assertNotNull(keysDiff); List<ActivationKey> ks1KeyList = keysDiff.get(ks1.getLabel()); assertNotNull(ks1KeyList); assertEquals(ks1KeyList.size(), 0); } public void testCompareActivationKeysNoKeys() throws Exception { // Setup KickstartData ks1 = KickstartDataTest.createKickstartWithProfile(admin); KickstartData ks2 = KickstartDataTest.createKickstartWithProfile(admin); KickstartFactory.saveKickstartData(ks1); KickstartFactory.saveKickstartData(ks2); // Test Map<String, List<ActivationKey>> keysDiff = handler.compareActivationKeys(admin, ks1.getLabel(), ks2.getLabel()); // Verify assertNotNull(keysDiff); List<ActivationKey> ks1KeyList = keysDiff.get(ks1.getLabel()); assertNotNull(ks1KeyList); assertEquals(ks1KeyList.size(), 0); } public void testComparePackages() throws Exception { // Setup // Clear any packages on the profile so we have a known starting state KickstartData ks1 = KickstartDataTest.createKickstartWithProfile(admin); ks1.clearKsPackages(); KickstartData ks2 = KickstartDataTest.createKickstartWithProfile(admin); ks2.clearKsPackages(); Package package1 = PackageTest.createTestPackage(admin.getOrg()); Package package2 = PackageTest.createTestPackage(admin.getOrg()); Package package3 = PackageTest.createTestPackage(admin.getOrg()); ks1.addKsPackage(new KickstartPackage(ks1, package1.getPackageName())); ks1.addKsPackage(new KickstartPackage(ks1, package2.getPackageName())); ks2.addKsPackage(new KickstartPackage(ks2, package1.getPackageName())); ks2.addKsPackage(new KickstartPackage(ks2, package3.getPackageName())); KickstartFactory.saveKickstartData(ks1); KickstartFactory.saveKickstartData(ks2); // Test Map<String, Set<String>> packagesDiff = handler.comparePackages(admin, ks1.getLabel(), ks2.getLabel()); // Verify assertNotNull(packagesDiff); Set<String> ks1PackageNameList = packagesDiff.get(ks1.getLabel()); assertNotNull(ks1PackageNameList); assertEquals(1, ks1PackageNameList.size()); String ks1PackageName = ks1PackageNameList.iterator().next(); assertEquals(package2.getPackageName().getName(), ks1PackageName); Set<String> ks2PackageNameList = packagesDiff.get(ks2.getLabel()); assertNotNull(ks2PackageNameList); assertEquals(1, ks2PackageNameList.size()); String ks2PackageName = ks2PackageNameList.iterator().next(); assertEquals(package3.getPackageName().getName(), ks2PackageName); } public void testComparePackagesSameProfile() throws Exception { // Setup // Clear any packages on the profile so we have a known starting state KickstartData ks1 = KickstartDataTest.createKickstartWithProfile(admin); ks1.clearKsPackages(); Package package1 = PackageTest.createTestPackage(admin.getOrg()); ks1.addKsPackage(new KickstartPackage(ks1, package1.getPackageName())); KickstartFactory.saveKickstartData(ks1); // Test Map<String, Set<String>> packagesDiff = handler.comparePackages(admin, ks1.getLabel(), ks1.getLabel()); // Verify assertNotNull(packagesDiff); Set<String> ks1PackageNameList = packagesDiff.get(ks1.getLabel()); assertNotNull(ks1PackageNameList); assertEquals(0, ks1PackageNameList.size()); } public void testComparePackagesNoPackages() throws Exception { // Setup // Clear any packages on the profile so we have a known starting state KickstartData ks1 = KickstartDataTest.createKickstartWithProfile(admin); ks1.getKsPackages().clear(); KickstartData ks2 = KickstartDataTest.createKickstartWithProfile(admin); ks2.getKsPackages().clear(); KickstartFactory.saveKickstartData(ks1); KickstartFactory.saveKickstartData(ks2); // Test Map<String, Set<String>> packagesDiff = handler.comparePackages(admin, ks1.getLabel(), ks2.getLabel()); // Verify assertNotNull(packagesDiff); Set<String> ks1PackageNameList = packagesDiff.get(ks1.getLabel()); assertNotNull(ks1PackageNameList); assertEquals(0, ks1PackageNameList.size()); Set<String> ks2PackageNameList = packagesDiff.get(ks2.getLabel()); assertNotNull(ks2PackageNameList); assertEquals(0, ks2PackageNameList.size()); } public void testCompareAdvancedOptions() throws Exception { // Setup KickstartData ks1 = KickstartDataTest.createKickstartWithOptions(admin.getOrg()); KickstartData ks2 = KickstartDataTest.createKickstartWithOptions(admin.getOrg()); // Add new value to only one of the profiles so there is something to diff KickstartOptionsCommand command1 = new KickstartOptionsCommand(ks1.getId(), admin); KickstartCommandName commandName = (KickstartCommandName)command1.getAvailableOptions().iterator().next(); KickstartCommand kc = new KickstartCommand(); kc.setCommandName(commandName); kc.setKickstartData(ks1); kc.setCreated(new Date()); kc.setModified(new Date()); kc.setArguments("test value"); command1.getKickstartData().getCommands().add(kc); command1.store(); KickstartFactory.saveKickstartData(ks1); KickstartFactory.saveKickstartData(ks2); // Test Map<String, List<KickstartOptionValue>> optionsDiff = handler.compareAdvancedOptions(admin, ks1.getLabel(), ks2.getLabel()); // Verify assertNotNull(optionsDiff); List<KickstartOptionValue> ks1Values = optionsDiff.get(ks1.getLabel()); List<KickstartOptionValue> ks2Values = optionsDiff.get(ks2.getLabel()); assertNotNull(ks1Values); assertNotNull(ks2Values); assertEquals(2, ks1Values.size()); assertEquals(2, ks2Values.size()); KickstartOptionValue value1 = ks1Values.get(0); assertEquals("test value", value1.getArg()); KickstartOptionValue value2 = ks2Values.get(0); assertEquals("", value2.getArg()); assertEquals(value1.getName(), value2.getName()); } private KickstartData setupIpRanges(int max) throws Exception { KickstartData ks1 = KickstartDataTest.createKickstartWithProfile(admin); KickstartIpRange range = new KickstartIpRange(); range.setMin(new IpAddress("192.168.0.1").getNumber()); range.setMax(new IpAddress("192.168.0." + max).getNumber()); range.setKsdata(ks1); range.setOrg(admin.getOrg()); ks1.getIps().add(range); KickstartFactory.saveKickstartData(ks1); return ks1; } public void testCustomOptions() throws Exception { KickstartData newProfile = createProfile(); List<String> options = new ArrayList<String>(); options.add("Java"); options.add("is"); options.add("the"); options.add("new"); options.add("COBOL"); assertEquals(handler.setCustomOptions(admin, newProfile.getLabel(), options), 1); Object[] results = handler.getCustomOptions(admin, newProfile.getLabel()); assertEquals(5, results.length); } private KickstartData createProfile() throws Exception { KickstartHandler kh = new KickstartHandler(); Channel baseChan = ChannelFactoryTest.createTestChannel(admin); KickstartableTree testTree = KickstartableTreeTest. createTestKickstartableTree(baseChan); String profileLabel = "new-ks-profile" + TestUtils.randomString(); kh.createProfile(admin, profileLabel, KickstartVirtualizationType.XEN_PARAVIRT, testTree.getLabel(), "localhost", "rootpw"); KickstartData newKsProfile = KickstartFactory.lookupKickstartDataByLabelAndOrgId( profileLabel, admin.getOrg().getId()); assertNotNull(newKsProfile); assertTrue(newKsProfile.getCommand("url").getArguments().contains("/ks/dist/org/")); return newKsProfile; } }