Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ All notable changes to this project will be documented in this file.
- Reorder static and final keywords. (#717)
- Update `contribution` and `contributionAndFinalize` detector tests.
TEE tasks with callback are now eligible to `contributeAndFinalize` flow. (#719)
- Resolve deprecations caused by `TaskDescription` in `ReplicatesService` and `ResultService`. (#723)

### Dependency Upgrades

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/iexec/core/replicate/ReplicatesService.java
Original file line number Diff line number Diff line change
Expand Up @@ -545,8 +545,8 @@ public boolean isResultUploaded(String chainTaskId) {
return isResultUploaded(task);
}

public boolean isResultUploaded(TaskDescription task) {
final boolean hasIpfsStorageProvider = IPFS_RESULT_STORAGE_PROVIDER.equals(task.getResultStorageProvider());
public boolean isResultUploaded(final TaskDescription task) {
final boolean hasIpfsStorageProvider = IPFS_RESULT_STORAGE_PROVIDER.equals(task.getDealParams().getIexecResultStorageProvider());

// Offchain computing or TEE task with private storage
if (task.containsCallback() || (task.isTeeTask() && !hasIpfsStorageProvider)) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/iexec/core/result/ResultService.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public ResultService(final ResultRepositoryConfiguration resultRepositoryConfigu
@Retryable(value = FeignException.class)
public boolean isResultUploaded(final TaskDescription taskDescription) {
final String chainTaskId = taskDescription.getChainTaskId();
final ResultProxyClient resultProxyClient = resultRepositoryConfiguration.createResultProxyClientFromURL(taskDescription.getResultStorageProxy());
final ResultProxyClient resultProxyClient = resultRepositoryConfiguration.createResultProxyClientFromURL(taskDescription.getDealParams().getIexecResultStorageProxy());
final String enclaveChallenge = taskService.getTaskByChainTaskId(chainTaskId).map(Task::getEnclaveChallenge).orElse(EMPTY_ADDRESS);
final WorkerpoolAuthorization workerpoolAuthorization = signatureService.createAuthorization(signatureService.getAddress(), chainTaskId, enclaveChallenge);
final String resultProxyToken = resultProxyClient.getJwt(workerpoolAuthorization.getSignature().getValue(), workerpoolAuthorization);
Expand Down
58 changes: 37 additions & 21 deletions src/test/java/com/iexec/core/replicate/ReplicateServiceTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import com.iexec.common.replicate.*;
import com.iexec.commons.poco.chain.ChainContribution;
import com.iexec.commons.poco.chain.ChainTask;
import com.iexec.commons.poco.chain.DealParams;
import com.iexec.commons.poco.task.TaskDescription;
import com.iexec.commons.poco.utils.BytesUtils;
import com.iexec.core.chain.IexecHubService;
Expand Down Expand Up @@ -749,36 +750,42 @@ void shouldGetReplicateWithResultUploadedStatus() {

@ParameterizedTest
@ValueSource(booleans = {true, false})
void shouldCheckResultServiceAndReturnTrue(boolean isTeeTask) {
void shouldCheckResultServiceAndReturnTrue(final boolean isTeeTask) {
final DealParams dealParams = DealParams.builder()
.iexecResultStorageProvider(IPFS_RESULT_STORAGE_PROVIDER)
.build();
TaskDescription taskDescription = TaskDescription.builder()
.chainTaskId(CHAIN_TASK_ID)
.callback(BytesUtils.EMPTY_ADDRESS)
.isTeeTask(isTeeTask)
.resultStorageProvider(IPFS_RESULT_STORAGE_PROVIDER)
.dealParams(dealParams)
.build();
when(iexecHubService.getTaskDescription(CHAIN_TASK_ID))
.thenReturn(taskDescription);
when(resultService.isResultUploaded(taskDescription)).thenReturn(true);

boolean isResultUploaded = replicatesService.isResultUploaded(CHAIN_TASK_ID);
final boolean isResultUploaded = replicatesService.isResultUploaded(CHAIN_TASK_ID);
assertThat(isResultUploaded).isTrue();
verify(resultService).isResultUploaded(taskDescription);
}

@ParameterizedTest
@ValueSource(booleans = {true, false})
void shouldCheckResultServiceAndReturnFalse(boolean isTeeTask) {
TaskDescription taskDescription = TaskDescription.builder()
void shouldCheckResultServiceAndReturnFalse(final boolean isTeeTask) {
final DealParams dealParams = DealParams.builder()
.iexecResultStorageProvider(IPFS_RESULT_STORAGE_PROVIDER)
.build();
final TaskDescription taskDescription = TaskDescription.builder()
.chainTaskId(CHAIN_TASK_ID)
.callback(BytesUtils.EMPTY_ADDRESS)
.isTeeTask(isTeeTask)
.resultStorageProvider(IPFS_RESULT_STORAGE_PROVIDER)
.dealParams(dealParams)
.build();
when(iexecHubService.getTaskDescription(CHAIN_TASK_ID))
.thenReturn(taskDescription);
when(resultService.isResultUploaded(taskDescription)).thenReturn(false);

boolean isResultUploaded = replicatesService.isResultUploaded(CHAIN_TASK_ID);
final boolean isResultUploaded = replicatesService.isResultUploaded(CHAIN_TASK_ID);
assertThat(isResultUploaded).isFalse();
verify(resultService).isResultUploaded(taskDescription);
}
Expand Down Expand Up @@ -811,16 +818,19 @@ void shouldReturnTrueForCallbackTask(boolean isTeeTask) {

@Test
void shouldReturnTrueIfPrivateStorageForTeeTask() {
TaskDescription taskDescription = TaskDescription.builder()
final DealParams dealParams = DealParams.builder()
.iexecResultStorageProvider(DROPBOX_RESULT_STORAGE_PROVIDER)
.build();
final TaskDescription taskDescription = TaskDescription.builder()
.chainTaskId(CHAIN_TASK_ID)
.callback(BytesUtils.EMPTY_ADDRESS)
.isTeeTask(true)
.resultStorageProvider(DROPBOX_RESULT_STORAGE_PROVIDER)
.dealParams(dealParams)
.build();
when(iexecHubService.getTaskDescription(CHAIN_TASK_ID))
.thenReturn(taskDescription);

boolean isResultUploaded = replicatesService.isResultUploaded(CHAIN_TASK_ID);
final boolean isResultUploaded = replicatesService.isResultUploaded(CHAIN_TASK_ID);
assertThat(isResultUploaded).isTrue();
verify(resultService, never()).isResultUploaded(any());
}
Expand Down Expand Up @@ -912,10 +922,10 @@ void shouldNotAuthorizeUpdateSinceBadWorkflowTransition() {

@Test
void shouldNotAuthorizeUpdateSinceContributeFailed() {
Replicate replicate = new Replicate(WALLET_WORKER_1, CHAIN_TASK_ID);
final Replicate replicate = new Replicate(WALLET_WORKER_1, CHAIN_TASK_ID);
replicate.updateStatus(CONTRIBUTING, ReplicateStatusModifier.WORKER);

ReplicateStatusUpdate statusUpdate = ReplicateStatusUpdate.builder()
final ReplicateStatusUpdate statusUpdate = ReplicateStatusUpdate.builder()
.modifier(WORKER)
.status(CONTRIBUTE_FAILED)
.build();
Expand All @@ -926,10 +936,10 @@ void shouldNotAuthorizeUpdateSinceContributeFailed() {

@Test
void shouldNotAuthorizeUpdateSinceRevealFailed() {
Replicate replicate = new Replicate(WALLET_WORKER_1, CHAIN_TASK_ID);
final Replicate replicate = new Replicate(WALLET_WORKER_1, CHAIN_TASK_ID);
replicate.updateStatus(REVEALING, ReplicateStatusModifier.WORKER);

ReplicateStatusUpdate statusUpdate = ReplicateStatusUpdate.builder()
final ReplicateStatusUpdate statusUpdate = ReplicateStatusUpdate.builder()
.modifier(WORKER)
.status(REVEAL_FAILED)
.build();
Expand All @@ -940,16 +950,19 @@ void shouldNotAuthorizeUpdateSinceRevealFailed() {

@Test
void shouldAuthorizeUpdateOnResultUploadFailed() {
Replicate replicate = new Replicate(WALLET_WORKER_1, CHAIN_TASK_ID);
final DealParams dealParams = DealParams.builder()
.iexecResultStorageProvider(IPFS_RESULT_STORAGE_PROVIDER)
.build();
final Replicate replicate = new Replicate(WALLET_WORKER_1, CHAIN_TASK_ID);
replicate.updateStatus(RESULT_UPLOADING, ReplicateStatusModifier.WORKER);

ReplicateStatusUpdate statusUpdate = ReplicateStatusUpdate.builder()
final ReplicateStatusUpdate statusUpdate = ReplicateStatusUpdate.builder()
.modifier(WORKER)
.status(RESULT_UPLOAD_FAILED)
.build();
UpdateReplicateStatusArgs updateReplicateStatusArgs = UpdateReplicateStatusArgs
final UpdateReplicateStatusArgs updateReplicateStatusArgs = UpdateReplicateStatusArgs
.builder()
.taskDescription(TaskDescription.builder().resultStorageProvider(IPFS_RESULT_STORAGE_PROVIDER).build())
.taskDescription(TaskDescription.builder().dealParams(dealParams).build())
.build();

assertThat(replicatesService.canUpdateReplicateStatus(replicate, statusUpdate, updateReplicateStatusArgs))
Expand All @@ -958,10 +971,10 @@ void shouldAuthorizeUpdateOnResultUploadFailed() {

@Test
void shouldNotAuthorizeUpdateOnResultUploadFailedSinceResultUploadedWithCallback() {
Replicate replicate = new Replicate(WALLET_WORKER_1, CHAIN_TASK_ID);
final Replicate replicate = new Replicate(WALLET_WORKER_1, CHAIN_TASK_ID);
replicate.updateStatus(RESULT_UPLOADING, ReplicateStatusModifier.WORKER);

ReplicateStatusUpdate statusUpdate = ReplicateStatusUpdate.builder()
final ReplicateStatusUpdate statusUpdate = ReplicateStatusUpdate.builder()
.modifier(WORKER)
.status(RESULT_UPLOAD_FAILED)
.build();
Expand Down Expand Up @@ -1188,6 +1201,9 @@ void shouldNotAuthorizeUpdateOnContributeAndFinalizeDoneWhenNotRevealed() {

@Test
void shouldNotAuthorizeUpdateOnContributeAndFinalizeDoneWhenNotUploaded() {
final DealParams dealParams = DealParams.builder()
.iexecResultStorageProvider(IPFS_RESULT_STORAGE_PROVIDER)
.build();
final Replicate replicate = new Replicate(WALLET_WORKER_1, CHAIN_TASK_ID);
replicate.updateStatus(CONTRIBUTE_AND_FINALIZE_ONGOING, ReplicateStatusModifier.WORKER);

Expand All @@ -1198,7 +1214,7 @@ void shouldNotAuthorizeUpdateOnContributeAndFinalizeDoneWhenNotUploaded() {
final TaskDescription task = TaskDescription
.builder()
.chainTaskId(CHAIN_TASK_ID)
.resultStorageProvider(IPFS_RESULT_STORAGE_PROVIDER)
.dealParams(dealParams)
.build();

when(iexecHubService.repeatIsRevealedTrue(CHAIN_TASK_ID, WALLET_WORKER_1))
Expand Down
6 changes: 5 additions & 1 deletion src/test/java/com/iexec/core/result/ResultServiceTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

package com.iexec.core.result;

import com.iexec.commons.poco.chain.DealParams;
import com.iexec.commons.poco.chain.WorkerpoolAuthorization;
import com.iexec.commons.poco.security.Signature;
import com.iexec.commons.poco.task.TaskDescription;
Expand Down Expand Up @@ -70,9 +71,12 @@ class ResultServiceTests {
private Credentials schedulerCreds;
private Signature signature;
private WorkerpoolAuthorization workerpoolAuthorization;
private final DealParams dealParams = DealParams.builder()
.iexecResultStorageProvider(IPFS_RESULT_STORAGE_PROVIDER)
.build();
private final TaskDescription taskDescription = TaskDescription.builder()
.chainTaskId(CHAIN_TASK_ID)
.resultStorageProvider(IPFS_RESULT_STORAGE_PROVIDER)
.dealParams(dealParams)
.build();

@BeforeEach
Expand Down