summaryrefslogtreecommitdiff
path: root/buildscripts/smoke/mongodb_network.py
blob: a67dbe6932f5133ef34ee8081a2c157920e55ed0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

"""
Very basic network helpers to allow programs to easily reserve network ports and manage timeouts.
"""

import time
import socket


class Timer(object):

    def __init__(self):
        self.start_time_secs = time.time()

    def elapsed_secs(self):
        return time.time() - self.start_time_secs


class UnusedPort(object):

    def __init__(self, port=0):
        self.unused_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.unused_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.unused_socket.bind(("0.0.0.0", port))
        self.addr, self.port = self.unused_socket.getsockname()

    def release(self):
        self.unused_socket.close()
        self.unused_socket, self.addr, self.port = None, None, None