From patchwork Tue Sep 14 22:25:40 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lucas Meneghel Rodrigues X-Patchwork-Id: 181232 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id o8EMQpsn022755 for ; Tue, 14 Sep 2010 22:26:53 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754621Ab0INW0V (ORCPT ); Tue, 14 Sep 2010 18:26:21 -0400 Received: from mx1.redhat.com ([209.132.183.28]:40405 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752699Ab0INW0U (ORCPT ); Tue, 14 Sep 2010 18:26:20 -0400 Received: from int-mx02.intmail.prod.int.phx2.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id o8EMQJ0p010960 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Tue, 14 Sep 2010 18:26:19 -0400 Received: from freedom.redhat.com (vpn-10-95.rdu.redhat.com [10.11.10.95]) by int-mx02.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id o8EMPluv004475; Tue, 14 Sep 2010 18:26:18 -0400 From: Lucas Meneghel Rodrigues To: autotest@test.kernel.org Cc: kvm@vger.kernel.org, Amos Kong 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> In-Reply-To: <1284503143-5993-1-git-send-email-lmr@redhat.com> References: <1284503143-5993-1-git-send-email-lmr@redhat.com> X-Scanned-By: MIMEDefang 2.67 on 10.5.11.12 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.3 (demeter1.kernel.org [140.211.167.41]); Tue, 14 Sep 2010 22:26:53 +0000 (UTC) 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