private void prepareCP3(final InstalledIdentity installedIdentity) throws IOException, Exception {
final String cp3ID = "CP3";
final File cp3Dir = mkdir(tempDir, cp3ID);
cp3StandaloneModified = ContentModificationUtils.modifyMisc(cp3Dir, cp3ID, "updated by cp3", standaloneSh, "bin", standaloneSh.getName());
cp3BaseModuleModified = ContentModificationUtils.modifyModule(cp3Dir, baseCP3ID, moduleName, cp2BaseModuleModified.getItem().getContentHash(), "cp3 content");
final File absentModuleXml = IoUtils.newFile(installedIdentity.getLayer("base").loadTargetInfo()
.getDirectoryStructure().getModulePatchDirectory(baseCP2ID), "org", "jboss", "test2", "main", "module.xml");
cp3BaseModule2Added = ContentModificationUtils.modifyModule(cp3Dir, baseCP3ID, moduleName + "2",
HashUtils.hashFile(absentModuleXml), "cp3 content");
final ContentModification cp3AddedByCP1RemovedByCP3Removed = ContentModificationUtils.removeMisc(addedByCP1RemovedByCP3, "bin", addedByCP1RemovedByCP3.getName());
cp3 = PatchBuilder.create()
.setPatchId(cp3ID)
.setDescription(randomString())
.upgradeIdentity(installedIdentity.getIdentity().getName(), productConfig.getProductVersion() + "_CP2", productConfig.getProductVersion() + "_CP3")
.getParent()
.upgradeElement(baseCP3ID, BASE, false)
.addContentModification(cp3BaseModuleModified)
.addContentModification(cp3BaseModule2Added)
.getParent()
.addContentModification(cp3StandaloneModified)
.addContentModification(cp3AddedByCP1RemovedByCP3Removed)
.build();
createPatchXMLFile(cp3Dir, cp3);
cp3Zip = createZippedPatchFile(cp3Dir, cp3ID);
}