DPM SRMv2 Status

From GridPPwiki

Table of contents

Overview

This page describes status of the DPM's 1.4.5 and 1.5.7 SRMv2 interfaces. Tests were performed by the s2 test client. Please visit s2 homepage at http://s-2.sourceforge.net. README files in s2 'testing/srm2/*' directories and coments within '*.s2' give more information describing the tests.

Basic tests

This section shows a commented output (srm2_basic.log) of running

make test

in the s2 'testing/scripts/srm2/basic' directory.

DPM 1.4.5

srmAbortFiles: KO: SRM_NOT_SUPPORTED 
srmAbortRequest: OK: SRM_FAILURE
srmChangeFileStorageType: KO: SRM_NOT_SUPPORTED 
srmCheckPermission: KO: SRM_SUCCESS^1
srmCompactSpace: KO: SRM_NOT_SUPPORTED 
srmCopy: KO: SRM_REQUEST_QUEUED^2
srmExtendFileLifeTime: OK: SRM_SUCCESS
srmGetRequestID: OK: SRM_SUCCESS
srmGetRequestSummary: OK: SRM_SUCCESS
srmGetSpaceMetadata: OK: SRM_SUCCESS
srmGetSpaceToken: OK: SRM_SUCCESS
srmLs: KO: SRM_NOT_SUPPORTED 
srmMkdir: OK: SRM_SUCCESS
srmMv: OK: SRM_SUCCESS
srmPrepareToGet: OK: SRM_REQUEST_QUEUED
srmPrepareToPut: OK: SRM_REQUEST_QUEUED
srmPutDone: OK: SRM_SUCCESS
srmReassignToUser: KO: SRM_NOT_SUPPORTED 
srmReleaseFiles: OK: SRM_SUCCESS
srmReleaseSpace: OK: SRM_SUCCESS
srmRemoveFiles: KO: SRM_NOT_SUPPORTED 
srmReserveSpace: OK: SRM_SUCCESS
srmResumeRequest: KO:  
srmRmdir: OK: SRM_SUCCESS
srmRm: OK: SRM_SUCCESS
srmSetPermission: KO: SRM_INVALID_REQUEST^3
srmStatusOfCopyRequest: OK: SRM_DONE
srmStatusOfGetRequest: OK: SRM_DONE
srmStatusOfPutRequest: OK: SRM_DONE^3
srmSuspendRequest: KO: SRM_NOT_SUPPORTED 
srmUpdateSpace: OK: SRM_SUCCESS
Legend:
=======
^1 however, no permissions are returned in the response => SRM_NOT_SUPPORTED
^2 files are not actually copied (srmStatusOfGetRequest returns SRM_INVALID_PATH) => SRM_NOT_SUPPORTED
^3 "certain" requests can crash SRMv2 => DoS

Note SRM_SUCCESS/SRM_REQUEST_QUEUED/SRM_DONE doesn't necessarily imply that a given function works as tests were very basic, and more thorough testing is necessary. Some methods methods have a database race condition. Author has been notified, said he understood the problem and fix was on the way.

DPM 1.5.7

 srmAbortFiles: OK: SRM_SUCCESS
 srmAbortRequest: OK: SRM_SUCCESS
 srmChangeFileStorageType: KO: SRM_NOT_SUPPORTED 
 srmCheckPermission: OK: SRM_SUCCESS
 srmCompactSpace: KO: SRM_NOT_SUPPORTED 
 srmCopy: KO: SRM_REQUEST_QUEUED request type mismatch
 srmExtendFileLifeTime: OK: SRM_SUCCESS
 srmGetRequestID: OK: SRM_SUCCESS
 srmGetRequestSummary: OK: SRM_SUCCESS
 srmGetSpaceMetadata: OK: SRM_SUCCESS
 srmGetSpaceToken: OK: SRM_SUCCESS
 srmLs: KO: SRM_NOT_SUPPORTED filtering by fileStorageType is not supported
 srmMkdir: OK: SRM_SUCCESS
 srmMv: OK: SRM_SUCCESS
 srmPrepareToGet: OK: SRM_REQUEST_QUEUED
 srmPrepareToPut: OK: SRM_REQUEST_QUEUED
 srmPutDone: OK: SRM_SUCCESS
 srmReassignToUser: KO: SRM_NOT_SUPPORTED 
 srmReleaseFiles: KO: SRM_INVALID_REQUEST Unknown request token^1
 srmReleaseSpace: OK: SRM_SUCCESS
 srmRemoveFiles: KO: SRM_NOT_SUPPORTED 
 srmReserveSpace: OK: SRM_SUCCESS
 srmResumeRequest: KO:  
 srmRmdir: OK: SRM_SUCCESS
 srmRm: OK: SRM_SUCCESS ; removed file couldn't be retrieved
 srmSetPermission: KO: SRM_INVALID_REQUEST 
 srmStatusOfCopyRequest: KO: SRM_INVALID_REQUEST request type mismatch
 srmStatusOfGetRequest: OK: SRM_DONE
 srmStatusOfPutRequest: OK: SRM_DONE
 srmSuspendRequest: KO: SRM_NOT_SUPPORTED 
 srmUpdateSpace: OK: SRM_SUCCESS
Legend:
=======
^1 note that the race condition hasn't been quite fixed yet, however, it doesn't
   seem to occur as often as in 1.4.5

Higher-level tests

This section has some comments on running running some higher-level SRMv2 tests by

make test

in the s2 'testing/scripts/srm2/usecase' directory. For more information, please run the tests and/or read the <TEST>.s2 scripts. Note that the results were exactly the same for DPM 1.4.5 and 1.5.7.

<TEST> Description SRMv2 functions used Result
Pin01

1) put a file on the server; 2) use srmExtendFileLifeTime to try to extend the pin time for the file; 3) use srmReleaseFiles to remove one file; 4) try to extend the pins again (this should result in failure).

srmPrepareToPut
srmStatusOfPutRequest
srmPutDone
srmExtendFileLifeTime
srmReleaseFiles
OK, but could extend lifetime of a file which has already been released!
PutGet01

transfer of a file to/from SRM server

srmPrepareToGet
srmPrepareToPut
srmPutDone
srmStatusOfGetRequest
srmStatusOfPutRequest
OK
PutGet02

transfer of two files in one go to/from SRM server

srmPrepareToGet
srmPrepareToPut
srmPutDone
srmStatusOfGetRequest
srmStatusOfPutRequest
OK
Rmdir01

1) create a new directory; 2) put a file into the newly created directory; 3) try to remove the entire directory non-recursively (should fail); 4) try to fetch the file (should succeed); 5) try to remove the entire directory recursively (should succeed); 6) try to fetch the file (should fail);

srmMkdir
srmRmdir
srmPrepareToGet
srmPrepareToPut
srmPutDone
srmStatusOfGetRequest
srmStatusOfPutRequest
OK, but recursive removal of a directory is not supported
Space01

1) call srmReserveSpace with a unique space token tag and defined size; 2) use srmGetSpaceToken to get the space token from the tag; 3) call srmGetSpaceMetadata to make sure the right amount of space was allocated 4) call srmUpdateSpace increasing the lifetime and size; 5) call srmGetSpaceMetadata again to check the update worked

srmReserveSpace
srmGetSpaceToken
srmGetSpaceMetaData
srmUpdateSpace
OK