Skip to content

Commit 04ad1a6

Browse files
authored
Merge pull request #11702 from IQSS/11465-api-fetch-download-size-file-count-2
fix file downloadSize/Count after revert
2 parents 761da9c + 4947496 commit 04ad1a6

File tree

2 files changed

+60
-15
lines changed

2 files changed

+60
-15
lines changed

src/main/java/edu/harvard/iq/dataverse/api/Datasets.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ public Response getVersionFileCounts(@Context ContainerRequestContext crc,
587587
} catch (IllegalArgumentException e) {
588588
return badRequest(BundleUtil.getStringFromBundle("datasets.api.version.files.invalid.access.status", List.of(accessStatus)));
589589
}
590-
DatasetVersion datasetVersion = getDatasetVersionOrDie(req, versionId, findDatasetOrDie(datasetId), uriInfo, headers, includeDeaccessioned);
590+
DatasetVersion datasetVersion = getDatasetVersionOrDie(req, versionId, findDatasetOrDie(datasetId), uriInfo, headers, includeDeaccessioned, false);
591591
JsonObjectBuilder jsonObjectBuilder = Json.createObjectBuilder();
592592
jsonObjectBuilder.add("total", datasetVersionFilesServiceBean.getFileMetadataCount(datasetVersion, fileSearchCriteria));
593593
jsonObjectBuilder.add("perContentType", json(datasetVersionFilesServiceBean.getFileMetadataCountPerContentType(datasetVersion, fileSearchCriteria)));
@@ -3568,7 +3568,7 @@ public Response getDownloadSize(@Context ContainerRequestContext crc,
35683568
} catch (IllegalArgumentException e) {
35693569
return error(Response.Status.BAD_REQUEST, "Invalid mode: " + mode);
35703570
}
3571-
DatasetVersion datasetVersion = getDatasetVersionOrDie(req, version, findDatasetOrDie(dvIdtf), uriInfo, headers, includeDeaccessioned);
3571+
DatasetVersion datasetVersion = getDatasetVersionOrDie(req, version, findDatasetOrDie(dvIdtf), uriInfo, headers, includeDeaccessioned, false);
35723572
long datasetStorageSize = datasetVersionFilesServiceBean.getFilesDownloadSize(datasetVersion, fileSearchCriteria, fileDownloadSizeMode);
35733573
String message = MessageFormat.format(BundleUtil.getStringFromBundle("datasets.api.datasize.download"), datasetStorageSize);
35743574
JsonObjectBuilder jsonObjectBuilder = Json.createObjectBuilder();

src/test/java/edu/harvard/iq/dataverse/api/DatasetsIT.java

Lines changed: 58 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5637,12 +5637,21 @@ public void getVersionFileCounts() throws IOException, InterruptedException {
56375637
responseJsonPath = getVersionFileCountsResponseDeaccessioned.jsonPath();
56385638
assertEquals(5, (Integer) responseJsonPath.get("data.total"));
56395639

5640-
// Test that the dataset file counts for a deaccessioned dataset cannot be accessed by a guest
5640+
// Test that the dataset file counts for a deaccessioned dataset can be accessed by a guest
56415641
// By latest published version
56425642
Response getDatasetVersionResponse = UtilIT.getVersionFileCounts(datasetId, DS_VERSION_LATEST_PUBLISHED, null, null, null, null, null, true, null);
5643-
getDatasetVersionResponse.then().assertThat().statusCode(NOT_FOUND.getStatusCode());
5643+
getDatasetVersionResponse.then().assertThat().statusCode(OK.getStatusCode());
5644+
assertEquals(5, (Integer) responseJsonPath.get("data.total"));
5645+
// By specific version 1.0
5646+
getDatasetVersionResponse = UtilIT.getVersionFileCounts(datasetId, "1.0", null, null, null, null, null, true, null);
5647+
getDatasetVersionResponse.then().assertThat().statusCode(OK.getStatusCode());
5648+
assertEquals(5, (Integer) responseJsonPath.get("data.total"));
56445649
// By specific version 1.0
56455650
getDatasetVersionResponse = UtilIT.getVersionFileCounts(datasetId, "1.0", null, null, null, null, null, true, null);
5651+
getDatasetVersionResponse.then().assertThat().statusCode(OK.getStatusCode());
5652+
assertEquals(5, (Integer) responseJsonPath.get("data.total"));
5653+
// By latest published version not including deaccessioned
5654+
getDatasetVersionResponse = UtilIT.getVersionFileCounts(datasetId, DS_VERSION_LATEST_PUBLISHED, null, null, null, null, null, false, null);
56465655
getDatasetVersionResponse.then().assertThat().statusCode(NOT_FOUND.getStatusCode());
56475656
}
56485657

