Skip to content

Commit cf003ca

Browse files
getBucketStat interface adds information related to deep cold archiving
1 parent c8a7f8c commit cf003ca

File tree

4 files changed

+183
-2
lines changed

4 files changed

+183
-2
lines changed

src/main/java/com/aliyun/oss/internal/ResponseParsers.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2858,6 +2858,9 @@ public static BucketStat parseGetBucketStat(InputStream responseBody) throws Res
28582858
Long coldArchiveStorage = parseLongWithDefault(root.getChildText("ColdArchiveStorage"));
28592859
Long coldArchiveRealStorage = parseLongWithDefault(root.getChildText("ColdArchiveRealStorage"));
28602860
Long coldArchiveObjectCount = parseLongWithDefault(root.getChildText("ColdArchiveObjectCount"));
2861+
Long deepColdArchiveStorage = parseLongWithDefault(root.getChildText("DeepColdArchiveStorage"));
2862+
Long deepColdArchiveRealStorage = parseLongWithDefault(root.getChildText("DeepColdArchiveRealStorage"));
2863+
Long deepColdArchiveObjectCount = parseLongWithDefault(root.getChildText("DeepColdArchiveObjectCount"));
28612864
BucketStat bucketStat = new BucketStat()
28622865
.withStorageSize(storage)
28632866
.withObjectCount(objectCount)
@@ -2874,7 +2877,10 @@ public static BucketStat parseGetBucketStat(InputStream responseBody) throws Res
28742877
.withArchiveObjectCount(archiveObjectCount)
28752878
.withColdArchiveStorage(coldArchiveStorage)
28762879
.withColdArchiveRealStorage(coldArchiveRealStorage)
2877-
.withColdArchiveObjectCount(coldArchiveObjectCount);
2880+
.withColdArchiveObjectCount(coldArchiveObjectCount)
2881+
.withDeepColdArchiveStorage(deepColdArchiveStorage)
2882+
.withDeepColdArchiveRealStorage(deepColdArchiveRealStorage)
2883+
.withDeepColdArchiveObjectCount(deepColdArchiveObjectCount);
28782884

