WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] Single domU, ping loopback and the local eth0.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] Single domU, ping loopback and the local eth0.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 09 Dec 2005 14:44:07 +0000
Delivery-date: Fri, 09 Dec 2005 14:47:05 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User emellor@xxxxxxxxxxxxxxxxxxxxxx
# Node ID a22ad856d19969b13cfecfe7244a2dcf355d154d
# Parent  06b7f33e954cb1309b774f527563bff931fefb28
Single domU, ping loopback and the local eth0.

Signed-off-by: Jim Dykman <dykman@xxxxxxxxxx>

diff -r 06b7f33e954c -r a22ad856d199 tools/xm-test/lib/XmTestLib/Network.py
--- /dev/null   Fri Dec  9 10:39:31 2005
+++ b/tools/xm-test/lib/XmTestLib/Network.py    Fri Dec  9 10:40:00 2005
@@ -0,0 +1,79 @@
+#!/usr/bin/python
+"""
+ Network.py - Common utilities for network tests
+
+ Copyright (C) International Business Machines Corp., 2005
+ Author: Jim Dykman <dykman@xxxxxxxxxx>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; under version 2 of the License.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+"""
+import sys;
+import os;
+import atexit;
+
+from Test import *
+from Xm import *
+
+class NetworkError(Exception):
+    def __init__(self, msg):
+        self.errMsg = msg
+
+    def __str__(self):
+        return str(self.errMsg)
+
+def undo_dom0_alias(eth, ip):
+    traceCommand("ip addr del " + ip + " dev " + eth)
+
+class XmNetwork:
+
+    def __init__(self):
+        # Check for existing zeroconf address. We are using the zeroconf 
+        # address range as static IP addresses.... if someone is using 
+        # real zeroconf addresses, then we're going to skip tests to 
+        # avoid interfering with them.
+        rc, out = traceCommand(
+                  "ip addr show |grep \"inet 169.254\" | grep -v vif")
+
+        if rc == 0:
+            SKIP("Zeroconf address found: " + out)
+
+    def calc_ip_address(self, dom, interface):
+        # Generate an IP address from the dom# and eth#:
+        #      169.254.(eth#+153).(dom#+10)
+        ethnum = int(interface[len("eth"):])
+        domnum = int(dom[len("dom"):])
+        return "169.254."+ str(ethnum+153) + "." + str(domnum+10)
+
+    def ip(self, dom, interface, todomname=None, toeth=None):
+        newip = self.calc_ip_address(dom, interface)
+
+        # If the testcase is going to talk to dom0, we need to add an 
+        # IP address in the proper subnet
+        if dom == "dom0":
+            # The domain's vif is a convenient place to add to
+            vifname = "vif" + str(domid(todomname)) + "." + toeth[3:]
+
+            # register the exit handler FIRST, just in case
+            atexit.register(undo_dom0_alias, vifname, newip)
+
+            # add the alias
+            status, output = traceCommand("ip addr add " + newip + 
+                                              " dev " + vifname)
+            if status:
+                SKIP("\"ip addr add\" failed")
+        return newip
+
+    def mask(self, dom, interface):
+        return "255.255.255.0"
diff -r 06b7f33e954c -r a22ad856d199 
tools/xm-test/tests/network/02_network_local_ping_pos.py
--- /dev/null   Fri Dec  9 10:39:31 2005
+++ b/tools/xm-test/tests/network/02_network_local_ping_pos.py  Fri Dec  9 
10:40:00 2005
@@ -0,0 +1,84 @@
+#!/usr/bin/python
+
+# Copyright (C) International Business Machines Corp., 2005
+# Author:  <dykman@xxxxxxxxxx>
+
+# Ping tests on local interfaces.
+#  - creates a single guest domain
+#  - sets up a single NIC
+#  - conducts ping tests to the local loopback and IP address.
+
+# ping -c 1 -s $size 127.0.0.1
+# ping -c 1 -s $size $local_IP 
+#   where $size = 1, 48, 64, 512, 1440, 1500, 1505, 
+#                 4096, 4192, 32767, 65507, 65508
+
+pingsizes = [ 1, 48, 64, 512, 1440, 1500, 1505, 4096, 4192, 
+              32767, 65507 ]
+
+
+
+from XmTestLib import *
+rc = 0
+
+Net = XmNetwork()
+
+# read an IP address from the config
+ip   = Net.ip("dom1", "eth0")
+mask = Net.mask("dom1", "eth0")
+
+# Fire up a guest domain w/1 nic
+domain = XmTestDomain(extraOpts={ 'nics' : 1 })
+try:
+    domain.configSetVar('vif', " [ 'ip=" + ip + "' ]")
+    domain.start()
+except DomainError, e:
+    if verbose:
+        print "Failed to create test domain because:"
+        print e.extra
+    FAIL(str(e))
+
+
+# Attach a console
+try:
+    console = XmConsole(domain.getName(), historySaveCmds=True)
+except ConsoleError, e:
+    FAIL(str(e))
+
+try:
+    # Activate the console
+    console.sendInput("bhs")
+
+    # Bring up the "lo" interface.
+    console.runCmd("ifconfig lo up")
+
+    console.runCmd("ifconfig eth0 inet "+ip+" netmask "+mask+" up")
+
+    # First the loopback pings
+    lofails=""
+    for size in pingsizes:
+        out = console.runCmd("ping -q -c 1 -s " + str(size) + " 127.0.0.1")
+        if out["return"]:
+            lofails += " " + str(size)
+
+    # Next comes eth0
+    eth0fails=""
+    for size in pingsizes:
+        out = console.runCmd("ping -q -c 1 -s " + str(size) + " " + ip)
+        if out["return"]:
+            eth0fails += " " + str(size) 
+except ConsoleError, e:
+        FAIL(str(e))
+except NetworkError, e:
+        FAIL(str(e))
+
+
+# Tally up failures
+failures=""
+if len(lofails):
+        failures += "ping loopback failed for size" + lofails + ". "
+if len(eth0fails):
+        failures += "ping eth0 failed for size" + eth0fails + "."
+if len(failures):
+    FAIL(failures)
+
diff -r 06b7f33e954c -r a22ad856d199 tools/xm-test/tests/network/Makefile.am
--- /dev/null   Fri Dec  9 10:39:31 2005
+++ b/tools/xm-test/tests/network/Makefile.am   Fri Dec  9 10:40:00 2005
@@ -0,0 +1,29 @@
+
+SUBDIRS =
+
+TESTS = \
+       02_network_local_ping_pos.test          \
+       05_network_dom0_ping_pos.test           \
+       11_network_domU_ping_pos.test
+
+
+
+XFAIL_TESTS =                          \
+       02_network_local_ping_pos.test          \
+       05_network_dom0_ping_pos.test           \
+       11_network_domU_ping_pos.test
+
+EXTRA_DIST = $(TESTS) $(XFAIL_TESTS)
+
+TESTS_ENVIRONMENT=@TENV@
+
+%.test: %.py
+       cp $< $@
+       chmod +x $@
+
+clean-local: am_config_clean-local
+
+am_config_clean-local:
+       rm -f *test
+       rm -f *log
+       rm -f *~

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] Single domU, ping loopback and the local eth0., Xen patchbot -unstable <=