com.google.appengine.tools.development.testing

## Class LocalTaskQueueTestConfig

- java.lang.Object
- - com.google.appengine.tools.development.testing.LocalTaskQueueTestConfig

- All Implemented Interfaces:
    LocalServiceTestConfig

      public final class LocalTaskQueueTestConfig
      extends java.lang.Object
      implements LocalServiceTestConfig

  Config for accessing the local task queue in tests. Default behavior is to configure the local task queue to not automatically execute any tasks. `tearDown()` wipes out all in-memory state so all queues are empty at the end of every test. LocalTaskQueue configuration are not restored. `tearDown()` does not restore default configuration values modified using:
  - `#setDisableAutoTaskExecution()`
  - `#setQueueXmlPath()`
  - `#setCallbackClass()`
  - `#setShouldCopyApiProxyEnvironment()`
  - `#setTaskExecutionLatch()`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `LocalTaskQueueTestConfig.DeferredTaskCallback` A `LocalTaskQueueCallback` implementation that automatically detects and runs tasks with a `DeferredTask` payload.
    `static class` | `LocalTaskQueueTestConfig.ServletInvokingTaskCallback` A class to delegate incoming task queue callbacks to HttpServlets based on a provided mapping.
    `static class` | `LocalTaskQueueTestConfig.TaskCountDownLatch` A `CountDownLatch` extension that can be reset.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `LocalTaskQueueTestConfig()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static LocalTaskQueue` | `getLocalTaskQueue()`
    `LocalTaskQueueTestConfig` | `setCallbackClass(java.lang.Class<? extends LocalTaskQueueCallback> callbackClass)` Overrides the callback implementation used by the local task queue for async task execution.
    `LocalTaskQueueTestConfig` | `setDisableAutoTaskExecution(boolean disableAutoTaskExecution)` Disables/enables automatic task execution.
    `LocalTaskQueueTestConfig` | `setQueueXmlPath(java.lang.String queueXmlPath)` Overrides the location of queue.xml.
    `LocalTaskQueueTestConfig` | `setQueueYamlPath(java.lang.String queueYamlPath)` Overrides the location of queue.yaml.
    `LocalTaskQueueTestConfig` | `setShouldCopyApiProxyEnvironment(boolean b)` Enables copying of the `ApiProxy.Environment` to task handler threads.
    `LocalTaskQueueTestConfig` | `setTaskExecutionLatch(java.util.concurrent.CountDownLatch latch)` Sets a `CountDownLatch` that the thread executing the task will decrement after a `LocalTaskQueueCallback` finishes execution.
    `void` | `setUp()` Set up the local service.
    `void` | `tearDown()` Tear down the local service.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### LocalTaskQueueTestConfig

          public LocalTaskQueueTestConfig()

  - ### Method Detail

    - #### setDisableAutoTaskExecution

          public LocalTaskQueueTestConfig setDisableAutoTaskExecution(boolean disableAutoTaskExecution)

      Disables/enables automatic task execution. If you enable automatic task execution, keep in mind that the default behavior is to hit the url that was provided when the `TaskOptions` was constructed. If you do not have a servlet engine running, this will fail. As an alternative to launching a servlet engine, instead consider providing a `LocalTaskQueueCallback` via `setCallbackClass(Class)` so that you can assert on the properties of the URLFetchServicePb.URLFetchRequest. Once set, this value is persistent across tests. If this value needs to be set for any one test, it should be appropriately configured in the setup stage for all tests.
      Parameters:
        `disableAutoTaskExecution` -
      Returns:
        `this` (for chaining)

    - #### setQueueXmlPath

          public LocalTaskQueueTestConfig setQueueXmlPath(java.lang.String queueXmlPath)

      Overrides the location of queue.xml. Must be a full path, e.g. /usr/local/dev/myapp/test/queue.xml Once set, this value is persistent across tests. If this value needs to be set for an operation specific to any one test, it should appropriately configured in the setup stage for all tests.
      Parameters:
        `queueXmlPath` -
      Returns:
        `this` (for chaining)

    - #### setQueueYamlPath

          public LocalTaskQueueTestConfig setQueueYamlPath(java.lang.String queueYamlPath)

      Overrides the location of queue.yaml. Must be a full path, e.g. /usr/local/dev/myapp/test/queue.yaml

      Once set, this value is persistent across tests. If this value needs to be set for an operation specific to any one test, it should appropriately configured in the setup stage for all tests.

      Returns:
        `this` (for chaining)

    - #### setCallbackClass

          public LocalTaskQueueTestConfig setCallbackClass(java.lang.Class<? extends LocalTaskQueueCallback> callbackClass)

      Overrides the callback implementation used by the local task queue for async task execution. Once set, this value is persistent across tests. If this value needs to be set for any one test, it should be appropriately configured in the setup stage for all tests.
      Parameters:
        `callbackClass` - fully-qualified name of a class with a public, default constructor that implements `LocalTaskQueueCallback`.
      Returns:
        `this` (for chaining)

    - #### setShouldCopyApiProxyEnvironment

          public LocalTaskQueueTestConfig setShouldCopyApiProxyEnvironment(boolean b)

      Enables copying of the `ApiProxy.Environment` to task handler threads. This setting is ignored unless both
      1. a `callback` class has been set, and
      2. automatic task execution has been `enabled.`
      In this case tasks will be handled locally by new threads and it may be useful for those threads to use the same environment data as the main test thread. Properties such as the `appID`, and the user `email` will be copied into the environment of the task threads. Be aware that `attribute map` will be shallow-copied to the task thread environents, so that any mutable objects used as values of the map should be thread safe. If this property is `false` then the task handler threads will have an empty `ApiProxy.Environment`. This property is `false` by default. Once set, this value is persistent across tests. If this value needs to be set for any one test, it should be appropriately configured in the setup stage for all tests.
      Parameters:
        `b` - should the `ApiProxy.Environment` be pushed to task handler threads
      Returns:
        `this` (for chaining)

    - #### setTaskExecutionLatch

          public LocalTaskQueueTestConfig setTaskExecutionLatch(java.util.concurrent.CountDownLatch latch)

      Sets a `CountDownLatch` that the thread executing the task will decrement after a `LocalTaskQueueCallback` finishes execution. This makes it easy for tests to block until a task queue task runs. Note that the latch is only used when a callback class is provided (via `setCallbackClass(Class)`) and when automatic task execution is enabled (via `setDisableAutoTaskExecution(boolean)`). Also note that a `CountDownLatch` cannot be reused, so if you have a test that requires the ability to "reset" a CountDownLatch you can pass an instance of `LocalTaskQueueTestConfig.TaskCountDownLatch`, which exposes additional methods that help with this. Once set, this value is persistent across tests. If this value needs to be set for any one test, it should be appropriately configured in the setup stage for all tests.
      Parameters:
        `latch` - The latch.
      Returns:
        `this` (for chaining)

    - #### setUp

          public void setUp()

      Description copied from interface: `LocalServiceTestConfig`
      Set up the local service.
      Specified by:
        `setUp` in interface `LocalServiceTestConfig`

    - #### tearDown

          public void tearDown()

      Description copied from interface: `LocalServiceTestConfig`
      Tear down the local service.
      Specified by:
        `tearDown` in interface `LocalServiceTestConfig`

    - #### getLocalTaskQueue

          public static LocalTaskQueue getLocalTaskQueue()