Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Job response not read and closed: close localSender, Message, PipeLineSession too (#5324) #5340

Merged
merged 3 commits into from
Sep 6, 2023

Conversation

jkosternl
Copy link
Contributor

Closing multiple objects when possible. Add unit testing, was partly covered by other unit tests already. Mostly the configure method.

@jkosternl jkosternl requested review from nielsm5 and tnleeuw September 6, 2023 10:52
finally {

localSender.open();
localSender.sendMessageOrThrow(toSendMessage, session).close();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik weet niet of het resultaat van sendMessageOrThrow een null zou kunnen zijn?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Als het senden is mislukt, gooit hij een sendMessageOrThrow. In de andere gevallen is hij gevuld.

}

@Test
void testHappyExecuteCall() throws JobExecutionException, TimeoutException, SenderException, IOException {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In unit tests hanteer ik tegenwoordig altijd "A A A" testing: expliciet aangeven van "Arrange", "Act", en "Assert".

In de test zet ik bovenaan een comment // Arrange, voor de regel(s) waar de te testen code wordt aangeroepen zet ik een comment // Act, en daarna wanneer ik de assertions ga doen dan een comment // Assert.

Dan is het sneller duidelijk waar in de test je moet kijken voor het uitvoeren van de eigenlijke code, etc.

Wanneer nodig dan herhaal ik de comments met bijvoorbeeld // Act 2, // Assert 2, etc.

Soms, bijvoorbeeld bij assertThrows, zijn "Act" en "Assert" in 1. Dan zet ik er een comment bij // Act / Assert.

Copy link
Contributor Author

@jkosternl jkosternl Sep 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dat kende ik nog niet. De structuur die ik meestal aanhoud is:

  1. een lege regel tussen de validatie en uitvoer vd method
  2. een beschrijvende test-methode naam kiezen, waaruit blijkt waarom de test bestaat
  3. bij meerdere unit tests de setup zaken die overlappen naar een @beforeeach blok verplaatsen
  4. comments toevoegen als het groter wordt en niet direct duidelijk wat er gebeurt. Uiteraard is dat goed om te toetsen door een reviewer.

Ik wil iig voorkomen dat de comments een herhaling van de code is wat er al staat. Dat voegt dan niets toe. Het zou hoogstens het waarom moeten toevoegen of context geven.

Ik zal eens kijken of ik jouw methodiek kan toepassen bij grotere unit tests een volgende keer. Oke?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beschrijvende method naam een gebruik van setup methods zijn natuurlijk altijd wenselijk!

De comments // Arrange, // Act, // Assert zijn extra, om in de bestaande test code het onderscheid aan te geven.

Makkelijk toe te voegen zonder de tests te herschrijven, en maken de tests leesbaarder omdat je sneller de test-code kan scannen voor de comments. :-)

Copy link
Contributor Author

@jkosternl jkosternl Sep 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oke thanks voor de tips! Ik zal het toepassen als de testen groter worden. 👍

@tnleeuw
Copy link
Contributor

tnleeuw commented Sep 6, 2023

image
Codecov resultaat lijkt erg laag, ik denk dat dit wordt opgelost als je origin/master opnieuw in jouw branch merged.

@jkosternl
Copy link
Contributor Author

I don't understand the Codecov results.. It associates lots of Indirect changes which are not related.
https://app.codecov.io/gh/ibissource/iaf/pull/5340
What to do @tnleeuw ?

@sonarqubecloud
Copy link

sonarqubecloud bot commented Sep 6, 2023

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

87.5% 87.5% Coverage
0.0% 0.0% Duplication

warning The version of Java (11.0.20) you have used to run this analysis is deprecated and we will stop accepting it soon. Please update to at least Java 17.
Read more here

@tnleeuw
Copy link
Contributor

tnleeuw commented Sep 6, 2023

I don't understand the Codecov results.. It associates lots of Indirect changes which are not related.
https://app.codecov.io/gh/ibissource/iaf/pull/5340
What to do @tnleeuw ?

We have that problem too. That's why I suggested merging master into your branch and seeing if that cleans up those codecov results.

//sendMessage message cannot be NULL
Message message = new Message((getMessage()==null) ? "" : getMessage());
PipeLineSession session = new PipeLineSession();
try (Message toSendMessage = new Message((getMessage() == null) ? "" : getMessage());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Misschien dat het een verbetering is als we een NullMessage zouden gebruiken in plaats van een leeg message.
Ik denk voor nu even buiten scope, maar wel een TODO waardig

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes prima idee. Neem ik mee in mijn volgende PR, over hetzelfde onderwerp ;-)
Die komt er aan.

@nielsm5 nielsm5 merged commit 6901bf9 into master Sep 6, 2023
@nielsm5 nielsm5 deleted the issue/5324-job-response-not-read-and-closed branch September 6, 2023 15:14
jkosternl added a commit that referenced this pull request Sep 7, 2023
@nielsm5 nielsm5 linked an issue Sep 7, 2023 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Job response not read and closed
3 participants