Git Product home page Git Product logo

noel-dason / cnf-testsuite Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cnti-testcatalog/testsuite

0.0 0.0 0.0 29.49 MB

๐Ÿ“ž๐Ÿ“ฑโ˜Ž๏ธ๐Ÿ“ก๐ŸŒ CNF Test Suite is a tool to check for and provide feedback on the use of K8s + cloud native best practices in networking applications and platforms.

License: Apache License 2.0

Crystal 62.01% Dockerfile 1.30% Shell 2.51% Smarty 1.98% Mustache 31.18% HTML 1.02%

cnf-testsuite's Introduction

CNF Test Suite

Main
Build Status

The CNF Test Suite is a tool that makes it possible to validate telco applications, aka Cloud Native Network Functions (CNFs), and the underlying Telecom platforms adherence to Cloud native principles and best practices.

This Test Suite initiative works closely with the CNF WG which determines requirements for the CNF Test Suite program.

Installation and Usage

To get the CNF Test Suite up and running, see the Installation Guide.

To give it a try immediately you can use these quick install steps

Prereqs: kubernetes cluster, wget, curl, helm 3.1.1 or greater on your system already.

  1. Install the latest test suite binary: source <(curl -s https://raw.githubusercontent.com/cncf/cnf-testsuite/main/curl_install.sh)
  2. Run setup to prepare the cnf-testsuite: cnf-testsuite setup
  3. Pull down an example CNF configuration to try: curl -o cnf-testsuite.yml https://raw.githubusercontent.com/cncf/cnf-testsuite/main/example-cnfs/coredns/cnf-testsuite.yml
  4. Initialize the test suite for using the CNF: cnf-testsuite cnf_setup cnf-config=./cnf-testsuite.yml
  5. Run all of application/workload tests: cnf-testsuite workload

More Usage docs

Check out the usage documentation for more info about invoking commands and logging.

Cloud Native Categories

The CNF Test Suite will inspect CNFs for the following characteristics:

  • Compatibility - CNFs should work with any Certified Kubernetes product and any CNI-compatible network that meet their functionality requirements.
  • State - The CNF's state should be stored in a custom resource definition or a separate database (e.g. etcd) rather than requiring local storage. The CNF should also be resilient to node failure.
  • Security - CNF containers should be isolated from one another and the host.
  • Microservice - The CNF should be developed and delivered as a microservice.
  • Scalability - CNFs should support horizontal scaling (across multiple machines) and vertical scaling (between sizes of machines).
  • Configuration and Lifecycle - The CNF's configuration and lifecycle should be managed in a declarative manner, using ConfigMaps, Operators, or other declarative interfaces.
  • Observability - CNFs should externalize their internal states in a way that supports metrics, tracing, and logging.
  • Installable and Upgradeable - CNFs should use standard, in-band deployment tools such as Helm (version 3) charts.
  • Hardware Resources and Scheduling - The CNF container should access all hardware and schedule to specific worker nodes by using a device plugin.
  • Resilience - CNFs should be resilient to failures inevitable in cloud environments. CNF Resilience should be tested to ensure CNFs are designed to deal with non-carrier-grade shared cloud HW/SW platforms.

See the Test Categories Documentation for a complete overview of the tests.

Contributing

Welcome! We gladly accept contributions on new tests, example CNFs, updates to documentation, enhancements, bug reports, and more.

Communication and community meetings

Presentations

CNF Test Suite Demo

Crystal in the Cloud: A cloud native journey at Crystal 1.0 Conference

Implementation overview

The CNF Test Suite leverages upstream tools such as OPA Gatekeeper, Helm linter, and Promtool for testing CNFs. The upstream tool installation, configuration, and versioning has been made repeatable.

The test framework and tests (using the upstream tools) are written in the human-readable, compiled language, Crystal. Common capabilities like dependencies between tests and categories are supported.

Setup of vanilla upstream K8s on Equinix Metal is done with the CNF Testbed platform tool chain, which includes k8s-infra, Kubespray. To add support for other providers, please submit a Pull Request to the CNF Testbed repo.

Code of Conduct

The CNF Test Suite community follows the CNCF Code of Conduct.

License terms

The CNF Test Suite is available under the Apache 2 license.

cnf-testsuite's People

Contributors

denverwilliams avatar wvwatson avatar agentpoyo avatar taylor avatar thewolfpack avatar hashnuke avatar williscool avatar lixuna avatar sishbi avatar nupejosh avatar xmulligan avatar uditgaurav avatar michaelspedersen avatar sakshamgurbhele avatar petorre avatar electrocucaracha avatar himanshu007-creator avatar ilmanzo avatar clementnuss avatar jonsy13 avatar haardikdharma10 avatar smitholi67 avatar aws-4 avatar rmerz avatar iamayushdas avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.