Skip to content

Commit 34c4dbc

Browse files
author
Caitlin Bales (MSFT)
committed
Functional test/sample code for chunked upload
Several people were requesting samples on how to do this. The functional test also adds test coverage. Ported from [.NET client library functional test](https://github.com/microsoftgraph/msgraph-sdk-dotnet/blob/dev/tests/Microsoft.Graph.Test/Requests/Functional/OneDriveTests.cs)
1 parent cb87e9d commit 34c4dbc

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package com.microsoft.graph.functional;
2+
3+
import java.io.IOException;
4+
import java.io.InputStream;
5+
6+
import org.junit.Assert;
7+
import org.junit.Before;
8+
import org.junit.Test;
9+
10+
import com.microsoft.graph.concurrency.ChunkedUploadProvider;
11+
import com.microsoft.graph.concurrency.IProgressCallback;
12+
import com.microsoft.graph.core.ClientException;
13+
import com.microsoft.graph.models.extensions.DriveItem;
14+
import com.microsoft.graph.models.extensions.DriveItemUploadableProperties;
15+
import com.microsoft.graph.models.extensions.UploadSession;
16+
17+
public class OneDriveTests {
18+
private TestBase testBase;
19+
20+
@Before
21+
public void setUp() {
22+
testBase = new TestBase();
23+
}
24+
25+
/**
26+
* Test large file upload.
27+
* https://github.com/OneDrive/onedrive-sdk-csharp/blob/master/docs/chunked-uploads.md
28+
*
29+
* @throws IOException if the input file is not found
30+
* @throws InterruptedException if the chunked upload fails
31+
*/
32+
@Test
33+
public void testLargeFileUpload() throws IOException, InterruptedException {
34+
String itemId = "01BQHXQL5GQVAGCFJLYRH3EAG2YHGERMQA"; //Test upload folder
35+
36+
//Get resource file from file system
37+
ClassLoader classloader = Thread.currentThread().getContextClassLoader();
38+
InputStream uploadFile = classloader.getResourceAsStream("hamilton.jpg");
39+
int fileSize = uploadFile.available();
40+
41+
IProgressCallback<DriveItem> callback = new IProgressCallback<DriveItem> () {
42+
@Override
43+
public void progress(final long current, final long max) {
44+
//Check progress
45+
}
46+
@Override
47+
public void success(final DriveItem result) {
48+
//Handle the successful response
49+
String finishedItemId = result.id;
50+
Assert.assertNotNull(finishedItemId);
51+
}
52+
53+
@Override
54+
public void failure(final ClientException ex) {
55+
//Handle the failed upload
56+
Assert.fail("Upload session failed");
57+
}
58+
};
59+
60+
UploadSession uploadSession = testBase
61+
.graphClient
62+
.me()
63+
.drive()
64+
.items(itemId)
65+
.itemWithPath("_hamilton.jpg")
66+
.createUploadSession(new DriveItemUploadableProperties())
67+
.buildRequest()
68+
.post();
69+
70+
ChunkedUploadProvider<DriveItem> chunkedUploadProvider = new ChunkedUploadProvider<DriveItem>(
71+
uploadSession,
72+
testBase.graphClient,
73+
uploadFile,
74+
fileSize,
75+
DriveItem.class);
76+
77+
chunkedUploadProvider.upload(null, callback);
78+
}
79+
80+
}

0 commit comments

Comments
 (0)