Ukraine National Load-Testing app

Overview

Ukraine National Load-Testing

Nest Logo Nest Logo

Forks Last commit (master) Repo Stars License Issues

😎 Overview

  • The repo contains Nest.JS application, which uses russian proxies and do load testing of web resources using API.
  • The app uses a proxy, but be careful, it is desirable to use a VPN.

Wait, another one?

Yep, here are some reasons to use this app:

  • 🙌 App works fully unattended
  • ☁️ Default configuration works perfectly on the cheapest $6/mo DigitalOcean instance:
    • 1 vCPU
    • 1 Gb RAM
  • 🧠 App consumes always near the same amount of resources, no matter doing load-testing of 5 sites or 50`000
  • 🔄 URLs and Proxies will be automatically updated in a runtime
  • 🐋️ Designed with Docker and Clouds in mind
  • 💢️ Coded with pure anger
  • 🍁 Eco-friendly
  • 🥦 Gluten-free

🚀 Quick start

Docker

  • Install Docker

  • Download docker image:

    docker pull ghcr.io/alexander-danilenko/ua-loadtest:latest
  • Run the container: (docs)

    docker run --rm -d ghcr.io/alexander-danilenko/ua-loadtest:latest
  • List running containers: (docs)

  • Stop running container: (docs)

  • See logs for running container: (docs)

See .env file for the available environment variables. All these values could be adjusted for the container.

For overriding environment variables in the container started with docker run command, modify command for having variables in the following format:

docker run --rm -d -e 'NO_COLOR=1' -e 'LOG_SUMMARY_TABLE=true' ghcr.io/alexander-danilenko/ua-loadtest:latest

Docker Compose

docker-compose allows you to easily run containers in parallel without having to keep multiple terminals opened. To run on servers - perfect choice.

version: '3'
services:
  # To run several containers in parallel use scale argument:
  # docker-compose up --build --scale app=5
  app:
    image: ghcr.io/alexander-danilenko/ua-loadtest:latest
    restart: unless-stopped # Re-run after system reboot or docker daemon restart.
    environment:
      NO_COLOR: 'true' # Disables colored output for better logs in clouds.
      ## Defines amount of concurrent requests per second.
      #REQUESTS_CONCURRENCY: 500 # Adjust only if needed. Recommended: 500 * {RAM GB}
      # Print summary table with results.
      LOG_SUMMARY_TABLE: 'false'
      # Log response status codes to console during load testings.
      LOG_RESPONSE_SUCCESS: 'false'
      LOG_RESPONSE_TIMEOUT: 'false'
      LOG_RESPONSE_ERROR: 'false'
      # UAShield settings.
      UASHIELD_USE_PROXY: 'true'
      ## Override target URLs. Needs to be valid JSON array with URLs.
      #UASHIELD_TARGETS: '["https://kremlin.ru", "https://www.sberbank.ru"]'
      UASHIELD_URLS: 'https://raw.githubusercontent.com/opengs/uashieldtargets/v2/sites.json'
      UASHIELD_PROXIES: 'https://raw.githubusercontent.com/opengs/uashieldtargets/v2/proxy.json'

⚠️ NOTE: in docker-compose.yml file all the true and false values needs to be passed as lowercase strings (using quotes) like following: VARIABLE_NAME: 'true'

Node.JS

  • Install Node v16: https://nodejs.org/en/download/

  • Clone repository:

    git clone https://github.com/alexander-danilenko/ua-loadtest
  • Install all the required dependencies:

    yarn install
  • Build the app:

    yarn build
  • Run the app in production mode:

    yarn start:prod

⚙️ Runtime config recommendations

Run container using docker-compose or use --restart unless-stopped docker parameter. Just in case.

DigitalOcean

❤️ The following scripts are tested and primarely used by maintainers.

Use the following User data scripts for automated initialization of droplet considering its resources:

You might also like...

Load twemoji with a predictable url.

Load twemoji with a predictable url.

twemoji-image-functions Cloud Functions which hosts twemoji with a predictable url. Why? You can get any twemoji urls without parsing DOM or text usin

Mar 26, 2022

This simple extension can automatically load NBN availability information for properties on realestate.com.au & domain.com.au including technology type, maximum line speed, and co-existance status if available.

This simple extension can automatically load NBN availability information for properties on realestate.com.au & domain.com.au including technology type, maximum line speed, and co-existance status if available.

NBN Availability Check Chrome Extension This simple extension can automatically load NBN availability information for properties on realestate.com.au

Aug 17, 2022

Convert mapart from MapartCraft to Horion NBT data, which can be imported with .nbt load

Horion-Mapart This project aims to convert MCEDIT Schematics generated by MapartCraft to Horion NBT's so you can easily make maparts in minutes in Min

Jun 22, 2022

A lightweight (the actual ship is heavy though), performat & powerful sharder for Discord.JS. Indomitable uses cluster module to evenly spread her weight (load) across your cores

A lightweight (the actual ship is heavy though), performat & powerful sharder for Discord.JS. Indomitable uses cluster module to evenly spread her weight (load) across your cores

Indomitable A lightweight (the actual ship is heavy though), performat & powerful sharder for Discord.JS. Indomitable uses cluster module to evenly sp

Nov 29, 2022

structural load combination library for JavaScript and Node.js

Load Combo Generator loadcombo.js is an structural load combination library for JavaScript and Node.js. It features load combo for every countries. Fe

Jan 8, 2022

This is a simple Image popup Jquery plugin. With a very simple configuration, you can show a popup on your webpage. By the way, this plugin works after page load.

This is a simple Image popup Jquery plugin. With a very simple configuration, you can show a popup on your webpage. By the way, this plugin works after page load.

Jquery-SingleImagePopup This is a simple Image popup Jquery plugin. With a very simple configuration, you can show a popup on your webpage. By the way

Aug 22, 2022

mini vite, support static server, load ts files, pre-bundling.

Mini Vite 中文 Features Same structure with Vite. Support JS, TS, JSX, TSX, CSS, static files. Support public as public directory. Dependency Pre-Bundli

Sep 15, 2022

Super lighweight, pure JavaScript page load progress bar

Super lighweight, pure JavaScript page load progress bar

Nanobar Super lighweight, pure JavaScript page load progress bar Status View Preview Table of contents Status Quick Start What's included Bugs and fea

Jan 3, 2022

On this page, you can save and load all the awesome books you have and save the name and the author into the local storage. this project uses Javascript to interact with the pages

Awesome Books: refactor to use JavaScript classes In this project, We add the links to the applications into the final project Getting Started if you

Nov 29, 2022
Releases(v1.1.3)
Owner
Alexander Danilenko
Sr. Software Engineer at @ffwagency
Alexander Danilenko
A testing focused Remix Stack, that integrates E2E & Unit testing with Playwright, Vitest, MSW and Testing Library. Driven by Prisma ORM. Deploys to Fly.io

Live Demo · Twitter A testing focused Remix Stack, that integrates E2E & Unit testing with Playwright, Vitest, MSW and Testing Library. Driven by Pris

Remix Stacks 18 Oct 31, 2022
Hands Off Ukraine Web Component

A banner web component that enables companies/individuals to quickly show their support for Ukraine regarding the recent Russian invasion. It hopes to raise awareness to the incident and allow users to quickly access support websites & donate.

Filipe Freire 8 Mar 15, 2022
A curated list of resources to help Ukraine

A curated list of resources to help Ukraine (get this badge here) Edit the list QR codes for quick donation Help the Ukrainian army Come back alive fu

Igor Varyvoda 7 Nov 17, 2022
Awesome books app is a basic website that allows users to add/remove books from a list. It is a single page app (SPA) which allow switching to different pages of the app without page load. Built with JavaScript.

Awesome Books ES6 In this project, I build a basic website that allows users to add/remove books from a list. using ES6 syntax and make it more organi

Abdulhamid 11 Jul 1, 2022
nodejs load balancing app to distribute http requests evenly across multiple servers.

load-balancer-nodejs nodejs load balancing app to distribute http requests evenly across multiple servers. How to use ? Please edit the file 'config.j

Abdi Syahputra Harahap 13 Nov 7, 2022
Javascript-testing-practical-approach-2021-course-v3 - Javascript Testing, a Practical Approach (v3)

Javascript Testing, a Practical Approach Description This is the reference repository with all the contents and the examples of the "Javascript Testin

Stefano Magni 2 Nov 14, 2022
AREX: It is a “Differential Testing” and “Record and Replay Testing” Tool.

AREX: It is a “Differential Testing” and “Record and Replay Testing” Tool. Test restful API by record, replay and stub request/response. Differential

ArexTest 15 Nov 1, 2022
Zenload - "Load couple loaders and apply transform one-by-one

Zenload Load couple loaders and apply transforms one-by-one. Install npm i zenload -g How to use? With env vairable ZENLOAD: NODE_OPTIONS='"--loader

coderaiser 1 Jan 25, 2022
Load LiteXLoader JS plugins in BDSX!

BDSX-LXL: Load LiteXLoader JS plugins in BDSX! Background Both LiteXLoader (LXL) and Bedrock Dedicated Server eXtended (BDSX) are popular options of l

PneuJai 8 Oct 30, 2022
🚀 Send a load of requests with nodejs using cluster and with/without Tor for anonymisation 🙈

Accumulator ?? Send a load of requests with nodejs using cluster and with/without Tor for anonymisation ?? ⚠️ Disclamer, This repo has been created fo

Adrien de Peretti 7 Nov 21, 2022