GithubHelp home page GithubHelp logo

platform-testing's Introduction

Platform Testing

This project consists of a set of modules which test various aspects of the platform and provide feedback to a data collection service.

Blackbox

Functionalities of various platform services are tested without looking at the internal code structure. The main focus of black box testing is on the validation of the functional requirements.

Whitebox

Validate & measure internal structure and working of various platform services.

Design

The tests are organized as a set of plugins and a plugin runner. Each plugin encapsulates the detail of the technology it interacts with - the runner simply runs the specified plugin passing any parameters.

All plugins are expected to support methods to display their results on the stdout in a consistent manner and all plugins return their results in a consistent format which the runner then forwards on to the data collection service.

Usage

Platform testing have been developed in order to support multiple services in an agnostic way. That's why we use a set of plugins which are managed by the monitor.py script.

The plugin should be in the plugins folder corresponding to its name and should implement a TestbotPlugin python script with a runner method.

Once done, you call the plugin like this:

python -B monitor.py --plugin YOUR_PLUGIN --display --postjson http://127.0.0.1:3001/metrics --extra "--plugin_args_1 value1 --plugin_args_2 value2"

Where:

  • --display: used to display information on the stdout

  • --postjson: in case you would like to send your result to the PNDA console, this should then be compliant with the data collector specification

     {
     	"data": [ {
     	"source": "myservice",
     	"metric": "mymetric",
     	"value": "ERROR",
     	"causes": ["something went wrong"],
     	"timestamp": 1684313134
     	}],
     	"timestamp": 1794643131
     }
    
  • --extra: this is a way to send plugin arguments, without any limitations and the management of this is managed by the plugin itself.

Plugins

Zookeeper Blackbox

The Zookeeper Blackbox plugin uses the KazooClient in order to connect to a Zookeeper host or ensemble and then test that the nodes are working. It provides the list of nodes (IP and port) that are currently working and the ones that could be dead.

Argument to --plugin:

  • zookeeper

Arguments to --extra:

  • --zconnect: connection string for Zookeeper

Example:

--zconnect 127.0.0.1:2181,127.0.0.1:2182

CDH

The CDH plugin obtains a set of key performance indicators from the CM API.

Argument to --plugin:

  • cdh

Arguments to --extra:

  • --cmhost: host for CM API authentication
  • --cmport: port for CM API authentication
  • --cmuser: user for CM API authentication
  • --cmpassword: password for CM API authentication

Example:

--cmhost localhost --cmport 7180 --cmuser admin --cmpassword password

CDH Blackbox

The CDH Blackbox plugin runs a series of tests against key services from the perspective of a client, for example creating tables in HBase, reading from them and writing to them, querying data through Impala and so on. It also measures the performance of these tests, for example capturing the latency of the Impala read operation.

It also queries the CM API for its view on Hadoop service health. These indicators are combined with the results of the other tests and an algorithm computes a set of final health status indicators per service which are sent with all the other results to the data collection service.

Argument to --plugin:

  • cdh_blackbox

Arguments to --extra:

  • --cmhost: host for CM API authentication
  • --cmport: port for CM API authentication
  • --cmuser: user for CM API authentication
  • --cmpassword: password for CM API authentication
  • --hbaseport: port to address HBase (endpoint autodiscovered)
  • --hiveport: port to address Hive (endpoint autodiscovered)
  • --impalaport: port to address Impala (endpoint autodiscovered)

Example:

--cmhost localhost --cmport 7180 --cmuser admin --cmpassword password --hbaseport 1111 --hiveport 2222 --impalaport 3333

Deployment Manager Blackbox

The Deployment Manager Blackbox plugin checks that the main API is working. First you will need to specify the endpoint of the deployment manager, and then you can check that the /repository/packages and /packages APIs are working. The tool will check that the HTTP response code is as expected, and that the JSON is valid. The tool creates metrics for the deployment manager, including health and response times.

Argument to --plugin:

  • dm_blackbox

Arguments to --extra:

  • --dmendpoint: HTTP entry point for Deployment Manager

Example:

--dmendpoint http://192.168.103.4:5000

Kafka

The blackbox test on kafka used the KazooClient, Kafka and avro module in order to get deeper details about the health of Kafka by getting all the JMX information. We use the reference documentation of Kafka regarding the Kafka manotoring. For using JMX MBean in python, you need to have in place a JMX Proxy that will convert everything in JSON, see JMX Proxy for more information.

Argument to --plugin:

  • kafka

Arguments to --extra:

  • --zconnect: connection string for Zookeeper
  • --brokerlist: connection string for Kafka JMX

Example:

--zconnect 127.0.0.1:2181,127.0.0.1:2182 --brokerlist 127.0.0.1:9050,127.0.0.1:9051

Kafka Blackbox

The blackbox test on kafka used the KazooClient, Kafka and avro module in order to:

  1. connect to Zookeeper host or ensemble and then test that the nodes are working.
  2. get the broker information within zookeeper
  3. [OPTIONAL] send avro encoded message to an internal test topic on the right Kafka broker and ensure we well received previous sent messages

Argument to --plugin:

  • kafka_blackbox

Arguments to --extra:

  • --zconnect: connection string for Zookeeper
  • --prod2cons: send avro encoded message and check we consume them

Example:

--zconnect 127.0.0.1:2181,127.0.0.1:2182 --prod2cons

platform-testing's People

Contributors

jeclarke avatar jgarnier avatar pndacicd avatar trsmith2 avatar

Watchers

 avatar  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.