diff --git a/tools/test-case-generators/format-request-map.json b/tools/test-case-generators/format-request-map.json new file mode 100644 index 000000000..e6a1c7f7c --- /dev/null +++ b/tools/test-case-generators/format-request-map.json @@ -0,0 +1,206 @@ +{ + "ami": { + "boot": { + "type": "qemu-extract" + }, + "compose-request": { + "distro": "", + "arch": "", + "filename": "image.raw.xz", + "output-format": "ami", + "blueprint": {} + } + }, + "ext4-filesystem": { + "boot": { + "type": "nspawn" + }, + "compose-request": { + "distro": "", + "arch": "", + "output-format": "ext4-filesystem", + "filename": "filesystem.img", + "blueprint": { + "name": "ext4-filesystem-boot-test", + "description": "Image for boot test", + "packages": [ + { + "name": "openssh-server", + "version": "*" + } + ], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + }, + "openstack": { + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "", + "arch": "", + "output-format": "openstack", + "filename": "disk.qcow2", + "blueprint": { + "name": "openstack-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + }, + "partitioned-disk": { + "boot": { + "type": "nspawn" + }, + "compose-request": { + "distro": "", + "arch": "", + "output-format": "partitioned-disk", + "filename": "disk.img", + "blueprint": { + "name": "partitioned-disk-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + }, + "tar": { + "boot": { + "type": "nspawn-extract" + }, + "compose-request": { + "output-format": "tar", + "distro": "", + "arch": "", + "filename": "root.tar.xz", + "blueprint": { + "name": "tar-boot-test", + "description": "Image for boot test", + "packages": [ + { + "name": "openssh-server", + "version": "*" + } + ], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + }, + "qcow2": { + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "", + "arch": "", + "output-format": "qcow2", + "filename": "disk.qcow2", + "blueprint": { + "name": "qcow2-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + }, + "vhd": { + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "", + "arch": "", + "output-format": "vhd", + "filename": "disk.vhd", + "blueprint": { + "name": "vhd-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + }, + "vmdk": { + "boot": { + "type": "qemu" + }, + "compose-request": { + "distro": "", + "arch": "", + "output-format": "vmdk", + "filename": "disk.vmdk", + "blueprint": { + "name": "vmdk-boot-test", + "description": "Image for boot test", + "packages": [], + "modules": [], + "groups": [], + "customizations": { + "user": [ + { + "name": "redhat", + "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC61wMCjOSHwbVb4VfVyl5sn497qW4PsdQ7Ty7aD6wDNZ/QjjULkDV/yW5WjDlDQ7UqFH0Sr7vywjqDizUAqK7zM5FsUKsUXWHWwg/ehKg8j9xKcMv11AkFoUoujtfAujnKODkk58XSA9whPr7qcw3vPrmog680pnMSzf9LC7J6kXfs6lkoKfBh9VnlxusCrw2yg0qI1fHAZBLPx7mW6+me71QZsS6sVz8v8KXyrXsKTdnF50FjzHcK9HXDBtSJS5wA3fkcRYymJe0o6WMWNdgSRVpoSiWaHHmFgdMUJaYoCfhXzyl7LtNb3Q+Sveg+tJK7JaRXBLMUllOlJ6ll5Hod root@localhost" + } + ] + } + } + } + } +} diff --git a/tools/test-case-generators/generate-test-cases b/tools/test-case-generators/generate-test-cases new file mode 100755 index 000000000..09c596908 --- /dev/null +++ b/tools/test-case-generators/generate-test-cases @@ -0,0 +1,31 @@ +#!/usr/bin/python3 + +import argparse +import subprocess +import json +import os +import sys + +def main(distro, arch, store, output): + with open("tools/test-case-generators/format-request-map.json") as format_request_json: + format_request_dict = json.load(format_request_json) + for output_format, test_case_request in format_request_dict.items(): + test_case_request["compose-request"]["distro"] = distro + test_case_request["compose-request"]["arch"] = arch + test_case = json.loads(subprocess.check_output(["tools/test-case-generators/generate-test-case", store], input=json.dumps(test_case_request), encoding="utf-8")) + name = distro.replace("-", "_") + "-" + arch + "-" + output_format.replace("-", "_") + "-boot.json" + file_name = output + "/" + name + with open(file_name, 'w') as case_file: + json.dump(test_case, case_file, indent=2) + return + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description="Generate test cases") + parser.add_argument("--distro", help="distribution for test cases", required=True) + parser.add_argument("--arch", help="architecture for test cases", required=True) + parser.add_argument("--store", metavar="STORE_DIRECTORY", type=os.path.abspath, help="path to the osbuild store", required=True) + parser.add_argument("--output", metavar="OUTPUT_DIRECTORY", type=os.path.abspath, help="path to the output directory", required=True) + args = parser.parse_args() + + main(args.distro, args.arch, args.store, args.output) + sys.exit()