Skip to content

Commit 12f058f

Browse files
committed
Quality fixes in BrokerService and BrokerServiceTests
1 parent 3a470e8 commit 12f058f

File tree

2 files changed

+47
-25
lines changed

2 files changed

+47
-25
lines changed

src/main/java/com/iexec/blockchain/broker/BrokerService.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ public String matchOrders(BrokerOrder brokerOrder) {
9595
RequestOrder requestOrder = brokerOrder.getRequestOrder();
9696
final boolean withDataset = withDataset(requestOrder.getDataset());
9797
BigInteger datasetPrice = withDataset ? datasetOrder.getDatasetprice() : BigInteger.ZERO;
98-
if (!hasRequesterAcceptedPrices(brokerOrder.getRequestOrder(),
98+
if (!hasRequesterAcceptedPrices(
99+
requestOrder,
99100
appOrder.getAppprice(),
100101
workerpoolOrder.getWorkerpoolprice(),
101102
datasetPrice,
@@ -112,7 +113,7 @@ public String matchOrders(BrokerOrder brokerOrder) {
112113
datasetPrice.longValue())) {
113114
throw new IllegalStateException("Deposit too low");
114115
}
115-
String beneficiary = brokerOrder.getRequestOrder().getBeneficiary();
116+
String beneficiary = requestOrder.getBeneficiary();
116117
String messageDetails = MessageFormat.format("requester:{0}, beneficiary:{1}, pool:{2}, app:{3}",
117118
requestOrder.getRequester(), beneficiary, workerpoolOrder.getWorkerpool(), appOrder.getApp());
118119
if (withDataset) {
@@ -140,9 +141,10 @@ Optional<String> fireMatchOrders(
140141
log.info("block {}, hash {}, status {}", receipt.getBlockNumber(), receipt.getTransactionHash(), receipt.getStatus());
141142
log.info("logs count {}", receipt.getLogs().size());
142143

144+
String workerpoolAddress = workerpoolOrder.getWorkerpool();
143145
List<String> events = IexecHubContract.getSchedulerNoticeEvents(receipt)
144146
.stream()
145-
.filter(event -> workerpoolOrder.getWorkerpool().equals(event.workerpool))
147+
.filter(event -> workerpoolAddress.equals(event.workerpool))
146148
.map(event -> BytesUtils.bytesToString(event.dealid))
147149
.collect(Collectors.toList());
148150
log.info("events count {}", events.size());

src/test/java/com/iexec/blockchain/broker/BrokerServiceTests.java

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,39 +19,50 @@
1919
import com.iexec.blockchain.tool.IexecHubService;
2020
import com.iexec.common.sdk.broker.BrokerOrder;
2121
import com.iexec.commons.poco.chain.ChainAccount;
22+
import com.iexec.commons.poco.contract.generated.IexecHubContract;
2223
import com.iexec.commons.poco.order.*;
2324
import com.iexec.commons.poco.utils.BytesUtils;
2425
import org.junit.jupiter.api.BeforeEach;
2526
import org.junit.jupiter.api.Test;
2627
import org.junit.jupiter.api.extension.ExtendWith;
28+
import org.mockito.Mock;
29+
import org.mockito.MockitoAnnotations;
2730
import org.springframework.boot.test.system.CapturedOutput;
2831
import org.springframework.boot.test.system.OutputCaptureExtension;
2932
import org.web3j.crypto.Credentials;
3033
import org.web3j.crypto.ECKeyPair;
3134
import org.web3j.crypto.Keys;
35+
import org.web3j.protocol.core.RemoteFunctionCall;
36+
import org.web3j.protocol.core.methods.response.TransactionReceipt;
3237

38+
import java.io.IOException;
3339
import java.math.BigInteger;
3440
import java.text.MessageFormat;
3541
import java.util.Optional;
3642

3743
import static org.assertj.core.api.Assertions.assertThat;
3844
import static org.assertj.core.api.Assertions.assertThatThrownBy;
45+
import static org.mockito.ArgumentMatchers.any;
3946
import static org.mockito.ArgumentMatchers.anyString;
4047
import static org.mockito.Mockito.mock;
4148
import static org.mockito.Mockito.when;
4249

4350
@ExtendWith(OutputCaptureExtension.class)
4451
class BrokerServiceTests {
4552

53+
@Mock
4654
private IexecHubService iexecHubService;
4755
private BrokerService brokerService;
4856

57+
@Mock
58+
RemoteFunctionCall<TransactionReceipt> remoteCall;
59+
4960
private static final ChainAccount deposit = ChainAccount.builder().deposit(100L).build();
5061
private static final ChainAccount emptyDeposit = ChainAccount.builder().deposit(0L).build();
5162

5263
@BeforeEach
5364
void init() {
54-
iexecHubService = mock(IexecHubService.class);
65+
MockitoAnnotations.openMocks(this);
5566
brokerService = new BrokerService(iexecHubService);
5667
}
5768

@@ -100,12 +111,10 @@ WorkerpoolOrder generateWorkerpoolOrder() {
100111
.build();
101112
}
102113

103-
BrokerOrder generateBrokerOrder(boolean withDataset) {
104-
AppOrder appOrder = generateAppOrder();
105-
WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder();
106-
DatasetOrder datasetOrder = generateDatasetOrder(withDataset);
114+
RequestOrder generateRequestOrder(
115+
AppOrder appOrder, DatasetOrder datasetOrder, WorkerpoolOrder workerpoolOrder) {
107116
String requestAddress = generateEthereumAddress();
108-
RequestOrder requestOrder = RequestOrder.builder()
117+
return RequestOrder.builder()
109118
.app(appOrder.getApp())
110119
.appmaxprice(BigInteger.ONE)
111120
.dataset(datasetOrder.getDataset())
@@ -123,6 +132,14 @@ BrokerOrder generateBrokerOrder(boolean withDataset) {
123132
.salt(BytesUtils.toByte32HexString(1))
124133
.sign("sign")
125134
.build();
135+
}
136+
137+
BrokerOrder generateBrokerOrder(boolean withDataset) {
138+
AppOrder appOrder = generateAppOrder();
139+
WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder();
140+
DatasetOrder datasetOrder = generateDatasetOrder(withDataset);
141+
RequestOrder requestOrder = generateRequestOrder(
142+
appOrder, datasetOrder, workerpoolOrder);
126143
return BrokerOrder.builder()
127144
.appOrder(appOrder)
128145
.datasetOrder(datasetOrder)
@@ -397,36 +414,39 @@ void shouldNotMatchOrderAndReturnEmptyStringWithoutDataset(CapturedOutput output
397414

398415
//region fireMatchOrders
399416
@Test
400-
void shouldFailToMatchOrdersWithDataset() {
417+
void shouldFailToMatchOrdersWithDataset() throws Exception {
401418
AppOrder appOrder = generateAppOrder();
402419
DatasetOrder datasetOrder = generateDatasetOrder(true);
403420
WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder();
404-
RequestOrder requestOrder = RequestOrder.builder()
405-
.requester(generateEthereumAddress())
406-
.beneficiary(generateEthereumAddress())
407-
.app(appOrder.getApp())
408-
.dataset(datasetOrder.getDataset())
409-
.workerpool(workerpoolOrder.getWorkerpool())
410-
.build();
421+
RequestOrder requestOrder = generateRequestOrder(
422+
appOrder, datasetOrder, workerpoolOrder);
423+
IexecHubContract iexecHubContract = mock(IexecHubContract.class);
424+
when(iexecHubService.getHubContract()).thenReturn(iexecHubContract);
425+
when(iexecHubContract.matchOrders(any(), any(), any(), any())).thenReturn(remoteCall);
426+
when(remoteCall.send()).thenThrow(IOException.class);
427+
assertThat(brokerService.fireMatchOrders(appOrder, datasetOrder,workerpoolOrder, requestOrder))
428+
.isEmpty();
411429
assertThat(brokerService.fireMatchOrders(appOrder, datasetOrder, workerpoolOrder, requestOrder))
412430
.isEmpty();
413431
}
414432

415433
@Test
416-
void shouldFailToMatchOrdersWithoutDataset() {
434+
void shouldFailToMatchOrdersWithoutDataset() throws Exception {
417435
AppOrder appOrder = generateAppOrder();
418436
DatasetOrder datasetOrder = generateDatasetOrder(false);
419437
WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder();
420-
RequestOrder requestOrder = RequestOrder.builder()
421-
.requester(generateEthereumAddress())
422-
.beneficiary(generateEthereumAddress())
423-
.app(appOrder.getApp())
424-
.workerpool(workerpoolOrder.getWorkerpool())
425-
.workerpoolmaxprice(BigInteger.ONE)
426-
.build();
438+
RequestOrder requestOrder = generateRequestOrder(
439+
appOrder, datasetOrder, workerpoolOrder);
440+
IexecHubContract iexecHubContract = mock(IexecHubContract.class);
441+
when(iexecHubService.getHubContract()).thenReturn(iexecHubContract);
442+
when(iexecHubContract.matchOrders(any(), any(), any(), any())).thenReturn(remoteCall);
443+
when(remoteCall.send()).thenThrow(IOException.class);
444+
assertThat(brokerService.fireMatchOrders(appOrder, datasetOrder,workerpoolOrder, requestOrder))
445+
.isEmpty();
427446
assertThat(brokerService.fireMatchOrders(appOrder, datasetOrder, workerpoolOrder, requestOrder))
428447
.isEmpty();
429448
}
449+
430450
//endregion
431451

432452
//region hasRequesterAcceptedPrices

0 commit comments

Comments
 (0)