Skip to content

Commit c787122

Browse files
authored
add log to investigate missing upload date in Google -> Apple Photos transfer (#1333)
1 parent 6fe2178 commit c787122

File tree

4 files changed

+35
-10
lines changed

4 files changed

+35
-10
lines changed

extensions/data-transfer/portability-data-transfer-apple/src/main/java/org/datatransferproject/datatransfer/apple/photos/AppleMediaImporter.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,17 @@
2828
import org.datatransferproject.api.launcher.Monitor;
2929
import org.datatransferproject.datatransfer.apple.AppleInterfaceFactory;
3030
import org.datatransferproject.datatransfer.apple.constants.ApplePhotosConstants;
31+
import org.datatransferproject.datatransfer.apple.constants.AuditKeys;
32+
import org.datatransferproject.datatransfer.apple.constants.Headers;
3133
import org.datatransferproject.spi.transfer.idempotentexecutor.IdempotentImportExecutor;
3234
import org.datatransferproject.spi.transfer.idempotentexecutor.RetryingInMemoryIdempotentImportExecutor;
3335
import org.datatransferproject.spi.transfer.provider.ImportResult;
3436
import org.datatransferproject.spi.transfer.provider.Importer;
3537
import org.datatransferproject.transfer.JobMetadata;
3638
import org.datatransferproject.types.common.models.DataVertical;
3739
import org.datatransferproject.types.common.models.media.MediaContainerResource;
40+
import org.datatransferproject.types.common.models.photos.PhotoModel;
41+
import org.datatransferproject.types.common.models.videos.VideoModel;
3842
import org.datatransferproject.types.transfer.auth.AppCredentials;
3943
import org.datatransferproject.types.transfer.auth.TokensAndUrlAuthData;
4044
import org.datatransferproject.types.transfer.errors.ErrorDetail;
@@ -84,6 +88,19 @@ public ImportResult importItem(
8488
return ImportResult.OK;
8589
}
8690

91+
// log
92+
for (PhotoModel photoModel: data.getPhotos()) {
93+
monitor.info(() -> "AppleMediaImporter received data",
94+
AuditKeys.dataId, photoModel.getDataId(),
95+
AuditKeys.updatedTimeInMs, photoModel.getUploadedTime());
96+
}
97+
98+
for (VideoModel videoModel: data.getVideos()) {
99+
monitor.info(() -> "AppleMediaImporter received data",
100+
AuditKeys.dataId, videoModel.getDataId(),
101+
AuditKeys.updatedTimeInMs, videoModel.getUploadedTime());
102+
}
103+
87104
IdempotentImportExecutor executor =
88105
(retryingIdempotentExecutor != null && enableRetrying) ? retryingIdempotentExecutor : idempotentExecutor;
89106

extensions/data-transfer/portability-data-transfer-apple/src/main/java/org/datatransferproject/datatransfer/apple/photos/AppleMediaInterface.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,13 @@ public CreateMediaResponse createMedia(
226226
createMediaRequestBuilder.setDataClass(dataClass);
227227
createMediaRequestBuilder.addAllNewMediaRequests(newMediaRequestList);
228228
CreateMediaRequest createMediaRequest = createMediaRequestBuilder.build();
229+
230+
for (NewMediaRequest newMediaRequest: newMediaRequestList) {
231+
monitor.info(() -> "AppleMediaImporter send data to Apple Photos Service",
232+
AuditKeys.dataId, newMediaRequest.getDataId(),
233+
AuditKeys.updatedTimeInMs, newMediaRequest.getCreationDateInMillis());
234+
}
235+
229236
final byte[] payload = createMediaRequest.toByteArray();
230237

231238
final byte[] responseData = makePhotosServicePostRequest(baseUrl + "createmedia", payload);

extensions/data-transfer/portability-data-transfer-apple/src/test/java/org/datatransferproject/datatransfer/apple/photos/AppleImporterTestBase.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import java.io.IOException;
2828
import java.io.Serializable;
2929
import java.util.ArrayList;
30+
import java.util.Date;
3031
import java.util.HashMap;
3132
import java.util.List;
3233
import java.util.Map;
@@ -45,6 +46,7 @@
4546
import org.datatransferproject.types.transfer.auth.TokensAndUrlAuthData;
4647
import org.datatransferproject.types.transfer.errors.ErrorDetail;
4748
import org.jetbrains.annotations.NotNull;
49+
import org.junit.Assert;
4850
import org.junit.platform.commons.util.ReflectionUtils;
4951
import org.junit.platform.commons.util.ReflectionUtils.HierarchyTraversalMode;
5052
import org.mockito.stubbing.Answer;
@@ -266,7 +268,8 @@ protected List<PhotoModel> createTestPhotos(@NotNull final int count) {
266268
PHOTOS_DATAID_BASE + i,
267269
ALBUM_DATAID_BASE + i,
268270
false,
269-
(String) null);
271+
null,
272+
new Date());
270273
photos.add(photoModel);
271274
}
272275
return photos;
@@ -284,7 +287,7 @@ protected List<VideoModel> createTestVideos(@NotNull final int count) {
284287
VIDEOS_DATAID_BASE + i,
285288
ALBUM_DATAID_BASE + i,
286289
false,
287-
null);
290+
new Date());
288291
videos.add(videoModel);
289292
}
290293
return videos;

