| Status | Feature | Processing | Performance | Comments | 
| All Agents
 | 
|   | List all agents. | 
| Action class: | api.action.byType.BrowseAgents |  
| Processing method: | AgentAPIWrapper.getAgentList() |  
| Query: | CommonCalls.findByType(...'agent'...) |  | 
| count=841 |  
| 2:15 m | for getObjects |  
| 1:45 m | for getDatastreams |  
| 4:00 m | total for both |  |  | 
|  Agent's -> Aggregators
 | 
|   | List aggregators for an agent. | 
| Action class: | api.action.byRelationship.BrowseAgentAggregators |  
| Processing method: | AgentAPIWrapper.getAggregatorsForAgent() |  
| Query: | * aggregatorFor <agent> |  | 
| count=226 |  
| N/A | for getObjects |  
| 47 s | for getDatastreams |  
| 47 s | total for both |  | Tested agents: | 
|  Agent's -> Metadata Providers
 | 
|   | List metadata providers for an agent. | 
| Action class: | api.action.byRelationship.BrowseAgentMetadataProviders |  
| Processing method: | AgentAPIWrapper.getMetadataProvidersForAgent() |  
| Query: | * metadataProviderFor <agent> |  | 
| count=191 |  
| N/A | for getObjects |  
| 1:10 m | for getDatastreams |  
| 1:10 m | total for both |  | Tested agents: 
 | 
| All Aggregators
 | 
|   | List all aggregators. | 
| Action class: | api.action.byType.BrowseAggregators |  
| Processing method: | AggregatorAPIWrapper.getAggregatorList() |  
| Query: | CommonCalls.findByType(...'aggregator'...) |  | 
| count=1227 |  
| N/A | for getObjects |  
| 4:55 m | for getDatastreams |  
| 4:55 m | total for both |  |  | 
|  Aggregator's -> Metadata Providers
 | 
|   | List metadata providers aggregated by an aggregator. | 
| Action class: | api.action.byRelationship.BrowseAggregatorMetadataProviders |  
| Processing method: | AggregatorAPIWrapper.getMDPsAggregatedByAggregator() |  
| Query: | * aggregatorBy <aggregator> |  | 
| count=2 |  
| N/A | for getObjects |  
| 1 s | for getDatastreams |  
| 1 s | total for both |  | Tested aggregators: 
 | 
|  Aggregator's -> Metadata
 | 
|   | List metadata for an aggregator. | 
| Action class: | api.action.byRelationship.BrowseAggregatorMetadata |  
| Processing method: | AggregatorAPIWrapper.getMetadataForAggregator() |  
| Query: | * metadataFor <aggregator> |  | 
| count=1 |  
| N/A | for getObjects |  
| <1 s | for getDatastreams |  
| <1 s | total for both |  | Tested aggregators: | 
|  Aggregator's -> Resources
 | 
|   | List member resources for an aggregator. | 
| Action class: | api.action.byRelationship.BrowseAggregatorResources |  
| Processing method: | AggregatorAPIWrapper.getResourcesMemberOfAggregator() |  
| Query: | * memberOf <aggregator> |  | 
| count=483 |  
| N/A | for getObjects |  
| 3:52 m | for getDatastreams |  
| 3:52 m | total for both |  | Tested aggregators: | 
|  Aggregator's -> Aggregators
 | 
|   | List member aggregators for an aggregator. | 
| Action class: | api.action.byRelationship.BrowseAggregatorAggregators |  
| Processing method: | AggregatorAPIWrapper.getAggregatorsMemberOfAggregator() |  
| Query: | * memberOf <aggregator> |  | 
| count=1157 |  
| N/A | for getObjects |  
| 4:30 m | for getDatastreams |  
| 4:30 m | total for both |  | Tested aggregators: | 
| All Metadata Providers
 | 
