From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lucas Meneghel Rodrigues Subject: [PATCH 15/18] KVM test: kvm_utils - Add support of check if remote port free Date: Tue, 14 Sep 2010 19:25:40 -0300 Message-ID: <1284503143-5993-16-git-send-email-lmr@redhat.com> References: <1284503143-5993-1-git-send-email-lmr@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm@vger.kernel.org To: autotest@test.kernel.org Return-path: In-Reply-To: <1284503143-5993-1-git-send-email-lmr@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: autotest-bounces@test.kernel.org Errors-To: autotest-bounces@test.kernel.org List-Id: kvm.vger.kernel.org From: Amos Kong Signed-off-by: Amos Kong --- client/tests/kvm/kvm_utils.py | 23 +++++++++++++++-------- 1 files changed, 15 insertions(+), 8 deletions(-) diff --git a/client/tests/kvm/kvm_utils.py b/client/tests/kvm/kvm_utils.py index bb5c868..71ab7d1 100644 --- a/client/tests/kvm/kvm_utils.py +++ b/client/tests/kvm/kvm_utils.py @@ -829,7 +829,7 @@ def scp_from_remote(host, port, username, password, remote_path, local_path, # The following are utility functions related to ports. -def is_port_free(port): +def is_port_free(port, address): """ Return True if the given port is available for use. @@ -838,15 +838,22 @@ def is_port_free(port): try: s = socket.socket() #s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) - s.bind(("localhost", port)) - free = True + if address == "localhost": + s.bind(("localhost", port)) + free = True + else: + s.connect((address, port)) + free = False except socket.error: - free = False + if address == "localhost": + free = False + else: + free = True s.close() return free -def find_free_port(start_port, end_port): +def find_free_port(start_port, end_port, address="localhost"): """ Return a host free port in the range [start_port, end_port]. @@ -854,12 +861,12 @@ def find_free_port(start_port, end_port): @param end_port: Port immediately after the last one that will be checked. """ for i in range(start_port, end_port): - if is_port_free(i): + if is_port_free(i, address): return i return None -def find_free_ports(start_port, end_port, count): +def find_free_ports(start_port, end_port, count, address="localhost"): """ Return count of host free ports in the range [start_port, end_port]. @@ -870,7 +877,7 @@ def find_free_ports(start_port, end_port, count): ports = [] i = start_port while i < end_port and count > 0: - if is_port_free(i): + if is_port_free(i, address): ports.append(i) count -= 1 i += 1 -- 1.7.2.2