blog: Add GSoC'25 Testing Framework for Unikraft Builds Part I#498
Open
shank250 wants to merge 1 commit intounikraft:mainfrom
Open
blog: Add GSoC'25 Testing Framework for Unikraft Builds Part I#498shank250 wants to merge 1 commit intounikraft:mainfrom
shank250 wants to merge 1 commit intounikraft:mainfrom
Conversation
razvand
requested changes
Sep 28, 2025
| --- | ||
| 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. |
Contributor
There was a problem hiding this comment.
Suggested change
| 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. |
Contributor
There was a problem hiding this comment.
Suggested change
| 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: |
Contributor
There was a problem hiding this comment.
Suggested change
| 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. |
Contributor
There was a problem hiding this comment.
Suggested change
| - 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. |
Contributor
There was a problem hiding this comment.
Suggested change
| - 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) |
Contributor
There was a problem hiding this comment.
Suggested change
| - 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 |
Contributor
There was a problem hiding this comment.
Suggested change
| - Corresponding `curl` command for functional verification | |
| - Corresponding `curl` command for functional verification |
No trailing whitespaces.
Comment on lines
+69
to
+71
| 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. |
Contributor
There was a problem hiding this comment.
Suggested change
| 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. |
Contributor
There was a problem hiding this comment.
Suggested change
| 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. |
Contributor
There was a problem hiding this comment.
Suggested change
| 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 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.
This is the first blog post covering the progress made on the GSoC project ‘Testing Framework for Unikraft Builds’ during weeks 1–3.