Best Testcontainers-java code snippet using org.testcontainers.utility.ResourceReaper.removeImage
Source:ResourceReaper.java
...203 */204 public synchronized void performCleanup() {205 registeredContainers.forEach(this::stopContainer);206 registeredNetworks.forEach(this::removeNetwork);207 registeredImages.forEach(this::removeImage);208 }209 /**210 * Register a filter to be cleaned up.211 *212 * @param filter the filter213 */214 public void registerFilterForCleanup(List<Map.Entry<String, String>> filter) {215 synchronized (DEATH_NOTE) {216 DEATH_NOTE.add(filter);217 DEATH_NOTE.notifyAll();218 }219 }220 /**221 * Register a container to be cleaned up, either on explicit call to stopAndRemoveContainer, or at JVM shutdown.222 *223 * @param containerId the ID of the container224 * @param imageName the image name of the container (used for logging)225 */226 public void registerContainerForCleanup(String containerId, String imageName) {227 setHook();228 registeredContainers.put(containerId, imageName);229 }230 /**231 * Stop a potentially running container and remove it, including associated volumes.232 *233 * @param containerId the ID of the container234 */235 public void stopAndRemoveContainer(String containerId) {236 stopContainer(containerId, registeredContainers.get(containerId));237 registeredContainers.remove(containerId);238 }239 /**240 * Stop a potentially running container and remove it, including associated volumes.241 *242 * @param containerId the ID of the container243 * @param imageName the image name of the container (used for logging)244 */245 public void stopAndRemoveContainer(String containerId, String imageName) {246 stopContainer(containerId, imageName);247 registeredContainers.remove(containerId);248 }249 private void stopContainer(String containerId, String imageName) {250 boolean running;251 try {252 InspectContainerResponse containerInfo = dockerClient.inspectContainerCmd(containerId).exec();253 running = containerInfo.getState() != null && Boolean.TRUE.equals(containerInfo.getState().getRunning());254 } catch (NotFoundException e) {255 LOGGER.trace("Was going to stop container but it apparently no longer exists: {}", containerId);256 return;257 } catch (Exception e) {258 LOGGER.trace("Error encountered when checking container for shutdown (ID: {}) - it may not have been stopped, or may already be stopped. Root cause: {}",259 containerId,260 Throwables.getRootCause(e).getMessage());261 return;262 }263 if (running) {264 try {265 LOGGER.trace("Stopping container: {}", containerId);266 dockerClient.killContainerCmd(containerId).exec();267 LOGGER.trace("Stopped container: {}", imageName);268 } catch (Exception e) {269 LOGGER.trace("Error encountered shutting down container (ID: {}) - it may not have been stopped, or may already be stopped. Root cause: {}",270 containerId,271 Throwables.getRootCause(e).getMessage());272 }273 }274 try {275 dockerClient.inspectContainerCmd(containerId).exec();276 } catch (Exception e) {277 LOGGER.trace("Was going to remove container but it apparently no longer exists: {}", containerId);278 return;279 }280 try {281 LOGGER.trace("Removing container: {}", containerId);282 dockerClient.removeContainerCmd(containerId).withRemoveVolumes(true).withForce(true).exec();283 LOGGER.debug("Removed container and associated volume(s): {}", imageName);284 } catch (Exception e) {285 LOGGER.trace("Error encountered shutting down container (ID: {}) - it may not have been stopped, or may already be stopped. Root cause: {}",286 containerId,287 Throwables.getRootCause(e).getMessage());288 }289 }290 /**291 * Register a network to be cleaned up at JVM shutdown.292 *293 * @param id the ID of the network294 */295 public void registerNetworkIdForCleanup(String id) {296 setHook();297 registeredNetworks.add(id);298 }299 /**300 * @param networkName the name of the network301 * @deprecated see {@link ResourceReaper#registerNetworkIdForCleanup(String)}302 */303 @Deprecated304 public void registerNetworkForCleanup(String networkName) {305 try {306 // Try to find the network by name, so that we can register its ID for later deletion307 dockerClient.listNetworksCmd()308 .withNameFilter(networkName)309 .exec()310 .forEach(network -> registerNetworkIdForCleanup(network.getId()));311 } catch (Exception e) {312 LOGGER.trace("Error encountered when looking up network (name: {})", networkName);313 }314 }315 /**316 * Removes a network by ID.317 * @param id318 */319 public void removeNetworkById(String id) {320 removeNetwork(id);321 }322 /**323 * Removes a network by ID.324 * @param identifier325 * @deprecated see {@link ResourceReaper#removeNetworkById(String)}326 */327 @Deprecated328 public void removeNetworks(String identifier) {329 removeNetworkById(identifier);330 }331 private void removeNetwork(String id) {332 try {333 List<Network> networks;334 try {335 // Try to find the network if it still exists336 // Listing by ID first prevents docker-java logging an error if we just go blindly into removeNetworkCmd337 networks = dockerClient.listNetworksCmd().withIdFilter(id).exec();338 } catch (Exception e) {339 LOGGER.trace("Error encountered when looking up network for removal (name: {}) - it may not have been removed", id);340 return;341 }342 // at this point networks should contain either 0 or 1 entries, depending on whether the network exists343 // using a for loop we essentially treat the network like an optional, only applying the removal if it exists344 for (Network network : networks) {345 try {346 dockerClient.removeNetworkCmd(network.getId()).exec();347 registeredNetworks.remove(network.getId());348 LOGGER.debug("Removed network: {}", id);349 } catch (Exception e) {350 LOGGER.trace("Error encountered removing network (name: {}) - it may not have been removed", network.getName());351 }352 }353 } finally {354 registeredNetworks.remove(id);355 }356 }357 public void unregisterNetwork(String identifier) {358 registeredNetworks.remove(identifier);359 }360 public void unregisterContainer(String identifier) {361 registeredContainers.remove(identifier);362 }363 public void registerImageForCleanup(String dockerImageName) {364 setHook();365 registeredImages.add(dockerImageName);366 }367 private void removeImage(String dockerImageName) {368 LOGGER.trace("Removing image tagged {}", dockerImageName);369 try {370 dockerClient.removeImageCmd(dockerImageName).withForce(true).exec();371 } catch (Throwable e) {372 LOGGER.warn("Unable to delete image " + dockerImageName, e);373 }374 }375 private void setHook() {376 if (hookIsSet.compareAndSet(false, true)) {377 // If the JVM stops without containers being stopped, try and stop the container.378 Runtime.getRuntime().addShutdownHook(new Thread(DockerClientFactory.TESTCONTAINERS_THREAD_GROUP, this::performCleanup));379 }380 }381 static class FilterRegistry {382 @VisibleForTesting383 static final String ACKNOWLEDGMENT = "ACK";384 private final BufferedReader in;...
removeImage
Using AI Code Generation
1ResourceReaper.removeImage("testcontainers/ryuk:0.2.3")2ResourceReaper.removeImage("testcontainers/ryuk:0.2.2")3ResourceReaper.removeImage("testcontainers/ryuk:0.2.1")4ResourceReaper.removeImage("testcontainers/ryuk:0.2.0")5ResourceReaper.removeImage("testcontainers/ryuk:0.1.0")6ResourceReaper.removeImage("testcontainers/ryuk:0.0.1")7ResourceReaper.removeImage("testcontainers/ryuk:0.0.0")8ResourceReaper.removeImage("testcontainers/ryuk:0.1.1")9ResourceReaper.removeImage("testcontainers/ryuk:0.1.2")10ResourceReaper.removeImage("testcontainers/ryuk:0.1.3")11ResourceReaper.removeImage("testcontainers/ryuk:0.1.4")12ResourceReaper.removeImage("testcontainers/ryuk:0.1.5")13ResourceReaper.removeImage("testcontainers/ryuk:0.1.6")14ResourceReaper.removeImage("testcontainers/ryuk:0.1.7")15ResourceReaper.removeImage("testcontainers/ryuk:0.1.8")16ResourceReaper.removeImage("testcontainers/ryuk:0.1.9")17ResourceReaper.removeImage("testcontainers/ryuk:0.1.10")18ResourceReaper.removeImage("testcontainers/ryuk:0.1.11")19ResourceReaper.removeImage("testcontainers/ryuk:0.1.12")20ResourceReaper.removeImage("testcontainers/ryuk:0.1.13")21ResourceReaper.removeImage("testcontainers/ryuk:0.1.14")22ResourceReaper.removeImage("testcontainers/ryuk:0.1.15")23ResourceReaper.removeImage("testcontainers/ryuk:0.1.16")24ResourceReaper.removeImage("testcontainers/ryuk:0.1.17")25ResourceReaper.removeImage("testcontainers/ryuk:0.1.18")26ResourceReaper.removeImage("testcontainers/ryuk:0.1.19")27ResourceReaper.removeImage("testcontainers/ryuk:0.1.20")28ResourceReaper.removeImage("testcontainers/ryuk:
removeImage
Using AI Code Generation
1package org.testcontainers.utility;2import java.io.IOException;3import org.testcontainers.DockerClientFactory;4import org.testcontainers.utility.ResourceReaper;5public class ResourceReaperTest {6 public static void main(String[] args) throws IOException {7 ResourceReaper resourceReaper = new ResourceReaper();8 resourceReaper.removeImage("testcontainers/ryuk:0.3.0");9 }10}
removeImage
Using AI Code Generation
1import org.testcontainers.utility.ResourceReaper;2import org.testcontainers.utility.MountableFile;3import java.io.IOException;4{5 public static void main(String[] args) throws IOException, InterruptedException6 {7 ResourceReaper.instance().removeImage("mysql:5.7.21");8 ResourceReaper.instance().removeImage("mysql:5.7.21", true);9 }10}11import org.testcontainers.utility.ResourceReaper;12import org.testcontainers.utility.MountableFile;13import java.io.IOException;14{15 public static void main(String[] args) throws IOException, InterruptedException16 {17 ResourceReaper.instance().removeImage("mysql:5.7.21")
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!