test: rework nginx partial download fixture, move nginx config snippets to dedicated files#188
Merged
ejoerns merged 3 commits intoJul 10, 2025
Conversation
This was referenced Mar 12, 2025
The nginx config is getting rather complex. Future commits will even extend the existing nginx configs with lua scripting. We should not maintain lua scripting inside nginx configs inside python f-strings. So let's move the config to a dedicated file and use Python's template mechanism instead of f-strings and .format(). Signed-off-by: Bastian Krause <bst@pengutronix.de>
Until now, the partial download tests did not work reliably and relied on implicit nginx behavior: `limit_rate_after 200k;` combined with `limit_rate 70k;` lead to nginx sending "206 Partial Content" responses. As far as I remember, this was found by trial and error. Let's use a more stable solution: lua scripting allows us to control reliable and fine grained what hawkBit artifacts nginx serves. So add a config snippet that makes nginx only serve the first half of the RAUC bundle, then close the connection prematrely and serve the second half via range request only. This is basically what the previous solution tried to achieve in a more reliable fashion. This means we need to add the lua module and its dependencies to the test dependencies. Signed-off-by: Bastian Krause <bst@pengutronix.de>
The nginx_proxy fixture does not do rate limiting on its own. This was mixed up with the rate_limited_port fixture. So drop that part of the doc string. Signed-off-by: Bastian Krause <bst@pengutronix.de>
Bastian-Krause
force-pushed
the
bst/rework-partial-downloads
branch
from
July 8, 2025 12:23
33e87fd to
7488f19
Compare
Bastian-Krause
marked this pull request as ready for review
July 8, 2025 12:23
ejoerns
approved these changes
Jul 10, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Until now, the partial download tests did not work reliably and relied on implicit nginx behavior:
limit_rate_after 200k;combined withlimit_rate 70k;lead to nginx sending "206 Partial Content" responses. As far as I remember, this was found by trial and error.Let's use a more stable solution: lua scripting allows us to control reliable and fine grained what hawkBit artifacts nginx serves. So add a config snippet that makes nginx only serve the first half of the RAUC bundle, then close the connection prematurely and serve the second half via range request only. This is basically what the previous solution tried to achieve in a more reliable fashion.
This means we need to add the lua module and its dependencies to the test dependencies.
The nginx config is getting rather complex with this. We should not maintain lua scripting inside nginx configs inside python f-strings. So let's move the config to a dedicated file and use Python's template mechanism instead of f-strings and
.format().Fixes #180