Skip to content

Commit 2d4d84e

Browse files
committed
Fix failing test PlatformMetricTests#shouldSerializeAndDeserialize
1 parent 39cf75e commit 2d4d84e

File tree

6 files changed

+72
-35
lines changed

6 files changed

+72
-35
lines changed

iexec-core-library/src/main/java/com/iexec/core/metric/PlatformMetric.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424

2525
import java.math.BigInteger;
2626
import java.util.LinkedHashMap;
27-
import java.util.concurrent.atomic.AtomicLong;
2827

2928
@Value
3029
@Builder
@@ -35,7 +34,7 @@ public class PlatformMetric {
3534
int aliveAvailableCpu;
3635
int aliveTotalGpu;
3736
int aliveAvailableGpu;
38-
LinkedHashMap<TaskStatus, AtomicLong> currentTaskStatusCounts;
37+
LinkedHashMap<TaskStatus, Long> currentTaskStatusesCount;
3938
long dealEventsCount;
4039
long dealsCount;
4140
long replayDealsCount;

iexec-core-library/src/test/java/com/iexec/core/metric/PlatformMetricTests.java

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818

1919
import com.fasterxml.jackson.core.JsonProcessingException;
2020
import com.fasterxml.jackson.databind.ObjectMapper;
21+
import com.iexec.core.task.TaskStatus;
2122
import org.junit.jupiter.api.Test;
2223

2324
import java.math.BigInteger;
25+
import java.util.LinkedHashMap;
2426

2527
import static org.junit.jupiter.api.Assertions.assertEquals;
2628

@@ -35,11 +37,38 @@ void shouldSerializeAndDeserialize() throws JsonProcessingException {
3537
.aliveAvailableCpu(7)
3638
.aliveTotalGpu(0)
3739
.aliveAvailableGpu(0)
38-
.completedTasks(1000)
40+
.currentTaskStatusesCount(createCurrentTaskStatusesCount())
3941
.dealEventsCount(3000)
4042
.dealsCount(1100)
4143
.latestBlockNumberWithDeal(BigInteger.valueOf(1_000_000L))
4244
.build();
4345
assertEquals(platformMetric, mapper.readValue(mapper.writeValueAsString(platformMetric), PlatformMetric.class));
4446
}
47+
48+
private LinkedHashMap<TaskStatus, Long> createCurrentTaskStatusesCount() {
49+
final LinkedHashMap<TaskStatus, Long> expectedCurrentTaskStatusesCount = new LinkedHashMap<>(TaskStatus.values().length);
50+
expectedCurrentTaskStatusesCount.put(TaskStatus.RECEIVED, 1L);
51+
expectedCurrentTaskStatusesCount.put(TaskStatus.INITIALIZING, 2L);
52+
expectedCurrentTaskStatusesCount.put(TaskStatus.INITIALIZED, 3L);
53+
expectedCurrentTaskStatusesCount.put(TaskStatus.INITIALIZE_FAILED, 4L);
54+
expectedCurrentTaskStatusesCount.put(TaskStatus.RUNNING, 5L);
55+
expectedCurrentTaskStatusesCount.put(TaskStatus.RUNNING_FAILED, 6L);
56+
expectedCurrentTaskStatusesCount.put(TaskStatus.CONTRIBUTION_TIMEOUT, 7L);
57+
expectedCurrentTaskStatusesCount.put(TaskStatus.CONSENSUS_REACHED, 8L);
58+
expectedCurrentTaskStatusesCount.put(TaskStatus.REOPENING, 9L);
59+
expectedCurrentTaskStatusesCount.put(TaskStatus.REOPENED, 10L);
60+
expectedCurrentTaskStatusesCount.put(TaskStatus.REOPEN_FAILED, 11L);
61+
expectedCurrentTaskStatusesCount.put(TaskStatus.AT_LEAST_ONE_REVEALED, 12L);
62+
expectedCurrentTaskStatusesCount.put(TaskStatus.RESULT_UPLOADING, 13L);
63+
expectedCurrentTaskStatusesCount.put(TaskStatus.RESULT_UPLOADED, 14L);
64+
expectedCurrentTaskStatusesCount.put(TaskStatus.RESULT_UPLOAD_TIMEOUT, 15L);
65+
expectedCurrentTaskStatusesCount.put(TaskStatus.FINALIZING, 16L);
66+
expectedCurrentTaskStatusesCount.put(TaskStatus.FINALIZED, 17L);
67+
expectedCurrentTaskStatusesCount.put(TaskStatus.FINALIZE_FAILED, 18L);
68+
expectedCurrentTaskStatusesCount.put(TaskStatus.FINAL_DEADLINE_REACHED, 19L);
69+
expectedCurrentTaskStatusesCount.put(TaskStatus.COMPLETED, 20L);
70+
expectedCurrentTaskStatusesCount.put(TaskStatus.FAILED, 21L);
71+
72+
return expectedCurrentTaskStatusesCount;
73+
}
4574
}

