# LocalTaskQueueTestConfig
Date: 2011-08-17

## 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.

Nested Class Summary
`static class` `LocalTaskQueueTestConfig.DeferredTaskCallback` A `LocalTaskQueueCallback` implementation that automatically detects and runs tasks with a `DeferredTask` payload.
`static class` `LocalTaskQueueTestConfig.TaskCountDownLatch` A `CountDownLatch` extension that can be reset.

Constructor Summary
`LocalTaskQueueTestConfig()`

Method Summary
`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` `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.

  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

  Parameters:
    `queueXmlPath` -
  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.

  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.

  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.

  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()