#!/usr/bin/env python3

# Make a TCP connection to the Redis server to check for upness. No
# data is sent because the server is fully up once it accepts
# connections.

import socket
import sys
import time

addr = sys.argv[1]
port = int(sys.argv[2])

# 100 tries with a 50 msec timeout by default - 5 seconds.
tries = int(sys.argv[3]) if len(sys.argv) >= 4 else 100

# 50msec timeout. This is long.
timeout = 0.05

for i in range(tries):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(timeout)
        s.connect((addr, port))
        s.close()
        sys.exit(0)
    except TimeoutError:
        print(f"timeout {i + 1}", file=sys.stderr)
    except ConnectionRefusedError:
        print(f"connection refused {i + 1}", file=sys.stderr)
        time.sleep(timeout)

print("gave up", file=sys.stderr)
sys.exit(1)
