-
Notifications
You must be signed in to change notification settings - Fork 105
blog: Add GSoC'25 Testing Framework for Unikraft Builds Part I #498
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
base: main
Are you sure you want to change the base?
Conversation
| --- | ||
| title: "GSoC'25: Testing Framework for Unikraft Builds | Part I" | ||
| description: | | ||
| This GSoC project is aimed to develop a testing framework that is able to multiplex the variety of configuration options, VMMs, hypervisors, architectures, boot protocols, to validate the successful building and running of unikernel images. |
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.
| This GSoC project is aimed to develop a testing framework that is able to multiplex the variety of configuration options, VMMs, hypervisors, architectures, boot protocols, to validate the successful building and running of unikernel images. | |
| This GSoC project is aimed at developing a testing framework that is able to multiplex the variety of configuration options, VMMs, hypervisors, architectures, boot protocols, to validate the successful building and running of unikernel images. |
Remove trailing white spaces.
|
|
||
| ## Project Overview | ||
|
|
||
| The aim of this project is to develop a robust testing framework that can handle a wide range of configuration options—covering different VMMs, hypervisors, architectures, and boot protocols—to validate the successful build and execution of unikernel images. The framework, written in Python, is designed to configure, build, run, and test various Unikraft builds, and there’s scope for further improvements and refactoring as we go. |
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.
| The aim of this project is to develop a robust testing framework that can handle a wide range of configuration options—covering different VMMs, hypervisors, architectures, and boot protocols—to validate the successful build and execution of unikernel images. The framework, written in Python, is designed to configure, build, run, and test various Unikraft builds, and there’s scope for further improvements and refactoring as we go. | |
| The aim of this project is to develop a robust testing framework that can handle a wide range of configuration options - covering different VMMs, hypervisors, architectures, and boot protocols - to validate the successful build and execution of unikernel images. | |
| The framework, written in Python, is designed to configure, build, run, and test various Unikraft builds. | |
| There’s room for further improvements and refactoring as we go. |
Use one sentence per line.
|
|
||
| The aim of this project is to develop a robust testing framework that can handle a wide range of configuration options—covering different VMMs, hypervisors, architectures, and boot protocols—to validate the successful build and execution of unikernel images. The framework, written in Python, is designed to configure, build, run, and test various Unikraft builds, and there’s scope for further improvements and refactoring as we go. | ||
|
|
||
| The main focus is to enhance the existing testing infrastructure and make it smooth and intuitive for both Unikraft developers and users. To achieve this, I am working towards the following key goals: |
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.
| The main focus is to enhance the existing testing infrastructure and make it smooth and intuitive for both Unikraft developers and users. To achieve this, I am working towards the following key goals: | |
| The main focus is to enhance the existing testing infrastructure and make it smooth and intuitive for both Unikraft developers and users. | |
| To achieve this, I am working towards the following key goals: |
|
|
||
| - Migrated the in-development framework from [razvand/generator/new-design](https://github.com/unikraft-upb/catalog/tree/razvand/generator/new-design/utils/new-design) into its own [Git repository](https://github.com/shank250/testing-framework-uk-build/). | ||
| - Split monolithic scripts into purpose-driven modules under `src/`, `scripts/`, `docs/` and `utils/`. | ||
| - Introduced a fixture that handles the clean-up of the `.tests` directory before each run to ensure a consistent and isolated testing environment. |
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.
| - Introduced a fixture that handles the clean-up of the `.tests` directory before each run to ensure a consistent and isolated testing environment. | |
| - Introduced a fixture that handles the clean-up of the `.tests/` directory before each run to ensure a consistent and isolated testing environment. |
End directory names with a slash (/) to make it clear it's a directory.
|
|
||
| ### Isolated Test Sandboxing (`.app`) | ||
|
|
||
| - Implemented a “copy-to-.app” workflow: before testing, all application files are duplicated into a pristine `.app` folder. |
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.
| - Implemented a “copy-to-.app” workflow: before testing, all application files are duplicated into a pristine `.app` folder. | |
| - Implemented a "copy-to-.app" workflow: before testing, all application files are duplicated into a pristine `.app/` directory. |
Use normal ASCII quotes.
Prefer using "directory" instead of "folder".
| ### README.md parser for dynamic configuration extraction | ||
| Implemented a parser that processes each application’s `README.md` to extract: | ||
| - Memory usage requirements | ||
| - Port numbers (exposed/public) |
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.
| - Port numbers (exposed/public) | |
| - Port numbers (exposed/public) |
No trailing whitespaces.
| Implemented a parser that processes each application’s `README.md` to extract: | ||
| - Memory usage requirements | ||
| - Port numbers (exposed/public) | ||
| - Corresponding `curl` command for functional verification |
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.
| - Corresponding `curl` command for functional verification | |
| - Corresponding `curl` command for functional verification |
No trailing whitespaces.
| For the upcoming weeks, my focus is to complete the full testing pipeline of the framework and ensure that it works as expected across all applications in the `catalog/library`. | ||
|
|
||
| Once that’s done, I will move forward with testing, modifying, and refactoring the framework further to safely integrate support for other application types like `native`, `examples`, and more—ensuring seamless compatibility and stability across the board. |
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.
| For the upcoming weeks, my focus is to complete the full testing pipeline of the framework and ensure that it works as expected across all applications in the `catalog/library`. | |
| Once that’s done, I will move forward with testing, modifying, and refactoring the framework further to safely integrate support for other application types like `native`, `examples`, and more—ensuring seamless compatibility and stability across the board. | |
| For the upcoming weeks, I plan to: | |
| 1. Complete the full testing pipeline of the framework. | |
| 1. Ensure the pipeline works as expected across all applications in the [`catalog/library/` directory](https://github.com/unikraft/catalog). | |
| 1. Test, modify and refactor the framework further to safely integrate support for other application types like those in the `native/` and `examples/` directories in the [`catalog` repository](https://github.com/unikraft/catalog/tree/main/library) and more. | |
| 1. Ensure seamless compatibility and stability across the board. |
| Once that’s done, I will move forward with testing, modifying, and refactoring the framework further to safely integrate support for other application types like `native`, `examples`, and more—ensuring seamless compatibility and stability across the board. | ||
|
|
||
| ## Acknowledgement | ||
| I would like to sincerely thank my mentors, [Razvan Deaconescu](https://github.com/razvand) and [Razvan Virtan](https://github.com/razvanvirtan), for their constant support and guidance throughout this project. |
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.
| I would like to sincerely thank my mentors, [Razvan Deaconescu](https://github.com/razvand) and [Razvan Virtan](https://github.com/razvanvirtan), for their constant support and guidance throughout this project. | |
| I would like to sincerely thank my mentors, [Razvan Deaconescu](https://github.com/razvand) and [Razvan Virtan](https://github.com/razvanvirtan), for their constant support and guidance throughout this project. |
Use blank line after heading.
|
|
||
| ## About me | ||
|
|
||
| I'm [Shashank Srivastava](https://github.com/shank250/) undergraduate student at GL Bajaj Institute of Technology and Management, B. Tech in Computer Science and Engineering with Specialisation in Artificial Intelligence and Machine Learning, with a strong passion for AI and Cloud. |
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.
| I'm [Shashank Srivastava](https://github.com/shank250/) undergraduate student at GL Bajaj Institute of Technology and Management, B. Tech in Computer Science and Engineering with Specialisation in Artificial Intelligence and Machine Learning, with a strong passion for AI and Cloud. | |
| I'm [Shashank Srivastava](https://github.com/shank250/), an undergraduate student at GL Bajaj Institute of Technology and Management, B. Tech in Computer Science and Engineering with Specialisation in Artificial Intelligence and Machine Learning, with a strong passion for AI and Cloud. |
This is the first blog post covering the progress made on the GSoC project ‘Testing Framework for Unikraft Builds’ during weeks 1–3.