-
Notifications
You must be signed in to change notification settings - Fork 52
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
Make test_framework available for users when creating scenarios #619
Conversation
scenarios will need a callable entrypoint for the pyz archive
also filter out unused files from the archive sent to the commander
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsReviewers, this pull request conflicts with the following ones:
If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first. |
1e73244
to
203b444
Compare
203b444
to
9337ed9
Compare
src/warnet/control.py
Outdated
if any( | ||
needle in str(path) for needle in [ | ||
".pyc", | ||
".csv", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we need to categorically reject csv files? It's a common format, and I can imagine a user thinking they could use it.
fuck, right... |
This changes two important things about how scenarios are written:
test_framework
main()
function, instead of (or in addition to) the__name__ == "__main__"
logic:example:
Projects
When a user creates a project, they will get a
scenarios/
directory which includes our default scenarios likeminer_std.py
as well as a complete copy oftest_framework
. They are welcome to edit the framework, the code in that directory is actually deployed.Running Scenarios
When executing
warnet run <path>
this PR bundles up the scenario file,commander.py
and the entiretest_framework
directory into a.pyz
archive which is compressed, base64 encoded, and added as raw data in a config map that is deployed along with a vanilla, unmodified image ofpython:3.12-slim
. Deploying our (current) biggest scenariosignet_miner.py
results in a config map of 118,459 bytes, which is still significantly below the 1 MB recommended maximum for configMap.Side effects
The grossest thing about this PR in my opinion is that all the scenarios we use only for tests have to be moved as well, so they are in a directory with
test_framework
. To deal with that, I adjusted the "exclude" logic incopy_scenario_defaults()
to filter by regex and then excludeTEST_*.py
.TODO
warnet init
on an empty directory, runs a network and scenario from there to fully test the user flow (reccomend reviewers do this!)