@@ -386,10 +386,10 @@ func TestGetObjectRange(t *testing.T) {
386386
387387func TestGetObjectsDetailsSpectraS3 (t * testing.T ) {
388388 bucketId := "a24d14f3-e2f0-4bfb-ab71-f99d5ef43745"
389- stringResponse := "<Data><S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.694Z</CreationDate><Id>e37c3ce0-12aa-4f54-87e3-42532aca0e5e</Id><Name>beowulf.txt</Name><Type>DATA</Type><Version>1</Version>< /S3Object>" +
390- "<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.779Z</CreationDate><Id>dc628815-c723-4c4e-b68b-5f5d10f38af5</Id><Name>sherlock_holmes.txt</Name><Type>DATA</Type><Version>1</Version>< /S3Object>" +
391- "<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.772Z</CreationDate><Id>4f6985fd-fbae-4421-ba27-66fdb96187c5</Id><Name>tale_of_two_cities.txt</Name><Type>DATA</Type><Version>1</Version>< /S3Object>" +
392- "<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.696Z</CreationDate><Id>82c18910-fadb-4461-a152-bf714ae91b55</Id><Name>ulysses.txt</Name><Type>DATA</Type><Version>1</Version>< /S3Object></Data>"
389+ stringResponse := "<Data><S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.694Z</CreationDate><Id>e37c3ce0-12aa-4f54-87e3-42532aca0e5e</Id><Name>beowulf.txt</Name><Type>DATA</Type></S3Object>" +
390+ "<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.779Z</CreationDate><Id>dc628815-c723-4c4e-b68b-5f5d10f38af5</Id><Name>sherlock_holmes.txt</Name><Type>DATA</Type></S3Object>" +
391+ "<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.772Z</CreationDate><Id>4f6985fd-fbae-4421-ba27-66fdb96187c5</Id><Name>tale_of_two_cities.txt</Name><Type>DATA</Type></S3Object>" +
392+ "<S3Object><BucketId>a24d14f3-e2f0-4bfb-ab71-f99d5ef43745</BucketId><CreationDate>2015-09-21T20:06:47.696Z</CreationDate><Id>82c18910-fadb-4461-a152-bf714ae91b55</Id><Name>ulysses.txt</Name><Type>DATA</Type></S3Object></Data>"
393393
394394 request := models .NewGetObjectsDetailsSpectraS3Request ().WithBucketId (bucketId )
395395
@@ -428,7 +428,6 @@ func TestGetObjectsDetailsSpectraS3(t *testing.T) {
428428 if object .Type != models .S3_OBJECT_TYPE_DATA {
429429 t .Fatalf ("Expected type of '%d' but was '%d'." , models .S3_OBJECT_TYPE_DATA , object .Type )
430430 }
431- ds3Testing .AssertInt64 (t , "Version" , 1 , object .Version )
432431 }
433432}
434433
@@ -1528,6 +1527,27 @@ func TestClearSuspectBlobS3TargetsSpectraS3(t *testing.T) {
15281527 }
15291528}
15301529
1530+
1531+ func TestClearSuspectBlobDs3TargetsSpectraS3 (t * testing.T ) {
1532+ expectedRequest := "<Ids><Id>id1</Id><Id>id2</Id><Id>id3</Id></Ids>"
1533+
1534+ // Create and run the mocked client.
1535+ ids := []string {"id1" , "id2" , "id3" }
1536+
1537+ response , err := mockedClient (t ).
1538+ Expecting (HTTP_VERB_DELETE , "/_rest_/suspect_blob_ds3_target" , & url.Values {}, & http.Header {}, & expectedRequest ).
1539+ Returning (204 , "" , nil ).
1540+ ClearSuspectBlobDs3TargetsSpectraS3 (models .NewClearSuspectBlobDs3TargetsSpectraS3Request (ids ))
1541+
1542+ // Check the error result.
1543+ ds3Testing .AssertNilError (t , err )
1544+
1545+ // Check the response value.
1546+ if response == nil {
1547+ t .Fatalf ("Response was unexpectedly nil." )
1548+ }
1549+ }
1550+
15311551func TestClearSuspectBlobTapesSpectraS3 (t * testing.T ) {
15321552 expectedRequest := "<Ids><Id>id1</Id><Id>id2</Id><Id>id3</Id></Ids>"
15331553
@@ -1560,13 +1580,13 @@ func TestEjectStorageDomainBlobsSpectraS3(t *testing.T) {
15601580 "operation" : []string {"eject" },
15611581 "blobs" : []string {"" },
15621582 "bucket_id" : []string {bucketId },
1563- "storage_domain_id " : []string {storageDomainId },
1583+ "storage_domain " : []string {storageDomainId },
15641584 }
15651585
15661586 response , err := mockedClient (t ).
15671587 Expecting (HTTP_VERB_PUT , "/_rest_/tape" , qp , & http.Header {}, & expectedRequest ).
15681588 Returning (204 , "" , nil ).
1569- EjectStorageDomainBlobsSpectraS3 (models .NewEjectStorageDomainBlobsSpectraS3Request (bucketId , objectNames , storageDomainId ))
1589+ EjectStorageDomainBlobsSpectraS3 (models .NewEjectStorageDomainBlobsSpectraS3Request (bucketId , storageDomainId , objectNames ))
15701590
15711591 // Check the error result.
15721592 ds3Testing .AssertNilError (t , err )
@@ -1640,7 +1660,7 @@ func TestGetBlobsOnTapeSpectraS3(t *testing.T) {
16401660type getBlobsTest func (* Client ) (models.BulkObjectList , error )
16411661
16421662func runGetBlobsTest (t * testing.T , path string , callToTest getBlobsTest ) {
1643- expectedResponse := "<Data><Object Bucket=\" default_bucket_name\" Id=\" 1bd77dbf-500a-45a1-86ac-d065f026882c\" Latest=\" true\" Length=\" 10\" Name=\" obj1\" Offset=\" 0\" Version= \" 1 \" /><Object Bucket=\" default_bucket_name\" Id=\" 9afa66e7-3f5a-4913-bae2-ba7c86e4c4f7\" Latest=\" true\" Length=\" 10\" Name=\" obj2\" Offset=\" 0\" Version= \" 1 \" /></Data>"
1663+ expectedResponse := "<Data><Object Bucket=\" default_bucket_name\" Id=\" 1bd77dbf-500a-45a1-86ac-d065f026882c\" Latest=\" true\" Length=\" 10\" Name=\" obj1\" Offset=\" 0\" /><Object Bucket=\" default_bucket_name\" Id=\" 9afa66e7-3f5a-4913-bae2-ba7c86e4c4f7\" Latest=\" true\" Length=\" 10\" Name=\" obj2\" Offset=\" 0\" /></Data>"
16441664
16451665 // Create and run the mocked client.
16461666 qp := & url.Values { "operation" : []string {"get_physical_placement" } }
@@ -1662,7 +1682,6 @@ func runGetBlobsTest(t *testing.T, path string, callToTest getBlobsTest) {
16621682 ds3Testing .AssertInt64 (t , "Length" , 10 , obj1 .Length )
16631683 ds3Testing .AssertNonNilStringPtr (t , "Name" , "obj1" , obj1 .Name )
16641684 ds3Testing .AssertInt64 (t , "Offset" , 0 , obj1 .Offset )
1665- ds3Testing .AssertInt64 (t , "Version" , 1 , obj1 .Version )
16661685 if obj1 .PhysicalPlacement != nil {
16671686 t .Fatalf ("Expected nil Physical Placement, but was '%v'." , obj1 .PhysicalPlacement )
16681687 }
@@ -1675,7 +1694,6 @@ func runGetBlobsTest(t *testing.T, path string, callToTest getBlobsTest) {
16751694 ds3Testing .AssertInt64 (t , "Length" , 10 , obj2 .Length )
16761695 ds3Testing .AssertNonNilStringPtr (t , "Name" , "obj2" , obj2 .Name )
16771696 ds3Testing .AssertInt64 (t , "Offset" , 0 , obj2 .Offset )
1678- ds3Testing .AssertInt64 (t , "Version" , 1 , obj2 .Version )
16791697 if obj2 .PhysicalPlacement != nil {
16801698 t .Fatalf ("Expected nil Physical Placement, but was '%v'." , obj2 .PhysicalPlacement )
16811699 }
@@ -1707,7 +1725,7 @@ func TestGetPhysicalPlacementForObjectsSpectraS3(t *testing.T) {
17071725
17081726func TestGetPhysicalPlacementForObjectsWithFullDetailsSpectraS3 (t * testing.T ) {
17091727 expectedRequest := "<Objects><Object Name=\" obj1\" ></Object><Object Name=\" obj2\" ></Object><Object Name=\" obj3\" ></Object></Objects>"
1710- responsePayload := "<Data><Object Bucket=\" b1\" Id=\" a2897bbd-3e0b-4c0f-83d7-29e1e7669bdd\" InCache=\" false\" Latest=\" true\" Length=\" 10\" Name=\" o4\" Offset=\" 0\" Version= \" 1 \" ><PhysicalPlacement><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes/></PhysicalPlacement></Object></Data>"
1728+ responsePayload := "<Data><Object Bucket=\" b1\" Id=\" a2897bbd-3e0b-4c0f-83d7-29e1e7669bdd\" InCache=\" false\" Latest=\" true\" Length=\" 10\" Name=\" o4\" Offset=\" 0\" ><PhysicalPlacement><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes/></PhysicalPlacement></Object></Data>"
17111729
17121730 // Create and run the mocked client.
17131731 bucketName := "BucketName"
@@ -1807,7 +1825,7 @@ func runMarkSuspectBlobTest(t *testing.T, path string, callToTest markSuspectBlo
18071825
18081826func TestVerifyPhysicalPlacementForObjectsSpectraS3 (t * testing.T ) {
18091827 expectedRequest := "<Objects><Object Name=\" o1\" ></Object></Objects>"
1810- responsePayload := "<Data><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes><Tape><AssignedToStorageDomain>false</AssignedToStorageDomain><AvailableRawCapacity>10000</AvailableRawCapacity><BarCode>t1</BarCode><BucketId/><DescriptionForIdentification/><EjectDate/><EjectLabel/><EjectLocation/><EjectPending/><FullOfData>false</FullOfData><Id>48d30ecb-84f1-4721-9832-7aa165a1dd77</Id><LastAccessed/><LastCheckpoint/><LastModified/><LastVerified/><PartiallyVerifiedEndOfTape/><PartitionId>76343269-c32a-4cb0-aec4-57a9dccce6ea</PartitionId><PreviousState/><SerialNumber/><State>PENDING_INSPECTION</State><StorageDomainId/>< TakeOwnershipPending>false</TakeOwnershipPending><TotalRawCapacity>20000</TotalRawCapacity><Type>LTO5</Type><VerifyPending/><WriteProtected>false</WriteProtected></Tape></Tapes></Data>"
1828+ responsePayload := "<Data><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes><Tape><AssignedToStorageDomain>false</AssignedToStorageDomain><AvailableRawCapacity>10000</AvailableRawCapacity><BarCode>t1</BarCode><BucketId/><DescriptionForIdentification/><EjectDate/><EjectLabel/><EjectLocation/><EjectPending/><FullOfData>false</FullOfData><Id>48d30ecb-84f1-4721-9832-7aa165a1dd77</Id><LastAccessed/><LastCheckpoint/><LastModified/><LastVerified/><PartiallyVerifiedEndOfTape/><PartitionId>76343269-c32a-4cb0-aec4-57a9dccce6ea</PartitionId><PreviousState/><SerialNumber/><State>PENDING_INSPECTION</State><TakeOwnershipPending>false</TakeOwnershipPending><TotalRawCapacity>20000</TotalRawCapacity><Type>LTO5</Type><VerifyPending/><WriteProtected>false</WriteProtected></Tape></Tapes></Data>"
18111829
18121830 // Create and run the mocked client.
18131831 bucketName := "b1"
@@ -1832,7 +1850,7 @@ func TestVerifyPhysicalPlacementForObjectsSpectraS3(t *testing.T) {
18321850
18331851func TestVerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3 (t * testing.T ) {
18341852 expectedRequest := "<Objects><Object Name=\" o1\" ></Object></Objects>"
1835- responsePayload := "<Data><Object Bucket=\" b1\" Id=\" ad5bfa96-8356-42e5-97c7-091780f9d2a7\" InCache=\" false\" Latest=\" true\" Length=\" 10\" Name=\" o1\" Offset=\" 0\" Version= \" 1 \" ><PhysicalPlacement><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes><Tape><AssignedToStorageDomain>false</AssignedToStorageDomain><AvailableRawCapacity>10000</AvailableRawCapacity><BarCode>t1</BarCode><BucketId/><DescriptionForIdentification/><EjectDate/><EjectLabel/><EjectLocation/><EjectPending/><FullOfData>false</FullOfData><Id>3514700d-4d4f-4e64-8ccd-20750b5514fd</Id><LastAccessed/><LastCheckpoint/><LastModified/><LastVerified/><PartiallyVerifiedEndOfTape/><PartitionId>dc681797-927a-4eb0-9652-d19d06534e50</PartitionId><PreviousState/><SerialNumber/><State>PENDING_INSPECTION</State><StorageDomainId/ ><TakeOwnershipPending>false</TakeOwnershipPending><TotalRawCapacity>20000</TotalRawCapacity><Type>LTO5</Type><VerifyPending/><WriteProtected>false</WriteProtected></Tape></Tapes></PhysicalPlacement></Object></Data>"
1853+ responsePayload := "<Data><Object Bucket=\" b1\" Id=\" ad5bfa96-8356-42e5-97c7-091780f9d2a7\" InCache=\" false\" Latest=\" true\" Length=\" 10\" Name=\" o1\" Offset=\" 0\" ><PhysicalPlacement><AzureTargets/><Ds3Targets/><Pools/><S3Targets/><Tapes><Tape><AssignedToStorageDomain>false</AssignedToStorageDomain><AvailableRawCapacity>10000</AvailableRawCapacity><BarCode>t1</BarCode><BucketId/><DescriptionForIdentification/><EjectDate/><EjectLabel/><EjectLocation/><EjectPending/><FullOfData>false</FullOfData><Id>3514700d-4d4f-4e64-8ccd-20750b5514fd</Id><LastAccessed/><LastCheckpoint/><LastModified/><LastVerified/><PartiallyVerifiedEndOfTape/><PartitionId>dc681797-927a-4eb0-9652-d19d06534e50</PartitionId><PreviousState/><SerialNumber/><State>PENDING_INSPECTION</State><TakeOwnershipPending>false</TakeOwnershipPending><TotalRawCapacity>20000</TotalRawCapacity><Type>LTO5</Type><VerifyPending/><WriteProtected>false</WriteProtected></Tape></Tapes></PhysicalPlacement></Object></Data>"
18361854
18371855 // Create and run the mocked client.
18381856 bucketName := "b1"
@@ -1865,7 +1883,6 @@ func TestVerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3(t *testing.T)
18651883 ds3Testing .AssertInt64 (t , "Length" , 10 , object .Length )
18661884 ds3Testing .AssertNonNilStringPtr (t , "Name" , "o1" , object .Name )
18671885 ds3Testing .AssertInt64 (t , "Offset" , 0 , object .Offset )
1868- ds3Testing .AssertInt64 (t , "Version" , 1 , object .Version )
18691886 if object .PhysicalPlacement == nil {
18701887 t .Fatal ("Expected PhysicalPlacement to not be nil" )
18711888 }
@@ -1902,7 +1919,7 @@ func TestVerifyPhysicalPlacementForObjectsWithFullDetailsSpectraS3(t *testing.T)
19021919 if tape .State != models .TAPE_STATE_PENDING_INSPECTION {
19031920 t .Fatalf ("Expected tape state 'TAPE_STATE_PENDING_INSPECTION' but got '%s'." , tape .State .String ())
19041921 }
1905- ds3Testing .AssertStringPtrIsNil (t , "StorageDomainId" , tape .StorageDomainId )
1922+ ds3Testing .AssertStringPtrIsNil (t , "StorageDomainId" , tape .StorageDomainMemberId )
19061923 ds3Testing .AssertBool (t , "TakeOwnershipPending" , false , tape .TakeOwnershipPending )
19071924 ds3Testing .AssertNonNilInt64Ptr (t , "TotalRawCapacity" , 20000 , tape .TotalRawCapacity )
19081925 ds3Testing .AssertString (t , "TapeType" , "LTO5" , tape .Type )
@@ -1939,3 +1956,33 @@ func TestHeadObject(t *testing.T) {
19391956 ds3Testing .AssertString (t , "checksum at offset '10485760'" , "965Aa0/n8DlO1IwXYFh4bg==" , response .BlobChecksums [10485760 ])
19401957 ds3Testing .AssertString (t , "checksum at offset '20971520'" , "iV2OqJaXJ/jmqgRSb1HmFA==" , response .BlobChecksums [20971520 ])
19411958}
1959+
1960+ func TestStageObjectsJob (t * testing.T ) {
1961+ expectedRequest := "<Objects><Object Name=\" o1\" ></Object><Object Name=\" o2\" VersionId=\" v2\" ></Object><Object Name=\" o3\" Length=\" 10\" Offset=\" 20\" VersionId=\" v3\" ></Object></Objects>"
1962+ responsePayload := "<MasterObjectList><Objects><Object Name='file2' Length='1202'/><Object Name='file1' Length='256'/><Object Name='file3' Length='2523'/></Objects></MasterObjectList>"
1963+
1964+ // Create and run the mocked client.
1965+ bucketName := "b1"
1966+ objects := []models.Ds3GetObject {
1967+ models .NewDs3GetObject ("o1" ),
1968+ models .NewDs3GetObjectVersion ("o2" , "v2" ),
1969+ models .NewPartialDs3GetObjectVersion ("o3" , 10 , 20 , "v3" ),
1970+ }
1971+
1972+ qp := & url.Values { "operation" : []string {"start_bulk_stage" } }
1973+
1974+ response , err := mockedClient (t ).
1975+ Expecting (HTTP_VERB_PUT , "/_rest_/bucket/" + bucketName , qp , & http.Header {}, & expectedRequest ).
1976+ Returning (200 , responsePayload , nil ).
1977+ StageObjectsJobSpectraS3 (models .NewStageObjectsJobSpectraS3RequestWithPartialObjects (bucketName , objects ))
1978+
1979+ // Check the error result.
1980+ ds3Testing .AssertNilError (t , err )
1981+
1982+ // Check the response value.
1983+ if response == nil {
1984+ t .Fatalf ("Response was unexpectedly nil." )
1985+ }
1986+ ds3Testing .AssertInt (t , "Number of objects" , 1 , len (response .MasterObjectList .Objects ))
1987+ ds3Testing .AssertInt (t , "Number of blobs" , 3 , len (response .MasterObjectList .Objects [0 ].Objects ))
1988+ }
0 commit comments