#226 Separate logs from qemu itself and from guest OS.
Merged 5 years ago by astepano. Opened 5 years ago by astepano.

@@ -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)

rebased onto 509a855330da85de1ac1b05ebf5d1569b34a6831

5 years ago

pretty please pagure-ci rebuild

rebased onto 4c30266

5 years ago

pretty please pagure-ci rebuild

Forks for me:

[root@qeos-25 tests]# cat artifacts/atomic.qcow2.qemu.log 
qemu-system-x86_64: terminating on signal 15 from pid 20725 (python)

[root@qeos-25 tests]# cat artifacts/atomic.qcow2.guest.log | head -n 10
[    0.000000] Linux version 4.16.14-300.fc28.x86_64 (mockbuild@bkernel02.phx2.fedoraproject.org) 

Commit c0d1e7b fixes this pull-request

Pull-Request has been merged by astepano

5 years ago

Pull-Request has been merged by astepano

5 years ago