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
ALocalTaskQueueCallback
implementation that automatically detects and runs tasks with aDeferredTask
payload.static class
LocalTaskQueueTestConfig.ServletInvokingTaskCallback
A class to delegate incoming task queue callbacks to HttpServlets based on a provided mapping.static class
LocalTaskQueueTestConfig.TaskCountDownLatch
ACountDownLatch
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
setShouldCopyApiProxyEnvironment(boolean b)
Enables copying of theApiProxy.Environment
to task handler threads.LocalTaskQueueTestConfig
setTaskExecutionLatch(java.util.concurrent.CountDownLatch latch)
Sets aCountDownLatch
that the thread executing the task will decrement after aLocalTaskQueueCallback
finishes execution.void
setUp()
Set up the local service.void
tearDown()
Tear down the local service.
-
-
-
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 theTaskOptions
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 aLocalTaskQueueCallback
viasetCallbackClass(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)
-
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 implementsLocalTaskQueueCallback
.- Returns:
this
(for chaining)
-
setShouldCopyApiProxyEnvironment
public LocalTaskQueueTestConfig setShouldCopyApiProxyEnvironment(boolean b)
Enables copying of theApiProxy.Environment
to task handler threads. This setting is ignored unless both 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 theappID
, and the useremail
will be copied into the environment of the task threads. Be aware thatattribute 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 isfalse
then the task handler threads will have an emptyApiProxy.Environment
. This property isfalse
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 theApiProxy.Environment
be pushed to task handler threads- Returns:
this
(for chaining)
-
setTaskExecutionLatch
public LocalTaskQueueTestConfig setTaskExecutionLatch(java.util.concurrent.CountDownLatch latch)
Sets aCountDownLatch
that the thread executing the task will decrement after aLocalTaskQueueCallback
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 (viasetCallbackClass(Class)
) and when automatic task execution is enabled (viasetDisableAutoTaskExecution(boolean)
). Also note that aCountDownLatch
cannot be reused, so if you have a test that requires the ability to "reset" a CountDownLatch you can pass an instance ofLocalTaskQueueTestConfig.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 interfaceLocalServiceTestConfig
-
tearDown
public void tearDown()
Description copied from interface:LocalServiceTestConfig
Tear down the local service.- Specified by:
tearDown
in interfaceLocalServiceTestConfig
-
getLocalTaskQueue
public static LocalTaskQueue getLocalTaskQueue()
-
-