use of io.fabric8.mockwebserver.Context in project fabric8 by jboss-fuse.
the class ProtectedTest method updateEtcConfigReferences.
@Test
public void updateEtcConfigReferences() throws IOException {
File etcConfig = new File(git.getRepository().getWorkTree(), "etc/config.properties");
FileUtils.copyFile(new File("src/test/resources/files/etc/config.properties"), etcConfig);
List<BundleUpdate> bundleUpdates = new LinkedList<>();
bundleUpdates.add(BundleUpdate.from("mvn:org.eclipse/osgi/3.9.1-v20140110-1610").to("mvn:org.eclipse/osgi/3.9.1-v20151231-2359"));
bundleUpdates.add(BundleUpdate.from("mvn:org.apache.felix/org.apache.felix.framework/4.4.1").to("mvn:org.apache.felix/org.apache.felix.framework/4.4.2"));
Map<String, String> updates = Utils.collectLocationUpdates(bundleUpdates);
new GitPatchManagementServiceImpl(context).updateReferences(git, "etc/config.properties", "${karaf.default.repository}/", updates, false);
String expected = FileUtils.readFileToString(new File("src/test/resources/files/etc/config.properties.updated"));
String changed = FileUtils.readFileToString(etcConfig);
assertThat(changed, equalTo(expected));
}
use of io.fabric8.mockwebserver.Context in project fabric8 by jboss-fuse.
the class ProtectedTest method updateBinAdminBatReferences.
@Test
public void updateBinAdminBatReferences() throws IOException {
File binAdmin = new File(git.getRepository().getWorkTree(), "bin/admin.bat");
FileUtils.copyFile(new File("src/test/resources/files/bin/admin.bat"), binAdmin);
List<BundleUpdate> bundleUpdates = new LinkedList<>();
bundleUpdates.add(BundleUpdate.from("mvn:org.apache.karaf.admin/org.apache.karaf.admin.core/2.4.0.redhat-620133").to("mvn:org.apache.karaf.admin/org.apache.karaf.admin.core/2.4.0.redhat-630134"));
Map<String, String> updates = Utils.collectLocationUpdates(bundleUpdates);
new GitPatchManagementServiceImpl(context).updateReferences(git, "bin/admin.bat", "system/", updates, true);
String expected = FileUtils.readFileToString(new File("src/test/resources/files/bin/admin.bat.updated"));
String changed = FileUtils.readFileToString(binAdmin);
assertThat(changed, equalTo(expected));
}
use of io.fabric8.mockwebserver.Context in project fabric8 by jboss-fuse.
the class ServiceImpl method activate.
@Activate
void activate(ComponentContext componentContext) throws IOException {
// Use system bundle' bundle context to avoid running into
// "Invalid BundleContext" exceptions when updating bundles
this.bundleContext = componentContext.getBundleContext().getBundle(0).getBundleContext();
String dir = this.bundleContext.getProperty(NEW_PATCH_LOCATION);
if (dir != null) {
patchDir = new File(dir);
} else {
dir = this.bundleContext.getProperty(PATCH_LOCATION);
if (dir != null) {
patchDir = new File(dir);
} else {
if (patchManagement.isStandaloneChild()) {
patchDir = new File(System.getProperty("karaf.home"), "patches");
}
if (patchDir == null) {
// only now fallback to datafile of system bundle
patchDir = this.bundleContext.getDataFile("patches");
}
}
}
if (!patchDir.isDirectory()) {
patchDir.mkdirs();
if (!patchDir.isDirectory()) {
throw new PatchException("Unable to create patch folder");
}
}
this.karafHome = new File(bundleContext.getProperty("karaf.home"));
this.repository = new File(bundleContext.getProperty("karaf.default.repository"));
helper = new OSGiPatchHelper(karafHome, bundleContext);
load(true);
resumePendingPatchTasks();
}
use of io.fabric8.mockwebserver.Context in project fabric8 by jboss-fuse.
the class ServiceImplTest method bundleUpdatesInPatch.
@Test
public void bundleUpdatesInPatch() throws Exception {
BundleContext context = EasyMock.createMock(BundleContext.class);
Bundle bundle0 = createMock(Bundle.class);
expect(bundle0.getBundleContext()).andReturn(context);
replay(bundle0);
expect(context.getProperty("karaf.home")).andReturn("target/bundleUpdatesInPatch").anyTimes();
expect(context.getProperty("karaf.base")).andReturn("target/bundleUpdatesInPatch").anyTimes();
expect(context.getProperty("karaf.data")).andReturn("target/bundleUpdatesInPatch/data").anyTimes();
expect(context.getProperty("karaf.name")).andReturn("root").anyTimes();
expect(context.getProperty("karaf.instances")).andReturn("instances").anyTimes();
expect(context.getProperty("karaf.default.repository")).andReturn("system");
expect(context.getProperty("fuse.patch.location")).andReturn(null);
expect(context.getBundle(0)).andReturn(bundle0);
replay(context);
ServiceImpl service = new ServiceImpl();
Method m = service.getClass().getDeclaredMethod("bundleUpdatesInPatch", Patch.class, Bundle[].class, Map.class, ServiceImpl.BundleVersionHistory.class, Map.class, PatchKind.class, Map.class, List.class);
m.setAccessible(true);
Field f = service.getClass().getDeclaredField("helper");
f.setAccessible(true);
f.set(service, new OSGiPatchHelper(new File("target/bundleUpdatesInPatch"), context) {
@Override
public String[] getBundleIdentity(String url) throws IOException {
Artifact a = Utils.mvnurlToArtifact(url, false);
return new String[] { a.getArtifactId(), a.getVersion() };
}
});
PatchData pd = new PatchData("patch-x");
// for these two, bundle.getLocation() will return matching location
pd.getBundles().add("mvn:io.fabric8/pax-romana/1.0.1");
pd.getBundles().add("mvn:io.fabric8/pax-hellenica/1.0.1/jar");
// for these two, bundle.getLocation() will return non-matching location
pd.getBundles().add("mvn:io.fabric8/pax-bohemia/1.0.1");
pd.getBundles().add("mvn:io.fabric8/pax-pomerania/1.0.1/jar");
// for these two, bundle.getLocation() will return matching location
pd.getBundles().add("mvn:io.fabric8/pax-avaria/1.0.1/jar/uber");
pd.getBundles().add("mvn:io.fabric8/pax-mazovia/1.0.1//uber");
// for these two, bundle.getLocation() will return non-matching location
pd.getBundles().add("mvn:io.fabric8/pax-novgorod/1.0.1/jar/uber");
pd.getBundles().add("mvn:io.fabric8/pax-castile/1.0.1//uber");
f = pd.getClass().getDeclaredField("versionRanges");
f.setAccessible(true);
f.set(pd, new HashMap<>());
Patch patch = new Patch(pd, null);
Bundle[] bundles = new Bundle[8];
bundles[0] = bundle("mvn:io.fabric8/pax-romana/1.0.0");
bundles[1] = bundle("mvn:io.fabric8/pax-hellenica/1.0.0/jar");
bundles[2] = bundle("mvn:io.fabric8/pax-bohemia/1.0.0/jar");
bundles[3] = bundle("mvn:io.fabric8/pax-pomerania/1.0.0");
bundles[4] = bundle("mvn:io.fabric8/pax-avaria/1.0.0/jar/uber");
bundles[5] = bundle("mvn:io.fabric8/pax-mazovia/1.0.0//uber");
bundles[6] = bundle("mvn:io.fabric8/pax-novgorod/1.0.0//uber");
bundles[7] = bundle("mvn:io.fabric8/pax-castile/1.0.0/jar/uber");
Object _list = m.invoke(service, patch, bundles, new HashMap<>(), new ServiceImpl.BundleVersionHistory(new HashMap<String, Patch>()), new HashMap<>(), PatchKind.NON_ROLLUP, new HashMap<>(), null);
List<BundleUpdate> list = (List<BundleUpdate>) _list;
assertThat(list.size(), equalTo(8));
assertThat(list.get(0).getPreviousLocation(), equalTo("mvn:io.fabric8/pax-romana/1.0.0"));
assertThat(list.get(1).getPreviousLocation(), equalTo("mvn:io.fabric8/pax-hellenica/1.0.0/jar"));
assertThat(list.get(2).getPreviousLocation(), equalTo("mvn:io.fabric8/pax-bohemia/1.0.0/jar"));
assertThat(list.get(3).getPreviousLocation(), equalTo("mvn:io.fabric8/pax-pomerania/1.0.0"));
assertThat(list.get(4).getPreviousLocation(), equalTo("mvn:io.fabric8/pax-avaria/1.0.0/jar/uber"));
assertThat(list.get(5).getPreviousLocation(), equalTo("mvn:io.fabric8/pax-mazovia/1.0.0//uber"));
assertThat(list.get(6).getPreviousLocation(), equalTo("mvn:io.fabric8/pax-novgorod/1.0.0//uber"));
assertThat(list.get(7).getPreviousLocation(), equalTo("mvn:io.fabric8/pax-castile/1.0.0/jar/uber"));
assertThat(list.get(0).getNewLocation(), equalTo("mvn:io.fabric8/pax-romana/1.0.1"));
assertThat(list.get(1).getNewLocation(), equalTo("mvn:io.fabric8/pax-hellenica/1.0.1/jar"));
assertThat(list.get(2).getNewLocation(), equalTo("mvn:io.fabric8/pax-bohemia/1.0.1"));
assertThat(list.get(3).getNewLocation(), equalTo("mvn:io.fabric8/pax-pomerania/1.0.1/jar"));
assertThat(list.get(4).getNewLocation(), equalTo("mvn:io.fabric8/pax-avaria/1.0.1/jar/uber"));
assertThat(list.get(5).getNewLocation(), equalTo("mvn:io.fabric8/pax-mazovia/1.0.1//uber"));
assertThat(list.get(6).getNewLocation(), equalTo("mvn:io.fabric8/pax-novgorod/1.0.1/jar/uber"));
assertThat(list.get(7).getNewLocation(), equalTo("mvn:io.fabric8/pax-castile/1.0.1//uber"));
// ---
Repository repository = createMock(Repository.class);
File tmp = new File("target/bundleUpdatesInPatch/" + UUID.randomUUID().toString());
tmp.mkdirs();
File startupProperties = new File(tmp, "etc/startup.properties");
FileUtils.copyFile(new File("src/test/resources/uber-startup.properties"), startupProperties);
expect(repository.getWorkTree()).andReturn(tmp).anyTimes();
replay(repository);
Git fork = createMock(Git.class);
expect(fork.getRepository()).andReturn(repository).anyTimes();
replay(fork);
GitPatchManagementServiceImpl gitPatchManagementService = new GitPatchManagementServiceImpl(context);
m = gitPatchManagementService.getClass().getDeclaredMethod("updateFileReferences", Git.class, PatchData.class, List.class);
m.setAccessible(true);
m.invoke(gitPatchManagementService, fork, pd, list);
try (FileReader reader = new FileReader(startupProperties)) {
Properties startup = new Properties();
startup.load(reader);
assertTrue(startup.containsKey("io/fabric8/pax-romana/1.0.1/pax-romana-1.0.1.jar"));
assertTrue(startup.containsKey("io/fabric8/pax-hellenica/1.0.1/pax-hellenica-1.0.1.jar"));
assertTrue(startup.containsKey("io/fabric8/pax-bohemia/1.0.1/pax-bohemia-1.0.1.jar"));
assertTrue(startup.containsKey("io/fabric8/pax-pomerania/1.0.1/pax-pomerania-1.0.1.jar"));
assertTrue(startup.containsKey("io/fabric8/pax-avaria/1.0.1/pax-avaria-1.0.1-uber.jar"));
assertTrue(startup.containsKey("io/fabric8/pax-mazovia/1.0.1/pax-mazovia-1.0.1-uber.jar"));
assertTrue(startup.containsKey("io/fabric8/pax-novgorod/1.0.1/pax-novgorod-1.0.1-uber.jar"));
assertTrue(startup.containsKey("io/fabric8/pax-castile/1.0.1/pax-castile-1.0.1-uber.jar"));
assertFalse(startup.containsKey("io/fabric8/pax-romana/1.0.0/pax-romana-1.0.0.jar"));
assertFalse(startup.containsKey("io/fabric8/pax-hellenica/1.0.0/pax-hellenica-1.0.0.jar"));
assertFalse(startup.containsKey("io/fabric8/pax-bohemia/1.0.0/pax-bohemia-1.0.0.jar"));
assertFalse(startup.containsKey("io/fabric8/pax-pomerania/1.0.0/pax-pomerania-1.0.0.jar"));
assertFalse(startup.containsKey("io/fabric8/pax-avaria/1.0.0/pax-avaria-1.0.0-uber.jar"));
assertFalse(startup.containsKey("io/fabric8/pax-mazovia/1.0.0/pax-mazovia-1.0.0-uber.jar"));
assertFalse(startup.containsKey("io/fabric8/pax-novgorod/1.0.0/pax-novgorod-1.0.0-uber.jar"));
assertFalse(startup.containsKey("io/fabric8/pax-castile/1.0.0/pax-castile-1.0.0-uber.jar"));
}
}
use of io.fabric8.mockwebserver.Context in project docker-maven-plugin by fabric8io.
the class BuildService method buildArchive.
/**
* Create docker archive for building image
*
* @param imageConfiguration image configuration
* @param buildContext docker build context
* @param archivePath build archive only flag, it can have values TRUE or FALSE and also
* it can hold path to archive where it might get copied over
* @return tarball for docker image
* @throws MojoExecutionException in case any exception comes during building tarball
*/
public File buildArchive(ImageConfiguration imageConfiguration, BuildContext buildContext, String archivePath) throws MojoExecutionException {
String imageName = imageConfiguration.getName();
ImageName.validate(imageName);
BuildImageConfiguration buildConfig = imageConfiguration.getBuildConfiguration();
MojoParameters params = buildContext.getMojoParameters();
if (buildConfig.getDockerArchive() != null) {
return buildConfig.getAbsoluteDockerTarPath(params);
}
long time = System.currentTimeMillis();
File dockerArchive = archiveService.createArchive(imageName, buildConfig, params, log);
log.info("%s: Created %s in %s", imageConfiguration.getDescription(), dockerArchive.getName(), EnvUtil.formatDurationTill(time));
// Copy created tarball to directory if specified
try {
copyDockerArchive(imageConfiguration, dockerArchive, archivePath);
} catch (IOException exception) {
throw new MojoExecutionException("Error while copying created tar to specified buildArchive path: " + archivePath, exception);
}
return dockerArchive;
}
Aggregations