mirror of https://github.com/xemu-project/xemu.git
- qtest patches to get rid of the global_qtest variable in more tests
- some iotests patches that have multiple reviews and thus are ready to go -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAABAgAGBQJc49WfAAoJEC7Z13T+cC21EEoP/0YlSPcn2vid/7NZ+DsZzvDw 0uFCKqYrpzgftbegtv9fg7+MR8r4fxbaH9FQ9mbe8D3FWlYvglLNABTKlY/KmDyl ZLBKmKo+1hSqsqTUd5/QyEMKvuwxEhiL5sT/ktTm34vH6N+PRDjtXrPPFsJWrtVs McZOnetXeAV4+qtfTc3UifK5QRTBR0JgP5JHenkagUw2m2C73IhfcoiKctTXJgGs BfLiBI5jgdoC4Irkh94GVGCPwabL9A+HUoV48ooayErCTGUopgIKuNG8KVIDAdrf yW65M+91J6DUGo27r7OWcQKTOMcch43Piy2VO6C6WIBc/dHm3gvraPCIp9jD3izU SuSA1BdNPwVmTIWxn2jB+RO0fcZgWN8UHqGfQALQ+bZIryKf4yRe2rR1O0qZ0yz6 dukxRUbJiREQs8X0KBUpYfJYfXNwOW9orMkm2Epgolh/SvgNHbsXhyZT9wbi09wp RwQemJ+764GVRrqFJIfCEwGI1Z99I9lIIGzhqRFULOZRechGbnbED6FwcPYyqyaZ WAHPx/SfHUAaUrVcQ3OQV1Bo7kfjiSRotcR5srOwmIAVyW3UynlhJNzxGSGBi0ID kWLHuMuW0R0LTAmHL6h+HJ+LZP39Os0V2zSYrfT5y2kGxLPuB8AXRz82ALymbu9i Riw51nYSlaBW2OpuJjxk =P3eP -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/huth-gitlab/tags/pull-request-2019-05-21' into staging - qtest patches to get rid of the global_qtest variable in more tests - some iotests patches that have multiple reviews and thus are ready to go # gpg: Signature made Tue 21 May 2019 11:40:31 BST # gpg: using RSA key 2ED9D774FE702DB5 # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full] # gpg: aka "Thomas Huth <thuth@redhat.com>" [full] # gpg: aka "Thomas Huth <huth@tuxfamily.org>" [full] # gpg: aka "Thomas Huth <th.huth@posteo.de>" [unknown] # Primary key fingerprint: 27B8 8847 EEE0 2501 18F3 EAB9 2ED9 D774 FE70 2DB5 * remotes/huth-gitlab/tags/pull-request-2019-05-21: tests/qemu-iotests: Remove the "_supported_os Linux" line from many tests cirrus / travis: Add gnu-sed and bash for macOS and FreeBSD tests/qemu-iotests: Do not hard-code the path to bash tests/qemu-iotests/check: Pick a default machine if necessary tests/qemu-iotests/005: Add a sanity check for large sparse file support tests/hd-geo-test: Use qtest_init() instead of qtest_start() tests/device-introspect: Use qtest_init() instead of qtest_start() tests/qom-test: Use qtest_init() instead of qtest_start() tests/numa-test: Use qtest_init() instead of qtest_start() tests/q35-test: Make test independent of global_qtest tests/libqos: Get rid of global_qtest dependency in qvring_init() tests/libqtest: Fix description of qtest_vinitf() and qtest_initf() tests/libqtest: Remove unused global_qtest-related wrapper functions Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
62516a0a18
|
@ -7,7 +7,7 @@ freebsd_12_task:
|
|||
cpu: 8
|
||||
memory: 8G
|
||||
install_script: pkg install -y
|
||||
bison curl cyrus-sasl git glib gmake gnutls
|
||||
bash bison curl cyrus-sasl git glib gmake gnutls gsed
|
||||
nettle perl5 pixman pkgconf png usbredir
|
||||
script:
|
||||
- mkdir build
|
||||
|
@ -20,7 +20,7 @@ macos_task:
|
|||
osx_instance:
|
||||
image: mojave-base
|
||||
install_script:
|
||||
- brew install pkg-config python glib pixman make sdl2
|
||||
- brew install pkg-config python gnu-sed glib pixman make sdl2
|
||||
script:
|
||||
- ./configure --python=/usr/local/bin/python3 || { cat config.log; exit 1; }
|
||||
- gmake -j$(sysctl -n hw.ncpu)
|
||||
|
|
|
@ -42,6 +42,7 @@ addons:
|
|||
packages:
|
||||
- glib
|
||||
- pixman
|
||||
- gnu-sed
|
||||
|
||||
|
||||
# The channel name "irc.oftc.net#qemu" is encrypted against qemu/qemu
|
||||
|
|
|
@ -26,7 +26,8 @@
|
|||
|
||||
const char common_args[] = "-nodefaults -machine none";
|
||||
|
||||
static QList *qom_list_types(const char *implements, bool abstract)
|
||||
static QList *qom_list_types(QTestState * qts, const char *implements,
|
||||
bool abstract)
|
||||
{
|
||||
QDict *resp;
|
||||
QList *ret;
|
||||
|
@ -36,8 +37,8 @@ static QList *qom_list_types(const char *implements, bool abstract)
|
|||
if (implements) {
|
||||
qdict_put_str(args, "implements", implements);
|
||||
}
|
||||
resp = qmp("{'execute': 'qom-list-types',"
|
||||
" 'arguments': %p }", args);
|
||||
resp = qtest_qmp(qts, "{'execute': 'qom-list-types', 'arguments': %p }",
|
||||
args);
|
||||
g_assert(qdict_haskey(resp, "return"));
|
||||
ret = qdict_get_qlist(resp, "return");
|
||||
qobject_ref(ret);
|
||||
|
@ -95,12 +96,12 @@ static QDict *type_list_find(QList *types, const char *name)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static QList *device_type_list(bool abstract)
|
||||
static QList *device_type_list(QTestState *qts, bool abstract)
|
||||
{
|
||||
return qom_list_types("device", abstract);
|
||||
return qom_list_types(qts, "device", abstract);
|
||||
}
|
||||
|
||||
static void test_one_device(const char *type)
|
||||
static void test_one_device(QTestState *qts, const char *type)
|
||||
{
|
||||
QDict *resp;
|
||||
char *help;
|
||||
|
@ -109,15 +110,15 @@ static void test_one_device(const char *type)
|
|||
|
||||
g_test_message("Testing device '%s'", type);
|
||||
|
||||
qom_tree_start = hmp("info qom-tree");
|
||||
qtree_start = hmp("info qtree");
|
||||
qom_tree_start = qtest_hmp(qts, "info qom-tree");
|
||||
qtree_start = qtest_hmp(qts, "info qtree");
|
||||
|
||||
resp = qmp("{'execute': 'device-list-properties',"
|
||||
" 'arguments': {'typename': %s}}",
|
||||
resp = qtest_qmp(qts, "{'execute': 'device-list-properties',"
|
||||
" 'arguments': {'typename': %s}}",
|
||||
type);
|
||||
qobject_unref(resp);
|
||||
|
||||
help = hmp("device_add \"%s,help\"", type);
|
||||
help = qtest_hmp(qts, "device_add \"%s,help\"", type);
|
||||
g_free(help);
|
||||
|
||||
/*
|
||||
|
@ -125,12 +126,12 @@ static void test_one_device(const char *type)
|
|||
* "info qom-tree" or "info qtree" have a good chance at crashing then.
|
||||
* Also make sure that the tree did not change.
|
||||
*/
|
||||
qom_tree_end = hmp("info qom-tree");
|
||||
qom_tree_end = qtest_hmp(qts, "info qom-tree");
|
||||
g_assert_cmpstr(qom_tree_start, ==, qom_tree_end);
|
||||
g_free(qom_tree_start);
|
||||
g_free(qom_tree_end);
|
||||
|
||||
qtree_end = hmp("info qtree");
|
||||
qtree_end = qtest_hmp(qts, "info qtree");
|
||||
g_assert_cmpstr(qtree_start, ==, qtree_end);
|
||||
g_free(qtree_start);
|
||||
g_free(qtree_end);
|
||||
|
@ -140,29 +141,30 @@ static void test_device_intro_list(void)
|
|||
{
|
||||
QList *types;
|
||||
char *help;
|
||||
QTestState *qts;
|
||||
|
||||
qtest_start(common_args);
|
||||
qts = qtest_init(common_args);
|
||||
|
||||
types = device_type_list(true);
|
||||
types = device_type_list(qts, true);
|
||||
qobject_unref(types);
|
||||
|
||||
help = hmp("device_add help");
|
||||
help = qtest_hmp(qts, "device_add help");
|
||||
g_free(help);
|
||||
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
}
|
||||
|
||||
/*
|
||||
* Ensure all entries returned by qom-list-types implements=<parent>
|
||||
* have <parent> as a parent.
|
||||
*/
|
||||
static void test_qom_list_parents(const char *parent)
|
||||
static void test_qom_list_parents(QTestState *qts, const char *parent)
|
||||
{
|
||||
QList *types;
|
||||
QListEntry *e;
|
||||
QDict *index;
|
||||
|
||||
types = qom_list_types(parent, true);
|
||||
types = qom_list_types(qts, parent, true);
|
||||
index = qom_type_index(types);
|
||||
|
||||
QLIST_FOREACH_ENTRY(types, e) {
|
||||
|
@ -181,11 +183,12 @@ static void test_qom_list_fields(void)
|
|||
QList *all_types;
|
||||
QList *non_abstract;
|
||||
QListEntry *e;
|
||||
QTestState *qts;
|
||||
|
||||
qtest_start(common_args);
|
||||
qts = qtest_init(common_args);
|
||||
|
||||
all_types = qom_list_types(NULL, true);
|
||||
non_abstract = qom_list_types(NULL, false);
|
||||
all_types = qom_list_types(qts, NULL, true);
|
||||
non_abstract = qom_list_types(qts, NULL, false);
|
||||
|
||||
QLIST_FOREACH_ENTRY(all_types, e) {
|
||||
QDict *d = qobject_to(QDict, qlist_entry_obj(e));
|
||||
|
@ -198,27 +201,29 @@ static void test_qom_list_fields(void)
|
|||
g_assert(abstract == expected_abstract);
|
||||
}
|
||||
|
||||
test_qom_list_parents("object");
|
||||
test_qom_list_parents("device");
|
||||
test_qom_list_parents("sys-bus-device");
|
||||
test_qom_list_parents(qts, "object");
|
||||
test_qom_list_parents(qts, "device");
|
||||
test_qom_list_parents(qts, "sys-bus-device");
|
||||
|
||||
qobject_unref(all_types);
|
||||
qobject_unref(non_abstract);
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
}
|
||||
|
||||
static void test_device_intro_none(void)
|
||||
{
|
||||
qtest_start(common_args);
|
||||
test_one_device("nonexistent");
|
||||
qtest_end();
|
||||
QTestState *qts = qtest_init(common_args);
|
||||
|
||||
test_one_device(qts, "nonexistent");
|
||||
qtest_quit(qts);
|
||||
}
|
||||
|
||||
static void test_device_intro_abstract(void)
|
||||
{
|
||||
qtest_start(common_args);
|
||||
test_one_device("device");
|
||||
qtest_end();
|
||||
QTestState *qts = qtest_init(common_args);
|
||||
|
||||
test_one_device(qts, "device");
|
||||
qtest_quit(qts);
|
||||
}
|
||||
|
||||
static void test_device_intro_concrete(const void *args)
|
||||
|
@ -226,19 +231,20 @@ static void test_device_intro_concrete(const void *args)
|
|||
QList *types;
|
||||
QListEntry *entry;
|
||||
const char *type;
|
||||
QTestState *qts;
|
||||
|
||||
qtest_start(args);
|
||||
types = device_type_list(false);
|
||||
qts = qtest_init(args);
|
||||
types = device_type_list(qts, false);
|
||||
|
||||
QLIST_FOREACH_ENTRY(types, entry) {
|
||||
type = qdict_get_try_str(qobject_to(QDict, qlist_entry_obj(entry)),
|
||||
"name");
|
||||
g_assert(type);
|
||||
test_one_device(type);
|
||||
test_one_device(qts, type);
|
||||
}
|
||||
|
||||
qobject_unref(types);
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
g_free((void *)args);
|
||||
}
|
||||
|
||||
|
@ -247,10 +253,11 @@ static void test_abstract_interfaces(void)
|
|||
QList *all_types;
|
||||
QListEntry *e;
|
||||
QDict *index;
|
||||
QTestState *qts;
|
||||
|
||||
qtest_start(common_args);
|
||||
qts = qtest_init(common_args);
|
||||
|
||||
all_types = qom_list_types("interface", true);
|
||||
all_types = qom_list_types(qts, "interface", true);
|
||||
index = qom_type_index(all_types);
|
||||
|
||||
QLIST_FOREACH_ENTRY(all_types, e) {
|
||||
|
@ -273,7 +280,7 @@ static void test_abstract_interfaces(void)
|
|||
|
||||
qobject_unref(all_types);
|
||||
qobject_unref(index);
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
}
|
||||
|
||||
static void add_machine_test_case(const char *mname)
|
||||
|
|
|
@ -77,33 +77,35 @@ static bool is_hd(const CHST *expected_chst)
|
|||
return expected_chst && expected_chst->cyls;
|
||||
}
|
||||
|
||||
static void test_cmos_byte(int reg, int expected)
|
||||
static void test_cmos_byte(QTestState *qts, int reg, int expected)
|
||||
{
|
||||
enum { cmos_base = 0x70 };
|
||||
int actual;
|
||||
|
||||
outb(cmos_base + 0, reg);
|
||||
actual = inb(cmos_base + 1);
|
||||
qtest_outb(qts, cmos_base + 0, reg);
|
||||
actual = qtest_inb(qts, cmos_base + 1);
|
||||
g_assert(actual == expected);
|
||||
}
|
||||
|
||||
static void test_cmos_bytes(int reg0, int n, uint8_t expected[])
|
||||
static void test_cmos_bytes(QTestState *qts, int reg0, int n,
|
||||
uint8_t expected[])
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 9; i++) {
|
||||
test_cmos_byte(reg0 + i, expected[i]);
|
||||
test_cmos_byte(qts, reg0 + i, expected[i]);
|
||||
}
|
||||
}
|
||||
|
||||
static void test_cmos_disk_data(void)
|
||||
static void test_cmos_disk_data(QTestState *qts)
|
||||
{
|
||||
test_cmos_byte(0x12,
|
||||
test_cmos_byte(qts, 0x12,
|
||||
(is_hd(cur_ide[0]) ? 0xf0 : 0) |
|
||||
(is_hd(cur_ide[1]) ? 0x0f : 0));
|
||||
}
|
||||
|
||||
static void test_cmos_drive_cyl(int reg0, const CHST *expected_chst)
|
||||
static void test_cmos_drive_cyl(QTestState *qts, int reg0,
|
||||
const CHST *expected_chst)
|
||||
{
|
||||
if (is_hd(expected_chst)) {
|
||||
int c = expected_chst->cyls;
|
||||
|
@ -113,29 +115,29 @@ static void test_cmos_drive_cyl(int reg0, const CHST *expected_chst)
|
|||
c & 0xff, c >> 8, h, 0xff, 0xff, 0xc0 | ((h > 8) << 3),
|
||||
c & 0xff, c >> 8, s
|
||||
};
|
||||
test_cmos_bytes(reg0, 9, expected_bytes);
|
||||
test_cmos_bytes(qts, reg0, 9, expected_bytes);
|
||||
} else {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 9; i++) {
|
||||
test_cmos_byte(reg0 + i, 0);
|
||||
test_cmos_byte(qts, reg0 + i, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void test_cmos_drive1(void)
|
||||
static void test_cmos_drive1(QTestState *qts)
|
||||
{
|
||||
test_cmos_byte(0x19, is_hd(cur_ide[0]) ? 47 : 0);
|
||||
test_cmos_drive_cyl(0x1b, cur_ide[0]);
|
||||
test_cmos_byte(qts, 0x19, is_hd(cur_ide[0]) ? 47 : 0);
|
||||
test_cmos_drive_cyl(qts, 0x1b, cur_ide[0]);
|
||||
}
|
||||
|
||||
static void test_cmos_drive2(void)
|
||||
static void test_cmos_drive2(QTestState *qts)
|
||||
{
|
||||
test_cmos_byte(0x1a, is_hd(cur_ide[1]) ? 47 : 0);
|
||||
test_cmos_drive_cyl(0x24, cur_ide[1]);
|
||||
test_cmos_byte(qts, 0x1a, is_hd(cur_ide[1]) ? 47 : 0);
|
||||
test_cmos_drive_cyl(qts, 0x24, cur_ide[1]);
|
||||
}
|
||||
|
||||
static void test_cmos_disktransflag(void)
|
||||
static void test_cmos_disktransflag(QTestState *qts)
|
||||
{
|
||||
int val, i;
|
||||
|
||||
|
@ -145,15 +147,15 @@ static void test_cmos_disktransflag(void)
|
|||
val |= cur_ide[i]->trans << (2 * i);
|
||||
}
|
||||
}
|
||||
test_cmos_byte(0x39, val);
|
||||
test_cmos_byte(qts, 0x39, val);
|
||||
}
|
||||
|
||||
static void test_cmos(void)
|
||||
static void test_cmos(QTestState *qts)
|
||||
{
|
||||
test_cmos_disk_data();
|
||||
test_cmos_drive1();
|
||||
test_cmos_drive2();
|
||||
test_cmos_disktransflag();
|
||||
test_cmos_disk_data(qts);
|
||||
test_cmos_drive1(qts);
|
||||
test_cmos_drive2(qts);
|
||||
test_cmos_disktransflag(qts);
|
||||
}
|
||||
|
||||
static int append_arg(int argc, char *argv[], int argv_sz, char *arg)
|
||||
|
@ -238,14 +240,15 @@ static void test_ide_none(void)
|
|||
{
|
||||
char **argv = g_new0(char *, ARGV_SIZE);
|
||||
char *args;
|
||||
QTestState *qts;
|
||||
|
||||
setup_common(argv, ARGV_SIZE);
|
||||
args = g_strjoinv(" ", argv);
|
||||
qtest_start(args);
|
||||
qts = qtest_init(args);
|
||||
g_strfreev(argv);
|
||||
g_free(args);
|
||||
test_cmos();
|
||||
qtest_end();
|
||||
test_cmos(qts);
|
||||
qtest_quit(qts);
|
||||
}
|
||||
|
||||
static void test_ide_mbr(bool use_device, MBRcontents mbr)
|
||||
|
@ -255,6 +258,7 @@ static void test_ide_mbr(bool use_device, MBRcontents mbr)
|
|||
int argc;
|
||||
Backend i;
|
||||
const char *dev;
|
||||
QTestState *qts;
|
||||
|
||||
argc = setup_common(argv, ARGV_SIZE);
|
||||
for (i = 0; i < backend_last; i++) {
|
||||
|
@ -263,11 +267,11 @@ static void test_ide_mbr(bool use_device, MBRcontents mbr)
|
|||
argc = setup_ide(argc, argv, ARGV_SIZE, i, dev, i, mbr);
|
||||
}
|
||||
args = g_strjoinv(" ", argv);
|
||||
qtest_start(args);
|
||||
qts = qtest_init(args);
|
||||
g_strfreev(argv);
|
||||
g_free(args);
|
||||
test_cmos();
|
||||
qtest_end();
|
||||
test_cmos(qts);
|
||||
qtest_quit(qts);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -325,6 +329,7 @@ static void test_ide_drive_user(const char *dev, bool trans)
|
|||
int argc;
|
||||
int secs = img_secs[backend_small];
|
||||
const CHST expected_chst = { secs / (4 * 32) , 4, 32, trans };
|
||||
QTestState *qts;
|
||||
|
||||
argc = setup_common(argv, ARGV_SIZE);
|
||||
opts = g_strdup_printf("%s,%scyls=%d,heads=%d,secs=%d",
|
||||
|
@ -335,11 +340,11 @@ static void test_ide_drive_user(const char *dev, bool trans)
|
|||
argc = setup_ide(argc, argv, ARGV_SIZE, 0, opts, backend_small, mbr_chs);
|
||||
g_free(opts);
|
||||
args = g_strjoinv(" ", argv);
|
||||
qtest_start(args);
|
||||
qts = qtest_init(args);
|
||||
g_strfreev(argv);
|
||||
g_free(args);
|
||||
test_cmos();
|
||||
qtest_end();
|
||||
test_cmos(qts);
|
||||
qtest_quit(qts);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -367,6 +372,7 @@ static void test_ide_drive_cd_0(void)
|
|||
char *args;
|
||||
int argc, ide_idx;
|
||||
Backend i;
|
||||
QTestState *qts;
|
||||
|
||||
argc = setup_common(argv, ARGV_SIZE);
|
||||
for (i = 0; i <= backend_empty; i++) {
|
||||
|
@ -375,11 +381,11 @@ static void test_ide_drive_cd_0(void)
|
|||
argc = setup_ide(argc, argv, ARGV_SIZE, ide_idx, NULL, i, mbr_blank);
|
||||
}
|
||||
args = g_strjoinv(" ", argv);
|
||||
qtest_start(args);
|
||||
qts = qtest_init(args);
|
||||
g_strfreev(argv);
|
||||
g_free(args);
|
||||
test_cmos();
|
||||
qtest_end();
|
||||
test_cmos(qts);
|
||||
qtest_quit(qts);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
|
|
@ -148,7 +148,7 @@ static QVirtQueue *qvirtio_mmio_virtqueue_setup(QVirtioDevice *d,
|
|||
g_assert_cmpint(vq->size & (vq->size - 1), ==, 0);
|
||||
|
||||
addr = guest_alloc(alloc, qvring_size(vq->size, dev->page_size));
|
||||
qvring_init(alloc, vq, addr);
|
||||
qvring_init(dev->qts, alloc, vq, addr);
|
||||
qvirtio_mmio_set_queue_address(d, vq->desc / dev->page_size);
|
||||
|
||||
return vq;
|
||||
|
|
|
@ -199,6 +199,7 @@ static QVirtQueue *qvirtio_pci_virtqueue_setup(QVirtioDevice *d,
|
|||
uint32_t feat;
|
||||
uint64_t addr;
|
||||
QVirtQueuePCI *vqpci;
|
||||
QVirtioPCIDevice *qvpcidev = container_of(d, QVirtioPCIDevice, vdev);
|
||||
|
||||
vqpci = g_malloc0(sizeof(*vqpci));
|
||||
feat = qvirtio_pci_get_guest_features(d);
|
||||
|
@ -224,7 +225,7 @@ static QVirtQueue *qvirtio_pci_virtqueue_setup(QVirtioDevice *d,
|
|||
|
||||
addr = guest_alloc(alloc, qvring_size(vqpci->vq.size,
|
||||
VIRTIO_PCI_VRING_ALIGN));
|
||||
qvring_init(alloc, &vqpci->vq, addr);
|
||||
qvring_init(qvpcidev->pdev->bus->qts, alloc, &vqpci->vq, addr);
|
||||
qvirtio_pci_set_queue_address(d, vqpci->vq.desc / VIRTIO_PCI_VRING_ALIGN);
|
||||
|
||||
return &vqpci->vq;
|
||||
|
|
|
@ -162,7 +162,8 @@ void qvirtio_wait_config_isr(QVirtioDevice *d, gint64 timeout_us)
|
|||
}
|
||||
}
|
||||
|
||||
void qvring_init(const QGuestAllocator *alloc, QVirtQueue *vq, uint64_t addr)
|
||||
void qvring_init(QTestState *qts, const QGuestAllocator *alloc, QVirtQueue *vq,
|
||||
uint64_t addr)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -173,22 +174,23 @@ void qvring_init(const QGuestAllocator *alloc, QVirtQueue *vq, uint64_t addr)
|
|||
|
||||
for (i = 0; i < vq->size - 1; i++) {
|
||||
/* vq->desc[i].addr */
|
||||
writeq(vq->desc + (16 * i), 0);
|
||||
qtest_writeq(qts, vq->desc + (16 * i), 0);
|
||||
/* vq->desc[i].next */
|
||||
writew(vq->desc + (16 * i) + 14, i + 1);
|
||||
qtest_writew(qts, vq->desc + (16 * i) + 14, i + 1);
|
||||
}
|
||||
|
||||
/* vq->avail->flags */
|
||||
writew(vq->avail, 0);
|
||||
qtest_writew(qts, vq->avail, 0);
|
||||
/* vq->avail->idx */
|
||||
writew(vq->avail + 2, 0);
|
||||
qtest_writew(qts, vq->avail + 2, 0);
|
||||
/* vq->avail->used_event */
|
||||
writew(vq->avail + 4 + (2 * vq->size), 0);
|
||||
qtest_writew(qts, vq->avail + 4 + (2 * vq->size), 0);
|
||||
|
||||
/* vq->used->flags */
|
||||
writew(vq->used, 0);
|
||||
qtest_writew(qts, vq->used, 0);
|
||||
/* vq->used->avail_event */
|
||||
writew(vq->used + 2 + sizeof(struct vring_used_elem) * vq->size, 0);
|
||||
qtest_writew(qts, vq->used + 2 + sizeof(struct vring_used_elem) * vq->size,
|
||||
0);
|
||||
}
|
||||
|
||||
QVRingIndirectDesc *qvring_indirect_desc_setup(QVirtioDevice *d,
|
||||
|
|
|
@ -129,7 +129,8 @@ QVirtQueue *qvirtqueue_setup(QVirtioDevice *d,
|
|||
void qvirtqueue_cleanup(const QVirtioBus *bus, QVirtQueue *vq,
|
||||
QGuestAllocator *alloc);
|
||||
|
||||
void qvring_init(const QGuestAllocator *alloc, QVirtQueue *vq, uint64_t addr);
|
||||
void qvring_init(QTestState *qts, const QGuestAllocator *alloc, QVirtQueue *vq,
|
||||
uint64_t addr);
|
||||
QVRingIndirectDesc *qvring_indirect_desc_setup(QVirtioDevice *d,
|
||||
QGuestAllocator *alloc, uint16_t elem);
|
||||
void qvring_indirect_desc_add(QVRingIndirectDesc *indirect, uint64_t data,
|
||||
|
|
|
@ -1038,15 +1038,6 @@ QDict *qmp(const char *fmt, ...)
|
|||
return response;
|
||||
}
|
||||
|
||||
void qmp_send(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, fmt);
|
||||
qtest_qmp_vsend(global_qtest, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
|
||||
char *hmp(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
@ -1232,7 +1223,7 @@ void qtest_qmp_device_del(const char *id)
|
|||
&got_event);
|
||||
qobject_unref(rsp);
|
||||
if (!got_event) {
|
||||
rsp = qmp_receive();
|
||||
rsp = qtest_qmp_receive(global_qtest);
|
||||
g_assert_cmpstr(qdict_get_try_str(rsp, "event"),
|
||||
==, "DEVICE_DELETED");
|
||||
qobject_unref(rsp);
|
||||
|
|
112
tests/libqtest.h
112
tests/libqtest.h
|
@ -29,7 +29,7 @@ extern QTestState *global_qtest;
|
|||
* @fmt...: Format for creating other arguments to pass to QEMU, formatted
|
||||
* like sprintf().
|
||||
*
|
||||
* Convenience wrapper around qtest_start().
|
||||
* Convenience wrapper around qtest_init().
|
||||
*
|
||||
* Returns: #QTestState instance.
|
||||
*/
|
||||
|
@ -41,7 +41,7 @@ QTestState *qtest_initf(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
|
|||
* like vsprintf().
|
||||
* @ap: Format arguments.
|
||||
*
|
||||
* Convenience wrapper around qtest_start().
|
||||
* Convenience wrapper around qtest_init().
|
||||
*
|
||||
* Returns: #QTestState instance.
|
||||
*/
|
||||
|
@ -618,26 +618,6 @@ static inline void qtest_end(void)
|
|||
*/
|
||||
QDict *qmp(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
|
||||
|
||||
/**
|
||||
* qmp_send:
|
||||
* @fmt...: QMP message to send to qemu, formatted like
|
||||
* qobject_from_jsonf_nofail(). See parse_escape() for what's
|
||||
* supported after '%'.
|
||||
*
|
||||
* Sends a QMP message to QEMU and leaves the response in the stream.
|
||||
*/
|
||||
void qmp_send(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
|
||||
|
||||
/**
|
||||
* qmp_receive:
|
||||
*
|
||||
* Reads a QMP message from QEMU and returns the response.
|
||||
*/
|
||||
static inline QDict *qmp_receive(void)
|
||||
{
|
||||
return qtest_qmp_receive(global_qtest);
|
||||
}
|
||||
|
||||
/**
|
||||
* qmp_eventwait:
|
||||
* @s: #event event to wait for.
|
||||
|
@ -649,18 +629,6 @@ static inline void qmp_eventwait(const char *event)
|
|||
return qtest_qmp_eventwait(global_qtest, event);
|
||||
}
|
||||
|
||||
/**
|
||||
* qmp_eventwait_ref:
|
||||
* @s: #event event to wait for.
|
||||
*
|
||||
* Continuously polls for QMP responses until it receives the desired event.
|
||||
* Returns a copy of the event for further investigation.
|
||||
*/
|
||||
static inline QDict *qmp_eventwait_ref(const char *event)
|
||||
{
|
||||
return qtest_qmp_eventwait_ref(global_qtest, event);
|
||||
}
|
||||
|
||||
/**
|
||||
* hmp:
|
||||
* @fmt...: HMP command to send to QEMU, formats arguments like sprintf().
|
||||
|
@ -682,30 +650,6 @@ static inline bool get_irq(int num)
|
|||
return qtest_get_irq(global_qtest, num);
|
||||
}
|
||||
|
||||
/**
|
||||
* irq_intercept_in:
|
||||
* @string: QOM path of a device.
|
||||
*
|
||||
* Associate qtest irqs with the GPIO-in pins of the device
|
||||
* whose path is specified by @string.
|
||||
*/
|
||||
static inline void irq_intercept_in(const char *string)
|
||||
{
|
||||
qtest_irq_intercept_in(global_qtest, string);
|
||||
}
|
||||
|
||||
/**
|
||||
* qtest_irq_intercept_out:
|
||||
* @string: QOM path of a device.
|
||||
*
|
||||
* Associate qtest irqs with the GPIO-out pins of the device
|
||||
* whose path is specified by @string.
|
||||
*/
|
||||
static inline void irq_intercept_out(const char *string)
|
||||
{
|
||||
qtest_irq_intercept_out(global_qtest, string);
|
||||
}
|
||||
|
||||
/**
|
||||
* outb:
|
||||
* @addr: I/O port to write to.
|
||||
|
@ -894,19 +838,6 @@ static inline void memread(uint64_t addr, void *data, size_t size)
|
|||
qtest_memread(global_qtest, addr, data, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* bufread:
|
||||
* @addr: Guest address to read from.
|
||||
* @data: Pointer to where memory contents will be stored.
|
||||
* @size: Number of bytes to read.
|
||||
*
|
||||
* Read guest memory into a buffer, receive using a base64 encoding.
|
||||
*/
|
||||
static inline void bufread(uint64_t addr, void *data, size_t size)
|
||||
{
|
||||
qtest_bufread(global_qtest, addr, data, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* memwrite:
|
||||
* @addr: Guest address to write to.
|
||||
|
@ -920,32 +851,6 @@ static inline void memwrite(uint64_t addr, const void *data, size_t size)
|
|||
qtest_memwrite(global_qtest, addr, data, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* bufwrite:
|
||||
* @addr: Guest address to write to.
|
||||
* @data: Pointer to the bytes that will be written to guest memory.
|
||||
* @size: Number of bytes to write.
|
||||
*
|
||||
* Write a buffer to guest memory, transmit using a base64 encoding.
|
||||
*/
|
||||
static inline void bufwrite(uint64_t addr, const void *data, size_t size)
|
||||
{
|
||||
qtest_bufwrite(global_qtest, addr, data, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* qmemset:
|
||||
* @addr: Guest address to write to.
|
||||
* @patt: Byte pattern to fill the guest memory region with.
|
||||
* @size: Number of bytes to write.
|
||||
*
|
||||
* Write a pattern to guest memory.
|
||||
*/
|
||||
static inline void qmemset(uint64_t addr, uint8_t patt, size_t size)
|
||||
{
|
||||
qtest_memset(global_qtest, addr, patt, size);
|
||||
}
|
||||
|
||||
/**
|
||||
* clock_step_next:
|
||||
*
|
||||
|
@ -971,19 +876,6 @@ static inline int64_t clock_step(int64_t step)
|
|||
return qtest_clock_step(global_qtest, step);
|
||||
}
|
||||
|
||||
/**
|
||||
* clock_set:
|
||||
* @val: Nanoseconds value to advance the clock to.
|
||||
*
|
||||
* Advance the QEMU_CLOCK_VIRTUAL to @val nanoseconds since the VM was launched.
|
||||
*
|
||||
* Returns: The current value of the QEMU_CLOCK_VIRTUAL in nanoseconds.
|
||||
*/
|
||||
static inline int64_t clock_set(int64_t val)
|
||||
{
|
||||
return qtest_clock_set(global_qtest, val);
|
||||
}
|
||||
|
||||
QDict *qmp_fd_receive(int fd);
|
||||
void qmp_fd_vsend(int fd, const char *fmt, va_list ap) GCC_FMT_ATTR(2, 0);
|
||||
void qmp_fd_send(int fd, const char *fmt, ...) GCC_FMT_ATTR(2, 3);
|
||||
|
|
|
@ -23,18 +23,19 @@ static void test_mon_explicit(const void *data)
|
|||
{
|
||||
char *s;
|
||||
char *cli;
|
||||
QTestState *qts;
|
||||
|
||||
cli = make_cli(data, "-smp 8 "
|
||||
"-numa node,nodeid=0,cpus=0-3 "
|
||||
"-numa node,nodeid=1,cpus=4-7 ");
|
||||
qtest_start(cli);
|
||||
qts = qtest_init(cli);
|
||||
|
||||
s = hmp("info numa");
|
||||
s = qtest_hmp(qts, "info numa");
|
||||
g_assert(strstr(s, "node 0 cpus: 0 1 2 3"));
|
||||
g_assert(strstr(s, "node 1 cpus: 4 5 6 7"));
|
||||
g_free(s);
|
||||
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
g_free(cli);
|
||||
}
|
||||
|
||||
|
@ -42,16 +43,17 @@ static void test_mon_default(const void *data)
|
|||
{
|
||||
char *s;
|
||||
char *cli;
|
||||
QTestState *qts;
|
||||
|
||||
cli = make_cli(data, "-smp 8 -numa node -numa node");
|
||||
qtest_start(cli);
|
||||
qts = qtest_init(cli);
|
||||
|
||||
s = hmp("info numa");
|
||||
s = qtest_hmp(qts, "info numa");
|
||||
g_assert(strstr(s, "node 0 cpus: 0 2 4 6"));
|
||||
g_assert(strstr(s, "node 1 cpus: 1 3 5 7"));
|
||||
g_free(s);
|
||||
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
g_free(cli);
|
||||
}
|
||||
|
||||
|
@ -59,24 +61,25 @@ static void test_mon_partial(const void *data)
|
|||
{
|
||||
char *s;
|
||||
char *cli;
|
||||
QTestState *qts;
|
||||
|
||||
cli = make_cli(data, "-smp 8 "
|
||||
"-numa node,nodeid=0,cpus=0-1 "
|
||||
"-numa node,nodeid=1,cpus=4-5 ");
|
||||
qtest_start(cli);
|
||||
qts = qtest_init(cli);
|
||||
|
||||
s = hmp("info numa");
|
||||
s = qtest_hmp(qts, "info numa");
|
||||
g_assert(strstr(s, "node 0 cpus: 0 1 2 3 6 7"));
|
||||
g_assert(strstr(s, "node 1 cpus: 4 5"));
|
||||
g_free(s);
|
||||
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
g_free(cli);
|
||||
}
|
||||
|
||||
static QList *get_cpus(QDict **resp)
|
||||
static QList *get_cpus(QTestState *qts, QDict **resp)
|
||||
{
|
||||
*resp = qmp("{ 'execute': 'query-cpus' }");
|
||||
*resp = qtest_qmp(qts, "{ 'execute': 'query-cpus' }");
|
||||
g_assert(*resp);
|
||||
g_assert(qdict_haskey(*resp, "return"));
|
||||
return qdict_get_qlist(*resp, "return");
|
||||
|
@ -88,10 +91,11 @@ static void test_query_cpus(const void *data)
|
|||
QDict *resp;
|
||||
QList *cpus;
|
||||
QObject *e;
|
||||
QTestState *qts;
|
||||
|
||||
cli = make_cli(data, "-smp 8 -numa node,cpus=0-3 -numa node,cpus=4-7");
|
||||
qtest_start(cli);
|
||||
cpus = get_cpus(&resp);
|
||||
qts = qtest_init(cli);
|
||||
cpus = get_cpus(qts, &resp);
|
||||
g_assert(cpus);
|
||||
|
||||
while ((e = qlist_pop(cpus))) {
|
||||
|
@ -115,7 +119,7 @@ static void test_query_cpus(const void *data)
|
|||
}
|
||||
|
||||
qobject_unref(resp);
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
g_free(cli);
|
||||
}
|
||||
|
||||
|
@ -125,6 +129,7 @@ static void pc_numa_cpu(const void *data)
|
|||
QDict *resp;
|
||||
QList *cpus;
|
||||
QObject *e;
|
||||
QTestState *qts;
|
||||
|
||||
cli = make_cli(data, "-cpu pentium -smp 8,sockets=2,cores=2,threads=2 "
|
||||
"-numa node,nodeid=0 -numa node,nodeid=1 "
|
||||
|
@ -132,8 +137,8 @@ static void pc_numa_cpu(const void *data)
|
|||
"-numa cpu,node-id=0,socket-id=1,core-id=0 "
|
||||
"-numa cpu,node-id=0,socket-id=1,core-id=1,thread-id=0 "
|
||||
"-numa cpu,node-id=1,socket-id=1,core-id=1,thread-id=1");
|
||||
qtest_start(cli);
|
||||
cpus = get_cpus(&resp);
|
||||
qts = qtest_init(cli);
|
||||
cpus = get_cpus(qts, &resp);
|
||||
g_assert(cpus);
|
||||
|
||||
while ((e = qlist_pop(cpus))) {
|
||||
|
@ -168,7 +173,7 @@ static void pc_numa_cpu(const void *data)
|
|||
}
|
||||
|
||||
qobject_unref(resp);
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
g_free(cli);
|
||||
}
|
||||
|
||||
|
@ -178,6 +183,7 @@ static void spapr_numa_cpu(const void *data)
|
|||
QDict *resp;
|
||||
QList *cpus;
|
||||
QObject *e;
|
||||
QTestState *qts;
|
||||
|
||||
cli = make_cli(data, "-smp 4,cores=4 "
|
||||
"-numa node,nodeid=0 -numa node,nodeid=1 "
|
||||
|
@ -185,8 +191,8 @@ static void spapr_numa_cpu(const void *data)
|
|||
"-numa cpu,node-id=0,core-id=1 "
|
||||
"-numa cpu,node-id=0,core-id=2 "
|
||||
"-numa cpu,node-id=1,core-id=3");
|
||||
qtest_start(cli);
|
||||
cpus = get_cpus(&resp);
|
||||
qts = qtest_init(cli);
|
||||
cpus = get_cpus(qts, &resp);
|
||||
g_assert(cpus);
|
||||
|
||||
while ((e = qlist_pop(cpus))) {
|
||||
|
@ -213,7 +219,7 @@ static void spapr_numa_cpu(const void *data)
|
|||
}
|
||||
|
||||
qobject_unref(resp);
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
g_free(cli);
|
||||
}
|
||||
|
||||
|
@ -223,13 +229,14 @@ static void aarch64_numa_cpu(const void *data)
|
|||
QDict *resp;
|
||||
QList *cpus;
|
||||
QObject *e;
|
||||
QTestState *qts;
|
||||
|
||||
cli = make_cli(data, "-smp 2 "
|
||||
"-numa node,nodeid=0 -numa node,nodeid=1 "
|
||||
"-numa cpu,node-id=1,thread-id=0 "
|
||||
"-numa cpu,node-id=0,thread-id=1");
|
||||
qtest_start(cli);
|
||||
cpus = get_cpus(&resp);
|
||||
qts = qtest_init(cli);
|
||||
cpus = get_cpus(qts, &resp);
|
||||
g_assert(cpus);
|
||||
|
||||
while ((e = qlist_pop(cpus))) {
|
||||
|
@ -256,7 +263,7 @@ static void aarch64_numa_cpu(const void *data)
|
|||
}
|
||||
|
||||
qobject_unref(resp);
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
g_free(cli);
|
||||
}
|
||||
|
||||
|
|
|
@ -84,10 +84,11 @@ static void test_smram_lock(void)
|
|||
QPCIBus *pcibus;
|
||||
QPCIDevice *pcidev;
|
||||
QDict *response;
|
||||
QTestState *qts;
|
||||
|
||||
qtest_start("-M q35");
|
||||
qts = qtest_init("-M q35");
|
||||
|
||||
pcibus = qpci_new_pc(global_qtest, NULL);
|
||||
pcibus = qpci_new_pc(qts, NULL);
|
||||
g_assert(pcibus != NULL);
|
||||
|
||||
pcidev = qpci_device_find(pcibus, 0);
|
||||
|
@ -106,7 +107,7 @@ static void test_smram_lock(void)
|
|||
g_assert(smram_test_bit(pcidev, MCH_HOST_BRIDGE_SMRAM_D_OPEN) == false);
|
||||
|
||||
/* reset */
|
||||
response = qmp("{'execute': 'system_reset', 'arguments': {} }");
|
||||
response = qtest_qmp(qts, "{'execute': 'system_reset', 'arguments': {} }");
|
||||
g_assert(response);
|
||||
g_assert(!qdict_haskey(response, "error"));
|
||||
qobject_unref(response);
|
||||
|
@ -120,33 +121,29 @@ static void test_smram_lock(void)
|
|||
g_free(pcidev);
|
||||
qpci_free_pc(pcibus);
|
||||
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
}
|
||||
|
||||
static void test_tseg_size(const void *data)
|
||||
{
|
||||
const TsegSizeArgs *args = data;
|
||||
char *cmdline;
|
||||
QPCIBus *pcibus;
|
||||
QPCIDevice *pcidev;
|
||||
uint8_t smram_val;
|
||||
uint8_t esmramc_val;
|
||||
uint32_t ram_offs;
|
||||
QTestState *qts;
|
||||
|
||||
if (args->esmramc_tseg_sz == MCH_HOST_BRIDGE_ESMRAMC_TSEG_SZ_MASK) {
|
||||
cmdline = g_strdup_printf("-M q35 -m %uM "
|
||||
"-global mch.extended-tseg-mbytes=%u",
|
||||
TSEG_SIZE_TEST_GUEST_RAM_MBYTES,
|
||||
args->extended_tseg_mbytes);
|
||||
qts = qtest_initf("-M q35 -m %uM -global mch.extended-tseg-mbytes=%u",
|
||||
TSEG_SIZE_TEST_GUEST_RAM_MBYTES,
|
||||
args->extended_tseg_mbytes);
|
||||
} else {
|
||||
cmdline = g_strdup_printf("-M q35 -m %uM",
|
||||
TSEG_SIZE_TEST_GUEST_RAM_MBYTES);
|
||||
qts = qtest_initf("-M q35 -m %uM", TSEG_SIZE_TEST_GUEST_RAM_MBYTES);
|
||||
}
|
||||
qtest_start(cmdline);
|
||||
g_free(cmdline);
|
||||
|
||||
/* locate the DRAM controller */
|
||||
pcibus = qpci_new_pc(global_qtest, NULL);
|
||||
pcibus = qpci_new_pc(qts, NULL);
|
||||
g_assert(pcibus != NULL);
|
||||
pcidev = qpci_device_find(pcibus, 0);
|
||||
g_assert(pcidev != NULL);
|
||||
|
@ -175,18 +172,18 @@ static void test_tseg_size(const void *data)
|
|||
*/
|
||||
ram_offs = (TSEG_SIZE_TEST_GUEST_RAM_MBYTES - args->expected_tseg_mbytes) *
|
||||
1024 * 1024 - 1;
|
||||
g_assert_cmpint(readb(ram_offs), ==, 0);
|
||||
writeb(ram_offs, 1);
|
||||
g_assert_cmpint(readb(ram_offs), ==, 1);
|
||||
g_assert_cmpint(qtest_readb(qts, ram_offs), ==, 0);
|
||||
qtest_writeb(qts, ram_offs, 1);
|
||||
g_assert_cmpint(qtest_readb(qts, ram_offs), ==, 1);
|
||||
|
||||
ram_offs++;
|
||||
g_assert_cmpint(readb(ram_offs), ==, 0xff);
|
||||
writeb(ram_offs, 1);
|
||||
g_assert_cmpint(readb(ram_offs), ==, 0xff);
|
||||
g_assert_cmpint(qtest_readb(qts, ram_offs), ==, 0xff);
|
||||
qtest_writeb(qts, ram_offs, 1);
|
||||
g_assert_cmpint(qtest_readb(qts, ram_offs), ==, 0xff);
|
||||
|
||||
g_free(pcidev);
|
||||
qpci_free_pc(pcibus);
|
||||
qtest_end();
|
||||
qtest_quit(qts);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=128M
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=128M
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
size=128M
|
||||
offset=67M
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt raw qcow qcow2 qed vdi vmdk vhdx luks
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=128M
|
||||
|
|
|
@ -55,6 +55,15 @@ if [ "$IMGPROTO" = "sheepdog" ]; then
|
|||
_notrun "image protocol $IMGPROTO does not support large image sizes"
|
||||
fi
|
||||
|
||||
# Sanity check: For raw, we require a file system that permits the creation
|
||||
# of a HUGE (but very sparse) file. Check we can create it before continuing.
|
||||
if [ "$IMGFMT" = "raw" ]; then
|
||||
if ! truncate --size=5T "$TEST_IMG"; then
|
||||
_notrun "file system on $TEST_DIR does not support large enough files"
|
||||
fi
|
||||
rm "$TEST_IMG"
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "creating large image"
|
||||
_make_test_img 5000G
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# currently only qcow2 allows for consistency checks using qemu-img
|
||||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
# refcount_bits must be at least 4 so we can create ten internal snapshots
|
||||
# (1 bit supports none, 2 bits support two, 4 bits support 14)
|
||||
_unsupported_imgopts 'refcount_bits=\(1\|2\)[^0-9]'
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=128M
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=6G
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=6G
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=6G
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
# Remove once all tests are fixed to use TEST_IMG_FILE
|
||||
# correctly and common.rc sets it unconditionally
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# actually any format that supports snapshots
|
||||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
# Internal snapshots are (currently) impossible with refcount_bits=1
|
||||
_unsupported_imgopts 'refcount_bits=1[^0-9]'
|
||||
|
||||
|
|
|
@ -41,7 +41,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
_supported_fmt qcow qcow2 vmdk qed
|
||||
_supported_proto generic
|
||||
_unsupported_proto vxhs
|
||||
_supported_os Linux
|
||||
_unsupported_imgopts "subformat=monolithicFlat" "subformat=twoGbMaxExtentFlat"
|
||||
|
||||
TEST_OFFSETS="0 4294967296"
|
||||
|
|
|
@ -42,7 +42,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# Any format supporting backing files
|
||||
_supported_fmt qcow qcow2 vmdk qed
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
_unsupported_imgopts "subformat=monolithicFlat" \
|
||||
"subformat=twoGbMaxExtentFlat" \
|
||||
"subformat=twoGbMaxExtentSparse"
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=128M
|
||||
|
|
|
@ -42,7 +42,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# Any format that supports snapshots
|
||||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
TEST_OFFSETS="10485760 4294967296"
|
||||
CLUSTER_SIZE="4096"
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt raw qcow2 qed luks
|
||||
_supported_proto file sheepdog rbd nfs
|
||||
_supported_os Linux
|
||||
|
||||
echo "=== Creating image"
|
||||
echo
|
||||
|
|
|
@ -41,7 +41,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# Currently only qcow2 supports rebasing
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
_default_cache_mode "writethrough"
|
||||
_supported_cache_modes "writethrough" "none"
|
||||
# The refcount table tests expect a certain minimum width for refcount entries
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt vmdk qcow qcow2 qed
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=128M
|
||||
|
|
|
@ -42,7 +42,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_unsupported_proto vxhs
|
||||
_supported_os Linux
|
||||
# Internal snapshots are (currently) impossible with refcount_bits=1
|
||||
_unsupported_imgopts 'refcount_bits=1[^0-9]'
|
||||
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# This tests qcow2-specific low-level functionality
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
CLUSTER_SIZE=65536
|
||||
|
||||
|
|
|
@ -42,7 +42,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# This works for any image format (though unlikely to segfault for raw)
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
echo
|
||||
echo === Prepare image ===
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=128M
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=6G
|
||||
|
|
|
@ -43,7 +43,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# This tests qcow2-specific low-level functionality
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
# Only qcow2v3 and later supports feature bits
|
||||
IMGOPTS="compat=1.1"
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow qcow2 vmdk qed
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
_unsupported_imgopts "subformat=monolithicFlat" \
|
||||
"subformat=twoGbMaxExtentFlat" \
|
||||
"subformat=twoGbMaxExtentSparse"
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2 qed
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
echo
|
||||
echo "== Creating zero size image =="
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# Any format supporting backing files
|
||||
_supported_fmt qcow2 qed
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=128M
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
CLUSTER_SIZE=64k
|
||||
size=128M
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
size=128M
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
filter_test_dir()
|
||||
{
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2 qed
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
if test "$IMGFMT" = qcow2 && test $IMGOPTS = ""; then
|
||||
IMGOPTS=compat=1.1
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
# A compat=0.10 image is created in this test which does not support anything
|
||||
# other than refcount_bits=16
|
||||
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
# Don't do O_DIRECT on tmpfs
|
||||
_supported_cache_modes "writeback" "writethrough" "unsafe"
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2 qcow
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
echo
|
||||
echo "== Creating single sector image =="
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
echo
|
||||
echo "creating too large image (1 EB)"
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# This tests qocw2-specific low-level functionality
|
||||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
IMGOPTS="compat=1.1"
|
||||
IMG_SIZE=64M
|
||||
|
|
|
@ -41,7 +41,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow qcow2 vmdk qed raw
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
_unsupported_imgopts "subformat=monolithicFlat" \
|
||||
"subformat=twoGbMaxExtentFlat" \
|
||||
"subformat=twoGbMaxExtentSparse"
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# This tests qocw2-specific low-level functionality
|
||||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
# Intentionally create an unaligned image
|
||||
IMGOPTS="compat=1.1"
|
||||
|
|
|
@ -32,7 +32,6 @@ status=1 # failure is the default!
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
# Because anything other than 16 would change the output of query-block
|
||||
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
|
||||
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# This tests qocw2-specific low-level functionality
|
||||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
IMGOPTS="compat=1.1"
|
||||
IMG_SIZE=128K
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qed qcow qcow2 vmdk
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
_unsupported_imgopts "subformat=monolithicFlat" "subformat=twoGbMaxExtentFlat"
|
||||
|
||||
IMG_SIZE=128K
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
do_run_qemu()
|
||||
{
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt vpc vmdk vhdx vdi qed qcow2 qcow
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
IMG_SIZE=64M
|
||||
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_unsupported_proto vxhs
|
||||
_supported_os Linux
|
||||
|
||||
CLUSTER_SIZE=64k
|
||||
size=128M
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file nfs
|
||||
_supported_os Linux
|
||||
|
||||
echo "=== Check option preallocation and cluster_size ==="
|
||||
echo
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file nfs
|
||||
_supported_os Linux
|
||||
|
||||
run_qemu_img()
|
||||
{
|
||||
|
|
|
@ -56,7 +56,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
# ${1}: unique identifier for the snapshot filename
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
# Because anything other than 16 would change the output of qemu_io -c info
|
||||
_unsupported_imgopts 'refcount_bits=\([^1]\|.\([^6]\|$\)\)'
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file nfs
|
||||
_supported_os Linux
|
||||
|
||||
IMG_SIZE=128K
|
||||
|
||||
|
|
|
@ -42,7 +42,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto nbd
|
||||
_supported_os Linux
|
||||
_unsupported_imgopts "subformat=monolithicFlat" "subformat=twoGbMaxExtentFlat"
|
||||
|
||||
_make_test_img 64M
|
||||
|
|
|
@ -44,7 +44,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
size_smaller=5M
|
||||
size_larger=100M
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
IMGOPTS="compat=1.1"
|
||||
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
IMG_SIZE=64K
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file nfs
|
||||
_supported_os Linux
|
||||
# Internal snapshots are (currently) impossible with refcount_bits=1
|
||||
_unsupported_imgopts 'refcount_bits=1[^0-9]'
|
||||
|
||||
|
|
|
@ -34,7 +34,6 @@ trap "exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt raw qcow qcow2 qed vdi vmdk vhdx
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
echo "=== Check qemu-img info output ==="
|
||||
echo
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2 vmdk vhdx qed
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
_unsupported_imgopts "subformat=twoGbMaxExtentFlat" \
|
||||
"subformat=twoGbMaxExtentSparse"
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file nfs
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
IMG_SIZE=64K
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# Any format supporting backing files
|
||||
_supported_fmt qed qcow qcow2 vmdk
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
_unsupported_imgopts "subformat=monolithicFlat" "subformat=twoGbMaxExtentFlat"
|
||||
|
||||
TEST_IMG_REL=$(basename "$TEST_IMG")
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qed qcow qcow2 vmdk
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
_unsupported_imgopts "subformat=monolithicFlat" "subformat=twoGbMaxExtentFlat"
|
||||
|
||||
$QEMU_IMG create -f $IMGFMT -b "$TEST_IMG.inexistent" "$TEST_IMG" 2>&1 \
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# This tests qcow2-specific low-level functionality
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
# This test will set refcount_bits on its own which would conflict with the
|
||||
# manual setting; compat will be overridden as well
|
||||
_unsupported_imgopts refcount_bits 'compat=0.10'
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_unsupported_proto vxhs
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
# This test relies on refcounts being 64 bits wide (which does not work with
|
||||
# compat=0.10)
|
||||
_unsupported_imgopts 'refcount_bits=\([^6]\|.\([^4]\|$\)\)' 'compat=0.10'
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
_make_test_img 64k
|
||||
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
_unsupported_fmt luks
|
||||
|
||||
_make_test_img 64M
|
||||
|
|
|
@ -44,7 +44,6 @@ get_image_size_on_host()
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
if [ -z "$TEST_IMG_FILE" ]; then
|
||||
TEST_IMG_FILE=$TEST_IMG
|
||||
|
|
|
@ -37,7 +37,6 @@ _supported_fmt qcow qcow2 qed vmdk
|
|||
# colons which separate a protocol prefix from the rest and colons which are
|
||||
# just part of the filename, so we cannot test protocols which require a prefix)
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
echo
|
||||
echo '=== Testing plain files ==='
|
||||
|
|
|
@ -42,7 +42,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
IMG_SIZE=64K
|
||||
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
_supported_fmt qcow qcow2
|
||||
_supported_proto generic
|
||||
_unsupported_proto vxhs
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=128M
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
# We test all cache modes anyway, but O_DIRECT needs to be supported
|
||||
_default_cache_mode none
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
keep_stderr=y \
|
||||
_launch_qemu 2> >(_filter_nbd)
|
||||
|
|
|
@ -46,7 +46,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
size=512M
|
||||
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto generic
|
||||
_supported_os Linux
|
||||
|
||||
_make_test_img 1M
|
||||
|
||||
|
|
|
@ -62,7 +62,6 @@ _check_ofd || _notrun "OFD lock not available"
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
_run_cmd()
|
||||
{
|
||||
|
|
|
@ -49,7 +49,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
_supported_fmt qcow2 qed
|
||||
_supported_proto generic
|
||||
_unsupported_proto vxhs
|
||||
_supported_os Linux
|
||||
|
||||
# Create source disk
|
||||
TEST_IMG="$TEST_IMG.backing" _make_test_img 1M
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
do_run_qemu()
|
||||
{
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
_supported_fmt qcow qcow2
|
||||
_supported_proto generic
|
||||
_unsupported_proto vxhs
|
||||
_supported_os Linux
|
||||
|
||||
|
||||
size=128M
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
_unsupported_fmt luks
|
||||
|
||||
TEST_SIZES="5 512 1024 1999 1K 64K 1M"
|
||||
|
|
|
@ -39,7 +39,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
. ./common.filter
|
||||
|
||||
_supported_fmt generic
|
||||
_supported_os Linux
|
||||
|
||||
test_ssh=$($QEMU_IMG --help | grep '^Supported formats:.* ssh\( \|$\)')
|
||||
[ "$test_ssh" = "" ] && _notrun "ssh support required"
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt generic
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
_unsupported_fmt luks
|
||||
|
||||
echo
|
||||
|
|
|
@ -41,7 +41,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto nfs
|
||||
_supported_os Linux
|
||||
|
||||
size=100M
|
||||
|
||||
|
|
|
@ -42,7 +42,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
size=32M
|
||||
|
||||
|
|
|
@ -44,7 +44,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2 raw qed quorum
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
size=64M
|
||||
_make_test_img $size
|
||||
|
|
|
@ -38,7 +38,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
if [ "$QEMU_DEFAULT_MACHINE" != "pc" ]; then
|
||||
_notrun "Requires a PC machine"
|
||||
|
|
|
@ -40,7 +40,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
size=64M
|
||||
_make_test_img $size
|
||||
|
|
|
@ -41,7 +41,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
# See 178 for more extensive tests across more formats
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
echo "== Huge file =="
|
||||
echo
|
||||
|
|
|
@ -43,7 +43,6 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
|||
|
||||
_supported_fmt qcow2
|
||||
_supported_proto file
|
||||
_supported_os Linux
|
||||
|
||||
size=64M
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue