English ▼
Skip to page content Skip to main navigation
e.g. "templates" or "datastore"

# 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
- Change Capabilities Status Using the Command Line
- Change Capabilities Status Using the Capabilities API

## 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
`prospective_search` | PROSPECTIVE_SEARCH | The memcache service
`taskqueue` | TASKQUEUE | The taskqueue service
`urlfetch` | URLFETCH | The urlfetch service
`xmpp` | XMPP | The XMPP 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.