Go to file
Marvin Steadfast 9fccb5e242
All checks were successful
continuous-integration/drone/push Build is passing
adds LICENSE file
2021-06-21 09:54:30 +02:00
cmd Check gets Ready and readme 2021-06-15 10:48:12 +02:00
vendor first commit 2021-06-14 14:48:39 +02:00
.drone.yml ci: adds some basics 2021-06-14 15:06:39 +02:00
.gitignore first commit 2021-06-14 14:48:39 +02:00
.goreleaser.yml Cmd prints stdout and sterr 2021-06-14 20:07:16 +02:00
don.go docs: fixes typo 2021-06-15 11:01:32 +02:00
go.mod first commit 2021-06-14 14:48:39 +02:00
go.sum first commit 2021-06-14 14:48:39 +02:00
LICENSE adds LICENSE file 2021-06-21 09:54:30 +02:00
Makefile Check gets Ready and readme 2021-06-15 10:48:12 +02:00
README.md docs: readme 2021-06-15 11:04:43 +02:00

don

Package don is a little helper if you need to check for the readiness of something. This could be a command to run (like ssh) or a db.Ping() for check of the readiness of a database container.

Use as commandline tool

Download the tool from the download page.

don -t 15m -r 15s -c "ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 root@container"

This example checks every 15 seconds if the ssh container is ready. It would timeout with an error after 15 minutes.

Use as a library

If you want to use don as a library, it just takes a func() bool in don.Ready() have a function that runs the readiness check and returns true or false if its ready or not. The second argument is the overall timeout and the third argument is the check interval. Import it like this:

import go.xsfx.dev/don

Doing the readiness check like this:

if err := don.Ready(
	func() bool {
		db, err := sql.Open("oracle", dbConn)
		if err != nil {
			log.Warn().Err(err).Str("dbConn", dbConn).Msg("could not open connection")

			return false
		}

		if err := db.Ping(); err != nil {
			log.Warn().Err(err).Str("dbConn", dbConn).Msg("could not ping")

			return false
		}

		return true
	},
	10*time.Minute,
	30*time.Second,
); err != nil {
	log.Error().Err(err).Msg("received error")
	teardown(pool, resource, tmpState.Name())
	os.Exit(1)
}

Functions

func Cmd

func Cmd(c string) func() bool

Cmd returns a func() bool for working with don.Ready(). It executes a command and returns a true if everything looks fine or a false if there was some kind of error.

func Ready

func Ready(f func() bool, timeout time.Duration, retry time.Duration) error

Ready takes a function that executes something and returns a bool to indicate if something is ready or not. It returns an error if it timeouts.

Sub Packages