Skip to content

Commit 3a470e8

Browse files
committed
Rework BrokerService#fireMatchOrders and BrokerServiceTests
1 parent 66c3cb8 commit 3a470e8

File tree

2 files changed

+67
-45
lines changed

2 files changed

+67
-45
lines changed

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

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -119,25 +119,30 @@ public String matchOrders(BrokerOrder brokerOrder) {
119119
messageDetails += ", dataset:" + datasetOrder.getDataset();
120120
}
121121
log.info("Matching valid orders on-chain [{}]", messageDetails);
122-
return fireMatchOrders(brokerOrder).orElse("");
122+
return fireMatchOrders(appOrder, datasetOrder, workerpoolOrder, requestOrder)
123+
.orElse("");
123124
}
124125

125-
Optional<String> fireMatchOrders(BrokerOrder brokerOrder) {
126+
Optional<String> fireMatchOrders(
127+
AppOrder appOrder,
128+
DatasetOrder datasetOrder,
129+
WorkerpoolOrder workerpoolOrder,
130+
RequestOrder requestOrder) {
126131
try {
127132
TransactionReceipt receipt = iexecHubService.
128133
getHubContract()
129134
.matchOrders(
130-
brokerOrder.getAppOrder().toHubContract(),
131-
brokerOrder.getDatasetOrder().toHubContract(),
132-
brokerOrder.getWorkerpoolOrder().toHubContract(),
133-
brokerOrder.getRequestOrder().toHubContract()
135+
appOrder.toHubContract(),
136+
datasetOrder.toHubContract(),
137+
workerpoolOrder.toHubContract(),
138+
requestOrder.toHubContract()
134139
).send();
135140
log.info("block {}, hash {}, status {}", receipt.getBlockNumber(), receipt.getTransactionHash(), receipt.getStatus());
136141
log.info("logs count {}", receipt.getLogs().size());
137142

138143
List<String> events = IexecHubContract.getSchedulerNoticeEvents(receipt)
139144
.stream()
140-
.filter(event -> brokerOrder.getWorkerpoolOrder().getWorkerpool().equals(event.workerpool))
145+
.filter(event -> workerpoolOrder.getWorkerpool().equals(event.workerpool))
141146
.map(event -> BytesUtils.bytesToString(event.dealid))
142147
.collect(Collectors.toList());
143148
log.info("events count {}", events.size());
@@ -149,10 +154,8 @@ Optional<String> fireMatchOrders(BrokerOrder brokerOrder) {
149154
return Optional.of(dealId);
150155
} catch (Exception e) {
151156
log.error("Failed to request match order [requester:{}, app:{}, workerpool:{}, dataset:{}]",
152-
brokerOrder.getRequestOrder().getRequester(),
153-
brokerOrder.getRequestOrder().getApp(),
154-
brokerOrder.getRequestOrder().getWorkerpool(),
155-
brokerOrder.getRequestOrder().getDataset(), e);
157+
requestOrder.getRequester(), requestOrder.getApp(),
158+
requestOrder.getWorkerpool(), requestOrder.getDataset(), e);
156159
}
157160
return Optional.empty();
158161
}

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

Lines changed: 53 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@
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.order.AppOrder;
23-
import com.iexec.commons.poco.order.DatasetOrder;
24-
import com.iexec.commons.poco.order.RequestOrder;
25-
import com.iexec.commons.poco.order.WorkerpoolOrder;
22+
import com.iexec.commons.poco.order.*;
2623
import com.iexec.commons.poco.utils.BytesUtils;
2724
import org.junit.jupiter.api.BeforeEach;
2825
import org.junit.jupiter.api.Test;
@@ -62,42 +59,75 @@ AppOrder generateAppOrder() {
6259
return AppOrder.builder()
6360
.app(generateEthereumAddress())
6461
.appprice(BigInteger.ONE)
62+
.volume(BigInteger.ONE)
63+
.tag(OrderTag.TEE_SCONE.getValue())
64+
.datasetrestrict(BytesUtils.EMPTY_ADDRESS)
65+
.workerpoolrestrict(BytesUtils.EMPTY_ADDRESS)
66+
.requesterrestrict(BytesUtils.EMPTY_ADDRESS)
67+
.salt(BytesUtils.toByte32HexString(1))
68+
.sign("sign")
6569
.build();
6670
}
6771

68-
DatasetOrder generateDatasetOrder() {
72+
DatasetOrder generateDatasetOrder(boolean withDataset) {
73+
String address = withDataset ? generateEthereumAddress() : BytesUtils.EMPTY_ADDRESS;
6974
return DatasetOrder.builder()
70-
.dataset(generateEthereumAddress())
75+
.dataset(address)
7176
.datasetprice(BigInteger.ONE)
77+
.volume(BigInteger.ONE)
78+
.tag(OrderTag.TEE_SCONE.getValue())
79+
.apprestrict(BytesUtils.EMPTY_ADDRESS)
80+
.workerpoolrestrict(BytesUtils.EMPTY_ADDRESS)
81+
.requesterrestrict(BytesUtils.EMPTY_ADDRESS)
82+
.salt(BytesUtils.toByte32HexString(1))
83+
.sign("sign")
7284
.build();
7385
}
7486

7587
WorkerpoolOrder generateWorkerpoolOrder() {
7688
return WorkerpoolOrder.builder()
7789
.workerpool(generateEthereumAddress())
7890
.workerpoolprice(BigInteger.ONE)
91+
.volume(BigInteger.ONE)
92+
.tag(OrderTag.TEE_SCONE.getValue())
93+
.trust(BigInteger.ZERO)
94+
.category(BigInteger.ZERO)
95+
.apprestrict(BytesUtils.EMPTY_ADDRESS)
96+
.datasetrestrict(BytesUtils.EMPTY_ADDRESS)
97+
.requesterrestrict(BytesUtils.EMPTY_ADDRESS)
98+
.salt(BytesUtils.toByte32HexString(1))
99+
.sign("sign")
79100
.build();
80101
}
81102

82103
BrokerOrder generateBrokerOrder(boolean withDataset) {
83104
AppOrder appOrder = generateAppOrder();
84105
WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder();
85-
RequestOrder.RequestOrderBuilder requestOrderBuilder = RequestOrder.builder()
106+
DatasetOrder datasetOrder = generateDatasetOrder(withDataset);
107+
String requestAddress = generateEthereumAddress();
108+
RequestOrder requestOrder = RequestOrder.builder()
86109
.app(appOrder.getApp())
87110
.appmaxprice(BigInteger.ONE)
111+
.dataset(datasetOrder.getDataset())
112+
.datasetmaxprice(BigInteger.ONE)
88113
.workerpool(workerpoolOrder.getWorkerpool())
89-
.workerpoolmaxprice(BigInteger.ONE);
90-
BrokerOrder.BrokerOrderBuilder brokerOrderBuilder = BrokerOrder.builder()
114+
.workerpoolmaxprice(BigInteger.ONE)
115+
.requester(requestAddress)
116+
.volume(BigInteger.ONE)
117+
.tag(OrderTag.TEE_SCONE.getValue())
118+
.category(BigInteger.ZERO)
119+
.trust(BigInteger.ONE)
120+
.beneficiary(requestAddress)
121+
.callback(BytesUtils.EMPTY_ADDRESS)
122+
.params("")
123+
.salt(BytesUtils.toByte32HexString(1))
124+
.sign("sign")
125+
.build();
126+
return BrokerOrder.builder()
91127
.appOrder(appOrder)
92-
.workerpoolOrder(workerpoolOrder);
93-
if (withDataset) {
94-
DatasetOrder datasetOrder = generateDatasetOrder();
95-
requestOrderBuilder
96-
.dataset(datasetOrder.getDataset())
97-
.datasetmaxprice(BigInteger.ONE);
98-
brokerOrderBuilder.datasetOrder(datasetOrder);
99-
}
100-
return brokerOrderBuilder.requestOrder(requestOrderBuilder.build())
128+
.datasetOrder(datasetOrder)
129+
.workerpoolOrder(workerpoolOrder)
130+
.requestOrder(requestOrder)
101131
.build();
102132
}
103133

@@ -257,7 +287,7 @@ void shouldNotMatchOrderWhenRequestOrderNeedsDatasetAndDatasetOrderIsNull() {
257287
void shouldNotMatchOrderWhenRequestOrderNeedsDatasetAndDatasetAddressDoesNotMatch() {
258288
AppOrder appOrder = generateAppOrder();
259289
WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder();
260-
DatasetOrder datasetOrder = generateDatasetOrder();
290+
DatasetOrder datasetOrder = generateDatasetOrder(true);
261291
RequestOrder requestOrder = RequestOrder.builder()
262292
.app(appOrder.getApp())
263293
.appmaxprice(BigInteger.ONE)
@@ -369,7 +399,7 @@ void shouldNotMatchOrderAndReturnEmptyStringWithoutDataset(CapturedOutput output
369399
@Test
370400
void shouldFailToMatchOrdersWithDataset() {
371401
AppOrder appOrder = generateAppOrder();
372-
DatasetOrder datasetOrder = generateDatasetOrder();
402+
DatasetOrder datasetOrder = generateDatasetOrder(true);
373403
WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder();
374404
RequestOrder requestOrder = RequestOrder.builder()
375405
.requester(generateEthereumAddress())
@@ -378,34 +408,23 @@ void shouldFailToMatchOrdersWithDataset() {
378408
.dataset(datasetOrder.getDataset())
379409
.workerpool(workerpoolOrder.getWorkerpool())
380410
.build();
381-
BrokerOrder brokerOrder = BrokerOrder.builder()
382-
.appOrder(appOrder)
383-
.datasetOrder(datasetOrder)
384-
.requestOrder(requestOrder)
385-
.workerpoolOrder(workerpoolOrder)
386-
.build();
387-
assertThat(brokerService.fireMatchOrders(brokerOrder))
411+
assertThat(brokerService.fireMatchOrders(appOrder, datasetOrder, workerpoolOrder, requestOrder))
388412
.isEmpty();
389413
}
390414

391415
@Test
392416
void shouldFailToMatchOrdersWithoutDataset() {
393417
AppOrder appOrder = generateAppOrder();
418+
DatasetOrder datasetOrder = generateDatasetOrder(false);
394419
WorkerpoolOrder workerpoolOrder = generateWorkerpoolOrder();
395420
RequestOrder requestOrder = RequestOrder.builder()
396421
.requester(generateEthereumAddress())
397422
.beneficiary(generateEthereumAddress())
398423
.app(appOrder.getApp())
399-
.appmaxprice(BigInteger.ONE)
400424
.workerpool(workerpoolOrder.getWorkerpool())
401425
.workerpoolmaxprice(BigInteger.ONE)
402426
.build();
403-
BrokerOrder brokerOrder = BrokerOrder.builder()
404-
.appOrder(appOrder)
405-
.requestOrder(requestOrder)
406-
.workerpoolOrder(workerpoolOrder)
407-
.build();
408-
assertThat(brokerService.fireMatchOrders(brokerOrder))
427+
assertThat(brokerService.fireMatchOrders(appOrder, datasetOrder, workerpoolOrder, requestOrder))
409428
.isEmpty();
410429
}
411430
//endregion

0 commit comments

Comments
 (0)