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

DEV-2553 add filesize to output events #45

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

jaameemoo
Copy link

No description provided.

Since this change is supposed to be transparant and fully backwards-
compatible, the new `size' field was not added to the list of required
S3 fields.
Four of the 7 supported S3 fields (bucket, object_key*, domain*, tenant,
user*, md5*, event_name) were missing from the test.  The missing fields
were added, along with the newly added `size' field.
@jaameemoo jaameemoo requested a review from spacid July 1, 2024 13:36
@jaameemoo jaameemoo self-assigned this Jul 1, 2024
By adding IDs to the parametrized mock events, the bulky objects no
longer appear in the pytest output.
Comment on lines +52 to +56
ids=[
"s3 essence event",
"s3 collateral event",
"s3 removed event"
],
Copy link
Collaborator

Choose a reason for hiding this comment

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

Wordt dit gebruikt om de geparametrizeerde testen een duidelijkere "naam" te geven (in het testing report)?

Copy link
Author

Choose a reason for hiding this comment

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

Ja, het idee was vooral om de output wat minder rommelig te maken, zie voor en na:

image
image

Comment on lines +92 to +93
elif name == "size":
return record["s3"]["object"]["size"]
Copy link
Collaborator

Choose a reason for hiding this comment

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

Dit verwacht dat het event wel degelijk deze key bevat maar de key zit niet in REQUIRED_S3_FIELDS lijst.

Dit is beetje een obscuur en onduidelijk systeem. Dit is de check die gebeurt:

assert set(REQUIRED_S3_FIELDS).issubset(set(fields_present_in_event))

Als het veld ook in REQUIRED_S3_FIELDS zit, assert die of de waarde van die key niet "leeg" is.

Samengevat:

  • Als de key niet in het event zit, wordt er een KeyException gegooid wat leidt tot een InvalidEventException.
  • Daarna wordt getest of de waarde van de key niet "leeg" is. Als die key in de lijst REQUIRED_S3_FIELDS zit maar een lege waarde heeft, leidt dit ook tot een InvalidEventException.

De size, dat is een int. De waarde 0 is een "lege" waarde in Python. Momenteel moet die key aanwezig zijn, maar de waarde mag 0 zijn. Dit lijkt me contradictorisch.

Alhoewel het niet voor alle velden zo is, maar bij een toevoeging van een veld is het een idee om ook een negatieve test te maken.

Copy link
Author

Choose a reason for hiding this comment

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

Ja, ik had die last-minute uit de lijst van required fields gehaald, maar ik ben mee nu...

Je wil een test om te controleren dat een KeyException gegooid wordt indien size ontbreekt?

In de code moet er niet per se een assert komen die checkt dat size > 0?

Copy link
Collaborator

@spacid spacid Jul 2, 2024

Choose a reason for hiding this comment

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

Je wil een test om te controleren dat een KeyException gegooid wordt indien size ontbreekt?

Ja, dat lijkt me een goeie. Mogelijk kunnen die testen wat opgekuist worden via pytest.mark.parametrize.

In de code moet er niet per se een assert komen die checkt dat size > 0?

Als we dat willen, moet die "gewoon" toegevoegd worden aan REQUIRED_S3_FIELDS. Either way, sowieso niet slecht om een test te hebben dat ook die logica checkt.

@spacid
Copy link
Collaborator

spacid commented Jul 2, 2024

Flake8 geeft ook wat linting errors. Deze errors waren reeds aanwezig voor je changes, maar als de bestanden dan toch aangepast worden, is he tgeen slecht idee om deze aan te pakken. Een auto-formatter tool als Black zou deze moeten fixen. De line lengte mag op 120.

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.

2 participants