src/main/java/com/iexec/core/metric/MetricService.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,12 @@
2424
import org.springframework.stereotype.Service;
2525

2626
import java.util.LinkedHashMap;
27-
import java.util.concurrent.atomic.AtomicLong;
2827

2928
@Service
3029
public class MetricService {
3130
private final DealWatcherService dealWatcherService;
3231
private final WorkerService workerService;
33-
private LinkedHashMap<TaskStatus, AtomicLong> currentTaskStatusesCount;
32+
private LinkedHashMap<TaskStatus, Long> currentTaskStatusesCount;
3433

3534
public MetricService(DealWatcherService dealWatcherService,
3635
WorkerService workerService) {
@@ -47,7 +46,7 @@ public PlatformMetric getPlatformMetrics() {
4746
.aliveAvailableCpu(workerService.getAliveAvailableCpu())
4847
.aliveTotalGpu(workerService.getAliveTotalGpu())
4948
.aliveAvailableGpu(workerService.getAliveAvailableGpu())
50-
.currentTaskStatusCounts(currentTaskStatusesCount)
49+
.currentTaskStatusesCount(currentTaskStatusesCount)
5150
.dealEventsCount(dealWatcherService.getDealEventsCount())
5251
.dealsCount(dealWatcherService.getDealsCount())
5352
.replayDealsCount(dealWatcherService.getReplayDealsCount())

src/main/java/com/iexec/core/task/event/TaskStatusesCountUpdatedEvent.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@
2020
import lombok.Value;
2121

2222
import java.util.LinkedHashMap;
23-
import java.util.concurrent.atomic.AtomicLong;
2423

2524
@Value
2625
public class TaskStatusesCountUpdatedEvent {
27-
LinkedHashMap<TaskStatus, AtomicLong> currentTaskStatusesCount;
26+
LinkedHashMap<TaskStatus, Long> currentTaskStatusesCount;
2827
}

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

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -727,7 +727,18 @@ void onTaskCreatedEvent() {
727727
}
728728

729729
private void publishTaskStatusesCountUpdate() {
730-
final TaskStatusesCountUpdatedEvent event = new TaskStatusesCountUpdatedEvent(currentTaskStatusesCount);
730+
// Copying the map here ensures the original values can't be updated from outside this class.
731+
// As this data should be read only, no need for any atomic class.
732+
final LinkedHashMap<TaskStatus, Long> currentTaskStatusesCountToPublish = currentTaskStatusesCount
733+
.entrySet()
734+
.stream()
735+
.collect(Collectors.toMap(
736+
Map.Entry::getKey,
737+
entrySet -> entrySet.getValue().get(),
738+
(a, b) -> b,
739+
LinkedHashMap::new
740+
));
741+
final TaskStatusesCountUpdatedEvent event = new TaskStatusesCountUpdatedEvent(currentTaskStatusesCountToPublish);
731742
applicationEventPublisher.publishEvent(event);
732743
}
733744
}

src/test/java/com/iexec/core/metric/MetricServiceTests.java

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
import java.math.BigInteger;
3232
import java.util.LinkedHashMap;
3333
import java.util.List;
34-
import java.util.concurrent.atomic.AtomicLong;
3534

3635
import static org.assertj.core.api.Assertions.assertThat;
3736
import static org.mockito.Mockito.when;
@@ -53,7 +52,7 @@ void init() {
5352

5453
@Test
5554
void shouldGetPlatformMetrics() {
56-
final LinkedHashMap<TaskStatus, AtomicLong> expectedCurrentTaskStatusesCount = createExpectedCurrentTaskStatusesCount();
55+
final LinkedHashMap<TaskStatus, Long> expectedCurrentTaskStatusesCount = createExpectedCurrentTaskStatusesCount();
5756

5857
List<Worker> aliveWorkers = List.of(new Worker());
5958
when(workerService.getAliveWorkers()).thenReturn(aliveWorkers);
@@ -73,37 +72,38 @@ void shouldGetPlatformMetrics() {
7372
() -> assertThat(metric.getAliveAvailableCpu()).isEqualTo(1),
7473
() -> assertThat(metric.getAliveTotalGpu()).isEqualTo(1),
7574
() -> assertThat(metric.getAliveAvailableGpu()).isEqualTo(1),
76-
() -> assertThat(metric.getCurrentTaskStatusCounts()).isEqualTo(expectedCurrentTaskStatusesCount),
75+
() -> assertThat(metric.getCurrentTaskStatusesCount()).isEqualTo(expectedCurrentTaskStatusesCount),
7776
() -> assertThat(metric.getDealEventsCount()).isEqualTo(10),
7877
() -> assertThat(metric.getDealsCount()).isEqualTo(8),
7978
() -> assertThat(metric.getReplayDealsCount()).isEqualTo(2),
8079
() -> assertThat(metric.getLatestBlockNumberWithDeal()).isEqualTo(255)
8180
);
8281
}
8382

84-
private LinkedHashMap<TaskStatus, AtomicLong> createExpectedCurrentTaskStatusesCount() {
85-
final LinkedHashMap<TaskStatus, AtomicLong> expectedCurrentTaskStatusesCount = new LinkedHashMap<>(TaskStatus.values().length);
86-
expectedCurrentTaskStatusesCount.put(TaskStatus.RECEIVED, new AtomicLong(1));
87-
expectedCurrentTaskStatusesCount.put(TaskStatus.INITIALIZING, new AtomicLong(2));
88-
expectedCurrentTaskStatusesCount.put(TaskStatus.INITIALIZED, new AtomicLong(3));
89-
expectedCurrentTaskStatusesCount.put(TaskStatus.INITIALIZE_FAILED, new AtomicLong(4));
90-
expectedCurrentTaskStatusesCount.put(TaskStatus.RUNNING, new AtomicLong(5));
91-
expectedCurrentTaskStatusesCount.put(TaskStatus.RUNNING_FAILED, new AtomicLong(6));
92-
expectedCurrentTaskStatusesCount.put(TaskStatus.CONTRIBUTION_TIMEOUT, new AtomicLong(7));
93-
expectedCurrentTaskStatusesCount.put(TaskStatus.CONSENSUS_REACHED, new AtomicLong(8));
94-
expectedCurrentTaskStatusesCount.put(TaskStatus.REOPENING, new AtomicLong(9));
95-
expectedCurrentTaskStatusesCount.put(TaskStatus.REOPENED, new AtomicLong(10));
96-
expectedCurrentTaskStatusesCount.put(TaskStatus.REOPEN_FAILED, new AtomicLong(11));
97-
expectedCurrentTaskStatusesCount.put(TaskStatus.AT_LEAST_ONE_REVEALED, new AtomicLong(12));
98-
expectedCurrentTaskStatusesCount.put(TaskStatus.RESULT_UPLOADING, new AtomicLong(13));
99-
expectedCurrentTaskStatusesCount.put(TaskStatus.RESULT_UPLOADED, new AtomicLong(14));
100-
expectedCurrentTaskStatusesCount.put(TaskStatus.RESULT_UPLOAD_TIMEOUT, new AtomicLong(15));
101-
expectedCurrentTaskStatusesCount.put(TaskStatus.FINALIZING, new AtomicLong(16));
102-
expectedCurrentTaskStatusesCount.put(TaskStatus.FINALIZED, new AtomicLong(17));
103-
expectedCurrentTaskStatusesCount.put(TaskStatus.FINALIZE_FAILED, new AtomicLong(18));
104-
expectedCurrentTaskStatusesCount.put(TaskStatus.FINAL_DEADLINE_REACHED, new AtomicLong(19));
105-
expectedCurrentTaskStatusesCount.put(TaskStatus.COMPLETED, new AtomicLong(20));
106-
expectedCurrentTaskStatusesCount.put(TaskStatus.FAILED, new AtomicLong(21));
83+
private LinkedHashMap<TaskStatus, Long> createExpectedCurrentTaskStatusesCount() {
84+
final LinkedHashMap<TaskStatus, Long> expectedCurrentTaskStatusesCount = new LinkedHashMap<>(TaskStatus.values().length);
85+
expectedCurrentTaskStatusesCount.put(TaskStatus.RECEIVED, 1L);
86+
expectedCurrentTaskStatusesCount.put(TaskStatus.INITIALIZING, 2L);
87+
expectedCurrentTaskStatusesCount.put(TaskStatus.INITIALIZED, 3L);
88+
expectedCurrentTaskStatusesCount.put(TaskStatus.INITIALIZE_FAILED, 4L);
89+
expectedCurrentTaskStatusesCount.put(TaskStatus.RUNNING, 5L);
90+
expectedCurrentTaskStatusesCount.put(TaskStatus.RUNNING_FAILED, 6L);
91+
expectedCurrentTaskStatusesCount.put(TaskStatus.CONTRIBUTION_TIMEOUT, 7L);
92+
expectedCurrentTaskStatusesCount.put(TaskStatus.CONSENSUS_REACHED, 8L);
93+
expectedCurrentTaskStatusesCount.put(TaskStatus.REOPENING, 9L);
94+
expectedCurrentTaskStatusesCount.put(TaskStatus.REOPENED, 10L);
95+
expectedCurrentTaskStatusesCount.put(TaskStatus.REOPEN_FAILED, 11L);
96+
expectedCurrentTaskStatusesCount.put(TaskStatus.AT_LEAST_ONE_REVEALED, 12L);
97+
expectedCurrentTaskStatusesCount.put(TaskStatus.RESULT_UPLOADING, 13L);
98+
expectedCurrentTaskStatusesCount.put(TaskStatus.RESULT_UPLOADED, 14L);
99+
expectedCurrentTaskStatusesCount.put(TaskStatus.RESULT_UPLOAD_TIMEOUT, 15L);
100+
expectedCurrentTaskStatusesCount.put(TaskStatus.FINALIZING, 16L);
101+
expectedCurrentTaskStatusesCount.put(TaskStatus.FINALIZED, 17L);
102+
expectedCurrentTaskStatusesCount.put(TaskStatus.FINALIZE_FAILED, 18L);
103+
expectedCurrentTaskStatusesCount.put(TaskStatus.FINAL_DEADLINE_REACHED, 19L);
104+
expectedCurrentTaskStatusesCount.put(TaskStatus.COMPLETED, 20L);
105+
expectedCurrentTaskStatusesCount.put(TaskStatus.FAILED, 21L);
106+
107107
metricService.onTaskStatusesCountUpdateEvent(new TaskStatusesCountUpdatedEvent(expectedCurrentTaskStatusesCount));
108108

109109
return expectedCurrentTaskStatusesCount;

0 commit comments

Comments
 (0)