The application load testing harness is used to see how your application, server and database handle multiple concurrent users.
This is done by using the LoadTestModel and LoadTestPanel classes as shown below.
public class StoreLoadTest {
private static final class StoreApplicationModelFactory
implements Function<User, StoreApplicationModel> {
@Override
public StoreApplicationModel apply(User user) {
EntityConnectionProvider connectionProvider =
RemoteEntityConnectionProvider.builder()
.user(user)
.domainType(Store.DOMAIN)
.build();
return new StoreApplicationModel(connectionProvider);
}
}
private static class StoreScenarioPerformer
implements Performer<StoreApplicationModel> {
private static final Random RANDOM = new Random();
@Override
public void perform(StoreApplicationModel application) {
SwingEntityModel customerModel = application.entityModels().get(Customer.TYPE);
customerModel.tableModel().items().refresh();
selectRandomRow(customerModel.tableModel());
}
private static void selectRandomRow(EntityTableModel<?> tableModel) {
if (tableModel.items().visible().count() > 0) {
tableModel.selection().index().set(RANDOM.nextInt(tableModel.items().visible().count()));
}
}
}
public static void main(String[] args) {
LoadTest<StoreApplicationModel> loadTest =
LoadTest.builder(new StoreApplicationModelFactory(),
application -> application.connectionProvider().close())
.user(User.parse("scott:tiger"))
.scenarios(List.of(scenario(new StoreScenarioPerformer())))
.name("Store LoadTest - " + EntityConnectionProvider.CLIENT_CONNECTION_TYPE.get())
.build();
loadTestPanel(loadTestModel(loadTest)).run();
}
}