com.redhat.rhn.manager.profile.test.ProfileManagerTest.java Source code

Java tutorial

Introduction

Here is the source code for com.redhat.rhn.manager.profile.test.ProfileManagerTest.java

Source

/**
 * 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.manager.profile.test;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.apache.commons.lang.StringUtils;

import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.domain.action.rhnpackage.PackageAction;
import com.redhat.rhn.domain.channel.Channel;
import com.redhat.rhn.domain.channel.ChannelFactory;
import com.redhat.rhn.domain.channel.NoBaseChannelFoundException;
import com.redhat.rhn.domain.channel.test.ChannelFactoryTest;
import com.redhat.rhn.domain.rhnpackage.Package;
import com.redhat.rhn.domain.rhnpackage.PackageArch;
import com.redhat.rhn.domain.rhnpackage.PackageFactory;
import com.redhat.rhn.domain.rhnpackage.profile.Profile;
import com.redhat.rhn.domain.rhnpackage.test.PackageTest;
import com.redhat.rhn.domain.role.RoleFactory;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.server.ServerConstants;
import com.redhat.rhn.domain.server.ServerFactory;
import com.redhat.rhn.domain.server.test.ServerFactoryTest;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.domain.user.UserFactory;
import com.redhat.rhn.frontend.dto.PackageListItem;
import com.redhat.rhn.frontend.dto.PackageMetadata;
import com.redhat.rhn.frontend.dto.ProfileDto;
import com.redhat.rhn.manager.profile.ProfileManager;
import com.redhat.rhn.manager.rhnpackage.test.PackageManagerTest;
import com.redhat.rhn.testing.BaseTestCaseWithUser;
import com.redhat.rhn.testing.ChannelTestUtils;
import com.redhat.rhn.testing.ServerTestUtils;
import com.redhat.rhn.testing.TestUtils;

/**
 * ProfileManagerTest
 * @version $Rev$
 */
public class ProfileManagerTest extends BaseTestCaseWithUser {

    public void setUp() throws Exception {
        super.setUp();

        // Give our user ORG_ADMIN
        user.addPermanentRole(RoleFactory.ORG_ADMIN);
        UserFactory.save(user);
    }

    public void testSyncSystems() throws Exception {
        Channel testChannel = ChannelFactoryTest.createTestChannel(user);

        Package p1 = PackageTest.createTestPackage(user.getOrg());
        Package p2 = PackageTest.createTestPackage(user.getOrg());

        testChannel.addPackage(p1);
        testChannel.addPackage(p2);
        ChannelFactory.save(testChannel);

        Server s1 = ServerFactoryTest.createTestServer(user, true,
                ServerConstants.getServerGroupTypeEnterpriseEntitled());
        Server s2 = ServerFactoryTest.createTestServer(user, true,
                ServerConstants.getServerGroupTypeEnterpriseEntitled());

        s1.addChannel(testChannel);
        s2.addChannel(testChannel);

        PackageManagerTest.associateSystemToPackageWithArch(s1, p1);
        PackageManagerTest.associateSystemToPackageWithArch(s2, p2);

        ServerFactory.save(s1);
        ServerFactory.save(s2);

        StringBuilder idCombo = new StringBuilder();
        idCombo.append(p1.getPackageName().getId()).append("|");
        idCombo.append(p1.getPackageEvr().getId()).append("|");
        idCombo.append(p1.getPackageArch().getId());
        Set idCombos = new HashSet();
        idCombos.add(idCombo.toString());

        // This call has an embedded transaction in the stored procedure:
        // lookup_transaction_package(:operation, :n, :e, :v, :r, :a)
        // which can cause deadlocks.  We are forced to call commitAndCloseTransaction()
        commitAndCloseSession();
        commitHappened();

        PackageAction action = ProfileManager.syncToSystem(user, s1.getId(), s2.getId(), idCombos,
                ProfileManager.OPTION_REMOVE, new Date());
        assertNotNull(action);
        assertNotNull(action.getPrerequisite());
    }

    public void testCreateProfileFails() throws Exception {
        Server server = ServerFactoryTest.createTestServer(user, true);

        try {
            ProfileManager.createProfile(user, server, "Profile test name" + TestUtils.randomString(),
                    "Profile test description");
            fail("Should not be able to create a profile for a server which " + "has no basechannel");
        } catch (NoBaseChannelFoundException nbcfe) {
            assertTrue(true);
        }
    }

