Giter Club home page Giter Club logo

cloudtest's Introduction

CloudTest tool

GithubActions Build Status Weekly minutes Mailing list GitHub license Slack Channel Slack Invite CII Best Practices

CloudTest

CloudTest is automatic tool to perform integration testing for cloud based environments, it allow to configure and bring few multiple clouds to live and execute go/shell integration tests agains all of clusters configured and combine all results into one junit.xml report file to be used with any suitable CI system.

For more information, have a look at our detailed overview of NSM - What is CloudTest?

Install

Install using go get github.com/networkservicemesh/cloudtest.

Docs

See our full documentation at the docs folder.

Examples

CloudTest with Kind provider example

Get involved

All community are live here: NetworkServiceMesh

References

FAQ

If you run into problems, check the docs and feel free to post issues in the Network Service Mesh repository.

Licence

This project is released under the Apache 2.0 License. Please review the License file for more details.

cloudtest's People

Contributors

alex-yust avatar denis-tingaikin avatar edwarnicke avatar fkautz avatar glazychev-art avatar haiodo avatar semenov-spirent avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

cloudtest's Issues

Handling unexpected suite failure

Description

If during setup suite we get unexpected failure (e.g. fatal is happen), we don't process it properly.
In this case, we may not have a test name, and this event is skipped now.

Add support for testify suites

Motivation

Cloudtest tool can schedule only single tests. We need to add support for testify suites.

Usecase

Input:

  1. We have cloudtest configured to work with two clusters.
  2. We have a test based on testify suites(suite contains 8 subtests).

Steps:

  1. Cloudtest finds tests
  2. Cloudtest started work
  3. ...
  4. Cloudtest realizes that the next task to run is testify suite.
  5. Cloudtest splits the testify suite to two tasks for two clusters(the first task contains 4 subtests and the other task contains 4 subtests)
  6. cluster1 runs testifysuite with 4 tests
  7. cluster2 runs testifysuite with 4 tests

Solution

Example of run single test from the suite

go test -testify.m TestA -v

List of all tests in the suite

go test -testify.m “.*” -test.list “.*”

Make CloudTest not depend only on kubernetes clouds.

Right now CloudTest validation is only based on Kubernetes APIs, we need to make it generic to be able to use with any kind of cloud.

.cloudtest.yaml config could contain kubernetes-env keys to pass KUBECONFIG variables to individual integration tests, we need to name it cloud-config like to make generic.

Add packet_test

Issue

Currently packet provider is not covered with test because there are no stubs for the packet API.

Solution

Create packet_test package with stubs. Ex:

type Option func(*packngo.Client)

func NewClient(options ...Option) *packngo.Client {
    client := new(packngo.Client)

    for _, option := range options {
        option(client)
    }

    return client
}

func WithDevices(conf *Config) Option {
    deviceService := newDeviceService(conf)
    return func(client *packngo.Client) {
        client.Devices = deviceService
    }
}

...

Add option to break testing after several tests fail

Motivation

The option to break testing after several tests fail could reduce CI time and give more fast feedback.

Usecase

  1. The user pushes commit which destroys one of the general functionality of product.
  2. Cloudtest starts testing.

Actual: Cloudtest will finish after all tests fail.
Expected: Cloudtest will finish after several tests fail if set option to break testing.

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.