diff options
-rw-r--r-- | Jenkinsfile | 8 | ||||
-rw-r--r-- | docker/Dockerfile | 5 | ||||
-rwxr-xr-x | scripts/check-qemu-install | 31 |
3 files changed, 36 insertions, 8 deletions
diff --git a/Jenkinsfile b/Jenkinsfile index 4383f230..fcf0dafd 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -117,6 +117,14 @@ pipeline { """ } } + stage('Test') { + steps { + sh """ + cd build/ + sudo ../scripts/check-qemu-install --debug live-image-amd64.hybrid.iso + """ + } + } } post { success { diff --git a/docker/Dockerfile b/docker/Dockerfile index 1052a8e8..799b118d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -280,6 +280,11 @@ RUN apt-get update && apt-get install -y \ python2.7-dev \ libmariadb-dev +# Packages needed for Qemu test-suite +RUN apt-get update && apt-get install -y \ + python3-pexpect \ + qemu-kvm + # Install packer RUN export LATEST="$(curl -s https://checkpoint-api.hashicorp.com/v1/check/packer | \ jq -r -M '.current_version')"; \ diff --git a/scripts/check-qemu-install b/scripts/check-qemu-install index 688aa556..a7c36c78 100755 --- a/scripts/check-qemu-install +++ b/scripts/check-qemu-install @@ -65,7 +65,10 @@ parser.add_argument('--silent', help='Do not show output on stdout unless an err parser.add_argument('--debug', help='Send all debug output to stdout', action='store_true', default=False) -parser.add_argument('--logfile', help='Log to file') +parser.add_argument('--logfile', help='Log to file') +parser.add_argument('--no-kvm', help='Disable use of kvm', + action='store_true', + default=False) args = parser.parse_args() @@ -99,7 +102,7 @@ log = logging.getLogger() log.setLevel(logging.DEBUG) stl = StreamToLogger(log) -formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') +formatter = logging.Formatter('%(asctime)s + %(relativeCreated)-7d - %(levelname)5s - %(message)s') handler = logging.StreamHandler(sys.stdout) if args.silent: @@ -130,6 +133,14 @@ if not os.path.isfile(args.iso): log.error("Unable to find iso image to install") sys.exit(1) +if args.no_kvm: + log.error("KVM forced off by command line") + kvm=False +elif not os.path.exists("/dev/kvm"): + log.error("KVM is not enabled on host, proceeding with software emulation") + kvm=False +else: + kvm=True # Creating diskimage!! @@ -153,12 +164,14 @@ try: -m 1G \ -nic user,model=virtio,mac=52:54:99:12:34:56,hostfwd=tcp::2299-:22 \ -machine accel=kvm \ - -cpu host -smp 2 \ + {CPU} \ + -smp 2 \ -vnc 0.0.0.0:99 \ -nographic \ -boot d -cdrom {CD} \ + {KVM} \ -drive format=raw,file={DISK} - """.format(CD=args.iso, DISK=args.disk) + """.format(CD=args.iso, DISK=args.disk, KVM="" if kvm else "--no-kvm", CPU="-cpu host" if kvm else "") log.debug("Executing command: {}".format(cmd)) c = pexpect.spawn(cmd, logfile=stl) @@ -172,7 +185,7 @@ try: log.warning("Did not find grub countdown window, ignoring") log.info('Waiting for login prompt') - c.expect('[Ll]ogin:', timeout=120) + c.expect('[Ll]ogin:', timeout=300) c.sendline('vyos') c.expect('[Pp]assword:', timeout=10) c.sendline('vyos') @@ -240,11 +253,13 @@ try: -m 1G \ -nic user,model=virtio,mac=52:54:99:12:34:56,hostfwd=tcp::2299-:22 -machine accel=kvm \ - -cpu host -smp 2 \ + {CPU} \ + -smp 2 \ -vnc 0.0.0.0:99 \ -nographic \ + {KVM} \ -drive format=raw,file={DISK} - """.format(DISK=args.disk) + """.format(DISK=args.disk, KVM="" if kvm else "--no-kvm", CPU="-cpu host" if kvm else "") log.debug('Executing command: {}'.format(cmd)) c = pexpect.spawn(cmd, logfile=stl) @@ -259,7 +274,7 @@ try: log.warning("Did not find grub countdown window, ignoring") log.info('Waiting for login prompt') - c.expect('[Ll]ogin:', timeout=120) + c.expect('[Ll]ogin:', timeout=300) c.sendline('vyos') c.expect('[Pp]assword:', timeout=10) c.sendline('vyos') |