    public void testCreateProfile() throws Exception {
        Server server = ServerFactoryTest.createTestServer(user, true);
        Channel channel = ChannelFactoryTest.createTestChannel(user);
        server.addChannel(channel);
        TestUtils.saveAndFlush(server);

        Profile p = ProfileManager.createProfile(user, server, "Profile test name" + TestUtils.randomString(),
                "Profile test description");
        assertNotNull("Profile is null", p);
        assertNotNull("Profile has no id", p.getId());
    }

    public void testCopyFrom() throws Exception {
        Server server = ServerFactoryTest.createTestServer(user, true);
        Channel channel = ChannelFactoryTest.createTestChannel(user);
        server.addChannel(channel);
        TestUtils.saveAndFlush(server);

        Profile p = ProfileManager.createProfile(user, server, "Profile test name" + TestUtils.randomString(),
                "Profile test description");
        assertNotNull("Profile is null", p);
        assertNotNull("Profile has no id", p.getId());

        ProfileManager.copyFrom(server, p);
    }

    public void testCompatibleWithServer() throws Exception {
        Server server = ServerFactoryTest.createTestServer(user, true);
        Channel channel = ChannelFactoryTest.createTestChannel(user);
        server.addChannel(channel);
        TestUtils.saveAndFlush(server);
        Profile p = ProfileManager.createProfile(user, server, "Profile test name" + TestUtils.randomString(),
                "Profile test description");
        assertNotNull("Profile is null", p);
        assertNotNull("Profile has no id", p.getId());

        List list = ProfileManager.compatibleWithServer(server, user.getOrg());
        assertNotNull("List is null", list);
        assertFalse("List is empty", list.isEmpty());
        for (Iterator itr = list.iterator(); itr.hasNext();) {
            Object o = itr.next();
            assertEquals("List contains something other than Profiles", Profile.class, o.getClass());
        }
    }

    public void testCompareServerToProfile() {
        Long sid = new Long(1005385254);
        Long prid = new Long(4908);
        Long orgid = new Long(4116748);
        DataResult dr = ProfileManager.compareServerToProfile(sid, prid, orgid, null);
        assertNotNull("DataResult was null", dr);
    }

    public void testCompatibleWithChannel() throws Exception {
        Profile p = createProfileWithServer(user);
        DataResult dr = ProfileManager.compatibleWithChannel(p.getBaseChannel(), user.getOrg(), null);
        assertNotNull(dr);
        assertTrue(dr.size() > 0);
        assertTrue(dr.iterator().next() instanceof ProfileDto);

    }

    public static Profile createProfileWithServer(User userIn) throws Exception {
        Server server = ServerFactoryTest.createTestServer(userIn, true);
        Channel channel = ChannelFactoryTest.createTestChannel(userIn);
        server.addChannel(channel);
        TestUtils.saveAndFlush(server);

        return ProfileManager.createProfile(userIn, server, "Profile test name" + TestUtils.randomString(),
                "Profile test description");
    }

    public void testTwoVsOneKernelPackages() {
        /*
         *     public static List comparePackageLists(DataResult profiles,
        DataResult systems, String param) {
         */

        List a = new ArrayList();
        PackageListItem pli = new PackageListItem();
        pli.setIdCombo("500000341|258204");
        pli.setEvrId(new Long(258204));
        pli.setName("kernel");
        pli.setRelease("27.EL");
        pli.setNameId(new Long(500000341));
        pli.setEvr("kernel-2.4.21-27.EL");
        pli.setVersion("2.4.21");
        pli.setEpoch(null);
        a.add(pli);

        pli = new PackageListItem();
        pli.setIdCombo("500000341|000000");
        pli.setEvrId(new Long(000000));
        pli.setName("kernel");
        pli.setRelease("27.EL-bretm");
        pli.setNameId(new Long(500000341));
        pli.setEvr("kernel-2.4.22-27.EL-bretm");
        pli.setVersion("2.4.22");
        pli.setEpoch(null);
        a.add(pli);

        List b = new ArrayList();
        pli = new PackageListItem();
        pli.setIdCombo("500000341|258204");
        pli.setEvrId(new Long(258204));
        pli.setName("kernel");
        pli.setRelease("27.EL");
        pli.setNameId(new Long(500000341));
        pli.setEvr("kernel-2.4.21-27.EL");
        pli.setVersion("2.4.21");
        pli.setEpoch(null);
        b.add(pli);

        List diff = ProfileManager.comparePackageLists(new DataResult(a), new DataResult(b), "foo");

        assertEquals(1, diff.size());
        PackageMetadata pm = (PackageMetadata) diff.get(0);
        assertNotNull(pm);
        // assertEquals(PackageMetadata.KEY_OTHER_NEWER, pm.getComparisonAsInt());
        // Changed this to KEY_OTHER_ONLY because for systems with multiple revs of
        // same package we are now
        assertEquals(PackageMetadata.KEY_OTHER_ONLY, pm.getComparisonAsInt());
        assertEquals("kernel-2.4.22-27.EL-bretm", pm.getOther().getEvr());
    }

