Skip to content

Conversation

@shank250
Copy link

This is the first blog post covering the progress made on the GSoC project ‘Testing Framework for Unikraft Builds’ during weeks 1–3.

@razvand razvand self-requested a review September 28, 2025 14:34
---
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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The aim of this project is to develop a robust testing framework that can handle a wide range of configuration optionscovering different VMMs, hypervisors, architectures, and boot protocolsto 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:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

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.

2 participants