@@ -5761,7 +5770,7 @@ public void deaccessionDataset() {
57615770
}
57625771

57635772
@Test
5764-
public void getDownloadSize() throws IOException, InterruptedException {
5773+
public void getDownloadSize() throws IOException {
57655774
Response createUser = UtilIT.createRandomUser();
57665775
createUser.then().assertThat().statusCode(OK.getStatusCode());
57675776
String apiToken = UtilIT.getApiTokenFromResponse(createUser);
@@ -5800,7 +5809,7 @@ public void getDownloadSize() throws IOException, InterruptedException {
58005809
int tabularOriginalSize = 157;
58015810

58025811
// Ensure tabular file is ingested
5803-
Thread.sleep(2000);
5812+
UtilIT.sleepForLock(datasetId, null, apiToken, UtilIT.MAXIMUM_INGEST_LOCK_DURATION);
58045813

58055814
// Get the total size ignoring the original tabular file sizes
58065815
getDownloadSizeResponse = UtilIT.getDownloadSize(datasetId, DS_VERSION_LATEST, null, null, null, null, null, DatasetVersionFilesServiceBean.FileDownloadSizeMode.Archival.toString(), false, apiToken);
@@ -5837,7 +5846,7 @@ public void getDownloadSize() throws IOException, InterruptedException {
58375846
uploadTabularFileResponse.then().assertThat().statusCode(OK.getStatusCode());
58385847

58395848
// Ensure tabular file is ingested
5840-
Thread.sleep(2000);
5849+
UtilIT.sleepForLock(datasetId, null, apiToken, UtilIT.MAXIMUM_INGEST_LOCK_DURATION);
58415850

58425851
// Get the total size including only original sizes and ignoring archival sizes for tabular files
58435852
expectedSizeIncludingOnlyOriginalForTabular = tabularOriginalSize + expectedSizeIncludingOnlyOriginalForTabular;
@@ -5868,21 +5877,57 @@ public void getDownloadSize() throws IOException, InterruptedException {
58685877
Response deaccessionDatasetResponse = UtilIT.deaccessionDataset(datasetId, DS_VERSION_LATEST_PUBLISHED, "Test deaccession reason.", null, apiToken);
58695878
deaccessionDatasetResponse.then().assertThat().statusCode(OK.getStatusCode());
58705879

5880+
// Auth User Tests:
58715881
// includeDeaccessioned false
5872-
Response getVersionFileCountsResponseNoDeaccessioned = UtilIT.getDownloadSize(datasetId, DS_VERSION_LATEST_PUBLISHED, null, null, null, null, null, DatasetVersionFilesServiceBean.FileDownloadSizeMode.All.toString(), false, apiToken);
5873-
getVersionFileCountsResponseNoDeaccessioned.then().assertThat().statusCode(NOT_FOUND.getStatusCode());
5874-
5882+
getDownloadSizeResponse = UtilIT.getDownloadSize(datasetId, DS_VERSION_LATEST_PUBLISHED, null, null, null, null, null, DatasetVersionFilesServiceBean.FileDownloadSizeMode.All.toString(), false, apiToken);
5883+
getDownloadSizeResponse.then().assertThat().statusCode(NOT_FOUND.getStatusCode());
58755884
// includeDeaccessioned true
5876-
Response getVersionFileCountsResponseDeaccessioned = UtilIT.getDownloadSize(datasetId, DS_VERSION_LATEST_PUBLISHED, null, null, null, null, null, DatasetVersionFilesServiceBean.FileDownloadSizeMode.All.toString(), true, apiToken);
5877-
getVersionFileCountsResponseDeaccessioned.then().assertThat().statusCode(OK.getStatusCode());
5885+
getDownloadSizeResponse = UtilIT.getDownloadSize(datasetId, DS_VERSION_LATEST_PUBLISHED, null, null, null, null, null, DatasetVersionFilesServiceBean.FileDownloadSizeMode.All.toString(), true, apiToken);
5886+
getDownloadSizeResponse.then().assertThat().statusCode(OK.getStatusCode());
58785887

5879-
// Test that the dataset file counts for a deaccessioned dataset cannot be accessed by a guest
5888+
// Test that the dataset file counts for a deaccessioned dataset can be accessed by a guest
58805889
// By latest published version
58815890
Response getVersionFileCountsGuestUserResponse = UtilIT.getDownloadSize(datasetId, DS_VERSION_LATEST_PUBLISHED, null, null, null, null, null, DatasetVersionFilesServiceBean.FileDownloadSizeMode.All.toString(), true, null);
5882-
getVersionFileCountsGuestUserResponse.then().assertThat().statusCode(NOT_FOUND.getStatusCode());
5891+
getVersionFileCountsGuestUserResponse.then().assertThat().statusCode(OK.getStatusCode());
58835892
// By specific version 1.0
58845893
getVersionFileCountsGuestUserResponse = UtilIT.getDownloadSize(datasetId, "1.0", null, null, null, null, null, DatasetVersionFilesServiceBean.FileDownloadSizeMode.All.toString(), true, null);
5885-
getVersionFileCountsGuestUserResponse.then().assertThat().statusCode(NOT_FOUND.getStatusCode());
5894+
getVersionFileCountsGuestUserResponse.then().assertThat().statusCode(OK.getStatusCode());
5895+
5896+
// Guest User Tests:
5897+
// By latest published version includeDeaccessioned true
5898+
getDownloadSizeResponse = UtilIT.getDownloadSize(datasetId, DS_VERSION_LATEST_PUBLISHED, null, null, null, null, null, DatasetVersionFilesServiceBean.FileDownloadSizeMode.All.toString(), true, null);
5899+
getDownloadSizeResponse.prettyPrint();
5900+
getDownloadSizeResponse.then().assertThat().statusCode(OK.getStatusCode());
5901+
// By specific version 1.0 includeDeaccessioned true
5902+
getDownloadSizeResponse = UtilIT.getDownloadSize(datasetId, "1.0", null, null, null, null, null, DatasetVersionFilesServiceBean.FileDownloadSizeMode.All.toString(), true, null);
5903+
getDownloadSizeResponse.prettyPrint();
5904+
getDownloadSizeResponse.then().assertThat().statusCode(OK.getStatusCode());
5905+
// includeDeaccessioned false
5906+
getDownloadSizeResponse = UtilIT.getDownloadSize(datasetId, DS_VERSION_LATEST_PUBLISHED, null, null, null, null, null, DatasetVersionFilesServiceBean.FileDownloadSizeMode.All.toString(), false, null);
5907+
getDownloadSizeResponse.prettyPrint();
5908+
getDownloadSizeResponse.then().assertThat().statusCode(NOT_FOUND.getStatusCode());
5909+
5910+
// Create new dataset with no files and deaccession
5911+
createDatasetResponse = UtilIT.createRandomDatasetViaNativeApi(dataverseAlias, apiToken);
5912+
datasetId = JsonPath.from(createDatasetResponse.body().asString()).getInt("data.id");
5913+
publishDatasetResponse = UtilIT.publishDatasetViaNativeApi(datasetId, "major", apiToken);
5914+
publishDatasetResponse.then().assertThat().statusCode(OK.getStatusCode());
5915+
deaccessionDatasetResponse = UtilIT.deaccessionDataset(datasetId, DS_VERSION_LATEST_PUBLISHED, "Test deaccession reason.", null, apiToken);
5916+
deaccessionDatasetResponse.prettyPrint();
5917+
deaccessionDatasetResponse.then().assertThat().statusCode(OK.getStatusCode());
5918+
5919+
// includeDeaccessioned guest gets deaccessioned download size
5920+
getDownloadSizeResponse = UtilIT.getDownloadSize(datasetId, DS_VERSION_LATEST_PUBLISHED, null, null, null, null, null, DatasetVersionFilesServiceBean.FileDownloadSizeMode.All.toString(), true, null);
5921+
getDownloadSizeResponse.prettyPrint();
5922+
getDownloadSizeResponse.then().assertThat()
5923+
.statusCode(OK.getStatusCode())
5924+
.body("data.storageSize", equalTo(0));
5925+
// includeDeaccessioned guest gets deaccessioned version file counts
5926+
Response getDatasetVersionFileResponse = UtilIT.getVersionFileCounts(datasetId, DS_VERSION_LATEST_PUBLISHED, null, null, null, null, null, true, null);
5927+
getDatasetVersionFileResponse.prettyPrint();
5928+
getDatasetVersionFileResponse.then().assertThat()
5929+
.statusCode(OK.getStatusCode())
5930+
.body("data.total", equalTo(0));
58865931
}
58875932

58885933
@Test

0 commit comments

Comments
 (0)