Hero Image
- Mihai Surdeanu

Awaitility – Java DSL library pentru sincronizarea operațiilor asincrone

Awaitibility este o librărie excelentă pe care o poți folosi pentru sincronizarea operațiilor asincrone. Știu că sună puțin mai ciudat, dar dacă analizați puțin mai bine, veți observa că cel puțin o dată în viața dvs. de programator,v-ați întâlnit cu acest caz.

Și ca să vă ajut să vă dați seama despre ce e vorba, haideți să ne gândim la un simplu usecase de testare. Să zicem că aplicația dvs. procesează niște date în mod asincron și la un moment dat, după ce termină finalizarea, creează o nouă intrare într-o bază de date. Pentru testare, va trebui să rulați o comandă de procesare, va trebui să așteptați o perioadă de timp și apoi să vedeți că intrarea a fost creată în baza de date.

Acum, acest lucru nu e chiar așa de dificil de implementat – puteți să verificați din 500 în 500 de millisecunde, timp de 10 iterații. Dar de ce să scriem 5 linii de cod, când am putea să scriem și mai puțin?

await().atLeast(1, SECONDS).and().atMost(5, SECONDS).until(rowInsertedInDatabase());

Dacă vă jucați puțin cu codul de mai sus, veți vedea că nu face pooling din 500 în 500 millisecunde. Pentru aceasta va trebui să folosiți ceva de genul:

await().atLeast(1, SECONDS).and().atMost(5, SECONDS).pollInterval(500, TimeUnit.MILLISECONDS).until(rowInsertedInDatabase());

Bun. O să ziceți că puteți folosi această librărie doar pentru testat. Eeehh. Lucrurile nu stau chiar așa. O puteți folosi liniștit și pentru cod care ajunge în producție. Depinde foarte mult de situație. Am uitat să menționez faptul că pentru a folosi librăria în proiectul dvs, va trebui să aduceți în POM următoarea dependență:

<dependency>
    <groupId>org.awaitility</groupId>
    <artifactId>awaitility</artifactId>
    <version>4.0.2</version>
    <scope>test</scope>
</dependency>

Spor la așteptat!

Other Related Posts:

Microbenchmarking with Java

Microbenchmarking with Java

Hello guys,

Today, we are going to continue the series of articles about Java ecosystem. More specific, today, we are going to talk about JMH (Java Microbenchmark Harness).

2nd Apr 2022 - Mihai Surdeanu