Capabilities Service Test Configuration

The capabilities test feature is designed to run against the App Engine development web server for testing purposes. It enables you to change the status of services, such as datastore, blobstore, etc., to determine whether your application behaves properly when it encounters the various possible statuses of the service. For example, by changing the datastore service status to disabled, you can test whether your app handles datastore unavailability in a graceful manner.

There are several ways to use the capabilities test feature:

Change Capabilities Status Using the Console

To change capabilities in the console,

  1. With your app running on the development server, access the console by visiting the URL /_ah/admin on your server, for example: http://localhost:8888/_ah/admin.
  2. In the console, click Capabilities Status in the bottom left of the console.
  3. In the Capabilities Status Configuration page, locate the service or services that are used by your app and whose status you wish to change; click the dropdown menu next to the service name and select the status you want to test on that service:

The services now reflect the settings you have chosen the next time your app accesses them. Run your app and observe its behavior.

Change Capabilities Status Using the Command Line

If you use Eclipse, you can set one or more capabilities using the debug command line options.

To change capability settings using the VM command line arguments in Eclipse

  1. With Eclipse open, select your project, right-click, then select Debug As > Debug Configurations.
  2. Go to the Arguments tab and enter the desired option in the VM arguments textbox. The format of the option is

    -Dcapability.status.capabilityname.*=statusname

    , where capabilityname is replaced by the name of the service (see Capability (Service) Names) and statusname is replaced by the capability status you want to use (see Capability Status Values).

    Note: For the datastore write capability, replace capabilityname with datastore_v3 and the asterisk (*) with write, like this: Dcapability.status.datastore_v3.write. For the other capabilities, leave the asterisk as shown.

    The screen capture below shows two capabilities (datastore and images) being disabled from the command line:

  3. Click Apply to save your changes
  4. Click Debug to run your app with those settings.

Capability (Service) Names

Capability Name in API Capability Name displayed in Console Description
blobstore BLOBSTORE The blobstore service
datastore_v3 DATASTORE The datastore service for queries
datastore_v3,write DATASTORE_WRITE The datastore service for write requests
images IMAGES The images service
mail MAIL The mail service
memcache MEMCACHE The memcache service
taskqueue TASKQUEUE The taskqueue service
urlfetch URLFETCH The urlfetch service

Capability Status Values

Status Values for All Capabilities Description
DISABLED The capability is disabled.
ENABLED The capability is available and no maintenance is currently planned.
SCHEDULED_MAINTENANCE The capability is available but scheduled for maintenance.
UNKNOWN The status of this service is unknown.

Change Capabilities Status Using the Capabilities API

To use the local service capabilities test feature in the API, you use the LocalCapabilitiesServiceTestConfig class. For more information and a code sample, see Writing Local Service Capabilities Tests.