use of com.alessiodp.parties.common.parties.PartyManager in project Parties by AlessioDP.
the class SQLDispatcherTest method testMultipleOperations.
@Test
public void testMultipleOperations() {
PartiesSQLDispatcher dispatcher = getSQLDispatcherH2();
PartiesDao dao = dispatcher.getConnectionFactory().getJdbi().onDemand(H2PartiesDao.class);
ArrayList<CompletableFuture<?>> lst = new ArrayList<>();
final int concurrentOperations = 20;
PartyImpl mockParty = mock(PartyImpl.class);
doReturn(CompletableFuture.completedFuture(null)).when(mockParty).updateParty();
PartyPlayerImpl mockPlayer = mock(PartyPlayerImpl.class);
doReturn(CompletableFuture.completedFuture(null)).when(mockPlayer).updatePlayer();
PartyManager mockPartyManager = mock(PartyManager.class);
when(mockPlugin.getPartyManager()).thenReturn(mockPartyManager);
when(mockPartyManager.initializeParty(any())).thenAnswer((mock) -> initializeParty(mockPlugin, mock.getArgument(0)));
PlayerManager mockPlayerManager = mock(PlayerManager.class);
when(mockPlugin.getPlayerManager()).thenReturn(mockPlayerManager);
when(mockPlayerManager.initializePlayer(any())).thenAnswer((mock) -> initializePlayer(mockPlugin, mock.getArgument(0)));
for (int c = 0; c < concurrentOperations; c++) {
int finalC = c;
lst.add(CompletableFuture.runAsync(() -> {
PartyImpl party = initializeParty(mockPlugin, UUID.randomUUID());
PartyPlayerImpl player = initializePlayer(mockPlugin, UUID.randomUUID());
party.setAccessible(true);
party.setup("test-" + finalC, player.getPlayerUUID().toString());
party.setDescription("description");
party.setKills(10);
party.setMembers(Collections.singleton(player.getPlayerUUID()));
party.setAccessible(false);
player.setAccessible(true);
player.setPartyId(party.getId());
player.setAccessible(false);
dispatcher.updatePlayer(player);
dispatcher.updateParty(party);
try (MockedStatic<ADPPlugin> staticPlugin = mockStatic(ADPPlugin.class)) {
// Make a try with resource mock static for the completable future
when(ADPPlugin.getInstance()).thenReturn(mockPlugin);
Party sameParty = dispatcher.getParty(party.getId());
assertEquals(sameParty, party);
}
}));
}
lst.forEach(CompletableFuture::join);
assertEquals(concurrentOperations, dao.countAll());
}
Aggregations