28792885
return bucketStat;
28802886
} catch (JDOMParseException e) {

src/main/java/com/aliyun/oss/model/BucketStat.java

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,75 @@ public BucketStat withColdArchiveObjectCount(Long coldArchiveObjectCount) {
394394
return this;
395395
}
396396

397+
/**
398+
* Gets the deep cold archive storage.
399+
*
400+
* @return The deep cold archive storage.
401+
*/
402+
public Long getDeepColdArchiveStorage() {
403+
return deepColdArchiveStorage;
404+
}
405+
406+
/**
407+
* Sets the deep cold archive storage and returns the current BucketStat instance
408+
* (this).
409+
*
410+
* @param deepColdArchiveStorage
411+
* The deep cold archive storage.
412+
*
413+
* @return The {@link BucketStat} instance.
414+
*/
415+
public BucketStat withDeepColdArchiveStorage(Long deepColdArchiveStorage) {
416+
this.deepColdArchiveStorage = deepColdArchiveStorage;
417+
return this;
418+
}
419+
420+
/**
421+
* Gets the deep cold archive real storage.
422+
*
423+
* @return The cold archive real storage.
424+
*/
425+
public Long getDeepColdArchiveRealStorage() {
426+
return deepColdArchiveRealStorage;
427+
}
428+
429+
/**
430+
* Sets the deep cold archive real storage and returns the current BucketStat instance
431+
* (this).
432+
*
433+
* @param deepColdArchiveRealStorage
434+
* The deep cold archive real storage.
435+
*
436+
* @return The {@link BucketStat} instance.
437+
*/
438+
public BucketStat withDeepColdArchiveRealStorage(Long deepColdArchiveRealStorage) {
439+
this.deepColdArchiveRealStorage = deepColdArchiveRealStorage;
440+
return this;
441+
}
442+
443+
/**
444+
* Gets the deep cold archive object count.
445+
*
446+
* @return The deep cold archive object count.
447+
*/
448+
public Long getDeepColdArchiveObjectCount() {
449+
return deepColdArchiveObjectCount;
450+
}
451+
452+
/**
453+
* Sets the deep cold archive object count and returns the current BucketStat instance
454+
* (this).
455+
*
456+
* @param deepColdArchiveObjectCount
457+
* The deep cold archive object count.
458+
*
459+
* @return The {@link BucketStat} instance.
460+
*/
461+
public BucketStat withDeepColdArchiveObjectCount(Long deepColdArchiveObjectCount) {
462+
this.deepColdArchiveObjectCount = deepColdArchiveObjectCount;
463+
return this;
464+
}
465+
397466
private Long storageSize; // bytes
398467
private Long objectCount;
399468
private Long multipartUploadCount;
@@ -410,4 +479,7 @@ public BucketStat withColdArchiveObjectCount(Long coldArchiveObjectCount) {
410479
private Long coldArchiveStorage;
411480
private Long coldArchiveRealStorage;
412481
private Long coldArchiveObjectCount;
482+
private Long deepColdArchiveStorage;
483+
private Long deepColdArchiveRealStorage;
484+
private Long deepColdArchiveObjectCount;
413485
}

src/test/java/com/aliyun/oss/common/parser/ResponseParsersTest.java

Lines changed: 55 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5801,7 +5801,7 @@ public void testArchiveDirectReadResponseParser() {
58015801
Assert.assertEquals(false, result.getEnabled());
58025802
}
58035803

5804-
5804+
58055805
@Test
58065806
public void testParseGetBucketHttpsConfig() {
58075807
InputStream instream = null;
@@ -6507,4 +6507,58 @@ public void listAccessPointResponseParserTest() {
65076507
Assert.fail("parse list access point response body fail");
65086508
}
65096509
}
6510+
6511+
@Test
6512+
public void testParseGetBucketStatWithDeepCold() {
6513+
InputStream instream = null;
6514+
6515+
String respBody = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
6516+
"<BucketStat>\n" +
6517+
" <Storage>1600</Storage>\n" +
6518+
" <ObjectCount>230</ObjectCount>\n" +
6519+
" <MultipartUploadCount>40</MultipartUploadCount>\n" +
6520+
" <LiveChannelCount>4</LiveChannelCount>\n" +
6521+
" <LastModifiedTime>0</LastModifiedTime>\n" +
6522+
" <StandardStorage>430</StandardStorage>\n" +
6523+
" <StandardObjectCount>66</StandardObjectCount>\n" +
6524+
" <InfrequentAccessStorage>2359296</InfrequentAccessStorage>\n" +
6525+
" <InfrequentAccessRealStorage>360</InfrequentAccessRealStorage>\n" +
6526+
" <InfrequentAccessObjectCount>54</InfrequentAccessObjectCount>\n" +
6527+
" <ArchiveStorage>2949120</ArchiveStorage>\n" +
6528+
" <ArchiveRealStorage>450</ArchiveRealStorage>\n" +
6529+
" <ArchiveObjectCount>74</ArchiveObjectCount>\n" +
6530+
" <ColdArchiveStorage>2359296</ColdArchiveStorage>\n" +
6531+
" <ColdArchiveRealStorage>360</ColdArchiveRealStorage>\n" +
6532+
" <ColdArchiveObjectCount>36</ColdArchiveObjectCount>\n" +
6533+
" <DeepColdArchiveStorage>23592961</DeepColdArchiveStorage>\n" +
6534+
" <DeepColdArchiveRealStorage>3601</DeepColdArchiveRealStorage>\n" +
6535+
" <DeepColdArchiveObjectCount>361</DeepColdArchiveObjectCount>\n" +
6536+
"</BucketStat>";
6537+
6538+
try {
6539+
instream = new ByteArrayInputStream(respBody.getBytes("utf-8"));
6540+
BucketStat result = ResponseParsers.parseGetBucketStat(instream);
6541+
Assert.assertEquals(Long.valueOf(1600), result.getStorageSize());
6542+
Assert.assertEquals(Long.valueOf(230), result.getObjectCount());
6543+
Assert.assertEquals(Long.valueOf(40), result.getMultipartUploadCount());
6544+
Assert.assertEquals(Long.valueOf(4), result.getLiveChannelCount());
6545+
Assert.assertEquals(Long.valueOf(0), result.getLastModifiedTime());
6546+
Assert.assertEquals(Long.valueOf(430), result.getStandardStorage());
6547+
Assert.assertEquals(Long.valueOf(66), result.getStandardObjectCount());
6548+
Assert.assertEquals(Long.valueOf(2359296), result.getInfrequentAccessStorage());
6549+
Assert.assertEquals(Long.valueOf(360), result.getInfrequentAccessRealStorage());
6550+
Assert.assertEquals(Long.valueOf(54), result.getInfrequentAccessObjectCount());
6551+
Assert.assertEquals(Long.valueOf(2949120), result.getArchiveStorage());
6552+
Assert.assertEquals(Long.valueOf(450), result.getArchiveRealStorage());
6553+
Assert.assertEquals(Long.valueOf(74), result.getArchiveObjectCount());
6554+
Assert.assertEquals(Long.valueOf(2359296), result.getColdArchiveStorage());
6555+
Assert.assertEquals(Long.valueOf(360), result.getColdArchiveRealStorage());
6556+
Assert.assertEquals(Long.valueOf(36), result.getColdArchiveObjectCount());
6557+
Assert.assertEquals(Long.valueOf(23592961), result.getDeepColdArchiveStorage());
6558+
Assert.assertEquals(Long.valueOf(3601), result.getDeepColdArchiveRealStorage());
6559+
Assert.assertEquals(Long.valueOf(361), result.getDeepColdArchiveObjectCount());
6560+
} catch (Exception e) {
6561+
Assert.assertTrue(false);
6562+
}
6563+
}
65106564
}

