Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

Definition

Excerpt

Timeout after which the container start/stop is deemed failed

Info

This feature is only available for local containers

Explanation

Cargo has a timeout for container start and stop operations. If the time taken to start/stop a container exceeds the timeout period the operations is considered failed and the container is then set in the unknown state.

The default timeout value is 2 minutes (120000 milliseconds). This value can be modified as shown below.

Note

If the given timeout is too small, the CARGO container will give you an error message similar to this:

Code Block
[INFO] ------------------------------------------------------------------------
[ERROR] FATAL ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to start the JBoss 5.1.0 container.
Deployable http://localhost:8080/cargocpc/index.html failed to finish deploying
within the timeout period [5000]. The Deployable state is thus unknown.
[INFO] ------------------------------------------------------------------------

Example using the Java API

Code Block
LocalContainer container = ...;
container.setTimeout(180000L);
System.out.println("Timeout = " + container.getTimeout());

Example using the Maven 2 plugin

Code Block
xml
xml
<container>
  [...]
  <timeout>180000</timeout>
  [...]
</container>

Disabling timeout

As of CARGO version 1.0.2, if you set the timeout to 0, CARGO will not wait for the container to start or stop.

Using different timeouts when starting and stopping the container

Shutdown usually takes much much shorther than startup, it therefore often makes sense to use a shorter timeout for stopping the container than for starting it. With the Cargo Maven2 plugin, this is easy to do: indeed, in each <execution> block of the Maven2 plugin, you can have different <configuration> blocks. When done so, the plugin will use an inheritance scheme; i.e. for each execution the outermost configuration elements will be overriden by innermost elements each time these are defined.

Here is an example that uses different timeouts when starting and stopping the container:

Code Block
xml
xml
<plugin>
  <groupId>org.codehaus.cargo</groupId>
  <artifactId>cargo-maven2-plugin</artifactId>
  <executions>
    <execution>
      <id>start</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>start</goal>
      </goals>
      <configuration>
        <timeout>60000</timeout>
      </configuration>
    </execution>
    <execution>
      <id>stop</id>
      <phase>post-integration-test</phase>
      <goals>
        <goal>stop</goal>
      </goals>
      <configuration>
        <timeout>10000</timeout>
      </configuration>
    </execution>
  </executions>
  <configuration>
    [...]
  </configuration>
</plugin>