extensions/data-transfer/portability-data-transfer-apple/src/test/java/org/datatransferproject/datatransfer/apple/photos/AppleMediaImporterTest.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,8 @@
1616
package org.datatransferproject.datatransfer.apple.photos;
1717

1818
import static com.google.common.truth.Truth.assertThat;
19-
import static org.apache.http.HttpStatus.SC_INTERNAL_SERVER_ERROR;
2019
import static org.apache.http.HttpStatus.SC_OK;
21-
import static org.mockito.ArgumentMatchers.any;
22-
import static org.mockito.ArgumentMatchers.anyList;
23-
import static org.mockito.ArgumentMatchers.anyMap;
24-
import static org.mockito.ArgumentMatchers.anyString;
20+
import static org.mockito.ArgumentMatchers.*;
2521
import static org.mockito.Mockito.times;
2622
import static org.mockito.Mockito.verify;
2723
import static org.mockito.Mockito.when;
@@ -36,9 +32,7 @@
3632
import java.util.stream.Collectors;
3733

3834
import com.google.common.collect.ImmutableList;
39-
import org.datatransferproject.datatransfer.apple.constants.ApplePhotosConstants;
4035
import org.datatransferproject.datatransfer.apple.photos.photosproto.PhotosProtocol;
41-
import org.datatransferproject.datatransfer.apple.photos.TestConstants;
4236
import org.datatransferproject.spi.transfer.idempotentexecutor.RetryingInMemoryIdempotentImportExecutor;
4337
import org.datatransferproject.spi.transfer.provider.ImportResult;
4438
import org.datatransferproject.spi.transfer.types.CopyExceptionWithFailureReason;
@@ -137,7 +131,11 @@ public void importPhotosVideosAndAlbums() throws Exception {
137131
verify(mediaInterface)
138132
.getUploadUrl(uuid.toString(), DataVertical.MEDIA.getDataType(), videosDataIds);
139133
verify(mediaInterface, times(2)).uploadContent(anyMap(), anyList());
140-
verify(mediaInterface, times(2)).createMedia(anyString(), anyString(), anyList());
134+
verify(mediaInterface, times(2)).createMedia(anyString(), anyString(), argThat(newMediaRequestList -> {
135+
assertThat(newMediaRequestList).isNotNull();
136+
assertThat(newMediaRequestList.stream().allMatch(newMediaRequest -> newMediaRequest.hasCreationDateInMillis())).isTrue();
137+
return true;
138+
}));
141139

142140
// check the result
143141
assertThat(importResult.getCounts().isPresent()).isTrue();

0 commit comments

Comments
 (0)