    public void testDifferingVersionsofSamePackage() {
        List a = new ArrayList();
        PackageListItem pli = new PackageListItem();
        pli.setIdCombo("500000341|000000");
        pli.setEvrId(new Long(000000));
        pli.setName("kernel");
        pli.setRelease("27.EL-bretm");
        pli.setNameId(new Long(500000341));
        pli.setEvr("kernel-2.4.22-27.EL-bretm");
        pli.setVersion("2.4.22");
        pli.setEpoch(null);
        a.add(pli);

        List b = new ArrayList();
        pli = new PackageListItem();
        pli.setIdCombo("500000341|258204");
        pli.setEvrId(new Long(258204));
        pli.setName("kernel");
        pli.setRelease("27.EL");
        pli.setNameId(new Long(500000341));
        pli.setEvr("kernel-2.4.21-27.EL");
        pli.setVersion("2.4.21");
        pli.setEpoch(null);
        b.add(pli);

        List diff = ProfileManager.comparePackageLists(new DataResult(a), new DataResult(b), "foo");
        assertEquals(1, diff.size());
        PackageMetadata pm = (PackageMetadata) diff.get(0);
        assertNotNull(pm);
        assertEquals(PackageMetadata.KEY_OTHER_NEWER, pm.getComparisonAsInt());
        assertEquals("kernel-2.4.22-27.EL-bretm", pm.getOther().getEvr());
        assertEquals("kernel-2.4.21-27.EL", pm.getSystem().getEvr());
    }

    public void testDifferentVersionsOfSamePackageReverseOrder() {
        List b = new ArrayList();
        PackageListItem pli = new PackageListItem();
        pli.setIdCombo("500000341|000000");
        pli.setEvrId(new Long(000000));
        pli.setName("kernel");
        pli.setRelease("27.EL-bretm");
        pli.setNameId(new Long(500000341));
        pli.setEvr("kernel-2.4.22-27.EL-bretm");
        pli.setVersion("2.4.22");
        pli.setEpoch(null);
        b.add(pli);

        List a = new ArrayList();
        pli = new PackageListItem();
        pli.setIdCombo("500000341|258204");
        pli.setEvrId(new Long(258204));
        pli.setName("kernel");
        pli.setRelease("27.EL");
        pli.setNameId(new Long(500000341));
        pli.setEvr("kernel-2.4.21-27.EL");
        pli.setVersion("2.4.21");
        pli.setEpoch(null);
        a.add(pli);

        List diff = ProfileManager.comparePackageLists(new DataResult(a), new DataResult(b), "foo");
        assertEquals(1, diff.size());
        PackageMetadata pm = (PackageMetadata) diff.get(0);
        assertNotNull(pm);
        assertEquals(PackageMetadata.KEY_THIS_NEWER, pm.getComparisonAsInt());
        assertEquals("kernel-2.4.22-27.EL-bretm", pm.getSystem().getEvr());
        assertEquals("kernel-2.4.21-27.EL", pm.getOther().getEvr());
    }

