Skip to content

Commit fa632c5

Browse files
committed
Use isEligibleToContributeAndFinalize method from TaskDescription
1 parent 2d2e851 commit fa632c5

File tree

6 files changed

+165
-51
lines changed

6 files changed

+165
-51
lines changed

src/main/java/com/iexec/core/detector/task/FinalizedTaskDetector.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import com.iexec.common.replicate.ReplicateStatus;
2020
import com.iexec.commons.poco.chain.ChainTask;
2121
import com.iexec.commons.poco.chain.ChainTaskStatus;
22+
import com.iexec.commons.poco.task.TaskDescription;
2223
import com.iexec.core.chain.IexecHubService;
2324
import com.iexec.core.detector.Detector;
2425
import com.iexec.core.replicate.Replicate;
@@ -89,7 +90,8 @@ boolean isChainTaskCompleted(Task task) {
8990
}
9091

9192
boolean isTaskContributeAndFinalizeDone(Task task) {
92-
if (!task.isEligibleToContributeAndFinalize()) {
93+
final TaskDescription taskDescription = iexecHubService.getTaskDescription(task.getChainTaskId());
94+
if (!taskDescription.isEligibleToContributeAndFinalize()) {
9395
return false;
9496
}
9597

src/main/java/com/iexec/core/task/Task.java

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -179,18 +179,4 @@ public boolean isTeeTask() {
179179
return TeeUtils.isTeeTag(getTag());
180180
}
181181

182-
/**
183-
* A task is eligible to the Contribute And Finalize flow
184-
* if it matches the following conditions:
185-
* <ul>
186-
* <li>It is a TEE task
187-
* <li>Its trust is 1
188-
* </ul>
189-
*
190-
* @return {@literal true} if eligible, {@literal false} otherwise.
191-
*/
192-
public boolean isEligibleToContributeAndFinalize() {
193-
return isTeeTask()
194-
&& trust == 1;
195-
}
196182
}

src/main/java/com/iexec/core/task/update/TaskUpdateManager.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.iexec.commons.poco.chain.ChainReceipt;
2121
import com.iexec.commons.poco.chain.ChainTask;
2222
import com.iexec.commons.poco.chain.ChainTaskStatus;
23+
import com.iexec.commons.poco.task.TaskDescription;
2324
import com.iexec.core.chain.IexecHubService;
2425
import com.iexec.core.chain.adapter.BlockchainAdapterService;
2526
import com.iexec.core.replicate.Replicate;
@@ -331,7 +332,8 @@ void running2Finalized2Completed(Task task) {
331332
boolean isTaskInRunningStatus = task.getCurrentStatus() == RUNNING;
332333
final String chainTaskId = task.getChainTaskId();
333334

334-
if (!task.isEligibleToContributeAndFinalize()) {
335+
final TaskDescription taskDescription = iexecHubService.getTaskDescription(task.getChainTaskId());
336+
if (!taskDescription.isEligibleToContributeAndFinalize()) {
335337
log.debug("Task not running in a TEE, flow running2Finalized2Completed is not possible"
336338
+ " [chainTaskId:{}]", chainTaskId);
337339
return;

src/test/java/com/iexec/core/detector/task/FinalizedTaskDetectorTests.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.iexec.common.replicate.ReplicateStatusModifier;
2121
import com.iexec.commons.poco.chain.ChainTask;
2222
import com.iexec.commons.poco.chain.ChainTaskStatus;
23+
import com.iexec.commons.poco.task.TaskDescription;
2324
import com.iexec.core.chain.IexecHubService;
2425
import com.iexec.core.replicate.Replicate;
2526
import com.iexec.core.replicate.ReplicatesService;
@@ -32,6 +33,7 @@
3233
import org.junit.jupiter.api.Test;
3334
import org.mockito.*;
3435

36+
import java.math.BigInteger;
3537
import java.util.List;
3638
import java.util.Optional;
3739

@@ -69,6 +71,14 @@ void shouldDetectTasks() {
6971
final Task contributeAndFinalizeTask = getContributeAndFinalizeDoneTask(contributedAndFinalizedChainTaskId).build();
7072
when(taskService.findByCurrentStatus(TaskStatus.RUNNING)).thenReturn(List.of(contributeAndFinalizeTask));
7173

74+
final TaskDescription taskDescription = TaskDescription.builder()
75+
.chainTaskId(contributedAndFinalizedChainTaskId)
76+
.isTeeTask(true)
77+
.trust(BigInteger.ONE)
78+
.callback("")
79+
.build();
80+
when(iexecHubService.getTaskDescription(contributedAndFinalizedChainTaskId)).thenReturn(taskDescription);
81+
7282
detector.detect();
7383

7484
verify(taskUpdateRequestManager).publishRequest(completedChainTaskId);
@@ -104,8 +114,15 @@ void shouldDetectNoFinalizedTaskAsTaskIsRevealing() {
104114
@Test
105115
void shouldDetectContributeAndFinalizeDoneTask() {
106116
final Task task = getContributeAndFinalizeDoneTask(CHAIN_TASK_ID).build();
117+
final TaskDescription taskDescription = TaskDescription.builder()
118+
.chainTaskId(CHAIN_TASK_ID)
119+
.isTeeTask(true)
120+
.trust(BigInteger.ONE)
121+
.callback("")
122+
.build();
107123

108124
when(taskService.findByCurrentStatus(TaskStatus.RUNNING)).thenReturn(List.of(task));
125+
when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)).thenReturn(taskDescription);
109126

110127
detector.detectContributeAndFinalizeDoneTasks();
111128

@@ -115,8 +132,15 @@ void shouldDetectContributeAndFinalizeDoneTask() {
115132
@Test
116133
void shouldDetectNoContributeAndFinalizeDoneTaskAsTaskIsRevealing() {
117134
final Task task = getOnchainRevealingTask(CHAIN_DEAL_ID).build();
135+
final TaskDescription taskDescription = TaskDescription.builder()
136+
.chainTaskId(task.getChainTaskId())
137+
.isTeeTask(true)
138+
.trust(BigInteger.ONE)
139+
.callback("")
140+
.build();
118141

119142
when(taskService.findByCurrentStatus(TaskStatus.RUNNING)).thenReturn(List.of(task));
143+
when(iexecHubService.getTaskDescription(task.getChainTaskId())).thenReturn(taskDescription);
120144

121145
detector.detectContributeAndFinalizeDoneTasks();
122146

@@ -162,6 +186,13 @@ void shouldChainTaskNotBeCompletedAsChainTaskNotCompleted() {
162186
@Test
163187
void shouldTaskBeContributeAndFinalizeDone() {
164188
final Task task = getContributeAndFinalizeDoneTask(CHAIN_TASK_ID).build();
189+
final TaskDescription taskDescription = TaskDescription.builder()
190+
.chainTaskId(CHAIN_TASK_ID)
191+
.isTeeTask(true)
192+
.trust(BigInteger.ONE)
193+
.callback("")
194+
.build();
195+
when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)).thenReturn(taskDescription);
165196

166197
final boolean taskContributeAndFinalizeDone = detector.isTaskContributeAndFinalizeDone(task);
167198

@@ -175,6 +206,13 @@ void shouldTaskNotBeContributeAndFinalizeDoneAsNotTee() {
175206
.currentStatus(TaskStatus.FINALIZING)
176207
.tag(NO_TEE_TAG)
177208
.build();
209+
final TaskDescription taskDescription = TaskDescription.builder()
210+
.chainTaskId(CHAIN_TASK_ID)
211+
.isTeeTask(false)
212+
.trust(BigInteger.ONE)
213+
.callback("")
214+
.build();
215+
when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)).thenReturn(taskDescription);
178216

179217
final boolean taskContributeAndFinalizeDone = detector.isTaskContributeAndFinalizeDone(task);
180218

@@ -194,9 +232,16 @@ void shouldTaskNotBeContributeAndFinalizeDoneAsMultipleReplicates() {
194232
.chainTaskId(CHAIN_TASK_ID)
195233
.status(ChainTaskStatus.COMPLETED)
196234
.build();
235+
final TaskDescription taskDescription = TaskDescription.builder()
236+
.chainTaskId(CHAIN_TASK_ID)
237+
.isTeeTask(true)
238+
.trust(BigInteger.ONE)
239+
.callback("")
240+
.build();
197241

198242
when(replicatesService.getReplicates(CHAIN_TASK_ID)).thenReturn(List.of(replicate1, replicate2));
199243
when(iexecHubService.getChainTask(CHAIN_TASK_ID)).thenReturn(Optional.of(chainTask));
244+
when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)).thenReturn(taskDescription);
200245

201246
final boolean taskContributeAndFinalizeDone = detector.isTaskContributeAndFinalizeDone(task);
202247

@@ -212,8 +257,15 @@ void shouldTaskNotBeContributeAndFinalizeDoneAsReplicateNotDone() {
212257
.build();
213258
final Replicate replicate = new Replicate(WALLET_WORKER_1, CHAIN_TASK_ID);
214259
replicate.updateStatus(ReplicateStatus.COMPUTING, ReplicateStatusModifier.WORKER);
260+
final TaskDescription taskDescription = TaskDescription.builder()
261+
.chainTaskId(CHAIN_TASK_ID)
262+
.isTeeTask(true)
263+
.trust(BigInteger.ONE)
264+
.callback("")
265+
.build();
215266

216267
when(replicatesService.getReplicates(CHAIN_TASK_ID)).thenReturn(List.of(replicate));
268+
when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)).thenReturn(taskDescription);
217269

218270
final boolean taskContributeAndFinalizeDone = detector.isTaskContributeAndFinalizeDone(task);
219271

@@ -233,9 +285,16 @@ void shouldTaskNotBeContributeAndFinalizeDoneAsChainTaskNotCompleted() {
233285
.chainTaskId(CHAIN_TASK_ID)
234286
.status(ChainTaskStatus.REVEALING)
235287
.build();
288+
final TaskDescription taskDescription = TaskDescription.builder()
289+
.chainTaskId(CHAIN_TASK_ID)
290+
.isTeeTask(true)
291+
.trust(BigInteger.ONE)
292+
.callback("")
293+
.build();
236294

237295
when(replicatesService.getReplicates(CHAIN_TASK_ID)).thenReturn(List.of(replicate));
238296
when(iexecHubService.getChainTask(CHAIN_TASK_ID)).thenReturn(Optional.of(chainTask));
297+
when(iexecHubService.getTaskDescription(CHAIN_TASK_ID)).thenReturn(taskDescription);
239298

240299
final boolean taskContributeAndFinalizeDone = detector.isTaskContributeAndFinalizeDone(task);
241300

src/test/java/com/iexec/core/task/TaskTests.java

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,13 @@
1919

2020
import com.iexec.common.utils.DateTimeUtils;
2121
import org.junit.jupiter.api.Test;
22-
import org.junit.jupiter.params.ParameterizedTest;
23-
import org.junit.jupiter.params.provider.Arguments;
24-
import org.junit.jupiter.params.provider.MethodSource;
2522

2623
import java.util.Date;
2724
import java.util.List;
28-
import java.util.stream.Stream;
2925

3026
import static com.iexec.common.utils.DateTimeUtils.addMinutesToDate;
3127
import static com.iexec.common.utils.DateTimeUtils.now;
32-
import static com.iexec.commons.poco.tee.TeeUtils.TEE_GRAMINE_ONLY_TAG;
33-
import static com.iexec.commons.poco.tee.TeeUtils.TEE_SCONE_ONLY_TAG;
3428
import static com.iexec.core.task.TaskStatus.CONSENSUS_REACHED;
35-
import static com.iexec.core.task.TaskTestsUtils.NO_TEE_TAG;
3629
import static org.assertj.core.api.Assertions.assertThat;
3730

3831
class TaskTests {
@@ -128,32 +121,4 @@ void shouldContributionDeadlineNotBeReached() {
128121
task.setContributionDeadline(DateTimeUtils.addMinutesToDate(new Date(), 60));
129122
assertThat(task.isContributionDeadlineReached()).isFalse();
130123
}
131-
132-
// region isEligibleToContributeAndFinalize
133-
static Stream<Arguments> taskEligibilityToContributeAndFinalizeParameters() {
134-
return Stream.of(
135-
Arguments.of(TEE_SCONE_ONLY_TAG, 1, true),
136-
Arguments.of(TEE_SCONE_ONLY_TAG, 0, false),
137-
138-
Arguments.of(TEE_GRAMINE_ONLY_TAG, 1, true),
139-
Arguments.of(TEE_GRAMINE_ONLY_TAG, 0, false),
140-
141-
Arguments.of(NO_TEE_TAG, 1, false),
142-
Arguments.of(NO_TEE_TAG, 0, false)
143-
);
144-
}
145-
146-
@ParameterizedTest
147-
@MethodSource("taskEligibilityToContributeAndFinalizeParameters")
148-
void testTaskEligibilityToContributeAndFinalize(String tag, int trust, boolean expectedEligibility) {
149-
final Task task = Task.builder()
150-
.tag(tag)
151-
.trust(trust)
152-
.build();
153-
154-
final boolean eligible = task.isEligibleToContributeAndFinalize();
155-
156-
assertThat(eligible).isEqualTo(expectedEligibility);
157-
}
158-
// endregion
159124
}

0 commit comments

Comments
 (0)