|   | List all metadata providers. | 
| Action class: | api.action.byType.BrowseMetadataProviders |  
| Processing method: | MetadataProviderAPIWrapper.getMetadataProviderList() |  
| Query: | CommonCalls.findByType(...'metadataProvider'...) |  | 
| count=310 |  
| N/A m | for getObjects |  
| 2:00 m | for getDatastreams |  
| 2:00 m | total for both |  |  | 
|  Metadata Provider's -> Aggregators
 | 
|   | List aggregators associated with metadata provider. | 
| Action class: | api.action.byRelationship.BrowseMetadataProviderAggregators |  
| Processing method: | AggregatorAPIWrapper.getAggregatorsWhereMDPIsAggregatedBy() |  
| Query: | <metadataProvider> aggregatedBy * |  | 
| count=1 |  
| N/A | for getObjects |  
| <1 s | for getDatastreams |  
| <1 s | total for both |  | Tested metadata providers: | 
|  Metadata Provider's -> Metadata
 | 
|   | List metadata provided by a metadata provider. | 
| Action class: | api.action.byRelationship.BrowseMetadataProviderMetadata |  
| Processing method: | AggregatorAPIWrapper.getMetadataProvidedByMDP() |  
| Query: | * metadataProvidedBy <metadataProvider> |  | 
| count=380 |  
| N/A | for getObjects |  
| 2:25 m | for getDatastreams |  
| 2:25 m | total for both |  | Tested metadata providers: | 
| All Metadata
 | 
|   | List all metadata. | 
| Action class: | api.action.byType.BrowseMetadata |  
| Processing method: | MetadataAPIWrapper.getMetadataList() |  
| Query: | CommonCalls.findByType(...'metadata'...) |  | 
| count=??? |  
| ??? m | for getObjects |  
| ??? m | for getDatastreams |  
| ??? m | total for both |  | FAIL: OutOfMemoryError: Java heap space | 
|  Metadata's -> objects metadata is about
 | 
|   | List objects that the metadata describes. | 
| Action class: | api.action.byRelationship.BrowseMetadataForObjects (doesn't exist) |  
| Processing method: | MetadataAPIWrapper.get???() |  
| Query: | <metadata> metadataFor * |  | 
| count=??? |  
| ??? s | for getObjects |  
| ??? s | for getDatastreams |  
| ??? s | total for both |  | NOT DONE - need to resolve that objects may be of different object types. | 
|  Metadata's -> Parent Metadata Provider
 | 
|   | List metadata provider that provided the metadata. Should be only one. | 
| Action class: | api.action.byRelationship.BrowseMetadataMetadataProviders |  
| Processing method: | MetadataAPIWrapper.getMDPsProvidingMetadata() |  
| Query: | <metadata> metadataProvidedBy * |  | 
| count=1 |  
| N/A | for getObjects |  
| <1 s | for getDatastreams |  
| <1 s | total for both |  | Tested metadata: 
 | 
| All Resources
 | 
|   | List all resources. | 
| Action class: | api.action.byType.BrowseResources |  
| Processing method: | ResourceAPIWrapper.getResourceList() |  
| Query: | CommonCalls.findByType(...'resource'...) |  | 
| count=??? |  
| ??? m | for getObjects |  
| ??? m | for getDatastreams |  
| ??? m | total for both |  | FAIL: OutOfMemoryError: Java heap space | 
|  Resource's -> Metadata
 | 
|   | List metadata for a resource. | 
| Action class: | api.action.byRelationship.BrowseResourceMetadata |  
| Processing method: | ResourceAPIWrapper.getMetadataForResource() |  
| Query: | * metadataFor <resource> |  | 
| count=1 |  
| N/A | for getObjects |  
| <1 s | for getDatastreams |  
| <1 s | total for both |  | Tested resources: | 
|  Resource's -> Parent Aggregators
 | 
|   | List aggregators in which a resource is a member. | 
| Action class: | api.action.byRelationship.BrowseResourceAggregators |  
| Processing method: | ResourceAPIWrapper.getParentAggregatorsForResource() |  
| Query: | <resource> memberOf * |  | 
| count=1 |  
| N/A | for getObjects |  
| <1 s | for getDatastreams |  
| <1 s | total for both |  | Tested resources: |