Aktywne Wpisy
Filippa +451
Jestem chyba jakoś zamrożona w czasie.
Mentalnie gdzieś nadal w 2018 roku.
Po prostu nie umiem sobie przetworzyć w głowie, że już tyle czasu minęło i jest już kwiecień 2024, to chyba wina pandemii bo czytałam że wiele osób tak ma.
Okres 2020-24 zlewa się wręcz w całość, bardzo dziwne uczucie, przytłaczające.
Też tak macie?
#depresja #pytanie #zalesie
Mentalnie gdzieś nadal w 2018 roku.
Po prostu nie umiem sobie przetworzyć w głowie, że już tyle czasu minęło i jest już kwiecień 2024, to chyba wina pandemii bo czytałam że wiele osób tak ma.
Okres 2020-24 zlewa się wręcz w całość, bardzo dziwne uczucie, przytłaczające.
Też tak macie?
#depresja #pytanie #zalesie
Nie rozumiem zawodu śmieciarza. Przecież jest tyle innej pracy czemu akurat to? To chyba nie jest dobrze płatne zajęcie chyba że czegoś nie wiem. Im się to podoba? Sam się bawiłem śmieciarką jak byłem dzieckiem bo to ciekawy pojazd ale bez przesady xD jako ciekawostkę dodam że jedyny przypadek z mojego otoczenia tego zawodu to typ co zaczął tam pracować po tym jak wyszedł z monaru i to ciekawe w kontekście metod
@test
void ticket_is_booked_only_by_one_user() {
//given
var film = addFilm();
var hall = addHall();
var screening = addScreening(hall, film);
var seat = addSeat(screening, hall.getSeats().getFirst());
var users = addUsers();
var bookTicketDto = new BookTicketDto(screening.getId(), List.of(seat.getId()));
//when
try (var executorService = Executors.newFixedThreadPool(3)) {
executorService.submit(() -> bookTicket(users.getFirst().getMail(), bookTicketDto));
executorService.submit(() -> bookTicket(users.get(1).getMail(), bookTicketDto));
executorService.submit(() -> bookTicket(users.get(2).getMail(), bookTicketDto));
executorService.shutdown();
}
//then
Assertions.assertThat(ticketRepository.getAll()).hasSize(1);
}
#java #naukaprogramowania #programowanie #programista15k
1. Zrób rezerwacje
2. Spróbuj zrobić drugą i sprawdź że tym razem API odpowiedziało błędem (np. REST rzucił jakieś 409)
Nie do końca rozumiem też po co ten executor tam.
@5da4266d3de6dbaf425a2d4fc16225d0: no bo on próbuje sprawdzić czy jak kilka osób kupuje w tym czasie to tylko jedna osoba może kupić
@5da4266d3de6dbaf425a2d4fc16225d0 Jak nie zablokuje miejsca, to zawsze się wywala na tych 3 wątkach
@Nofenak: No ale pewnie wywala się tez bez żadnych wątków, jak po prostu wywołasz to
bookTicket
jedno po drugim.@test
void ticketisbookedonlybyoneuser() {
//given
var film = addFilm();
var hall = addHall();
var screening = addScreening(hall, film);
var seat = addSeat(screening, hall.getSeats().getFirst());
var users = addUsers(100);
var bookTicketDto = new BookTicketDto(screening.getId(), List.of(seat.getId()));
var executorService = Executors.newFixedThreadPool(100);
//when
for (var user : users) {
executorService.submit(() -> bookTicket(user.getMail(), bookTicketDto));
}
executorService.shutdown();
try {
executorService.awaitTermination(1, TimeUnit.MINUTES);
} catch (InterruptedException e) {
e.printStackTrace();
}
//then
Assertions.assertThat(ticketRepository.getAll()).hasSize(1);
}
@Nofenak: jesli tak jest to wiesz już od czego zacząć poprawki. Race condition też, ale w drugiej kolejności.
@lubaxd: dużo lepiej, ale dalej assert nie sprawdza który user zrobił rezerwację.
@NieBendePrasowac: jak masz to przetestować jak to nie jest określone. Któremuś się uda, ale nie wiadomo któremu