diff --git a/CHANGELOG.md b/CHANGELOG.md index 1213d67d..4e58b58b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ All notable changes to this project will be documented in this file. - Add and use a non-root user in the dockerfile. (#113) - Reindent `build.gradle` file. (#114) - Standardisation of the dockerfile and its location in regard to other java components. (#115) +- Rename `Status` to `CommandStatus` in library. (#117) ### Dependency Upgrades diff --git a/iexec-blockchain-adapter-api-library/build.gradle b/iexec-blockchain-adapter-api-library/build.gradle index 6cf8c952..aebf8986 100644 --- a/iexec-blockchain-adapter-api-library/build.gradle +++ b/iexec-blockchain-adapter-api-library/build.gradle @@ -8,7 +8,9 @@ plugins { dependencies { implementation "com.iexec.commons:iexec-commons-poco:$iexecCommonsPocoVersion" implementation "com.iexec.common:iexec-common:$iexecCommonVersion" + implementation 'org.apache.commons:commons-lang3:3.12.0' testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2' + testImplementation 'org.mockito:mockito-junit-jupiter:4.5.1' testRuntimeOnly("org.junit.platform:junit-platform-launcher") } @@ -43,7 +45,7 @@ publishing { username nexusUser password nexusPassword } - url = project.hasProperty("nexusUrl")? project.nexusUrl: '' + url = project.hasProperty("nexusUrl") ? project.nexusUrl : '' } } } diff --git a/iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/api/BlockchainAdapterApiClient.java b/iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/api/BlockchainAdapterApiClient.java index 093c6cb4..11be2e82 100644 --- a/iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/api/BlockchainAdapterApiClient.java +++ b/iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/api/BlockchainAdapterApiClient.java @@ -16,7 +16,6 @@ package com.iexec.blockchain.api; -import com.iexec.common.chain.adapter.CommandStatus; import com.iexec.common.chain.adapter.args.TaskFinalizeArgs; import com.iexec.common.config.PublicChainConfig; import com.iexec.common.sdk.broker.BrokerOrder; @@ -30,6 +29,7 @@ * To create the client, call: *
FeignBuilder.createBuilder(feignLogLevel)
  *         .target(BlockchainAdapterApiClient.class, blockchainAdapterUrl)
+ * * @see com.iexec.common.utils.FeignBuilder */ public interface BlockchainAdapterApiClient { diff --git a/iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/api/BlockchainAdapterService.java b/iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/api/BlockchainAdapterService.java new file mode 100644 index 00000000..ccd99eb2 --- /dev/null +++ b/iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/api/BlockchainAdapterService.java @@ -0,0 +1,64 @@ +/* + * Copyright 2021-2023 IEXEC BLOCKCHAIN TECH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.iexec.blockchain.api; + +import lombok.extern.slf4j.Slf4j; + +import java.util.function.Function; + +@Slf4j +public class BlockchainAdapterService { + /** + * Verify if a command sent to the adapter is completed on-chain. + * + * @param getCommandStatusFunction method for fetching the current command status from the adapter + * @param chainTaskId ID of the task + * @param period period in ms between consecutive checks + * @param maxAttempts maximum number of attempts + * @return true if the tx is mined, false if reverted or empty for other cases. + * (too long since still RECEIVED or PROCESSING, adapter error) + */ + boolean isCommandCompleted( + Function getCommandStatusFunction, + String chainTaskId, long period, int maxAttempts) { + for (int attempt = 0; attempt < maxAttempts; attempt++) { + try { + CommandStatus status = getCommandStatusFunction.apply(chainTaskId); + if (CommandStatus.SUCCESS == status || CommandStatus.FAILURE == status) { + return CommandStatus.SUCCESS == status; + } + // RECEIVED, PROCESSING + log.warn("Waiting command completion [chainTaskId:{}, status:{}, period:{}ms, attempt:{}, maxAttempts:{}]", + chainTaskId, status, period, attempt, maxAttempts); + } catch (Exception e) { + log.error("Unexpected error while waiting command completion [chainTaskId:{}, period:{}ms, attempt:{}, maxAttempts:{}]", + chainTaskId, period, attempt, maxAttempts, e); + } + + try { + Thread.sleep(period); + } catch (InterruptedException e) { + log.error("Polling on blockchain command was interrupted", e); + Thread.currentThread().interrupt(); + return false; + } + } + log.error("Reached max retry while waiting command completion [chainTaskId:{}, maxAttempts:{}]", + chainTaskId, maxAttempts); + return false; + } +} diff --git a/iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/tool/Status.java b/iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/api/CommandStatus.java similarity index 85% rename from iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/tool/Status.java rename to iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/api/CommandStatus.java index 3449cf61..1fb276ff 100644 --- a/iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/tool/Status.java +++ b/iexec-blockchain-adapter-api-library/src/main/java/com/iexec/blockchain/api/CommandStatus.java @@ -1,5 +1,5 @@ /* - * Copyright 2022 IEXEC BLOCKCHAIN TECH + * Copyright 2022-2023 IEXEC BLOCKCHAIN TECH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.iexec.blockchain.tool; +package com.iexec.blockchain.api; -public enum Status { +public enum CommandStatus { RECEIVED, PROCESSING, SUCCESS, diff --git a/iexec-blockchain-adapter-api-library/src/test/java/com/iexec/blockchain/api/BlockchainAdapterServiceTests.java b/iexec-blockchain-adapter-api-library/src/test/java/com/iexec/blockchain/api/BlockchainAdapterServiceTests.java new file mode 100644 index 00000000..23369055 --- /dev/null +++ b/iexec-blockchain-adapter-api-library/src/test/java/com/iexec/blockchain/api/BlockchainAdapterServiceTests.java @@ -0,0 +1,106 @@ +/* + * Copyright 2021-2023 IEXEC BLOCKCHAIN TECH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.iexec.blockchain.api; + +import feign.FeignException; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + +import static org.junit.jupiter.api.Assertions.*; +import static org.mockito.Mockito.when; + +class BlockchainAdapterServiceTests { + + static final String CHAIN_TASK_ID = "CHAIN_TASK_ID"; + static final int PERIOD = 10; + static final int MAX_ATTEMPTS = 3; + + @Mock + private BlockchainAdapterApiClient blockchainAdapterClient; + @InjectMocks + private BlockchainAdapterService blockchainAdapterService; + + @BeforeEach + void init() { + MockitoAnnotations.openMocks(this); + } + + // region isCommandCompleted + @Test + void isCommandCompletedTrueWhenSuccess() { + when(blockchainAdapterClient.getStatusForInitializeTaskRequest(CHAIN_TASK_ID)) + .thenReturn(CommandStatus.RECEIVED) + .thenReturn(CommandStatus.PROCESSING) + .thenReturn(CommandStatus.SUCCESS); + + boolean commandCompleted = blockchainAdapterService.isCommandCompleted( + blockchainAdapterClient::getStatusForInitializeTaskRequest, CHAIN_TASK_ID, PERIOD, MAX_ATTEMPTS); + assertTrue(commandCompleted); + } + + @Test + void isCommandCompletedFalseWhenFailure() { + when(blockchainAdapterClient.getStatusForInitializeTaskRequest(CHAIN_TASK_ID)) + .thenReturn(CommandStatus.RECEIVED) + .thenReturn(CommandStatus.PROCESSING) + .thenReturn(CommandStatus.FAILURE); + + boolean commandCompleted = blockchainAdapterService.isCommandCompleted( + blockchainAdapterClient::getStatusForInitializeTaskRequest, CHAIN_TASK_ID, PERIOD, MAX_ATTEMPTS); + assertFalse(commandCompleted); + } + + @Test + void isCommandCompletedFalseWhenMaxAttempts() { + when(blockchainAdapterClient.getStatusForInitializeTaskRequest(CHAIN_TASK_ID)) + .thenReturn(CommandStatus.PROCESSING); + boolean commandCompleted = blockchainAdapterService.isCommandCompleted( + blockchainAdapterClient::getStatusForInitializeTaskRequest, CHAIN_TASK_ID, PERIOD, MAX_ATTEMPTS); + assertFalse(commandCompleted); + } + + @Test + void isCommandCompletedFalseWhenFeignException() { + when(blockchainAdapterClient.getStatusForFinalizeTaskRequest(CHAIN_TASK_ID)) + .thenThrow(FeignException.class); + boolean commandCompleted = blockchainAdapterService.isCommandCompleted( + blockchainAdapterClient::getStatusForFinalizeTaskRequest, CHAIN_TASK_ID, PERIOD, MAX_ATTEMPTS); + assertFalse(commandCompleted); + } + + @Test + void isCommandCompletedFalseWhenInterrupted() throws InterruptedException { + when(blockchainAdapterClient.getStatusForFinalizeTaskRequest(CHAIN_TASK_ID)) + .thenReturn(CommandStatus.PROCESSING); + ExecutorService service = Executors.newSingleThreadExecutor(); + Future future = service.submit(() -> + blockchainAdapterService.isCommandCompleted(blockchainAdapterClient::getStatusForFinalizeTaskRequest, + CHAIN_TASK_ID, 5000L, MAX_ATTEMPTS)); + Thread.sleep(1000L); + future.cancel(true); + assertThrows(CancellationException.class, future::get); + } + // endregion +} diff --git a/src/main/java/com/iexec/blockchain/command/generic/Command.java b/src/main/java/com/iexec/blockchain/command/generic/Command.java index 8438f920..c968516f 100644 --- a/src/main/java/com/iexec/blockchain/command/generic/Command.java +++ b/src/main/java/com/iexec/blockchain/command/generic/Command.java @@ -1,5 +1,5 @@ /* - * Copyright 2020 IEXEC BLOCKCHAIN TECH + * Copyright 2020-2023 IEXEC BLOCKCHAIN TECH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ package com.iexec.blockchain.command.generic; -import com.iexec.blockchain.tool.Status; +import com.iexec.blockchain.api.CommandStatus; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -52,7 +52,7 @@ public abstract class Command { @Version private Long version; - private Status status; + private CommandStatus status; private Instant creationDate; private Instant processingDate; private Instant finalDate; diff --git a/src/main/java/com/iexec/blockchain/command/generic/CommandEngine.java b/src/main/java/com/iexec/blockchain/command/generic/CommandEngine.java index 2ee13656..d95f2965 100644 --- a/src/main/java/com/iexec/blockchain/command/generic/CommandEngine.java +++ b/src/main/java/com/iexec/blockchain/command/generic/CommandEngine.java @@ -1,5 +1,5 @@ /* - * Copyright 2020 IEXEC BLOCKCHAIN TECH + * Copyright 2020-2023 IEXEC BLOCKCHAIN TECH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,8 +17,8 @@ package com.iexec.blockchain.command.generic; +import com.iexec.blockchain.api.CommandStatus; import com.iexec.blockchain.tool.QueueService; -import com.iexec.blockchain.tool.Status; import lombok.extern.slf4j.Slf4j; import org.web3j.protocol.core.methods.response.TransactionReceipt; @@ -116,7 +116,7 @@ public void triggerBlockchainCommand(A args) { * @param chainObjectId blockchain object ID * @return status */ - public Optional getStatusForCommand(String chainObjectId) { + public Optional getStatusForCommand(String chainObjectId) { return updaterService.getStatusForCommand(chainObjectId); } diff --git a/src/main/java/com/iexec/blockchain/command/generic/CommandStorage.java b/src/main/java/com/iexec/blockchain/command/generic/CommandStorage.java index bcec2ee2..f6efaffe 100644 --- a/src/main/java/com/iexec/blockchain/command/generic/CommandStorage.java +++ b/src/main/java/com/iexec/blockchain/command/generic/CommandStorage.java @@ -1,5 +1,5 @@ /* - * Copyright 2020 IEXEC BLOCKCHAIN TECH + * Copyright 2020-2023 IEXEC BLOCKCHAIN TECH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,8 +16,7 @@ package com.iexec.blockchain.command.generic; - -import com.iexec.blockchain.tool.Status; +import com.iexec.blockchain.api.CommandStatus; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -51,7 +50,7 @@ public boolean updateToReceived(A args) { } C command = this.newCommandInstance(); - command.setStatus(Status.RECEIVED); + command.setStatus(CommandStatus.RECEIVED); command.setChainObjectId(chainObjectId); command.setArgs(args); command.setCreationDate(Instant.now()); @@ -71,12 +70,12 @@ public boolean updateToProcessing(String chainObjectId) { Optional localCommand = commandRepository .findByChainObjectId(chainObjectId) .filter(command -> command.getStatus() != null) - .filter(command -> command.getStatus() == Status.RECEIVED); + .filter(command -> command.getStatus() == CommandStatus.RECEIVED); if (localCommand.isEmpty()) { return false; } C command = localCommand.get(); - command.setStatus(Status.PROCESSING); + command.setStatus(CommandStatus.PROCESSING); command.setProcessingDate(Instant.now()); commandRepository.save(command); return true; @@ -95,23 +94,23 @@ public void updateToFinal(String chainObjectId, Optional localCommand = commandRepository .findByChainObjectId(chainObjectId) .filter(command -> command.getStatus() != null) - .filter(command -> command.getStatus() == Status.PROCESSING); + .filter(command -> command.getStatus() == CommandStatus.PROCESSING); if (localCommand.isEmpty()) { return; } C command = localCommand.get(); - Status status; + CommandStatus status; if (StringUtils.isNotEmpty(receipt.getStatus()) && receipt.getStatus().equals("0x1")) { - status = Status.SUCCESS; + status = CommandStatus.SUCCESS; log.info("Success command with transaction receipt " + "[chainObjectId:{}, command:{}, receipt:{}]", chainObjectId, command.getClass().getSimpleName(), receipt); } else { - status = Status.FAILURE; + status = CommandStatus.FAILURE; log.info("Failure after transaction sent [chainObjectId:{}, " + "command:{}, receipt:{}]", chainObjectId, command.getClass().getSimpleName(), receipt); @@ -128,7 +127,7 @@ public void updateToFinal(String chainObjectId, * @param chainObjectId blockchain object ID on which the blockchain command * is performed */ - public Optional getStatusForCommand(String chainObjectId) { + public Optional getStatusForCommand(String chainObjectId) { return commandRepository.findByChainObjectId(chainObjectId) .map(Command::getStatus); } diff --git a/src/main/java/com/iexec/blockchain/command/task/TaskController.java b/src/main/java/com/iexec/blockchain/command/task/TaskController.java index 24e16372..75ae4146 100644 --- a/src/main/java/com/iexec/blockchain/command/task/TaskController.java +++ b/src/main/java/com/iexec/blockchain/command/task/TaskController.java @@ -16,15 +16,11 @@ package com.iexec.blockchain.command.task; -import com.iexec.blockchain.command.task.contribute.TaskContributeService; +import com.iexec.blockchain.api.CommandStatus; import com.iexec.blockchain.command.task.finalize.TaskFinalizeService; import com.iexec.blockchain.command.task.initialize.TaskInitializeService; -import com.iexec.blockchain.command.task.reveal.TaskRevealService; import com.iexec.blockchain.tool.IexecHubService; -import com.iexec.blockchain.tool.Status; -import com.iexec.common.chain.adapter.args.TaskContributeArgs; import com.iexec.common.chain.adapter.args.TaskFinalizeArgs; -import com.iexec.common.chain.adapter.args.TaskRevealArgs; import com.iexec.commons.poco.chain.ChainTask; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.security.SecurityRequirement; @@ -39,19 +35,13 @@ public class TaskController { private final IexecHubService iexecHubService; private final TaskInitializeService taskInitializeService; - private final TaskContributeService taskContributeService; - private final TaskRevealService taskRevealService; private final TaskFinalizeService taskFinalizeService; public TaskController(IexecHubService iexecHubService, TaskInitializeService taskInitializeService, - TaskContributeService taskContributeService, - TaskRevealService taskRevealService, TaskFinalizeService taskFinalizeService) { this.iexecHubService = iexecHubService; this.taskInitializeService = taskInitializeService; - this.taskContributeService = taskContributeService; - this.taskRevealService = taskRevealService; this.taskFinalizeService = taskFinalizeService; } @@ -98,7 +88,7 @@ public ResponseEntity requestInitializeTask( */ @Operation(security = @SecurityRequirement(name = SWAGGER_BASIC_AUTH)) @GetMapping("/initialize/{chainTaskId}/status") - public ResponseEntity getStatusForInitializeTaskRequest( + public ResponseEntity getStatusForInitializeTaskRequest( @PathVariable String chainTaskId) { return taskInitializeService.getStatusForCommand(chainTaskId) .map(ResponseEntity::ok) @@ -131,7 +121,7 @@ public ResponseEntity requestFinalizeTask( */ @Operation(security = @SecurityRequirement(name = SWAGGER_BASIC_AUTH)) @GetMapping("/finalize/{chainTaskId}/status") - public ResponseEntity getStatusForFinalizeTaskRequest( + public ResponseEntity getStatusForFinalizeTaskRequest( @PathVariable String chainTaskId) { return taskFinalizeService.getStatusForCommand(chainTaskId) .map(ResponseEntity::ok) diff --git a/src/test/java/com/iexec/blockchain/command/task/initialize/TaskInitializeStorageTest.java b/src/test/java/com/iexec/blockchain/command/task/initialize/TaskInitializeStorageTest.java index 5c01b854..6f9fc833 100644 --- a/src/test/java/com/iexec/blockchain/command/task/initialize/TaskInitializeStorageTest.java +++ b/src/test/java/com/iexec/blockchain/command/task/initialize/TaskInitializeStorageTest.java @@ -16,7 +16,7 @@ package com.iexec.blockchain.command.task.initialize; -import com.iexec.blockchain.tool.Status; +import com.iexec.blockchain.api.CommandStatus; import com.iexec.commons.poco.chain.ChainUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -63,7 +63,7 @@ void shouldSetReceived() { verify(repository, times(1)) .save(taskInitializeCaptor.capture()); TaskInitialize initializeCaptorValue = taskInitializeCaptor.getValue(); - Assertions.assertEquals(Status.RECEIVED, initializeCaptorValue.getStatus()); + Assertions.assertEquals(CommandStatus.RECEIVED, initializeCaptorValue.getStatus()); Assertions.assertEquals(CHAIN_TASK_ID, initializeCaptorValue.getChainObjectId()); Assertions.assertEquals(args, initializeCaptorValue.getArgs()); Assertions.assertNotNull(initializeCaptorValue.getCreationDate()); @@ -85,7 +85,7 @@ void shouldNotSetReceivedSinceAlreadyPresent() { @Test void shouldSetProcessing() { TaskInitialize taskInitialize = new TaskInitialize(); - taskInitialize.setStatus(Status.RECEIVED); + taskInitialize.setStatus(CommandStatus.RECEIVED); when(repository.findByChainObjectId(CHAIN_TASK_ID)) .thenReturn(Optional.of(taskInitialize)); @@ -97,14 +97,14 @@ void shouldSetProcessing() { verify(repository, times(1)) .save(taskInitializeCaptor.capture()); TaskInitialize initializeCaptorValue = taskInitializeCaptor.getValue(); - Assertions.assertEquals(Status.PROCESSING, initializeCaptorValue.getStatus()); + Assertions.assertEquals(CommandStatus.PROCESSING, initializeCaptorValue.getStatus()); Assertions.assertNotNull(initializeCaptorValue.getProcessingDate()); } @Test void shouldNotSetProcessingSinceBadStatus() { TaskInitialize taskInitialize = new TaskInitialize(); - taskInitialize.setStatus(Status.PROCESSING); + taskInitialize.setStatus(CommandStatus.PROCESSING); when(repository.findByChainObjectId(CHAIN_TASK_ID)) .thenReturn(Optional.of(taskInitialize)); @@ -119,7 +119,7 @@ void shouldSetFinalSuccess() { TransactionReceipt receipt = mock(TransactionReceipt.class); when(receipt.getStatus()).thenReturn("0x1"); TaskInitialize taskInitialize = new TaskInitialize(); - taskInitialize.setStatus(Status.PROCESSING); + taskInitialize.setStatus(CommandStatus.PROCESSING); when(repository.findByChainObjectId(CHAIN_TASK_ID)) .thenReturn(Optional.of(taskInitialize)); @@ -130,7 +130,7 @@ void shouldSetFinalSuccess() { verify(repository, times(1)) .save(taskInitializeCaptor.capture()); TaskInitialize initializeCaptorValue = taskInitializeCaptor.getValue(); - Assertions.assertEquals(Status.SUCCESS, initializeCaptorValue.getStatus()); + Assertions.assertEquals(CommandStatus.SUCCESS, initializeCaptorValue.getStatus()); Assertions.assertEquals(receipt, initializeCaptorValue.getTransactionReceipt()); Assertions.assertNotNull(initializeCaptorValue.getFinalDate()); } @@ -140,7 +140,7 @@ void shouldSetFinalFailure() { TransactionReceipt receipt = mock(TransactionReceipt.class); when(receipt.getStatus()).thenReturn("0x0"); TaskInitialize taskInitialize = new TaskInitialize(); - taskInitialize.setStatus(Status.PROCESSING); + taskInitialize.setStatus(CommandStatus.PROCESSING); when(repository.findByChainObjectId(CHAIN_TASK_ID)) .thenReturn(Optional.of(taskInitialize)); @@ -151,7 +151,7 @@ void shouldSetFinalFailure() { verify(repository, times(1)) .save(taskInitializeCaptor.capture()); TaskInitialize initializeCaptorValue = taskInitializeCaptor.getValue(); - Assertions.assertEquals(Status.FAILURE, initializeCaptorValue.getStatus()); + Assertions.assertEquals(CommandStatus.FAILURE, initializeCaptorValue.getStatus()); Assertions.assertEquals(receipt, initializeCaptorValue.getTransactionReceipt()); Assertions.assertNotNull(initializeCaptorValue.getFinalDate()); } @@ -160,7 +160,7 @@ void shouldSetFinalFailure() { void shouldNotSetFinalSinceBadStatus() { TransactionReceipt receipt = mock(TransactionReceipt.class); TaskInitialize taskInitialize = new TaskInitialize(); - taskInitialize.setStatus(Status.RECEIVED); + taskInitialize.setStatus(CommandStatus.RECEIVED); when(repository.findByChainObjectId(CHAIN_TASK_ID)) .thenReturn(Optional.of(taskInitialize)); diff --git a/src/test/java/com/iexec/blockchain/command/task/initialize/TaskInitializeTest.java b/src/test/java/com/iexec/blockchain/command/task/initialize/TaskInitializeTest.java index ffc5d626..052e6bc6 100644 --- a/src/test/java/com/iexec/blockchain/command/task/initialize/TaskInitializeTest.java +++ b/src/test/java/com/iexec/blockchain/command/task/initialize/TaskInitializeTest.java @@ -16,8 +16,8 @@ package com.iexec.blockchain.command.task.initialize; +import com.iexec.blockchain.api.CommandStatus; import com.iexec.blockchain.tool.QueueService; -import com.iexec.blockchain.tool.Status; import com.iexec.commons.poco.chain.ChainUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -130,11 +130,11 @@ void shouldNotTriggerInitializeTaskSinceReceiptIsNull() throws Exception { @Test void shouldGetStatusForInitializeTaskRequest() { TaskInitialize taskInitialize = mock(TaskInitialize.class); - when(taskInitialize.getStatus()).thenReturn(Status.PROCESSING); + when(taskInitialize.getStatus()).thenReturn(CommandStatus.PROCESSING); when(updaterService.getStatusForCommand(CHAIN_TASK_ID)) - .thenReturn(Optional.of(Status.PROCESSING)); + .thenReturn(Optional.of(CommandStatus.PROCESSING)); - Assertions.assertEquals(Optional.of(Status.PROCESSING), + Assertions.assertEquals(Optional.of(CommandStatus.PROCESSING), taskInitializeService.getStatusForCommand(CHAIN_TASK_ID)); }