src/test/java/com/aliyun/oss/integrationtests/BucketStatTest.java

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import junit.framework.Assert;
2323

24+
import java.io.ByteArrayInputStream;
2425
import java.io.File;
2526

2627
import org.junit.Test;
@@ -156,4 +157,52 @@ public void testGetBucketStatForStorageInfo() {
156157
}
157158
}
158159
}
160+
161+
@Test
162+
public void testGetBucketStatForStorageInfoWithDeepCold() {
163+
String key = "obj-upload-file-storage-stat-deep.txt";
164+
String uploadId = null;
165+
166+
try {
167+
168+
ossClient.putObject(bucketName, key, new ByteArrayInputStream("aaaa".getBytes()));
169+
170+
// init upload
171+
InitiateMultipartUploadRequest initiateMultipartUploadRequest =
172+
new InitiateMultipartUploadRequest(bucketName, key);
173+
InitiateMultipartUploadResult initiateMultipartUploadResult =
174+
ossClient.initiateMultipartUpload(initiateMultipartUploadRequest);
175+
Assert.assertEquals(initiateMultipartUploadResult.getRequestId().length(), REQUEST_ID_LEN);
176+
uploadId = initiateMultipartUploadResult.getUploadId();
177+
178+
BucketStat stat = ossClient.getBucketStat(bucketName);
179+
System.out.println(stat.getStorageSize() + "," + stat.getObjectCount() + "," + stat.getMultipartUploadCount());
180+
Assert.assertTrue(stat.getStorageSize() >= 1);
181+
Assert.assertTrue(stat.getObjectCount() >= 1);
182+
Assert.assertTrue(stat.getMultipartUploadCount() >= 1);
183+
Assert.assertTrue(stat.getStandardStorage() >= 1);
184+
Assert.assertTrue(stat.getStandardObjectCount() >= 1);
185+
Assert.assertTrue(stat.getLiveChannelCount() >= 0);
186+
Assert.assertTrue(stat.getLastModifiedTime() >= 0);
187+
Assert.assertTrue(stat.getInfrequentAccessStorage() >= 0);
188+
Assert.assertTrue(stat.getInfrequentAccessRealStorage() >= 0);
189+
Assert.assertTrue(stat.getInfrequentAccessObjectCount() >= 0);
190+
Assert.assertTrue(stat.getArchiveStorage() >= 0);
191+
Assert.assertTrue(stat.getArchiveRealStorage() >= 0);
192+
Assert.assertTrue(stat.getArchiveObjectCount() >= 0);
193+
Assert.assertTrue(stat.getColdArchiveStorage() >= 0);
194+
Assert.assertTrue(stat.getColdArchiveRealStorage() >= 0);
195+
Assert.assertTrue(stat.getColdArchiveObjectCount() >= 0);
196+
Assert.assertTrue(stat.getDeepColdArchiveStorage() >= 0);
197+
Assert.assertTrue(stat.getDeepColdArchiveRealStorage() >= 0);
198+
Assert.assertTrue(stat.getDeepColdArchiveObjectCount() >= 0);
199+
Assert.assertEquals(stat.getRequestId().length(), REQUEST_ID_LEN);
200+
} catch (Exception e) {
201+
e.printStackTrace();
202+
Assert.fail(e.getMessage());
203+
} catch (Throwable e) {
204+
e.printStackTrace();
205+
Assert.fail(e.getMessage());
206+
}
207+
}
159208
}

0 commit comments

Comments
 (0)