Giter VIP home page Giter VIP logo

wait4x's Introduction

Wait4X

Build Status Coverage Status Go Report Card Docker Pulls Go Reference

Wait4X allows you to wait for a port or a service to enter the requested state, with a customizable timeout and interval time.

Table of Contents

Features

  • Supports various protocols:
    • TCP
    • HTTP
  • Supports various services:
    • Redis
    • MySQL
    • PostgreSQL
    • InfluxDB
    • MongoDB
  • Reverse Checking: Invert the sense of checking to find a free port or non-ready services
  • CI/CD Friendly: Well-suited to be part of a CI/CD pipeline step
  • Cross Platform: One single pre-built binary for Linux, Mac OSX, and Windows
  • Importable: Beside the CLI tool, Wait4X can be imported as a pkg in your Go app

Installation

There are many different ways to install Wait4X

with Docker

Wait4X provides automatically updated Docker images within Docker Hub. It is possible to always use the latest stable tag.

Pull the image from the docker index.

docker pull atkrad/wait4x:latest

then you can launch the wait4x container.

docker run --rm --name='wait4x' \
    atkrad/wait4x:latest --help

From binary

Choose the file matching the destination platform from the release page, copy the URL and replace the URL within the commands below:

Linux

curl -L https://github.com/atkrad/wait4x/releases/latest/download/wait4x-linux-amd64 -o /usr/local/bin/wait4x
chmod +x /usr/local/bin/wait4x

Mac OSX

curl -L https://github.com/atkrad/wait4x/releases/latest/download/wait4x-darwin-amd64 -o /usr/local/bin/wait4x
chmod +x /usr/local/bin/wait4x

Windows

curl -L https://github.com/atkrad/wait4x/releases/latest/download/wait4x-windows-amd64 -o wait4x.exe

Verify SHA256 Checksum

Wait4X generates checksum for all binaries with sha256sum to prevent against unwanted modification of binaries. To validate the binary, download the checksum file which ends in .sha256sum for the binary you downloaded and use the sha256sum command line tool.

curl -SLO https://github.com/atkrad/wait4x/releases/latest/download/wait4x-linux-amd64.sha256sum
sha256sum --check wait4x-linux-amd64.sha256sum

From package

You can find the Wait4X package in some Linux distributions.

Packaging status

On Alpine Linux

You can install the wait4x package from the official sources:

apk add wait4x

On Arch Linux (AUR)

You can install the wait4x package from the Arch User Repository:

yay -S wait4x

Examples

TCP

# If you want checking just tcp connection
wait4x tcp 127.0.0.1:9090

HTTP

# If you want checking just http connection
wait4x http https://ifconfig.co

# If you want checking http connection and expect specify http status code
wait4x http https://ifconfig.co --expect-status-code 200

# If you want checking http connection, status code and match the response body.
# Note: You can write any regex that compatible with Golang syntax (https://pkg.go.dev/regexp/syntax#hdr-Syntax)
wait4x http https://ifconfig.co/json --expect-status-code 200 --expect-body='"country":\s"Netherlands"'

# If you want to check a http response header
# NOTE: the value in the expected header is regex.
# Sample response header: Authorization Token 1234ABCD
# You can match it by these ways:

# Full key value:
wait4x http https://ifconfig.co --expect-header "Authorization=Token 1234ABCD"

# Value starts with:
wait4x http https://ifconfig.co --expect-header "Authorization=Token"

# Regex value:
wait4x http https://ifconfig.co --expect-header "Authorization=Token\s.+"

Redis

# Checking Redis connection
wait4x redis redis://127.0.0.1:6379

# Specify username, password and db
wait4x redis redis://user:password@localhost:6379/1

# Checking Redis connection over unix socket
wait4x redis unix://user:password@/path/to/redis.sock?db=1

# Checking a key existence
wait4x redis redis://127.0.0.1:6379 --expect-key FOO

# Checking a key existence and matching the value
# Note: You can write any regex that compatible with Golang syntax (https://pkg.go.dev/regexp/syntax#hdr-Syntax)
wait4x redis redis://127.0.0.1:6379 --expect-key "FOO=^b[A-Z]r$"

MySQL

# Checking MySQL TCP connection
wait4x mysql user:password@tcp(localhost:5555)/dbname?tls=skip-verify

# Checking MySQL UNIX Socket connection
wait4x mysql username:password@unix(/tmp/mysql.sock)/myDatabase

PostgreSQL

# Checking PostgreSQL TCP connection
wait4x postgresql 'postgres://bob:[email protected]:5432/mydb?sslmode=verify-full'

# Checking PostgreSQL Unix socket connection
wait4x postgresql 'postgres://bob:secret@/mydb?host=/var/run/postgresql'

InfluxDB

# Checking InfluxDB connection
wait4x influxdb http://localhost:8086

MongoDB

# Checking MongoDB connection
wait4x mongodb 'mongodb://127.0.0.1:27017'

# Checking MongoDB connection with credentials and options
wait4x mongodb 'mongodb://user:[email protected]:27017/?maxPoolSize=20&w=majority'

wait4x's People

Contributors

atkrad avatar dependabot[bot] avatar mortymacs avatar

Watchers

James Cloos 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.