use of com.hedera.mirror.monitor.publish.PublishRequest in project hedera-mirror-node by hashgraph.
the class CompositeTransactionGeneratorTest method distribution.
@Test
void distribution() {
properties.setWarmupPeriod(Duration.ZERO);
CompositeTransactionGenerator generator = supplier.get();
assertThat(generator.distribution.get().getPmf()).hasSize(properties.getScenarios().size()).extracting(Pair::getValue).containsExactly(0.75, 0.25);
Multiset<TransactionType> types = HashMultiset.create();
double seconds = 5;
for (int i = 0; i < totalTps * seconds; ) {
List<PublishRequest> requests = generator.next();
requests.stream().map(r -> r.getScenario().getProperties().getType()).forEach(types::add);
i += requests.size();
}
for (PublishScenarioProperties publishScenarioProperties : properties.getScenarios().values()) {
assertThat(types.count(publishScenarioProperties.getType())).isNotNegative().isNotZero().isCloseTo((int) (publishScenarioProperties.getTps() * seconds), withinPercentage(10));
}
}
use of com.hedera.mirror.monitor.publish.PublishRequest in project hedera-mirror-node by hashgraph.
the class ConfigurableTransactionGenerator method next.
@Override
public List<PublishRequest> next(int count) {
if (count <= 0) {
count = 1;
}
long left = remaining.getAndAdd(-count);
long actual = Math.min(left, count);
if (actual <= 0) {
throw new ScenarioException(scenario, "Reached publish limit");
}
if (stopTime - System.nanoTime() <= 0) {
throw new ScenarioException(scenario, "Reached publish duration");
}
List<PublishRequest> publishRequests = new ArrayList<>();
for (long i = 0; i < actual; i++) {
var transaction = transactionSupplier.get().get().setMaxAttempts((int) properties.getRetry().getMaxAttempts()).setTransactionMemo(scenario.getMemo());
PublishRequest publishRequest = builder.receipt(shouldGenerate(properties.getReceiptPercent())).record(shouldGenerate(properties.getRecordPercent())).timestamp(Instant.now()).transaction(transaction).build();
publishRequests.add(publishRequest);
}
return publishRequests;
}
Aggregations