How to use deepStart method of org.testcontainers.lifecycle.Startables class

Best Testcontainers-java code snippet using org.testcontainers.lifecycle.Startables.deepStart

Source:Startables.java Github

copy

Full Screen

...21 return thread;22 }23 });24 /**25 * @see #deepStart(Stream)26 */27 public CompletableFuture<Void> deepStart(Collection<? extends Startable> startables) {28 return deepStart((Iterable<? extends Startable>) startables);29 }30 /**31 * @see #deepStart(Stream)32 */33 public CompletableFuture<Void> deepStart(Iterable<? extends Startable> startables) {34 return deepStart(StreamSupport.stream(startables.spliterator(), false));35 }36 /**37 * Start every {@link Startable} recursively and asynchronously and join on the result.38 *39 * Performance note:40 * The method uses and returns {@link CompletableFuture}s to resolve as many {@link Startable}s at once as possible.41 * This way, for the following graph:42 * / b \43 * a e44 * c /45 * d /46 * "a", "c" and "d" will resolve in parallel, then "b".47 *48 * If we would call blocking {@link Startable#start()}, "e" would wait for "b", "b" for "a", and only then "c", and then "d".49 * But, since "c" and "d" are independent from "a", there is no point in waiting for "a" to be resolved first.50 *51 * @param startables a {@link Stream} of {@link Startable}s to start and scan for transitive dependencies.52 * @return a {@link CompletableFuture} that resolves once all {@link Startable}s have started.53 */54 public CompletableFuture<Void> deepStart(Stream<? extends Startable> startables) {55 return deepStart(new HashMap<>(), startables);56 }57 /**58 *59 * @param started an intermediate storage for already started {@link Startable}s to prevent multiple starts.60 * @param startables a {@link Stream} of {@link Startable}s to start and scan for transitive dependencies.61 */62 private CompletableFuture<Void> deepStart(Map<Startable, CompletableFuture<Void>> started, Stream<? extends Startable> startables) {63 CompletableFuture[] futures = startables64 .sequential()65 .map(it -> {66 // avoid a recursive update in `computeIfAbsent`67 Map<Startable, CompletableFuture<Void>> subStarted = new HashMap<>(started);68 CompletableFuture<Void> future = started.computeIfAbsent(it, startable -> {69 return deepStart(subStarted, startable.getDependencies().stream()).thenRunAsync(startable::start, EXECUTOR);70 });71 started.putAll(subStarted);72 return future;73 })74 .toArray(CompletableFuture[]::new);75 return CompletableFuture.allOf(futures);76 }77}...

Full Screen

Full Screen

deepStart

Using AI Code Generation

copy

Full Screen

1Startables.deepStart(containers).get();2Startables.deepStop(containers).get();3Startables.deepStart(containers).get();4Startables.deepStop(containers).get();5Startables.deepStart(containers).get();6Startables.deepStop(containers).get();7Startables.deepStart(containers).get();8Startables.deepStop(containers).get();9Startables.deepStart(containers).get();10Startables.deepStop(containers).get();11Startables.deepStart(containers).get();12Startables.deepStop(containers).get();13Startables.deepStart(containers).get();14Startables.deepStop(containers).get();15Startables.deepStart(containers).get();16Startables.deepStop(containers).get();17Startables.deepStart(containers).get();18Startables.deepStop(containers).get();19Startables.deepStart(containers).get();20Startables.deepStop(containers).get();

Full Screen

Full Screen

deepStart

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.containers.GenericContainer2import org.testcontainers.lifecycle.Startables3 new GenericContainer('alpine:3.12').withCommand('sleep', '60'),4 new GenericContainer('alpine:3.12').withCommand('sleep', '60')5Startables.deepStart(startables).get()6def stopables = startables.collect { it }7Startables.deepStop(stopables).get()

Full Screen

Full Screen

deepStart

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.containers.GenericContainer2import org.testcontainers.containers.wait.strategy.Wait3import org.testcontainers.lifecycle.Startables4def container1 = new GenericContainer<>("postgres:12.1")5 .withExposedPorts(5432)6 .withEnv("POSTGRES_PASSWORD", "postgres")7 .withEnv("POSTGRES_DB", "postgres")8 .waitingFor(Wait.forLogMessage(".*database system is ready to accept connections.*", 1))9def container2 = new GenericContainer<>("redis:5.0.3")10 .withExposedPorts(6379)11 .waitingFor(Wait.forLogMessage(".*Ready to accept connections.*", 1))12Startables.deepStart(asList(container1, container2)).get()13def container1IpAddress = container1.getContainerIpAddress()14def container1MappedPort = container1.getMappedPort(5432)15def container2IpAddress = container2.getContainerIpAddress()16def container2MappedPort = container2.getMappedPort(6379)17println "container1IpAddress: ${container1IpAddress}"18println "container1MappedPort: ${container1MappedPort}"19println "container2IpAddress: ${container2IpAddress}"20println "container2MappedPort: ${container2MappedPort}"21Startables.deepStop(asList(container1, container2))

Full Screen

Full Screen

deepStart

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.containers.GenericContainer2import org.testcontainers.lifecycle.Startables3import org.testcontainers.lifecycle.Startables.deepStart4 new GenericContainer('postgres:12.1').withExposedPorts(5432),5 new GenericContainer('redis:5.0.7').withExposedPorts(6379),6 new GenericContainer('mongo:4.2.3').withExposedPorts(27017)7Startables.deepStart(containers).get()8Startables.deepStop(containers)9import org.testcontainers.containers.GenericContainer10import org.testcontainers.lifecycle.Startables11import org.testcontainers.lifecycle.Startables.deepStart12 new GenericContainer('postgres:12.1').withExposedPorts(5432),13 new GenericContainer('redis:5.0.7').withExposedPorts(6379),14 new GenericContainer('mongo:4.2.3').withExposedPorts(27017)15Startables.deepStart(containers).get()16Startables.deepStop(containers)17import org.testcontainers.containers.GenericContainer18import org.testcontainers.lifecycle.Startables19import org.testcontainers.lifecycle.Startables.deepStart20 new GenericContainer('postgres:12.1').withExposedPorts(5432),21 new GenericContainer('redis:5.0.7').withExposedPorts(6379),22 new GenericContainer('mongo:4.2.3').withExposedPorts(27017)23Startables.deepStart(containers).get()

Full Screen

Full Screen

deepStart

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.lifecycle.Startables;2Startables.deepStart(containers).join();3import org.testcontainers.lifecycle.Startables;4Startables.deepStart(containers).join();5import org.testcontainers.lifecycle.Startables;6Startables.deepStart(containers).join();7import org.testcontainers.lifecycle.Startables;8Startables.deepStart(containers).join();9import org.testcontainers.lifecycle.Startables;10Startables.deepStart(containers).join();11import org.testcontainers.lifecycle.Startables;12Startables.deepStart(containers).join();13import org.testcontainers.lifecycle.Startables;14Startables.deepStart(containers).join();15import org.testcontainers.lifecycle.Startables;16Startables.deepStart(containers).join();17import org.testcontainers.lifecycle.Startables;18Startables.deepStart(containers).join();19import org.testcontainers.lifecycle.Startables;20Startables.deepStart(containers).join();21import org.testcontainers.lifecycle.Startables;22Startables.deepStart(containers).join();

Full Screen

Full Screen

deepStart

Using AI Code Generation

copy

Full Screen

1import org.testcontainers.containers.GenericContainer2import org.testcontainers.lifecycle.Startables3def firstContainer = new GenericContainer("alpine:3.12.0")4 .withCommand("tail", "-f", "/dev/null")5def secondContainer = new GenericContainer("alpine:3.12.0")6 .withCommand("tail", "-f", "/dev/null")7def thirdContainer = new GenericContainer("alpine:3.12.0")8 .withCommand("tail", "-f", "/dev/null")9Startables.deepStart([firstContainer, secondContainer, thirdContainer]).join()10firstContainer.stop()11secondContainer.stop()12thirdContainer.stop()13import org.testcontainers.containers.GenericContainer14import org.testcontainers.lifecycle.Startables15def firstContainer = new GenericContainer("alpine:3.12.0")16 .withCommand("tail", "-f", "/dev/null")17def secondContainer = new GenericContainer("alpine:3.12.0")18 .withCommand("tail", "-f", "/dev/null")

Full Screen

Full Screen

deepStart

Using AI Code Generation

copy

Full Screen

1import org.junit.jupiter.api.Test2import org.testcontainers.containers.GenericContainer3import org.testcontainers.containers.Network4import org.testcontainers.lifecycle.Startables5class ParallelStartTest {6 fun `should start containers in parallel`() {7 val network = Network.newNetwork()8 val redis = GenericContainer<Nothing>("redis:latest").apply {9 withNetwork(network)10 withNetworkAliases("redis")11 withExposedPorts(6379)12 }13 val postgres = GenericContainer<Nothing>("postgres:latest").apply {14 withNetwork(network)15 withNetworkAliases("postgres")16 withExposedPorts(5432)17 }18 Startables.deepStart(listOf(redis, postgres)).join()19 }20}21docker stop $(docker ps -q)

Full Screen

Full Screen

deepStart

Using AI Code Generation

copy

Full Screen

1def containers = [new GenericContainer("alpine:latest"), new GenericContainer("alpine:latest")]2Startables.deepStart(containers).join()3Startables.deepStop(containers)4Startables.deepRemove(containers)5def containers = [new GenericContainer("alpine:latest"), new GenericContainer("alpine:latest")]6Startables.deepStart(containers).join()7Startables.deepStop(containers)8Startables.deepRemove(containers)9def containers = [new GenericContainer("alpine:latest"), new GenericContainer("alpine:latest")]10Startables.deepStart(containers).join()11Startables.deepStop(containers)12Startables.deepRemove(containers)13def containers = [new GenericContainer("alpine:latest"), new GenericContainer("alpine:latest")]14Startables.deepStart(containers).join()15Startables.deepStop(containers)16Startables.deepRemove(containers)17def containers = [new GenericContainer("alpine:latest"), new GenericContainer("alpine:latest")]18Startables.deepStart(containers).join()19Startables.deepStop(containers)20Startables.deepRemove(containers)21def containers = [new GenericContainer("alpine:latest"), new GenericContainer("alpine:latest")]22Startables.deepStart(containers).join()23Startables.deepStop(containers)24Startables.deepRemove(containers)25def containers = [new GenericContainer("alpine:latest"), new GenericContainer("alpine:latest")]

Full Screen

Full Screen

Automation Testing Tutorials

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.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Testcontainers-java automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in Startables

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful