Run ISP speed tests and save results

Related tags

TestingSpeedmon
Overview

SpeedMon

GitHub commit activity Master Travis (.com) semver CodeFactor Grade

Screenshot

Automatically run periodic internet speed tests and save results to a variety of storage backends.

Supported Backends

  • InfluxDB v1
  • InfluxDB v2
  • Graphite

Speed tests are run using the official speedtest.net CLI tool.

Docker, Windows, and Linux are supported. Linux users are required to install the speedtest package first. It will automatically download on Windows.

Configuration

Speedmon can be configured from a configuration file or environment variables. The preferred method is via ENV.

Configuring From ENV

You only need to include the variables for the storage backends you wish to use.

General

DELAY
SERVERS (1234,5431,ect)

Influx v1

--Required--
INFLUXV1_URL
INFLUXV1_DATABASE_NAME
--Optional--
INFLUXV1_NAME
INFLUXV1_PORT
INFLUXV1_USER
INFLUXV1_PASSWORD
INFLUXV1_VERIFY_SSL
INFLUXV1_SSL

Influx v2

--Required--
INFLUXV2_URL
INFLUXV2_TOKEN
INFLUXV2_ORG
INFLUXV2_BUCKET
--Optional--
INFLUXV2_NAME
INFLUXV2_VERIFY_SSL

Graphite v2

--Required--
GRAPHITE_URL
GRAPHITE_PREFIX
--Optional--
GRAPHITE_NAME
GRAPHITE_PORT

Configuring From .ini

When initializing Speedmon looks for the SPEEDTEST_CONFIG ENV Variable to know what config file to load. If this variable is not provided, Speedmon will attempt to load settings from ENV.

Storage backends are dynamically loaded based on what is in the config file. You can safely delete the sections for backends not in use.

[GENERAL]
Delay = 360
Servers = 
[INFLUXV1]
Name = Whatever You want
Url = http://localhost
Port = 8086
Database_name = speedtests
User = 
Password =
SSL = False
Verify SSL = False
[INFLUXV2]
Name = Whatever You want
Url = http://localhost
Token =
Org = 
Bucket = 
Verify SSL = False
[Graphite]
Name = Whatever You want
Url = http://localhost
Port = 2003
Prefix = speedtest

Usage

With Docker

See ENV Variable List For Your Storage Backend

docker run -d \
--name="speedtest" \
--restart="always" \
--env INFLUXV2_URL=http://example.com \
--env INFLUXV2_TOKEN=my-long-token \
--env INFLUXV2_ORG=my-org \
--env INFLUXV2_BUCKET=speedtests \
--env DELAY=360 \
barrycarey/speedmon:latest

Using Optional Configuration File

If you do not want to configure Speedmon with ENV variables you can us configuration file

  1. Make a directory to hold the config.ini file. Navigate to that directory and download the sample config.ini in this repo.
mkdir speedmon
curl -o speedmon/config.ini https://raw.githubusercontent.com/barrycarey/Speedmon/master/config.ini
cd speedmon
  1. Modify the config file with your influxdb settings.
nano config.ini

Remove the unneeded storage backend sections. Modify the remaining settings to fit our requirements

[GENERAL]
Delay = 360
# Leave blank to auto pick server
Servers =


[INFLUXV2]
Name = Influx v2
URL = = http://localhost:8086
Token = abc12345676
Org = my-org
Bucket = speedtests
Verify_SSL = False


  1. Run the container, pointing to the directory with the config file. This should now pull the image from Docker hub.
docker run -d \
--name="speedtest" \
-v config.ini:/src/config.ini \
--restart="always" \
--env SPEEDTEST_CONFIG=config.ini
barrycarey/speedmon:latest

Before the first use run pip3 install -r requirements.txt

Enter your desired information in config.ini

Run influxspeedtest.py

Adding Additional Backends

If you wish to contribute support for additional backends the process is straight forward.

Add a new Package under speedmon.storage. Create a new Storage Handler that inherits from StorageHandlerBase. Create a new config that inherits from StorageConfig. Add the new storage backed to speedmon.storage.storage_config_map

Add the example config options to config.ini and name the section [HANDLERNAME]. This must match the name you specified in the map

The handler will automatically be loaded and initialized if the config options are available in the config.ini or ENV vars

Owner
Matthew Carey
IT Technician by day, wannabe developer at night.
Matthew Carey
Python Moonlight (Machine Learning) Practice

PyML Python Moonlight (Machine Learning) Practice Contents Design Documentation Prerequisites Checklist Dev Setup Testing Run Prerequisites Python 3 P

Dockerian Seattle 2 Dec 25, 2022
Enabling easy statistical significance testing for deep neural networks.

deep-significance: Easy and Better Significance Testing for Deep Neural Networks Contents ⁉️ Why 📥 Installation 🔖 Examples Intermezzo: Almost Stocha