    public void testDifferingEpochsofSamePackage() {
        // this test will perform a package comparison between 2 packages where
        // the epochs in those packages vary, including null values

        String[] pkg1Epochs = { null, "0", null, "0" };
        String[] pkg2Epochs = { null, null, "0", "0" };

        List<PackageListItem> a = new ArrayList<PackageListItem>();
        PackageListItem pli1 = new PackageListItem();
        pli1.setIdCombo("500000341|000000");
        pli1.setEvrId(new Long(000000));
        pli1.setName("kernel");
        pli1.setRelease("27.EL-bretm");
        pli1.setNameId(new Long(500000341));
        pli1.setEvr("kernel-2.4.22-27.EL-bretm");
        pli1.setVersion("2.4.22");

        List<PackageListItem> b = new ArrayList<PackageListItem>();
        PackageListItem pli2 = new PackageListItem();
        pli2.setIdCombo("500000341|258204");
        pli2.setEvrId(new Long(258204));
        pli2.setName("kernel");
        pli2.setRelease("27.EL");
        pli2.setNameId(new Long(500000341));
        pli2.setEvr("kernel-2.4.21-27.EL");
        pli2.setVersion("2.4.21");

        for (int i = 0; i < pkg1Epochs.length; i++) {
            pli1.setEpoch(pkg1Epochs[i]);
            pli2.setEpoch(pkg2Epochs[i]);

            a.clear();
            a.add(pli1);
            b.clear();
            b.add(pli2);

            List diff = ProfileManager.comparePackageLists(new DataResult(a), new DataResult(b), "foo");
            assertEquals(1, diff.size());
            PackageMetadata pm = (PackageMetadata) diff.get(0);
            assertNotNull(pm);
            assertEquals(PackageMetadata.KEY_OTHER_NEWER, pm.getComparisonAsInt());
            assertEquals("kernel-2.4.22-27.EL-bretm", pm.getOther().getEvr());
            assertEquals(pkg1Epochs[i], pm.getOther().getEpoch());
            assertEquals("kernel-2.4.21-27.EL", pm.getSystem().getEvr());
            assertEquals(pkg2Epochs[i], pm.getSystem().getEpoch());
        }
    }

    public static PackageListItem createItem(String evrString, int nameId) {
        PackageListItem pli = new PackageListItem();
        String[] evr = StringUtils.split(evrString, "-");
        pli.setName(evr[0]);
        pli.setVersion(evr[1]);
        pli.setRelease(evr[2]);
        pli.setEvrId(new Long(evrString.hashCode()));
        pli.setIdCombo(nameId + "|" + evrString.hashCode());
        pli.setEvr(evrString);
        pli.setNameId(new Long(nameId));
        return pli;
    }

    public void testMorePackagesInProfile() {
        List profileList = new ArrayList();
        profileList.add(createItem("kernel-2.4.21-EL-mmccune", 500341));
        profileList.add(createItem("kernel-2.4.22-EL-mmccune", 500341));
        profileList.add(createItem("kernel-2.4.23-EL-mmccune", 500341));
        profileList.add(createItem("other-2.4.23-EL-mmccune", 500400));

        List systemList = new ArrayList();
        systemList.add(createItem("kernel-2.4.23-EL-mmccune", 500341));

        List diff = ProfileManager.comparePackageLists(new DataResult(profileList), new DataResult(systemList),
                "system");
        assertEquals(3, diff.size());

    }

    public void testMorePackagesInSystem() {
        List profileList = new ArrayList();
        profileList.add(createItem("kernel-2.4.23-EL-mmccune", 500341));

        List systemList = new ArrayList();
        systemList.add(createItem("kernel-2.4.21-EL-mmccune", 500341));
        systemList.add(createItem("kernel-2.4.22-EL-mmccune", 500341));
        systemList.add(createItem("kernel-2.4.23-EL-mmccune", 500341));

        List diff = ProfileManager.comparePackageLists(new DataResult(profileList), new DataResult(systemList),
                "system");
        assertEquals(2, diff.size());
    }

    public static PackageListItem createPackageListItem(String evrString, int nameId) {
        PackageListItem pli = new PackageListItem();
        String[] evr = StringUtils.split(evrString, "-");
        pli.setName(evr[0]);
        pli.setVersion(evr[1]);
        pli.setRelease(evr[2]);
        pli.setEvrId(new Long(evrString.hashCode()));
        pli.setIdCombo(nameId + "|" + evrString.hashCode());
        pli.setEvr(evrString);
        pli.setNameId(new Long(nameId));
        PackageArch pa = PackageFactory.lookupPackageArchByLabel("x86_64");
        pli.setArch(pa.getLabel());
        pli.setArchId(pa.getId());
        return pli;
    }

