LKFT 101: An Introduction

The Linux Kernel Functional Test (LKFT) project is comprised of a diverse and distributed set of composable tools and projects that come together to make a cohesive Linux kernel testing service.

LKFT Git Repositories

  • gitlab.com/linaro/lkft/kernel-trigger
    • kernel-trigger monitors upstream kernel repositories for changes, which then triggers builds in kernel-runs.

  • gitlab.com/linaro/lkft/kernel-runs
  • gitlab.com/linaro/lkft/ci-scripts
    • ci-scripts provides the implementation for the LKFT build and LAVA job generation pipelines.

  • github.com/linaro/lkft-tools
    • The lkft-tools repository contains various scripts, utilities, and documentation that LKFT maintainers use regularly for report generation, maintenance tasks, etc.

  • github.com/linaro/lkft-website
    • The lkft-website repo is the source code behind lkft.linaro.org. When changes are merged to the master branch of lkft-website, they are automatically deployed to lkft.linaro.org.

  • github.com/linaro/test-definitions
    • test-definitions contains wrappers for each of the test suites that LKFT runs. It is used with LAVA, but does not require LAVA to use. Adding a test to test-definitions is the first step in adding it to LKFT.

  • github.com/linaro/lava-test-plans
    • lava-test-plans contains the LAVA job templates used by LKFT and others.

  • github.com/linaro/kir
    • The Kernel Image Repacking (KIR) project is used to construct root filesystems during a LAVA job’s runtime, so that it does not need to be constructed by a separate build process. This allows us to pass any kernel to any LKFT job, with no intermediary build step.

  • github.com/linaro/qa-reports-known-issues
    • qa-reports-known-issues manages ‘known issues’ in qa-reports. Known issues are tests that we expect to fail always or intermittently, so that they do not pollute our results. Changes that are merged to this repository are automatically applied to qa-reports.

  • gitlab.com/linaro/tuxbuild
    • TuxBuild is the command-line client for Linaro’s Linux kernel build service that LKFT uses to build its kernels.

  • git.linaro.org/ci/jobs/configs
    • Shared repository containing LKFT 1.0 build and LAVA job generation implementation. In LKFT 2.0, this has been split up into its individual components (see: lava-test-plans, kir, kernel-trigger, ci-scripts repos).

  • github.com/linaro/squad
  • lavasoftware.org
    • LKFT relies heavily on the Linaro Automated Validation Architecture (LAVA) to automate kernel testing on hardware.

LKFT Services

  • qa-reports.linaro.org
    • qa-reports hosts LKFT’s test results, and provides a UI, an API, and basic report generation. LKFT primarily uses the following groups: - /lkft hosts production results. - /android-lkft hosts production results for Android trees and kernels. - /staging-lkft contains results used while staging changes in LKFT.

  • lkft.validation.linaro.org
    • LKFT’s production LAVA service.

  • lavalab.nxp.com
    • NXP’s lab, which participates in LKFT.

  • lkft-staging.validation.linaro.org
    • The LKFT lab’s staging instance.

  • tuxbuild
    • TuxBuild is a Linaro service which LKFT uses to build its kernels.

  • gitlab.com
    • GitLab provides the basic continuous integration and continuous deployment (CI/CD) orchestration that is used by LKFT.