com.google.appengine.tools.development.testing
Class LocalTaskQueueTestConfig

java.lang.Object
  extended by 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()