ancientt

module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 14, 2023 License: Apache-2.0

README

ancientt

A tool to automate network testing tools, like iperf3, in dynamic environments such as Kubernetes and more to come dynamic environments.

Container Image available from:

Container Image Tags:

  • main - Latest build of the main branch.
  • vX.Y.Z - Tagged build of the application.

Features

TL;DR A network test tool, like iperf3 can be run in, e.g., Kubernetes, cluster from all-to-all Nodes.

  • Run network tests with the following projects:
  • Tests can be run through the following "runners":
    • Ansible (an inventory file is needed)
    • Kubernetes (a kubeconfig connected to a cluster)
  • Results of the network tests can be output in different formats:
    • CSV
    • Dump (uses pp.Sprint() (GitHub k0kubun/pp, pretty print library))
    • Excel files (using Excelize library)
    • go-chart Charts (WIP)
    • MySQL
    • SQLite

Usage

Either build (go get), download the ancientt executable from the GitHub release page or use the Container image.

A config file containing test definitions must be given by flag --testdefinition (or short flag -c) or named testdefinition.yaml in the current directory.

Below command will try loading your-testdefinitions.yaml as the test definitions config:

$ ancientt --testdefinition your-testdefinitions.yaml
# You can also use the short flag `-c` instead of `--testdefinition`
# and also with `-y` run the tests immediately
$ ancientt -c your-testdefinitions.yaml -y

Demos

See Demos.

Goals of this Project

  • A bit like Prometheus blackbox exporter which contains "definitions" for probes. The "tests" would be pluggable through a Golang interface.
  • "Runner" interface, e.g., for Kubernetes, Ansible, etc. The "runner" abstracts the "how it is run", e.g., for Kubernetes creates Pods and Jobs, Ansible to trigger a playbook to run the test.
  • Store the result data in different formats, e.g., CSV, Excel, MySQL
    • Up for discussion: graph database (Dgraph) or TSDB support
  • "Visualization" for humans, e.g., the possibility to automatically draw "shiny" graphs from the results.

Development

Golang version: v1.21 or higher (tested with v1.21.1 on linux/amd64)

Creating Release
  1. Add a new entry for release to CHANGELOG.md.
  2. Update VERSION with the new version number.
  3. git commit and git push both changes (e.g., version: update to VERSION_HERE).
  4. Now create the git tag and push the tag git tag VERSION_HERE followed by git push --tags.
Dependencies

go mod is used to manage the dependencies.

Building

The quickest way to just get ancientt built is to run the following command (requires go installed on the system):

go get -u github.com/galexrt/ancientt/cmd/ancientt

Licensing

ancientt is licensed under the Apache 2.0 License.

Why the unfork?

It is easier for me to update the project this way and keep it running.

Directories

Path Synopsis
cmd
csv
pkg
executor
Package executor executor heavily inspired from the Executor from github.com/rook/rook/pkg/util/exec pkg
Package executor executor heavily inspired from the Executor from github.com/rook/rook/pkg/util/exec pkg
executor/test
Package test mock executor heavily inspired from the Executor from github.com/rook/rook/pkg/util/exec pkg#
Package test mock executor heavily inspired from the Executor from github.com/rook/rook/pkg/util/exec pkg#
tests
k8s

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL