Compare commits

...

No commits in common. "c8-stream-rhel" and "stream-virt-rhel-rhel-8.9.0" have entirely different histories.

9 changed files with 304 additions and 19 deletions

0
.gitignore vendored
View File

View File

20
README Normal file
View File

@ -0,0 +1,20 @@
This is the virt module for RHEL 8.
Branches
--------
Branch name Module name Common name
rhel virt:rhel slow train
8.0.0 virt:8.0.0 fast train
Rebuild the module
------------------
(1) You must add a commit (empty if necessary) if there has not been
any successful build since the last commit. Note that commits are
gated so you will need to add related:, resolves: etc.
comments referring to a valid bug.
(2) rhpkg module-build [--watch]

130
checkbuildorder.py Executable file
View File

@ -0,0 +1,130 @@
#!/usr/bin/env python3
# Copyright (c) 2018 Pino Toscano <ptoscano@redhat.com>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
import queue
import sys
import yaml
class SimpleGraph(object):
def __init__(self):
# node -> children mapping
self.nodes = {}
def _findRoots(self):
ret = []
for k in self.nodes.keys():
if not self._findInValues(k, self.nodes):
ret.append(k)
return ret
def _findInValues(self, k, d):
for v in d.values():
if k in v:
return True
return False
def addNode(self, node, parents):
for p in parents:
if p not in self.nodes:
self.nodes[p] = []
self.nodes[p].append(node)
if node not in self.nodes:
self.nodes[node] = [] # insert the item
def bfs(self):
'''
Simply Breadth-first search.
Returns a list of steps, with each step a list of all the nodes
for it.
'''
ret = []
nodesCopy = self.nodes
roots = self._findRoots()
q = queue.Queue()
STEPDEL = '--------'
visited = set()
for r in roots:
q.put(r)
visited.add(r)
ret.append([])
q.put(STEPDEL)
while not q.empty():
n = q.get()
if n == STEPDEL:
if not q.empty():
ret.append([])
q.put(STEPDEL)
else:
children = nodesCopy.pop(n, [])
for c in children:
if c in visited:
continue
elif self._findInValues(c, nodesCopy):
# child of another node too, so let that other node
# handle this child
continue
q.put(c)
visited.add(c)
ret[-1].append(n)
return ret
if __name__ == '__main__':
if len(sys.argv) != 3:
sys.stderr.write("Usage: %s DEPSFILE MODYAML\n" % sys.argv[0])
sys.exit(1)
g = SimpleGraph()
with open(sys.argv[1]) as f:
for l in f:
if not l.strip() or l.startswith('#'):
continue
pieces = [x.strip() for x in l.split(' ')]
if not pieces or not pieces[0].endswith(':'):
sys.stderr.write("Invalid line '%s', skipped\n" % l)
continue
node = pieces[0][:-1]
parents = pieces[1:]
g.addNode(node, parents)
with open(sys.argv[2]) as f:
ydoc = yaml.safe_load(f)
steps = g.bfs()
stepsIndexes = {}
for i, step in enumerate(steps, 1):
for x in step:
stepsIndexes[x] = i
rpmComps = ydoc['data']['components']['rpms']
for k, v in rpmComps.items():
step = stepsIndexes[k]
try:
actualStep = int(v['buildorder'])
if step != actualStep:
print("%s has buildorder %d but must be %d" %
(k, actualStep, step))
except KeyError:
print("%s has no buildorder, set it to %d" % (k, step))

19
deps Normal file
View File

@ -0,0 +1,19 @@
# dependencies for packages
# format:
# package: dep1 dep2 ... depN
SLOF:
hivex:
libguestfs-winsupport: libguestfs
libguestfs: supermin qemu-kvm libvirt hivex
libiscsi:
libvirt-dbus: libvirt
libvirt-python: libvirt
libvirt: qemu-kvm
nbdkit: libguestfs qemu-kvm libnbd
netcf:
perl-Sys-Virt: libvirt
qemu-kvm: libiscsi
seabios:
sgabios:
supermin: hivex

14
gating.yaml Normal file
View File

@ -0,0 +1,14 @@
# recipients: virt-ci-test-results, ymankad, libvirt-qe, kvmqe-ci, yoguo
--- !Policy
product_versions:
- rhel-8
decision_context: osci_compose_gate_modules
subject_type: redhat-module
rules:
- !PassingTestCaseRule {test_case_name: xen-ci.libguestfs.redhat-module.tier1.functional}
- !PassingTestCaseRule {test_case_name: libvirt-ci.libvirt.redhat-module.gating.x86_64.tier1.functional}
- !PassingTestCaseRule {test_case_name: libvirt-ci.libvirt-python.redhat-module.gating.x86_64.tier1.functional}
- !PassingTestCaseRule {test_case_name: libvirt-ci.perl-Sys-Virt.redhat-module.gating.x86_64.tier1.functional}
- !PassingTestCaseRule {test_case_name: libvirt-ci.v2v.redhat-module.gating.x86_64.tier1.functional}
- !PassingTestCaseRule {test_case_name: kvm-ci.qemu.x86_64-intel.redhat-module.gating.tier1.functional}
- !PassingTestCaseRule {test_case_name: kvm-ci.qemu.x86_64-amd.redhat-module.gating.tier1.functional}

31
tests/runtest.sh Normal file
View File

@ -0,0 +1,31 @@
#!/bin/bash
# Create symlinks required by the qemu-iotests
ln -sf /usr/libexec/qemu-kvm /usr/lib64/qemu-kvm/tests-src/tests/qemu-iotests/qemu
ln -sf /usr/bin/qemu-io /usr/lib64/qemu-kvm/tests-src/tests/qemu-iotests/qemu-io
ln -sf /usr/bin/qemu-img /usr/lib64/qemu-kvm/tests-src/tests/qemu-iotests/qemu-img
ln -sf /usr/bin/qemu-nbd /usr/lib64/qemu-kvm/tests-src/tests/qemu-iotests/qemu-nbd
cd /usr/lib64/qemu-kvm/tests-src/tests/qemu-iotests/
# Run STABLE set of qemu-iotests
./check -v -raw 001 002 004 005 008 009 010 011 012 021 \
025 032 033 048 052 063 077 086 101 106 \
120 140 143 145 150 159 160 162 170 171 \
175 184 221 226
./check -v -qcow2 001 002 004 005 008 009 010 011 012 017 \
018 019 020 021 024 025 027 028 029 032 \
033 034 035 037 038 042 046 047 048 050 \
052 053 058 062 063 066 068 069 072 073 \
074 086 087 089 090 095 098 102 103 105 \
107 108 110 111 120 127 133 134 138 140 \
141 143 144 145 150 154 156 158 159 162 \
170 177 179 182 184 188 190 195 204 217 \
226
./check -v -luks 001 002 004 005 008 009 010 011 012 021 \
025 032 033 048 052 140 143 145 162 184 \
192
./check -v -nbd 001 002 004 005 008 009 010 011 021 032 \
033 077 094 119 123 143 145 162 184

71
tests/tests.yml Normal file
View File

@ -0,0 +1,71 @@
---
- hosts: localhost
remote_user: root
# The following tasks set up the environment for the avocado_qemu
pre_tasks:
- name: Install qemu-kvm and pip3 # This step is to avoid failures when building from a private branch
package:
name: "{{ item }}"
state: latest
with_items:
- qemu-kvm
- python3-pip
- name: Get N-V-R from qemu-kvm
shell: "rpm -q {{ item }} qemu-kvm"
args:
warn: no
register: nvr_values
with_items:
- '--queryformat=%{NAME}'
- '--queryformat=%{VERSION}'
- '--queryformat=%{RELEASE}'
- set_fact:
N: "{{ nvr_values.results[0].stdout }}"
V: "{{ nvr_values.results[1].stdout }}"
R: "{{ nvr_values.results[2].stdout }}"
- name: Install qemu-kvm-tests rpm from brewroot URL
yum:
name: "http://download.devel.redhat.com/brewroot/packages/{{ N }}/{{ V }}/{{ R }}/x86_64/{{ N }}-tests-{{ V }}-{{ R }}.x86_64.rpm"
state: present
- name: Upgrade pip
pip:
name: pip
executable: pip3
state: latest
- name: Avocado installation using pip
pip:
name: avocado-framework
executable: pip3
state: present
- name: Disable IPv6 in sysctl.conf on OSCI node
sysctl:
name: "{{ item }}"
value: 1
sysctl_set: yes
state: present
reload: yes
with_items:
- net.ipv6.conf.all.disable_ipv6
- net.ipv6.conf.default.disable_ipv6
roles:
- role: standard-test-basic
tags:
- classic
tests:
- avocado_qemu:
dir: ./
run: "avocado --show all run -p qemu_bin=/usr/libexec/qemu-kvm /usr/lib64/qemu-kvm/tests-src/tests/acceptance/"
- qemu_iotests:
dir: ./
run: "/bin/bash runtest.sh"
required_packages:
- qemu-kvm
- qemu-kvm-tests

View File

@ -37,81 +37,81 @@ data:
rpms:
SLOF:
rationale: qemu-kvm dep
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 1
arches: [ppc64le]
hivex:
rationale: libguestfs dep
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 1
libguestfs:
rationale: Primary module content
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 4
libguestfs-winsupport:
rationale: Primary module content
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 5
libiscsi:
rationale: qemu-kvm dep
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 1
libvirt:
rationale: Primary module content
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 3
libvirt-dbus:
rationale: libvirt-dbus is part of the virtualization module
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 4
libvirt-python:
rationale: Primary module content
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 4
libnbd:
rationale: Primary module content
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 1
nbdkit:
rationale: Primary module content
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 5
netcf:
rationale: libvirt dep
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 1
perl-Sys-Virt:
rationale: Primary module content
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 4
qemu-kvm:
rationale: Primary module content
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 2
seabios:
rationale: qemu-kvm dep
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 1
arches: [ppc64le, x86_64]
sgabios:
rationale: qemu-kvm dep
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 1
arches: [ppc64le, x86_64]
supermin:
rationale: libguestfs dep
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 2
libtpms:
rationale: Primary module content
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 1
swtpm:
rationale: Primary module content
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 2
virt-v2v:
rationale: Primary module content
ref: stream-rhel-rhel-8.8.0
ref: stream-virt-rhel-rhel-8.9.0
buildorder: 6