    public void testIdenticalPackages() {
        List a = new ArrayList();
        PackageListItem pli = new PackageListItem();
        pli.setIdCombo("500000341|000000");
        pli.setEvrId(new Long(000000));
        pli.setName("kernel");
        pli.setRelease("27.EL-bretm");
        pli.setNameId(new Long(500000341));
        pli.setEvr("kernel-2.4.22-27.EL-bretm");
        pli.setVersion("2.4.22");
        pli.setEpoch(null);
        a.add(pli);

        List b = new ArrayList();
        pli = new PackageListItem();
        pli.setIdCombo("500000341|000000");
        pli.setEvrId(new Long(000000));
        pli.setName("kernel");
        pli.setRelease("27.EL-bretm");
        pli.setNameId(new Long(500000341));
        pli.setEvr("kernel-2.4.22-27.EL-bretm");
        pli.setVersion("2.4.22");
        pli.setEpoch(null);
        b.add(pli);

        List diff = ProfileManager.comparePackageLists(new DataResult(a), new DataResult(b), "foo");
        assertEquals(0, diff.size());
    }

    public void testVzlatkinTest() {
        List a = new ArrayList();
        PackageListItem pli = new PackageListItem();
        pli.setIdCombo("390|2069");
        pli.setEvrId(new Long(2069));
        pli.setName("kernel");
        pli.setRelease("5.0.3.EL");
        pli.setNameId(new Long(390));
        pli.setEvr("pkg1");
        pli.setVersion("2.6.9");
        pli.setEpoch(null);
        pli.setArch(null);
        a.add(pli);

        pli = new PackageListItem();
        pli.setIdCombo("390|1628");
        pli.setEvrId(new Long(1628));
        pli.setName("kernel");
        pli.setRelease("5.EL");
        pli.setNameId(new Long(390));
        pli.setEvr("pkg2");
        pli.setVersion("2.6.9");
        pli.setEpoch(null);
        pli.setArch(null);
        a.add(pli);

        pli = new PackageListItem();
        pli.setIdCombo("1620|2069");
        pli.setEvrId(new Long(2069));
        pli.setName("kernel-devel");
        pli.setRelease("5.0.3.EL");
        pli.setNameId(new Long(1620));
        pli.setEvr("pkg3");
        pli.setVersion("2.6.9");
        pli.setEpoch(null);
        pli.setArch(null);
        a.add(pli);

        pli = new PackageListItem();
        pli.setIdCombo("1620|1628");
        pli.setEvrId(new Long(1628));
        pli.setName("kernel-devel");
        pli.setRelease("5.EL");
        pli.setNameId(new Long(1620));
        pli.setEvr("pkg4");
        pli.setVersion("2.6.9");
        pli.setEpoch(null);
        pli.setArch(null);
        a.add(pli);

        pli = new PackageListItem();
        pli.setIdCombo("398|1629");
        pli.setEvrId(new Long(1629));
        pli.setName("kernel-utils");
        pli.setRelease("13.1.48");
        pli.setNameId(new Long(398));
        pli.setEvr("pkg5");
        pli.setVersion("2.4");
        pli.setEpoch("1");
        pli.setArch(null);
        a.add(pli);

        // SETUP B
        List b = new ArrayList();
        pli = new PackageListItem();
        pli.setIdCombo(null);
        pli.setEvrId(new Long(1628));
        pli.setName("kernel");
        pli.setRelease("5.EL");
        pli.setNameId(new Long(390));
        pli.setEvr("pkg1b");
        pli.setVersion("2.6.9");
        pli.setEpoch(null);
        pli.setArch(null);
        b.add(pli);

        pli = new PackageListItem();
        pli.setIdCombo(null);
        pli.setEvrId(new Long(1628));
        pli.setName("kernel-devel");
        pli.setRelease("5.EL");
        pli.setNameId(new Long(1620));
        pli.setEvr("pkg2b");
        pli.setVersion("2.6.9");
        pli.setEpoch(null);
        pli.setArch(null);
        b.add(pli);

        pli = new PackageListItem();
        pli.setIdCombo(null);
        pli.setEvrId(new Long(1629));
        pli.setName("kernel-utils");
        pli.setRelease("13.1.48");
        pli.setNameId(new Long(398));
        pli.setEvr("pkg3b");
        pli.setVersion("2.4");
        pli.setEpoch("1");
        pli.setArch(null);
        b.add(pli);

        List diff = ProfileManager.comparePackageLists(new DataResult(a), new DataResult(b), "foo");
        // This used to assert: assertEquals(0, diff.size());
        // but we now support showing what older packages exist on a system
        assertEquals(2, diff.size());

    }