Dennis Ulmer 270 Dec 20, 2022
reCaptchaBypasser For Bypass Any reCaptcha For Selenium Python

reCaptchaBypasser ' Usage : from selenium import webdriver from reCaptchaBypasser import reCaptchaScraper import time driver = webdriver.chrome(execu

Dr.Linux 8 Dec 17, 2022
pytest plugin that let you automate actions and assertions with test metrics reporting executing plain YAML files

pytest-play pytest-play is a codeless, generic, pluggable and extensible automation tool, not necessarily test automation only, based on the fantastic

pytest-dev 67 Dec 01, 2022
Mimesis is a high-performance fake data generator for Python, which provides data for a variety of purposes in a variety of languages.

Mimesis - Fake Data Generator Description Mimesis is a high-performance fake data generator for Python, which provides data for a variety of purposes

Isaak Uchakaev 3.8k Dec 29, 2022
A collection of testing examples using pytest and many other libreris

Effective testing with Python This project was created for PyConEs 2021 Check out the test samples at tests Check out the slides at slides (markdown o

Héctor Canto 10 Oct 23, 2022
A twitter bot that simply replies with a beautiful screenshot of the tweet, powered by poet.so

Poet this! Replies with a beautiful screenshot of the tweet, powered by poet.so Installation git clone https://github.com/dhravya/poet-this.git cd po

Dhravya Shah 30 Dec 04, 2022
Free cleverbot without headless browser

Cleverbot Scraper Simple free cleverbot library that doesn't require running a heavy ram wasting headless web browser to actually chat with the bot, a

Matheus Fillipe 3 Sep 25, 2022
Test utility for validating OpenAPI documentation

DRF OpenAPI Tester This is a test utility to validate DRF Test Responses against OpenAPI 2 and 3 schema. It has built-in support for: OpenAPI 2/3 yaml

snok 103 Dec 21, 2022
py.test fixture for benchmarking code

Overview docs tests package A pytest fixture for benchmarking code. It will group the tests into rounds that are calibrated to the chosen timer. See c

Ionel Cristian Mărieș 1k Jan 03, 2023
Coverage plugin for pytest.

Overview docs tests package This plugin produces coverage reports. Compared to just using coverage run this plugin does some extras: Subprocess suppor

pytest-dev 1.4k Dec 29, 2022
This project demonstrates selenium's ability to extract files from a website.

This project demonstrates selenium's ability to extract files from a website. I've added the challenge of connecting over TOR. This package also includes a personal archive site built in NodeJS and A

2 Jan 16, 2022
Donors data of Tamil Nadu Chief Ministers Relief Fund scrapped from https://ereceipt.tn.gov.in/cmprf/Interface/CMPRF/MonthWiseReport

Tamil Nadu Chief Minister's Relief Fund Donors Scrapped data from https://ereceipt.tn.gov.in/cmprf/Interface/CMPRF/MonthWiseReport Scrapper scrapper.p

Arunmozhi 5 May 18, 2021
Python scripts for a generic performance testing infrastructure using Locust.

TODOs Reference to published paper or online version of it loadtest_plotter.py: Cleanup and reading data from files ARS_simulation.py: Cleanup, docume

Juri Tomak 3 Dec 15, 2022
One-stop solution for HTTP(S) testing.

HttpRunner HttpRunner is a simple & elegant, yet powerful HTTP(S) testing framework. Enjoy! ✨ 🚀 ✨ Design Philosophy Convention over configuration ROI

HttpRunner 3.5k Jan 04, 2023
Show coverage stats online via coveralls.io

Coveralls for Python Test Status: Version Info: Compatibility: Misc: coveralls.io is a service for publishing your coverage stats online. This package

Kevin James 499 Dec 28, 2022
The async ready version of the AniManga library created by centipede000.

Async-Animanga An Async/Aiohttp compatible library. Async-Animanga is an async ready web scraping library that returns Manga information from animepla

3 Sep 22, 2022
1st Solution to QQ Browser 2021 AIAC Track 2

1st Solution to QQ Browser 2021 AIAC Track 2 This repository is the winning solution to QQ Browser 2021 AI Algorithm Competition Track 2 Automated Hyp

DAIR Lab 24 Sep 10, 2022
Baseball Discord bot that can post up-to-date scores, lineups, and home runs.

Sunny Day Discord Bot Baseball Discord bot that can post up-to-date scores, lineups, and home runs. Uses webscraping techniques to scrape baseball dat

Benjamin Hammack 1 Jun 20, 2022
This is a pytest plugin, that enables you to test your code that relies on a running MongoDB database

This is a pytest plugin, that enables you to test your code that relies on a running MongoDB database. It allows you to specify fixtures for MongoDB process and client.

Clearcode 19 Oct 21, 2022