ResourceType resourceType = new ResourceType("testSimpleBundle2Type", "plugin", ResourceCategory.SERVER, null);
BundleType bundleType = new BundleType("testSimpleBundle2BType", resourceType);
Repo repo = new Repo("test-bundle-two");
PackageType packageType = new PackageType("test-bundle-two", resourceType);
Bundle bundle = new Bundle("test-bundle-two", bundleType, repo, packageType);
BundleVersion bundleVersion = new BundleVersion("test-bundle-two", "2.5", bundle,
getRecipeFromFile("test-bundle-two.xml"));
BundleDestination destination = new BundleDestination(bundle, "testSimpleBundle2Dest", new ResourceGroup(
"testSimpleBundle2Group"), DEST_BASE_DIR_NAME, this.destDir.getAbsolutePath());
Configuration config = new Configuration();
String customPropName = "custom.prop";
String customPropValue = "ABC";
String onePropName = "one.prop";
String onePropValue = "111";
config.put(new PropertySimple(customPropName, customPropValue));
config.put(new PropertySimple(onePropName, onePropValue));
BundleDeployment deployment = new BundleDeployment();
deployment.setId(123);
deployment.setName("test bundle 2 deployment name");
deployment.setBundleVersion(bundleVersion);
deployment.setConfiguration(config);
deployment.setDestination(destination);
// copy the test archive file to the bundle files dir
FileUtil.copyFile(new File("src/test/resources/test-bundle-two-archive.zip"), new File(this.bundleFilesDir,
"test-bundle-two-archive.zip"));
// create test.properties file in the bundle files dir
File file1 = new File(this.bundleFilesDir, "test.properties");
Properties props = new Properties();
props.setProperty(customPropName, "@@" + customPropName + "@@");
FileOutputStream outputStream = new FileOutputStream(file1);
props.store(outputStream, "test.properties comment");
outputStream.close();
// if we are not to start clean, create some junk files that will need to be backed up and moved away
if (startClean == false) {
this.destDir.mkdirs();
File junk1 = new File(this.destDir, "junk1.properties");
Properties junkProps = new Properties();
junkProps.setProperty("junk1", "wot gorilla?");
FileOutputStream os = new FileOutputStream(junk1);
junkProps.store(os, "junk1.properties comment");
os.close();
File junk2 = new File(this.destDir, "junksubdir" + File.separatorChar + "junk2.properties");
junk2.getParentFile().mkdirs();
junkProps = new Properties();
junkProps.setProperty("junk2", "more junk");
os = new FileOutputStream(junk2);
junkProps.store(os, "junk2.properties comment");
os.close();
}
BundleDeployRequest request = new BundleDeployRequest();
request.setBundleFilesLocation(this.bundleFilesDir);
request.setResourceDeployment(createNewBundleDeployment(deployment));
request.setBundleManagerProvider(new MockBundleManagerProvider());
request.setAbsoluteDestinationDirectory(this.destDir);
BundleDeployResult results = plugin.deployBundle(request);
assertResultsSuccess(results);
// test that the prop was replaced in raw file test.properties
Properties realizedProps = new Properties();
loadProperties(realizedProps, new FileInputStream(new File(this.destDir, "config/test.properties")));
assert customPropValue.equals(realizedProps.getProperty(customPropName)) : "didn't replace prop";
// test that the archive was extracted properly. These are the files in the archive:
// zero-file.txt (content: "zero")
// one/one-file.txt (content: "@@one.prop@@") <-- recipe says this is to be replaced
// two/two-file.txt (content: "@@two.prop@@") <-- recipe does not say to replace this
File zeroFile = new File(this.destDir, "zero-file.txt");
File oneFile = new File(this.destDir, "one/one-file.txt");
File twoFile = new File(this.destDir, "two/two-file.txt");
assert zeroFile.exists() : "zero file missing";
assert oneFile.exists() : "one file missing";
assert twoFile.exists() : "two file missing";
assert readFile(zeroFile).startsWith("zero");
assert readFile(oneFile).startsWith(onePropValue);
assert readFile(twoFile).startsWith("@@two.prop@@");
DeploymentsMetadata metadata = new DeploymentsMetadata(this.destDir);
DeploymentProperties deploymentProps = metadata.getDeploymentProperties(deployment.getId());
assert deploymentProps.getDeploymentId() == deployment.getId();
assert deploymentProps.getBundleName().equals(bundle.getName());
assert deploymentProps.getBundleVersion().equals(bundleVersion.getVersion());
assert deploymentProps.getManageRootDir() == true;
DeploymentProperties currentProps = metadata.getCurrentDeploymentProperties();
assert deploymentProps.equals(currentProps);
DeploymentProperties previousProps = metadata.getPreviousDeploymentProperties(deployment.getId());
assert previousProps == null : "There should not be any previous deployment metadata";