    public void testBz204345() throws Exception {
        // kernel-2.6.9-22.EL
        // kernel-2.6.9-42.0.2.EL

        List serverList = new ArrayList();
        PackageListItem pli3 = new PackageListItem();
        pli3.setIdCombo("500000341|000000");
        pli3.setEvrId(new Long(000000));
        pli3.setName("kernel");
        pli3.setRelease("42.0.2.EL");
        pli3.setNameId(new Long(500000341));
        pli3.setEvr("kernel-2.6.9-42.0.2.EL");
        pli3.setVersion("2.6.9");
        pli3.setEpoch(null);
        serverList.add(pli3);

        List otherServerList = new ArrayList();
        PackageListItem pli = new PackageListItem();
        pli.setIdCombo("500000341|000001");
        pli.setEvrId(new Long(000000));
        pli.setName("kernel");
        pli.setRelease("22.EL");
        pli.setNameId(new Long(500000341));
        pli.setEvr("kernel-2.6.9-22.EL");
        pli.setVersion("2.6.9");
        pli.setEpoch(null);
        otherServerList.add(pli);

        PackageListItem pli2 = new PackageListItem();
        pli2.setIdCombo("500000341|000000");
        pli2.setEvrId(new Long(000000));
        pli2.setName("kernel");
        pli2.setRelease("42.0.2.EL");
        pli2.setNameId(new Long(500000341));
        pli2.setEvr("kernel-2.6.9-42.0.2.EL");
        pli2.setVersion("2.6.9");
        pli2.setEpoch(null);
        otherServerList.add(pli2);

        List diff = ProfileManager.comparePackageLists(new DataResult(otherServerList), new DataResult(serverList),
                "foo");
        assertEquals(1, diff.size());

        PackageMetadata pm = (PackageMetadata) diff.get(0);
        assertNotNull(pm);
        assertEquals("kernel-2.6.9-22.EL", pm.getOther().getEvr());
        assertEquals(PackageMetadata.KEY_OTHER_ONLY, pm.getComparisonAsInt());
        // assertEquals("kernel-2.4.21-27.EL", pm.getSystem().getEvr());
    }

    public void testGetChildChannelsNeededForProfile() throws Exception {
        Server server = ServerTestUtils.createTestSystem(user);
        Channel childChannel1 = ChannelTestUtils.createChildChannel(server.getCreator(), server.getBaseChannel());

        PackageManagerTest.addPackageToSystemAndChannel("child1-package1", server, childChannel1);
        PackageManagerTest.addPackageToSystemAndChannel("child1-package2", server, childChannel1);

        Channel childChannel2 = ChannelTestUtils.createChildChannel(server.getCreator(), server.getBaseChannel());
        PackageManagerTest.addPackageToSystemAndChannel("child2-package1", server, childChannel2);
        PackageManagerTest.addPackageToSystemAndChannel("child2-package2", server, childChannel2);

        Profile p = ProfileManager.createProfile(server.getCreator(), server,
                "Profile test name" + TestUtils.randomString(), "test desc");
        ProfileManager.copyFrom(server, p);

        List channels = ProfileManager.getChildChannelsNeededForProfile(server.getCreator(),
                server.getBaseChannel(), p);

        assertEquals(2, channels.size());
        assertTrue(channels.contains(childChannel1));
        assertTrue(channels.contains(childChannel2));

        Profile p2 = ProfileManager.createProfile(server.getCreator(), server,
                "Profile test name" + TestUtils.randomString(), "test desc");

        channels = ProfileManager.getChildChannelsNeededForProfile(server.getCreator(), server.getBaseChannel(),
                p2);
        assertEquals(0, channels.size());

    }
}