Opensource testing framework to validate kernels and VM guest OS images
Introduction
Building on the insights from our previous blog regarding how MSFT ensures the quality of Linux images, this article aims to elaborate on the open-source tools that are instrumental in securing exceptional performance, reliability, and overall excellence of virtual machines on Azure.
While numerous testing tools are available for validating Linux kernels, guest OS images and user space packages across various cloud platforms, finding a comprehensive testing framework that addresses the entire platform stack remains a significant challenge. A robust framework is essential, one that seamlessly integrates with Azure's environment while providing the coverage for major testing tools, such as LTP and kselftest and covers critical areas like networking, storage and specialized workloads, including Confidential VMs, HPC, and GPU scenarios. This unified testing framework is invaluable for developers, Linux distribution providers, and customers who build custom kernels and images.
This is where LISA (Linux Integration Services Automation) comes into play. LISA is an open-source tool specifically designed to automate and enhance the testing and validation processes for Linux kernels and guest OS images on Azure. In this blog, we will provide the history of LISA, its key advantages, the wide range of test cases it supports, and why it is an indispensable resource for the open-source community. Moreover, LISA is available under the MIT License, making it free to use, modify, and contribute.
History of LISA
LISA was initially developed as an internal tool by Microsoft to streamline the testing process of Linux images and kernel validations on Azure. Recognizing the value it could bring to the broader community, Microsoft open-sourced LISA, inviting developers and organizations worldwide to leverage and enhance its capabilities. This move aligned with Microsoft's growing commitment to open-source collaboration, fostering innovation and shared growth within the industry.
LISA serves as a robust solution to validate and certify that Linux images meet the stringent requirements of modern cloud environments. By integrating LISA into the development and deployment pipeline, teams can:
- Enhance Quality Assurance: Catch and resolve issues early in the development cycle.
- Reduce Time to Market: Accelerate deployment by automating repetitive testing tasks.
- Build Trust with Users: Deliver stable and secure applications, bolstering user confidence.
- Collaborate and Innovate: Leverage community-driven improvements and share insights.
Benefits of Using LISA
- Scalability: Designed to run large-scale test cases, from 1 test case to 10k test cases in one command.
- Multiple platform orchestration: LISA is created with modular design, to support run the same test cases on various platforms including Microsoft Azure, Windows HyperV, BareMetal, and other cloud-based platforms.
- Customization: Users can customize test cases, workflow, and other components to fit specific needs, allowing for targeted testing strategies. It’s like building kernels on-the-fly, sending results to custom database, etc.
- Community Collaboration: Being open source under the MIT License, LISA encourages community contributions, fostering continuous improvement and shared expertise.
- Extensive Test Coverage: It offers a rich suite of test cases covering various aspects of compatibility of Azure and Linux VMs, from kernel, storage, networking to middleware.
How it works
Infrastructure
LISA is designed to be componentized and maximize compatibility with different distros.
- Test cases can focus only on test logic. Once test requirements (machines, CPU, memory, etc) are defined, just write the test logic without worrying about environment setup or stopping services on different distributions.
- Orchestration. LISA uses platform APIs to create, modify and delete VMs. For example, LISA uses Azure API to create VMs, run test cases, and delete VMs. During the test case running, LISA uses Azure API to collect serial log and can hot add/remove data disks. If other platforms implement the same serial log and data disk APIs, the test cases can run on the other platforms seamlessly.
- Ensure distro compatibility by abstracting over 100 commands in test cases, allowing focus on validation logic rather than distro compatibility.
- Pre-processing workflow assists in building the kernel on-the-fly, installing the kernel from package repositories, or modifying all test environments.
- Test matrix helps one run to test all. For example, one run can test different vm sizes on Azure, or different images, even different VM sizes and different images together. Anything is parameterizable, can be tested in a matrix.
- Customizable notifiers enable the saving of test results and files to any type of storage and database.
Agentless and low dependency
LISA operates test systems via SSH without requiring additional dependencies, ensuring compatibility with any system that supports SSH. Although some test cases require installing extra dependencies, LISA itself does not. This allows LISA to perform tests on systems with limited resources or even different operating systems. For instance, LISA can run on Linux, FreeBSD, Windows, and ESXi.
Getting Started with LISA
Ready to dive in? Visit the LISA project at aka.ms/lisa to access the documentation.
- Install: Follow the installation guide provided in the repository to set up LISA in your testing environment.
- Run: Follow the instructions to run LISA on local machine, Azure or existing systems.
- Extend: Follow the documents to extend LISA by test cases, data sources, tools, platform, workflow, etc.
- Join the Community: Engage with other users and contributors through forums and discussions to share experiences and best practices.
- Contribute: Modify existing test cases or create new ones to suit your needs. Share your contributions with the community to enhance LISA's capabilities.
Conclusion
LISA offers open-source collaborative testing solutions designed to operate across diverse environments and scenarios, effectively narrowing the gap between enterprise demands and community-led innovation. By leveraging LISA, customers can ensure their Linux deployments are reliable and optimized for performance. Its comprehensive testing capabilities, combined with the flexibility and support of an active community, make LISA an indispensable tool for anyone involved in Linux quality assurance and testing.
Your feedback is invaluable, and we would greatly appreciate your insights.
Updated Jan 28, 2025
Version 1.0KashanK
Microsoft
Joined September 27, 2022
Linux and Open Source Blog
Follow this blog board to get notified when there's new activity