| |
@@ -142,7 +142,7 @@
|
| |
return inventory
|
| |
|
| |
|
| |
- def start_qemu(image, cloudinit, log, portrange=(2222, 5555)):
|
| |
+ def start_qemu(image, cloudinit, artifacts, portrange=(2222, 5555)):
|
| |
for _ in range(10):
|
| |
port = random.randint(*portrange)
|
| |
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
| |
@@ -162,7 +162,10 @@
|
| |
diagnose = distutils.util.strtobool(os.getenv("TEST_DEBUG", "0"))
|
| |
except ValueError:
|
| |
diagnose = 0
|
| |
-
|
| |
+ # Log all traffic received from the guest to a file.
|
| |
+ log_guest = os.path.join(artifacts, "{0}.guest.log".format(os.path.basename(image)))
|
| |
+ # Log from qemu itself.
|
| |
+ log_qemu = log_guest.replace(".guest.log", ".qemu.log")
|
| |
# Use -cpu host and -smp by default.
|
| |
# virtio-rng-pci: https://wiki.qemu.org/Features/VirtIORNG
|
| |
qemu_cmd = ["/usr/bin/qemu-system-x86_64",
|
| |
@@ -170,13 +173,13 @@
|
| |
"-m", "1024", image, "-enable-kvm", "-snapshot", "-cdrom", cloudinit,
|
| |
"-net", "nic,model=virtio", "-net", "user,hostfwd=tcp:127.0.0.3:{0}-:22".format(port),
|
| |
"-device", "virtio-rng-pci", "-rtc", "base=utc",
|
| |
- "-device", "isa-serial,chardev=pts2", "-chardev", "file,id=pts2,path=" + log,
|
| |
+ "-device", "isa-serial,chardev=pts2", "-chardev", "file,id=pts2,path=" + log_guest,
|
| |
"-display", "none"]
|
| |
|
| |
if diagnose:
|
| |
qemu_cmd += ["-vnc", DEF_HOST + ":1,to=4095"]
|
| |
|
| |
- qemu_proc = subprocess.Popen(qemu_cmd, stdout=open(log, 'a'), stderr=subprocess.STDOUT)
|
| |
+ qemu_proc = subprocess.Popen(qemu_cmd, stdout=open(log_qemu, 'a'), stderr=subprocess.STDOUT)
|
| |
|
| |
if qemu_proc and diagnose:
|
| |
sys.stderr.write("DIAGNOSE: qemu-kvm is running with VNC server. PID: {}\n".format(qemu_proc.pid))
|
| |
@@ -231,13 +234,12 @@
|
| |
except OSError as exc:
|
| |
if exc.errno != errno.EEXIST or not os.path.isdir(artifacts):
|
| |
raise
|
| |
- log = os.path.join(artifacts, "{0}.log".format(os.path.basename(image)))
|
| |
|
| |
proc = None # for failure detection
|
| |
cpe = None # for exception scoping
|
| |
for _ in range(0, 5):
|
| |
try:
|
| |
- proc, port = start_qemu(image, cloudinit, log)
|
| |
+ proc, port = start_qemu(image, cloudinit, artifacts)
|
| |
break
|
| |
except subprocess.CalledProcessError as cpe:
|
| |
time.sleep(1)
|
| |
Signed-off-by: Andrei Stepanov astepano@redhat.com