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

Make test_framework available for users when creating scenarios #621

Merged
merged 13 commits into from
Sep 30, 2024

Conversation

pinheadmz
Copy link
Contributor

This changes two important things about how scenarios are written:

  1. Scenario files must be in a directory next to test_framework
  2. Scenario files must have a main() function, instead of (or in addition to) the __name__ == "__main__" logic:

example:

def main():
    ConnectDag().main()

Projects

When a user creates a project, they will get a scenarios/ directory which includes our default scenarios like miner_std.py as well as a complete copy of test_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 entire test_framework directory into a .pyz archive which is compressed, base64 encoded, and added to a volume via an initContainer that is deployed along with a vanilla, unmodified image of python:3.12-slim.

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 in copy_scenario_defaults() to filter by regex and then exclude testscenario_*.py.

TODO

  • add a test that calls warnet init on an empty directory, runs a network and scenario from there to fully test the user flow (reccomend reviewers do this!)

@bdp-DrahtBot
Copy link
Collaborator

bdp-DrahtBot commented Sep 26, 2024

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #616 (Kubeconfig Step Thru by mplsgrant)
  • #614 (swap out kubectl by mplsgrant)

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.

@m3dwards
Copy link
Collaborator

LGTM. I changed the test_framework and I checked that this change was reflected the next time I ran a scenario. Will be very useful!

@m3dwards m3dwards merged commit 4ca3464 into bitcoin-dev-project:main Sep 30, 2024
10 checks passed
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.

3 participants