Comment 10 for bug 673705

Revision history for this message
Serge Hallyn (serge-hallyn) wrote :

Sorry, Mathiaz, that recipe tests for connections which just
pause randomly. We need to test when a guest shuts down,
or, in other words, when the veth device is removed from the
bridge. So:

1. fire up a guest with libvirt. Monitor its network
continuously (i.e. fire up a screen session over ssh doing
 while [ 1 ]; do echo -n .; sleep 5s; done
and keep that open so you can see any pauses.

2. Get a usable ns_exec:

    git clone git://git.sr71.net/~hallyn/cr_tests.git
    cd cr_tests
    git checkout ns_exec
    make ns_exec
    cp ns_exec /bin/

3. Create a veth tunnel

    sudo ip link add type veth

4. Open two root terminals to configure a network namespace for our test

terminal 1:
 ip link add type veth
terminal 2:
 /bin/ns_exec -cmn /bin/bash
 echo $$ # call this $pid henceforth
terminal 1:
 ifconfig veth0 0.0.0.0 up
 brctl addif virbr0 veth0
 ip link set veth1 netns $pid # use pid from above
terminal 2:
 ifconfig veth1 up
 dhclient veth1

5. Now we want to emulate shutting down a libvirt guest. Let's try
several ways:

 A. From the host root shell, just remove veth0 from the bridge:

  brctl delif virbr0 veth0

 B. Shut down the veth interfaces. Try veth0 and veth1 on separate
 runs (ifconfig veth0 down).

 C. Just exit the child shell.

 D. Shut down the child shell, and then remove the veth interfaces
 altogether, by doing:

  ip link del veth0

After each test please remove the veth devices:

 ip link del veth0

Just to make sure that the commands in step 4 (referencing veth0/veth1) stay
correct.