diff --git a/gradle.properties b/gradle.properties index b96d32545..36caa9b32 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ # x-release-please-start-version version=9.1.0 # x-release-please-end -iexecCommonsPocoVersion=5.1.0 -iexecCommonVersion=9.1.0 +iexecCommonsPocoVersion=5.3.1 +iexecCommonVersion=9.2.0 iexecCommonsContainersVersion=2.0.0 iexecResultVersion=9.0.0 iexecSmsVersion=9.0.0 diff --git a/src/main/java/com/iexec/worker/chain/ContributionService.java b/src/main/java/com/iexec/worker/chain/ContributionService.java index 76fb19259..e10b21d9a 100644 --- a/src/main/java/com/iexec/worker/chain/ContributionService.java +++ b/src/main/java/com/iexec/worker/chain/ContributionService.java @@ -169,15 +169,13 @@ public Contribution getContribution(ComputedFile computedFile) { String enclaveChallenge = workerpoolAuthorization.getEnclaveChallenge(); String enclaveSignature = computedFile.getEnclaveSignature(); - boolean isTeeTask = iexecHubService.isTeeTask(chainTaskId); - if (isTeeTask) { - if (!enclaveAuthorizationService.isVerifiedEnclaveSignature(chainTaskId, - resultHash, resultSeal, enclaveSignature, enclaveChallenge)) { + if (iexecHubService.getTaskDescription(chainTaskId).requiresSgx()) { + if (!enclaveAuthorizationService.isVerifiedEnclaveSignature( + chainTaskId, resultHash, resultSeal, enclaveSignature, enclaveChallenge)) { log.error("Cannot get contribution with invalid enclave " + "signature [chainTaskId:{}, resultHash:{}, " + - "resultSeal:{}, enclaveSignature:{}, " + - "enclaveChallenge:{}]", chainTaskId, resultHash, - resultSeal, enclaveSignature, enclaveChallenge); + "resultSeal:{}, enclaveSignature:{}, enclaveChallenge:{}]", + chainTaskId, resultHash, resultSeal, enclaveSignature, enclaveChallenge); return null; } } else { diff --git a/src/main/java/com/iexec/worker/compute/ComputeManagerService.java b/src/main/java/com/iexec/worker/compute/ComputeManagerService.java index a19983971..e8c5338db 100644 --- a/src/main/java/com/iexec/worker/compute/ComputeManagerService.java +++ b/src/main/java/com/iexec/worker/compute/ComputeManagerService.java @@ -160,10 +160,10 @@ public boolean isAppDownloaded(String imageUri) { * @see PreComputeService#runTeePreCompute(TaskDescription) */ public PreComputeResponse runPreCompute(final TaskDescription taskDescription) { - log.info("Running pre-compute [chainTaskId:{}, isTee:{}]", - taskDescription.getChainTaskId(), taskDescription.isTeeTask()); + log.info("Running pre-compute [chainTaskId:{}, requiresSgx:{}]", + taskDescription.getChainTaskId(), taskDescription.requiresSgx()); - if (taskDescription.isTeeTask()) { + if (taskDescription.requiresSgx()) { return preComputeService.runTeePreCompute(taskDescription); } return PreComputeResponse.builder().build(); @@ -178,8 +178,8 @@ public PreComputeResponse runPreCompute(final TaskDescription taskDescription) { */ public AppComputeResponse runCompute(final TaskDescription taskDescription) { final String chainTaskId = taskDescription.getChainTaskId(); - log.info("Running compute [chainTaskId:{}, isTee:{}]", - chainTaskId, taskDescription.isTeeTask()); + log.info("Running compute [chainTaskId:{}, requiresSgx:{}]", + chainTaskId, taskDescription.requiresSgx()); final AppComputeResponse appComputeResponse = appComputeService.runCompute(taskDescription); @@ -211,11 +211,11 @@ private void writeLogs(String chainTaskId, String filename, String logs) { */ public PostComputeResponse runPostCompute(final TaskDescription taskDescription) { final String chainTaskId = taskDescription.getChainTaskId(); - log.info("Running post-compute [chainTaskId:{}, isTee:{}]", - chainTaskId, taskDescription.isTeeTask()); + log.info("Running post-compute [chainTaskId:{}, requiresSgx:{}]", + chainTaskId, taskDescription.requiresSgx()); final PostComputeResponse postComputeResponse; - if (!taskDescription.isTeeTask()) { + if (!taskDescription.requiresSgx()) { postComputeResponse = postComputeService.runStandardPostCompute(taskDescription); } else { postComputeResponse = postComputeService.runTeePostCompute(taskDescription); diff --git a/src/main/java/com/iexec/worker/compute/app/AppComputeService.java b/src/main/java/com/iexec/worker/compute/app/AppComputeService.java index c615cd06a..8b0374442 100644 --- a/src/main/java/com/iexec/worker/compute/app/AppComputeService.java +++ b/src/main/java/com/iexec/worker/compute/app/AppComputeService.java @@ -69,7 +69,7 @@ public AppComputeResponse runCompute(final TaskDescription taskDescription) { final SgxDriverMode sgxDriverMode; final List env; - if (taskDescription.isTeeTask()) { + if (taskDescription.requiresSgx()) { final TeeService teeService = teeServicesManager.getTeeService(taskDescription.getTeeFramework()); env = teeService.buildComputeDockerEnv(taskDescription); binds.addAll(teeService.getAdditionalBindings().stream().map(Bind::parse).toList()); @@ -83,7 +83,7 @@ public AppComputeResponse runCompute(final TaskDescription taskDescription) { .withBinds(binds) .withDevices(sgxService.getSgxDevices()); // Enclave should be able to connect to the LAS - if (taskDescription.isTeeTask()) { + if (taskDescription.requiresSgx()) { hostConfig.withNetworkMode(workerConfigService.getDockerNetworkName()); } final DockerRunRequest runRequest = DockerRunRequest.builder() diff --git a/src/main/java/com/iexec/worker/result/ResultService.java b/src/main/java/com/iexec/worker/result/ResultService.java index 2ff953723..4c7ae1d02 100644 --- a/src/main/java/com/iexec/worker/result/ResultService.java +++ b/src/main/java/com/iexec/worker/result/ResultService.java @@ -143,8 +143,6 @@ public ResultModel getResultModelWithZip(final String chainTaskId) { return ResultModel.builder() .chainTaskId(chainTaskId) - .image(resultInfo.getImage()) - .cmd(resultInfo.getCmd()) .zip(zipResultAsBytes) .deterministHash(resultInfo.getDeterministHash()) .build(); @@ -193,7 +191,7 @@ public String uploadResultAndGetLink(final WorkerpoolAuthorization workerpoolAut } // Cloud computing - tee - if (task.isTeeTask()) { + if (task.requiresSgx()) { log.info("Web2 storage, already uploaded (with tee) [chainTaskId:{}]", chainTaskId); return getWeb2ResultLink(task); } @@ -351,7 +349,7 @@ public boolean writeComputedFile(final ComputedFile computedFile) { return false; } final ChainDeal chainDeal = iexecHubService.getChainDeal(chainTask.getDealid()).orElse(null); - if (chainDeal == null || !TeeUtils.isTeeTag(chainDeal.getTag())) { + if (chainDeal == null || TeeUtils.getTeeFramework(chainDeal.getTag()) == null) { log.error("Cannot write computed file if task is not of TEE type [chainTaskId:{}, computedFile:{}]", chainTaskId, computedFile); return false; diff --git a/src/main/java/com/iexec/worker/task/TaskManagerService.java b/src/main/java/com/iexec/worker/task/TaskManagerService.java index 5f92f5322..ea0c2ccb3 100644 --- a/src/main/java/com/iexec/worker/task/TaskManagerService.java +++ b/src/main/java/com/iexec/worker/task/TaskManagerService.java @@ -106,12 +106,12 @@ ReplicateActionResponse start(final TaskDescription taskDescription) { } // result encryption is not supported for standard tasks - if (!taskDescription.isTeeTask() && taskDescription.getDealParams().isIexecResultEncryption()) { + if (!taskDescription.requiresSgx() && taskDescription.getDealParams().isIexecResultEncryption()) { return getFailureResponseAndPrintErrors( List.of(new WorkflowError(TASK_DESCRIPTION_INVALID)), context, chainTaskId); } - if (taskDescription.isTeeTask()) { + if (taskDescription.requiresSgx()) { // If any TEE prerequisite is not met, // then we won't be able to run the task. // So it should be aborted right now. @@ -194,7 +194,7 @@ ReplicateActionResponse downloadData(final TaskDescription taskDescription) { requireNonNull(taskDescription, "task description must not be null"); final String chainTaskId = taskDescription.getChainTaskId(); // Return early if TEE task - if (taskDescription.isTeeTask()) { + if (taskDescription.requiresSgx()) { log.info("Dataset and input files will be downloaded by the pre-compute enclave [chainTaskId:{}]", chainTaskId); return ReplicateActionResponse.success(); } @@ -255,7 +255,7 @@ ReplicateActionResponse compute(final TaskDescription taskDescription) { List.of(new WorkflowError(APP_NOT_FOUND_LOCALLY)), context, chainTaskId); } - if (taskDescription.isTeeTask()) { + if (taskDescription.requiresSgx()) { final TeeService teeService = teeServicesManager.getTeeService(taskDescription.getTeeFramework()); if (!teeService.prepareTeeForTask(chainTaskId)) { return getFailureResponseAndPrintErrors( diff --git a/src/test/java/com/iexec/worker/chain/ContributionServiceTests.java b/src/test/java/com/iexec/worker/chain/ContributionServiceTests.java index 866352744..4cdf8ea27 100644 --- a/src/test/java/com/iexec/worker/chain/ContributionServiceTests.java +++ b/src/test/java/com/iexec/worker/chain/ContributionServiceTests.java @@ -18,8 +18,10 @@ import com.iexec.common.result.ComputedFile; import com.iexec.commons.poco.chain.*; +import com.iexec.commons.poco.order.OrderTag; import com.iexec.commons.poco.security.Signature; import com.iexec.commons.poco.task.TaskDescription; +import com.iexec.commons.poco.tee.TeeUtils; import com.iexec.commons.poco.utils.BytesUtils; import com.iexec.commons.poco.utils.HashUtils; import com.iexec.commons.poco.utils.SignatureUtils; @@ -71,10 +73,13 @@ class ContributionServiceTests { .contributors(List.of()) .build(); - private final TaskDescription taskDescription = TaskDescription.builder() - .chainTaskId(chainTask.getChainTaskId()) - .trust(BigInteger.ONE) - .build(); + TaskDescription getTaskDescription(final OrderTag tag) { + return TaskDescription.builder() + .chainTaskId(chainTask.getChainTaskId()) + .trust(BigInteger.ONE) + .teeFramework(TeeUtils.getTeeFramework(tag.getValue())) + .build(); + } @BeforeEach void beforeEach() { @@ -101,14 +106,9 @@ void shouldChainTaskNotBeInitialized() { @Test void getCannotContributeStatusCauseShouldReturnWorkerpoolAuthorizationNotFound() { final String chainTaskId = chainTask.getChainTaskId(); - final TaskDescription contributeAndFinalizeTaskDescription = TaskDescription.builder() - .chainTaskId(chainTaskId) - .trust(BigInteger.ONE) - .isTeeTask(true) - .build(); when(workerpoolAuthorizationService.getWorkerpoolAuthorization(chainTaskId)).thenReturn(null); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(contributeAndFinalizeTaskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.TEE_SCONE)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.of(chainTask)); assertThat(contributionService.getCannotContributeStatusCause(chainTaskId)) @@ -122,7 +122,7 @@ void getCannotContributeStatusShouldReturnChainUnreachable() { final String chainTaskId = "chainTaskId"; when(workerpoolAuthorizationService.getWorkerpoolAuthorization(chainTaskId)) .thenReturn(getTeeWorkerpoolAuth()); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(taskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.empty()); assertThat(contributionService.getCannotContributeStatusCause(chainTaskId)) @@ -137,7 +137,7 @@ void getCannotContributeStatusShouldReturnStakeTooLow() { when(workerpoolAuthorizationService.getWorkerpoolAuthorization(chainTaskId)) .thenReturn(getTeeWorkerpoolAuth()); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(taskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.of(chainTask)); when(iexecHubService.getChainAccount()).thenReturn(Optional.of(ChainAccount.builder().deposit(0).build())); when(iexecHubService.getChainDeal(CHAIN_DEAL_ID)).thenReturn(Optional.of(ChainDeal.builder().workerStake(BigInteger.valueOf(5)).build())); @@ -163,7 +163,7 @@ void getCannotContributeStatusShouldReturnTaskNotActive() { when(workerpoolAuthorizationService.getWorkerpoolAuthorization(chainTaskId)) .thenReturn(getTeeWorkerpoolAuth()); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(taskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.of(inactiveTask)); when(iexecHubService.getChainAccount()).thenReturn(Optional.of(ChainAccount.builder().deposit(1000).build())); when(iexecHubService.getChainDeal(CHAIN_DEAL_ID)).thenReturn(Optional.of(ChainDeal.builder().workerStake(BigInteger.valueOf(5)).build())); @@ -188,7 +188,7 @@ void getCannotContributeStatusShouldReturnAfterDeadline() { when(workerpoolAuthorizationService.getWorkerpoolAuthorization(chainTaskId)) .thenReturn(getTeeWorkerpoolAuth()); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(taskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.of(timedOutChainTask)); when(iexecHubService.getChainAccount()) .thenReturn(Optional.of(ChainAccount.builder().deposit(1000).build())); @@ -216,7 +216,7 @@ void getCannotContributeStatusShouldReturnContributionAlreadySet() { when(workerpoolAuthorizationService.getWorkerpoolAuthorization(chainTaskId)) .thenReturn(getTeeWorkerpoolAuth()); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(taskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.of(alreadyContributedChainTask)); when(iexecHubService.getChainAccount()) .thenReturn(Optional.of(ChainAccount.builder().deposit(1000).build())); @@ -237,7 +237,7 @@ void getCannotContributeStatusCauseShouldReturnEmpty() { when(workerpoolAuthorizationService.getWorkerpoolAuthorization(chainTaskId)) .thenReturn(getTeeWorkerpoolAuth()); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(taskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); when(iexecHubService.getChainTask(chainTaskId)) .thenReturn(Optional.of(chainTask)); when(iexecHubService.getChainAccount()) @@ -256,14 +256,10 @@ void getCannotContributeStatusCauseShouldReturnEmpty() { @Test void getCannotContributeStatusShouldReturnEmptyForContributeAndFinalizeFlow() { final String chainTaskId = chainTask.getChainTaskId(); - final TaskDescription contributeAndFinalizeTaskDescription = TaskDescription.builder() - .trust(BigInteger.ONE) - .isTeeTask(true) - .build(); when(workerpoolAuthorizationService.getWorkerpoolAuthorization(chainTaskId)) .thenReturn(getTeeWorkerpoolAuth()); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(contributeAndFinalizeTaskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.TEE_SCONE)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.of(chainTask)); assertThat(contributionService.getCannotContributeStatusCause(chainTaskId)).isEmpty(); @@ -286,7 +282,7 @@ void getCannotContributeStatusShouldReturnMultipleErrors() { when(workerpoolAuthorizationService.getWorkerpoolAuthorization(chainTaskId)) .thenReturn(getTeeWorkerpoolAuth()); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(taskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.of(problematicChainTask)); when(iexecHubService.getChainAccount()) .thenReturn(Optional.of(ChainAccount.builder().deposit(0).build())); // Also stake too low @@ -310,7 +306,7 @@ void getCannotContributeStatusShouldReturnAuthAndChainUnreachableErrors() { final String chainTaskId = chainTask.getChainTaskId(); when(workerpoolAuthorizationService.getWorkerpoolAuthorization(chainTaskId)).thenReturn(null); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(taskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.empty()); assertThat(contributionService.getCannotContributeStatusCause(chainTaskId)) @@ -342,7 +338,7 @@ void getCannotContributeAndFinalizeStatusCauseShouldReturnTrustNotOne() { void getCannotContributeAndFinalizeStatusCauseShouldReturnChainUnreachable() { final String chainTaskId = chainTask.getChainTaskId(); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(taskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.empty()); assertThat(contributionService.getCannotContributeAndFinalizeStatusCause(chainTaskId)) @@ -362,7 +358,7 @@ void getCannotContributeAndFinalizeStatusCauseShouldReturnTaskAlreadyContributed final String chainTaskId = chainTaskWithContribution.getChainTaskId(); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(taskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.of(chainTaskWithContribution)); assertThat(contributionService.getCannotContributeAndFinalizeStatusCause(chainTaskId)) @@ -373,7 +369,7 @@ void getCannotContributeAndFinalizeStatusCauseShouldReturnTaskAlreadyContributed void getCannotContributeAndFinalizeStatusCauseShouldReturnEmpty() { final String chainTaskId = chainTask.getChainTaskId(); - when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(taskDescription); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); when(iexecHubService.getChainTask(chainTaskId)).thenReturn(Optional.of(chainTask)); assertThat(contributionService.getCannotContributeAndFinalizeStatusCause(chainTaskId)).isEmpty(); @@ -433,7 +429,7 @@ void getContribution() { final WorkerpoolAuthorization teeWorkerpoolAuth = getTeeWorkerpoolAuth(); when(workerpoolAuthorizationService.getWorkerpoolAuthorization(chainTaskId)).thenReturn(teeWorkerpoolAuth); - when(iexecHubService.isTeeTask(chainTaskId)).thenReturn(false); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.STANDARD)); final ComputedFile computedFile = ComputedFile.builder() .taskId(chainTaskId) @@ -469,7 +465,7 @@ void getContributionWithTee() { when(enclaveAuthorizationService. isVerifiedEnclaveSignature(anyString(), anyString(), anyString(), anyString(), anyString())) .thenReturn(true); - when(iexecHubService.isTeeTask(chainTaskId)).thenReturn(true); + when(iexecHubService.getTaskDescription(chainTaskId)).thenReturn(getTaskDescription(OrderTag.TEE_SCONE)); final ComputedFile computedFile = ComputedFile.builder() .taskId(chainTaskId) diff --git a/src/test/java/com/iexec/worker/chain/IexecHubServiceTests.java b/src/test/java/com/iexec/worker/chain/IexecHubServiceTests.java index 748441b1b..590a035b2 100644 --- a/src/test/java/com/iexec/worker/chain/IexecHubServiceTests.java +++ b/src/test/java/com/iexec/worker/chain/IexecHubServiceTests.java @@ -37,7 +37,6 @@ import org.web3j.protocol.core.methods.response.Log; import org.web3j.protocol.core.methods.response.TransactionReceipt; import org.web3j.protocol.exceptions.TransactionException; -import org.web3j.tx.RawTransactionManager; import org.web3j.tx.response.PollingTransactionReceiptProcessor; import org.web3j.utils.Numeric; @@ -69,8 +68,6 @@ class IexecHubServiceTests { @Mock private PollingTransactionReceiptProcessor txReceiptProcessor; @Mock - private RawTransactionManager txManager; - @Mock private Web3jService web3jService; @Mock private Web3j web3jClient; @@ -85,7 +82,6 @@ void init() throws Exception { when(web3jService.getWeb3j()).thenReturn(web3jClient); iexecHubService = spy(new IexecHubService(signerService, web3jService, configServerConfigurationService)); ReflectionTestUtils.setField(iexecHubService, "txReceiptProcessor", txReceiptProcessor); - ReflectionTestUtils.setField(iexecHubService, "txManager", txManager); } private TransactionReceipt createReceiptWithoutLogs(List web3Logs) { @@ -174,7 +170,7 @@ void shouldContributeAndFinalizeWithCallback() throws IOException, TransactionEx web3Log.setTopics(List.of(LogTopic.TASK_FINALIZE_EVENT, CHAIN_TASK_ID)); final TransactionReceipt transactionReceipt = createReceiptWithoutLogs(List.of(web3Log)); when(signerService.estimateGas(any(), any())).thenReturn(BigInteger.valueOf(100_000L)); - when(txManager.sendCall(any(), any(), any())).thenReturn(CALLBACK_GAS_IN_HEX); + when(web3jService.sendCall(any(), any(), any())).thenReturn(CALLBACK_GAS_IN_HEX); mockTransaction(transactionReceipt); doReturn(true).when(iexecHubService).isSuccessTx(any(), any(), any()); @@ -196,7 +192,7 @@ void shouldContributeAndFinalizeWithoutCallback() throws IOException, Transactio web3Log.setTopics(List.of(LogTopic.TASK_FINALIZE_EVENT, CHAIN_TASK_ID)); final TransactionReceipt transactionReceipt = createReceiptWithoutLogs(List.of(web3Log)); when(signerService.estimateGas(any(), any())).thenReturn(BigInteger.valueOf(100_000L)); - when(txManager.sendCall(any(), any(), any())).thenReturn(CALLBACK_GAS_IN_HEX); + when(web3jService.sendCall(any(), any(), any())).thenReturn(CALLBACK_GAS_IN_HEX); mockTransaction(transactionReceipt); doReturn(true).when(iexecHubService).isSuccessTx(any(), any(), any()); @@ -221,7 +217,7 @@ void shouldNotContributeAndFinalizeOnIOException() throws IOException { .workerPoolSignature("workerPoolSignature") .build(); when(signerService.estimateGas(any(), any())).thenReturn(BigInteger.valueOf(100_000L)); - when(txManager.sendCall(any(), any(), any())).thenReturn(CALLBACK_GAS_IN_HEX); + when(web3jService.sendCall(any(), any(), any())).thenReturn(CALLBACK_GAS_IN_HEX); doThrow(IOException.class).when(signerService).signAndSendTransaction(any(), any(), any(), any(), any()); final Optional chainReceipt = iexecHubService.contributeAndFinalize(contribution, "resultLink", ""); assertThat(chainReceipt).isEmpty(); diff --git a/src/test/java/com/iexec/worker/compute/ComputeManagerServiceTests.java b/src/test/java/com/iexec/worker/compute/ComputeManagerServiceTests.java index 893e1f41e..51368af71 100644 --- a/src/test/java/com/iexec/worker/compute/ComputeManagerServiceTests.java +++ b/src/test/java/com/iexec/worker/compute/ComputeManagerServiceTests.java @@ -22,7 +22,9 @@ import com.iexec.commons.containers.client.DockerClientInstance; import com.iexec.commons.poco.chain.DealParams; import com.iexec.commons.poco.dapp.DappType; +import com.iexec.commons.poco.order.OrderTag; import com.iexec.commons.poco.task.TaskDescription; +import com.iexec.commons.poco.tee.TeeUtils; import com.iexec.worker.compute.app.AppComputeResponse; import com.iexec.worker.compute.app.AppComputeService; import com.iexec.worker.compute.post.PostComputeResponse; @@ -89,7 +91,7 @@ class ComputeManagerServiceTests { @Mock private ResultService resultService; - private TaskDescription.TaskDescriptionBuilder createTaskDescriptionBuilder(boolean isTeeTask) { + private TaskDescription.TaskDescriptionBuilder createTaskDescriptionBuilder(final OrderTag tag) { final DealParams dealParams = DealParams.builder() .iexecInputFiles(List.of("file0", "file1")) .build(); @@ -100,14 +102,14 @@ private TaskDescription.TaskDescriptionBuilder createTaskDescriptionBuilder(bool .datasetUri(DATASET_URI) .maxExecutionTime(MAX_EXECUTION_TIME) .dealParams(dealParams) - .isTeeTask(isTeeTask) + .teeFramework(TeeUtils.getTeeFramework(tag.getValue())) .maxExecutionTime(3000); } //region downloadApp @Test void shouldDownloadApp() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); when(dockerRegistryConfiguration.getMinPullTimeout()).thenReturn(Duration.of(5, ChronoUnit.MINUTES)); when(dockerRegistryConfiguration.getMaxPullTimeout()).thenReturn(Duration.of(30, ChronoUnit.MINUTES)); when(dockerService.getClient(taskDescription.getAppUri())).thenReturn(dockerClient); @@ -118,7 +120,7 @@ void shouldDownloadApp() { @Test void shouldNotDownloadAppSincePullImageFailed() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); when(dockerService.getClient(taskDescription.getAppUri())).thenReturn(dockerClient); when(dockerClient.pullImage(taskDescription.getAppUri(), Duration.ofMinutes(0))).thenReturn(false); when(dockerClient.isImagePresent(taskDescription.getAppUri())).thenReturn(false); @@ -132,7 +134,7 @@ void shouldNotDownloadAppSinceNoTaskDescription() { @Test void shouldNotDownloadAppSinceNoAppType() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(false) + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.STANDARD) .appType(null) .build(); assertThat(computeManagerService.downloadApp(taskDescription)).isFalse(); @@ -140,7 +142,7 @@ void shouldNotDownloadAppSinceNoAppType() { @Test void shouldNotDownloadAppSinceWrongAppType() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(false) + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.STANDARD) .appType(DappType.BINARY) .build(); assertThat(computeManagerService.downloadApp(taskDescription)).isFalse(); @@ -148,7 +150,7 @@ void shouldNotDownloadAppSinceWrongAppType() { @Test void shouldHaveImageDownloaded() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); when(dockerService.getClient()).thenReturn(dockerClient); when(dockerClient.isImagePresent(taskDescription.getAppUri())).thenReturn(true); assertThat(computeManagerService.isAppDownloaded(APP_URI)).isTrue(); @@ -156,7 +158,7 @@ void shouldHaveImageDownloaded() { @Test void shouldNotHaveImageDownloaded() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); when(dockerService.getClient()).thenReturn(dockerClient); when(dockerClient.isImagePresent(taskDescription.getAppUri())).thenReturn(false); assertThat(computeManagerService.isAppDownloaded(APP_URI)).isFalse(); @@ -166,16 +168,16 @@ void shouldNotHaveImageDownloaded() { //region runPreCompute @Test void shouldRunStandardPreCompute() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(false).build(); - PreComputeResponse preComputeResponse = computeManagerService.runPreCompute(taskDescription); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.STANDARD).build(); + final PreComputeResponse preComputeResponse = computeManagerService.runPreCompute(taskDescription); assertThat(preComputeResponse.isSuccessful()).isTrue(); } @Test void shouldRunTeePreCompute() { - PreComputeResponse mockResponse = mock(PreComputeResponse.class); - final TaskDescription taskDescription = createTaskDescriptionBuilder(true).build(); + final PreComputeResponse mockResponse = mock(PreComputeResponse.class); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); when(preComputeService.runTeePreCompute(taskDescription)).thenReturn(mockResponse); PreComputeResponse preComputeResponse = @@ -187,7 +189,7 @@ void shouldRunTeePreCompute() { @Test void shouldRunTeePreComputeWithFailureResponse() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); when(preComputeService.runTeePreCompute(taskDescription)).thenReturn(PreComputeResponse.builder() .exitCauses(List.of(new WorkflowError(ReplicateStatusCause.PRE_COMPUTE_DATASET_URL_MISSING))) .build()); @@ -203,7 +205,7 @@ void shouldRunTeePreComputeWithFailureResponse() { //region runCompute @Test void shouldRunStandardCompute() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.STANDARD).build(); AppComputeResponse expectedDockerRunResponse = AppComputeResponse.builder() .stdout(dockerLogs.getStdout()) @@ -227,7 +229,7 @@ void shouldRunStandardCompute() { @Test void shouldRunStandardComputeWithFailureResponse() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.STANDARD).build(); AppComputeResponse expectedDockerRunResponse = AppComputeResponse.builder() .exitCauses(List.of(new WorkflowError(ReplicateStatusCause.APP_COMPUTE_FAILED))) @@ -248,7 +250,7 @@ void shouldRunStandardComputeWithFailureResponse() { @Test void shouldRunTeeCompute() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); AppComputeResponse expectedDockerRunResponse = AppComputeResponse.builder() .stdout(dockerLogs.getStdout()) @@ -270,7 +272,7 @@ void shouldRunTeeCompute() { @Test void shouldRunTeeComputeWithFailure() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); AppComputeResponse expectedDockerRunResponse = AppComputeResponse.builder() .exitCauses(List.of(new WorkflowError(ReplicateStatusCause.APP_COMPUTE_FAILED))) @@ -293,7 +295,7 @@ void shouldRunTeeComputeWithFailure() { //region runPostCompute @Test void shouldNotBeSuccessfulWhenComputedFileNotFound() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(postComputeService.runStandardPostCompute(taskDescription)) .thenReturn(PostComputeResponse.builder().build()); when(resultService.readComputedFile(CHAIN_TASK_ID)).thenReturn(null); @@ -305,7 +307,7 @@ void shouldNotBeSuccessfulWhenComputedFileNotFound() { @Test void shouldNotBeSuccessfulWhenResultDigestComputationFails() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(postComputeService.runStandardPostCompute(taskDescription)) .thenReturn(PostComputeResponse.builder().build()); ComputedFile computedFile = ComputedFile.builder().build(); @@ -319,7 +321,7 @@ void shouldNotBeSuccessfulWhenResultDigestComputationFails() { @Test void shouldRunStandardPostCompute() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(postComputeService.runStandardPostCompute(taskDescription)) .thenReturn(PostComputeResponse.builder().build()); ComputedFile computedFile = mock(ComputedFile.class); @@ -338,7 +340,7 @@ void shouldRunStandardPostCompute() { @ParameterizedTest @EnumSource(value = ReplicateStatusCause.class, names = "POST_COMPUTE_.*", mode = EnumSource.Mode.MATCH_ALL) void shouldRunStandardPostComputeWithFailureResponse(ReplicateStatusCause statusCause) { - final TaskDescription taskDescription = createTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.STANDARD).build(); PostComputeResponse postComputeResponse = PostComputeResponse.builder() .exitCauses(List.of(new WorkflowError(statusCause))) .build(); @@ -352,7 +354,7 @@ void shouldRunStandardPostComputeWithFailureResponse(ReplicateStatusCause status @Test void shouldRunTeePostCompute() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); PostComputeResponse expectedDockerRunResponse = PostComputeResponse.builder() .stdout(dockerLogs.getStdout()) @@ -377,7 +379,7 @@ void shouldRunTeePostCompute() { @Test void shouldRunTeePostComputeWithFailureResponse() { - final TaskDescription taskDescription = createTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = createTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); PostComputeResponse expectedDockerRunResponse = PostComputeResponse.builder() .exitCauses(List.of(new WorkflowError(ReplicateStatusCause.APP_COMPUTE_FAILED))) diff --git a/src/test/java/com/iexec/worker/compute/app/AppComputeServiceTests.java b/src/test/java/com/iexec/worker/compute/app/AppComputeServiceTests.java index effacc29e..69ac33b91 100644 --- a/src/test/java/com/iexec/worker/compute/app/AppComputeServiceTests.java +++ b/src/test/java/com/iexec/worker/compute/app/AppComputeServiceTests.java @@ -26,8 +26,10 @@ import com.iexec.commons.containers.DockerRunResponse; import com.iexec.commons.containers.SgxDriverMode; import com.iexec.commons.poco.chain.DealParams; +import com.iexec.commons.poco.order.OrderTag; import com.iexec.commons.poco.task.TaskDescription; import com.iexec.commons.poco.tee.TeeEnclaveConfiguration; +import com.iexec.commons.poco.tee.TeeUtils; import com.iexec.commons.poco.utils.BytesUtils; import com.iexec.worker.config.WorkerConfigurationService; import com.iexec.worker.docker.DockerService; @@ -66,17 +68,19 @@ class AppComputeServiceTests { .iexecInputFiles(List.of("file0", "file1")) .build(); - private final TaskDescription.TaskDescriptionBuilder taskDescriptionBuilder = TaskDescription.builder() - .chainDealId(CHAIN_DEAL_ID) - .chainTaskId(CHAIN_TASK_ID) - .botIndex(0) - .botSize(1) - .botFirstIndex(0) - .appUri(APP_URI) - .datasetAddress(BytesUtils.EMPTY_ADDRESS) - .maxExecutionTime(MAX_EXECUTION_TIME) - .dealParams(dealParams) - .isTeeTask(true); + TaskDescription.TaskDescriptionBuilder getTaskDescriptionBuilder(final OrderTag tag) { + return TaskDescription.builder() + .chainDealId(CHAIN_DEAL_ID) + .chainTaskId(CHAIN_TASK_ID) + .botIndex(0) + .botSize(1) + .botFirstIndex(0) + .appUri(APP_URI) + .datasetAddress(BytesUtils.EMPTY_ADDRESS) + .maxExecutionTime(MAX_EXECUTION_TIME) + .dealParams(dealParams) + .teeFramework(TeeUtils.getTeeFramework(tag.getValue())); + } @InjectMocks private AppComputeService appComputeService; @@ -96,9 +100,7 @@ class AppComputeServiceTests { @Test void shouldRunCompute() { - final TaskDescription taskDescription = taskDescriptionBuilder - .isTeeTask(false) - .build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); String inputBind = INPUT + ":" + IexecFileHelper.SLASH_IEXEC_IN; when(dockerService.getInputBind(CHAIN_TASK_ID)).thenReturn(inputBind); String iexecOutBind = IEXEC_OUT + ":" + IexecFileHelper.SLASH_IEXEC_OUT; @@ -137,9 +139,8 @@ void shouldRunCompute() { @Test void shouldRunComputeWithTeeAndConnectAppToLas() { - final TaskDescription taskDescription = taskDescriptionBuilder - .appEnclaveConfiguration( - TeeEnclaveConfiguration.builder().heapSize(HEAP_SIZE).build()) + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.TEE_SCONE) + .appEnclaveConfiguration(TeeEnclaveConfiguration.builder().heapSize(HEAP_SIZE).build()) .build(); when(teeServicesManager.getTeeService(any())).thenReturn(teeMockedService); when(teeMockedService.buildComputeDockerEnv(taskDescription)) @@ -190,9 +191,7 @@ void shouldRunComputeWithTeeAndConnectAppToLas() { @Test void shouldRunComputeWithFailDockerResponse() { - final TaskDescription taskDescription = taskDescriptionBuilder - .isTeeTask(false) - .build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(dockerService.getInputBind(CHAIN_TASK_ID)).thenReturn("/iexec_in:/iexec_in"); when(dockerService.getIexecOutBind(CHAIN_TASK_ID)).thenReturn("/iexec_out:/iexec_out"); when(workerConfigService.getWorkerName()).thenReturn(WORKER_NAME); diff --git a/src/test/java/com/iexec/worker/result/ResultServiceTests.java b/src/test/java/com/iexec/worker/result/ResultServiceTests.java index 67b0b29f9..475e24d6c 100644 --- a/src/test/java/com/iexec/worker/result/ResultServiceTests.java +++ b/src/test/java/com/iexec/worker/result/ResultServiceTests.java @@ -26,6 +26,7 @@ import com.iexec.commons.poco.chain.*; import com.iexec.commons.poco.security.Signature; import com.iexec.commons.poco.task.TaskDescription; +import com.iexec.commons.poco.tee.TeeFramework; import com.iexec.commons.poco.tee.TeeUtils; import com.iexec.commons.poco.utils.BytesUtils; import com.iexec.resultproxy.api.ResultProxyClient; @@ -37,6 +38,8 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.io.TempDir; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.EnumSource; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.MockedStatic; @@ -180,6 +183,14 @@ void shouldNotWriteErrorToIexecOutSinceEmptyCausesList() { // endregion // region uploadResultAndGetLink + private TaskDescription createTaskDescription(final TeeFramework teeFramework, final DealParams dealParams) { + return TaskDescription.builder() + .chainTaskId(CHAIN_TASK_ID) + .teeFramework(teeFramework) + .dealParams(dealParams) + .build(); + } + @Test void shouldNotGetResultLinkWhenNoTask() { when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)).thenReturn(null); @@ -194,20 +205,17 @@ void shouldGetWeb3ResultLink() { assertThat(resultLink).isEqualTo(resultService.buildResultLink("ethereum", CALLBACK)); } - @Test - void shouldGetTeeWeb2ResultLinkSinceIpfs() { + @ParameterizedTest + @EnumSource(value = TeeFramework.class, names = {"SCONE", "GRAMINE"}) + void shouldGetTeeWeb2ResultLinkSinceIpfs(final TeeFramework teeFramework) { final String storage = IPFS_RESULT_STORAGE_PROVIDER; final String ipfsHash = "QmcipfsHash"; final DealParams dealParams = DealParams.builder() .iexecResultStorageProvider(storage) .iexecResultStorageProxy(CUSTOM_RESULT_PROXY_URL) .build(); - when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)).thenReturn( - TaskDescription.builder() - .chainTaskId(CHAIN_TASK_ID) - .isTeeTask(true) - .dealParams(dealParams) - .build()); + when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)) + .thenReturn(createTaskDescription(teeFramework, dealParams)); when(resultProxyClient.getIpfsHashForTask(CHAIN_TASK_ID)).thenReturn(ipfsHash); when(publicConfigurationService.createResultProxyClientFromURL(CUSTOM_RESULT_PROXY_URL)) .thenReturn(resultProxyClient); @@ -219,30 +227,32 @@ void shouldGetTeeWeb2ResultLinkSinceIpfs() { verify(resultProxyClient).getIpfsHashForTask(CHAIN_TASK_ID); } - @Test - void shouldGetTeeWeb2ResultLinkSinceDropbox() { + @ParameterizedTest + @EnumSource(value = TeeFramework.class, names = {"SCONE", "GRAMINE"}) + void shouldGetTeeWeb2ResultLinkSinceDropbox(final TeeFramework teeFramework) { final String storage = DROPBOX_RESULT_STORAGE_PROVIDER; final DealParams dealParams = DealParams.builder() .iexecResultStorageProvider(storage) .build(); - when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)).thenReturn( - TaskDescription.builder().chainTaskId(CHAIN_TASK_ID).isTeeTask(true).dealParams(dealParams).build()); + when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)) + .thenReturn(createTaskDescription(teeFramework, dealParams)); final String resultLink = resultService.uploadResultAndGetLink(WORKERPOOL_AUTHORIZATION); assertThat(resultLink).isEqualTo(resultService.buildResultLink(storage, "/results/" + CHAIN_TASK_ID)); } - @Test - void shouldNotGetTeeWeb2ResultLinkSinceBadStorage() { + @ParameterizedTest + @EnumSource(value = TeeFramework.class) + void shouldNotGetTeeWeb2ResultLinkSinceBadStorage(final TeeFramework teeFramework) { final String storage = "some-unsupported-third-party-storage"; final DealParams dealParams = DealParams.builder() .iexecResultStorageProvider(storage) .build(); - when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)).thenReturn( - TaskDescription.builder().chainTaskId(CHAIN_TASK_ID).isTeeTask(true).dealParams(dealParams).build()); + when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)) + .thenReturn(createTaskDescription(teeFramework, dealParams)); final String resultLink = resultService.uploadResultAndGetLink(WORKERPOOL_AUTHORIZATION); @@ -258,8 +268,8 @@ void shouldNotGetWeb2ResultLinkForStandardTaskOnIpfs() { when(iexecHubService.getChainTask(CHAIN_TASK_ID)).thenReturn(Optional.of(CHAIN_TASK)); when(iexecHubService.getChainDeal(CHAIN_DEAL_ID)).thenReturn(Optional.of(CHAIN_DEAL)); - when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)).thenReturn( - TaskDescription.builder().chainTaskId(CHAIN_TASK_ID).dealParams(dealParams).build()); + when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)) + .thenReturn(createTaskDescription(null, dealParams)); when(signerService.signMessageHash(anyString())).thenReturn(new Signature(AUTHORIZATION)); ResultProxyClient mockClient = mock(ResultProxyClient.class); diff --git a/src/test/java/com/iexec/worker/task/TaskManagerServiceTests.java b/src/test/java/com/iexec/worker/task/TaskManagerServiceTests.java index 841d94406..857579b2c 100644 --- a/src/test/java/com/iexec/worker/task/TaskManagerServiceTests.java +++ b/src/test/java/com/iexec/worker/task/TaskManagerServiceTests.java @@ -25,7 +25,9 @@ import com.iexec.commons.poco.chain.DealParams; import com.iexec.commons.poco.chain.WorkerpoolAuthorization; import com.iexec.commons.poco.dapp.DappType; +import com.iexec.commons.poco.order.OrderTag; import com.iexec.commons.poco.task.TaskDescription; +import com.iexec.commons.poco.tee.TeeUtils; import com.iexec.core.notification.TaskNotificationExtra; import com.iexec.sms.api.TeeSessionGenerationError; import com.iexec.worker.chain.Contribution; @@ -101,7 +103,7 @@ class TaskManagerServiceTests { @Mock private TeeService teeMockedService; - TaskDescription.TaskDescriptionBuilder getTaskDescriptionBuilder(boolean isTeeTask) { + TaskDescription.TaskDescriptionBuilder getTaskDescriptionBuilder(final OrderTag tag) { final DealParams dealParams = DealParams.builder() .iexecInputFiles(List.of("https://ab.cd/ef.jpeg")) .build(); @@ -112,7 +114,7 @@ TaskDescription.TaskDescriptionBuilder getTaskDescriptionBuilder(boolean isTeeTa .datasetAddress("datasetAddress") .datasetChecksum("datasetChecksum") .datasetUri("datasetUri") - .isTeeTask(isTeeTask) + .teeFramework(TeeUtils.getTeeFramework(tag.getValue())) .dealParams(dealParams); } @@ -141,7 +143,7 @@ void shouldStartStandardTask() { .thenReturn(emptyCauses); ReplicateActionResponse actionResponse = - taskManagerService.start(getTaskDescriptionBuilder(false).build()); + taskManagerService.start(getTaskDescriptionBuilder(OrderTag.STANDARD).build()); assertThat(actionResponse.isSuccess()).isTrue(); } @@ -152,7 +154,7 @@ void shouldNotStartSinceCannotContributeStatusIsPresent() { .thenReturn(List.of(new WorkflowError(CONTRIBUTION_TIMEOUT))); ReplicateActionResponse actionResponse = - taskManagerService.start(getTaskDescriptionBuilder(false).build()); + taskManagerService.start(getTaskDescriptionBuilder(OrderTag.STANDARD).build()); assertThat(actionResponse.isSuccess()).isFalse(); assertThat(actionResponse.getDetails().getCause()).isEqualTo(CONTRIBUTION_TIMEOUT); @@ -182,7 +184,7 @@ void shouldStartTeeTask() { when(teeMockedService.areTeePrerequisitesMetForTask(CHAIN_TASK_ID)).thenReturn(emptyCauses); ReplicateActionResponse actionResponse = - taskManagerService.start(getTaskDescriptionBuilder(true).build()); + taskManagerService.start(getTaskDescriptionBuilder(OrderTag.TEE_SCONE).build()); assertThat(actionResponse.isSuccess()).isTrue(); verifyNoInteractions(iexecHubService); @@ -197,7 +199,7 @@ void shouldNotStartSinceTeePrerequisitesAreNotMet() { .thenReturn(List.of(new WorkflowError(TEE_NOT_SUPPORTED))); ReplicateActionResponse actionResponse = - taskManagerService.start(getTaskDescriptionBuilder(true).build()); + taskManagerService.start(getTaskDescriptionBuilder(OrderTag.TEE_SCONE).build()); assertThat(actionResponse.isSuccess()).isFalse(); assertThat(actionResponse.getDetails().getCause()).isEqualTo(TEE_NOT_SUPPORTED); @@ -214,7 +216,7 @@ void shouldNotStartSinceTeeSessionCreationFailed() throws TeeSessionGenerationEx .when(teeMockedService).createTeeSession(any()); ReplicateActionResponse actionResponse = - taskManagerService.start(getTaskDescriptionBuilder(true).build()); + taskManagerService.start(getTaskDescriptionBuilder(OrderTag.TEE_SCONE).build()); assertThat(actionResponse.isSuccess()).isFalse(); assertThat(actionResponse.getDetails().getCause()).isEqualTo(TEE_SESSION_GENERATION_UNKNOWN_ISSUE); @@ -224,7 +226,7 @@ void shouldNotStartSinceTeeSessionCreationFailed() throws TeeSessionGenerationEx //region downloadApp @Test void shouldDownloadApp() { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); when(computeManagerService.downloadApp(taskDescription)) @@ -243,7 +245,7 @@ void shouldNotDownloadAppSinceCannotContributionStatusIsPresent() { .thenReturn(List.of(new WorkflowError(CONTRIBUTION_TIMEOUT))); ReplicateActionResponse actionResponse = - taskManagerService.downloadApp(getTaskDescriptionBuilder(false).build()); + taskManagerService.downloadApp(getTaskDescriptionBuilder(OrderTag.STANDARD).build()); assertThat(actionResponse.isSuccess()).isFalse(); assertThat(actionResponse.getDetails().getCause()) @@ -252,7 +254,7 @@ void shouldNotDownloadAppSinceCannotContributionStatusIsPresent() { @Test void shouldAppDownloadFailedAndTriggerPostComputeHookWithSuccess() { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); when(computeManagerService.downloadApp(taskDescription)) @@ -272,7 +274,7 @@ void shouldAppDownloadFailedAndTriggerPostComputeHookWithSuccess() { @Test void shouldAppDownloadFailedAndTriggerPostComputeHookWithFailure1() { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); when(computeManagerService.downloadApp(taskDescription)) @@ -290,7 +292,7 @@ void shouldAppDownloadFailedAndTriggerPostComputeHookWithFailure1() { @Test void shouldAppDownloadFailedAndTriggerPostComputeHookWithFailure2() { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); when(computeManagerService.downloadApp(taskDescription)) @@ -317,7 +319,7 @@ void shouldAppDownloadFailedAndTriggerPostComputeHookWithFailure2() { @Test void shouldNotDownloadDataSinceCannotContributeStatusIsPresent() { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(List.of(new WorkflowError(CONTRIBUTION_TIMEOUT))); @@ -336,7 +338,7 @@ void shouldReturnSuccessAndNotDownloadDataSinceEmptyUrls() throws Exception { final DealParams dealParams = DealParams.builder() .iexecInputFiles(null) .build(); - final TaskDescription taskDescription = getTaskDescriptionBuilder(false) + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD) .datasetUri("") .dealParams(dealParams) .build(); @@ -355,7 +357,7 @@ void shouldReturnSuccessAndNotDownloadDataSinceEmptyUrls() throws Exception { @Test void shouldDownloadDatasetAndInputFiles() throws Exception { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); when(dataService.downloadStandardDataset(taskDescription)) @@ -376,7 +378,7 @@ void shouldDownloadDatasetAndNotInputFiles() throws Exception { final DealParams dealParams = DealParams.builder() .iexecInputFiles(null) .build(); - final TaskDescription taskDescription = getTaskDescriptionBuilder(false) + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD) .dealParams(dealParams) .build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) @@ -396,7 +398,7 @@ void shouldDownloadDatasetAndNotInputFiles() throws Exception { @Test void shouldDownloadInputFilesAndNotDataset() throws Exception { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false) + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD) .datasetAddress("") .build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) @@ -414,7 +416,7 @@ void shouldDownloadInputFilesAndNotDataset() throws Exception { @Test void shouldNotDownloadDataWithDatasetUriForTeeTaskAndReturnSuccess() { - final TaskDescription taskDescription = getTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); final ReplicateActionResponse actionResponse = taskManagerService.downloadData(taskDescription); assertThat(actionResponse.isSuccess()).isTrue(); @@ -426,7 +428,7 @@ void shouldNotDownloadDataWithDatasetUriForTeeTaskAndReturnSuccess() { @Test void shouldHandleDatasetDownloadFailureAndTriggerPostComputeHookWithSuccess() throws Exception { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); when(dataService.downloadStandardDataset(taskDescription)) @@ -447,7 +449,7 @@ void shouldHandleDatasetDownloadFailureAndTriggerPostComputeHookWithSuccess() @Test void shouldHandleDatasetDownloadFailureAndTriggerPostComputeHookWithFailure1() throws Exception { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); when(dataService.downloadStandardDataset(taskDescription)) @@ -467,7 +469,7 @@ void shouldHandleDatasetDownloadFailureAndTriggerPostComputeHookWithFailure1() @Test void shouldHandleDatasetDownloadFailureAndTriggerPostComputeHookWithFailure2() throws Exception { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); when(dataService.downloadStandardDataset(taskDescription)) @@ -490,7 +492,7 @@ void shouldHandleDatasetDownloadFailureAndTriggerPostComputeHookWithFailure2() @Test void shouldWithDatasetUriAndChecksumDownloadData() throws Exception { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); when(dataService.downloadStandardDataset(taskDescription)) @@ -507,7 +509,7 @@ void shouldWithDatasetUriAndChecksumDownloadData() throws Exception { @Test void shouldHandleWorkflowExceptionInDownloadDataAndTriggerPostComputeHookWithSuccess() throws Exception { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); when(dataService.downloadStandardDataset(taskDescription)) @@ -530,7 +532,7 @@ void shouldHandleWorkflowExceptionInDownloadDataAndTriggerPostComputeHookWithSuc @Test void shouldWithInputFilesDownloadData() throws Exception { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false) + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD) .datasetUri("") .build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) @@ -549,7 +551,7 @@ void shouldWithInputFilesDownloadData() throws Exception { @Test void shouldWithInputFilesDataDownloadFailedAndTriggerPostComputeHookWithSuccess() throws Exception { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false) + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD) .datasetUri("") .build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) @@ -573,7 +575,7 @@ void shouldWithInputFilesDataDownloadFailedAndTriggerPostComputeHookWithSuccess( @Test void shouldWithInputFilesDataDownloadFailedAndTriggerPostComputeHookWithFailure1() throws Exception { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false) + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD) .datasetUri("") .build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) @@ -596,7 +598,7 @@ void shouldWithInputFilesDataDownloadFailedAndTriggerPostComputeHookWithFailure1 @Test void shouldWithInputFilesDataDownloadFailedAndTriggerPostComputeHookWithFailure2() throws Exception { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false) + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD) .datasetUri("") .build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) @@ -622,7 +624,7 @@ void shouldWithInputFilesDataDownloadFailedAndTriggerPostComputeHookWithFailure2 //region compute @Test void shouldComputeStandardTask() { - final TaskDescription taskDescription = getTaskDescriptionBuilder(false).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.STANDARD).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); @@ -653,7 +655,7 @@ void shouldComputeStandardTask() { @Test void shouldComputeTeeTask() { - final TaskDescription taskDescription = getTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses); @@ -693,7 +695,7 @@ void shouldNotComputeSinceCannotContributeStatusIsPresent(ReplicateStatusCause r .thenReturn(List.of(new WorkflowError(replicateStatusCause))); ReplicateActionResponse replicateActionResponse = - taskManagerService.compute(getTaskDescriptionBuilder(false).build()); + taskManagerService.compute(getTaskDescriptionBuilder(OrderTag.STANDARD).build()); Assertions.assertThat(replicateActionResponse) .isNotNull() @@ -743,7 +745,7 @@ void shouldNotComputeSinceFailedPreCompute() { @Test void shouldNotComputeSinceFailedLasStart() { - final TaskDescription taskDescription = getTaskDescriptionBuilder(true).build(); + final TaskDescription taskDescription = getTaskDescriptionBuilder(OrderTag.TEE_SCONE).build(); when(contributionService.getCannotContributeStatusCause(CHAIN_TASK_ID)) .thenReturn(emptyCauses);