From 9d5236d73cd0ec0c70172fa301c4722bb458db5d Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 1 May 2013 09:09:55 +0100 Subject: [PATCH] tests/c-api: Factor out common init_* into separate functions. --- generator/tests_c_api.ml | 71 ++++++------------------ tests/c-api/tests-main.c | 115 +++++++++++++++++++++++++++++++++++++++ tests/c-api/tests.h | 8 +++ 3 files changed, 140 insertions(+), 54 deletions(-) diff --git a/generator/tests_c_api.ml b/generator/tests_c_api.ml index 071ccc531..faf4cd7c4 100644 --- a/generator/tests_c_api.ml +++ b/generator/tests_c_api.ml @@ -194,67 +194,30 @@ static int and generate_one_test_body name i test_name init test = (match init with - | InitNone (* XXX at some point, InitNone and InitEmpty became - * folded together as the same thing. Really we should - * make InitNone do nothing at all, but the tests may - * need to be checked to make sure this is OK. - *) + | InitNone -> + pr " if (init_none () == -1)\n"; + pr " return -1;\n" | InitEmpty -> - pr " /* InitNone|InitEmpty for %s */\n" test_name; - List.iter (generate_test_command_call test_name) - [["blockdev_setrw"; "/dev/sda"]; - ["umount_all"]; - ["lvm_remove_all"]] + pr " if (init_empty () == -1)\n"; + pr " return -1;\n" | InitPartition -> - pr " /* InitPartition for %s: create /dev/sda1 */\n" test_name; - List.iter (generate_test_command_call test_name) - [["blockdev_setrw"; "/dev/sda"]; - ["umount_all"]; - ["lvm_remove_all"]; - ["part_disk"; "/dev/sda"; "mbr"]] + pr " if (init_partition () == -1)\n"; + pr " return -1;\n" | InitGPT -> - pr " /* InitGPT for %s: create /dev/sda1 */\n" test_name; - List.iter (generate_test_command_call test_name) - [["blockdev_setrw"; "/dev/sda"]; - ["umount_all"]; - ["lvm_remove_all"]; - ["part_disk"; "/dev/sda"; "gpt"]] + pr " if (init_gpt () == -1)\n"; + pr " return -1;\n" | InitBasicFS -> - pr " /* InitBasicFS for %s: create ext2 on /dev/sda1 */\n" test_name; - List.iter (generate_test_command_call test_name) - [["blockdev_setrw"; "/dev/sda"]; - ["umount_all"]; - ["lvm_remove_all"]; - ["part_disk"; "/dev/sda"; "mbr"]; - ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""]; - ["mount"; "/dev/sda1"; "/"]] + pr " if (init_basic_fs () == -1)\n"; + pr " return -1;\n" | InitBasicFSonLVM -> - pr " /* InitBasicFSonLVM for %s: create ext2 on /dev/VG/LV */\n" - test_name; - List.iter (generate_test_command_call test_name) - [["blockdev_setrw"; "/dev/sda"]; - ["umount_all"]; - ["lvm_remove_all"]; - ["part_disk"; "/dev/sda"; "mbr"]; - ["pvcreate"; "/dev/sda1"]; - ["vgcreate"; "VG"; "/dev/sda1"]; - ["lvcreate"; "LV"; "VG"; "8"]; - ["mkfs"; "ext2"; "/dev/VG/LV"; ""; "NOARG"; ""; ""]; - ["mount"; "/dev/VG/LV"; "/"]] + pr " if (init_basic_fs_on_lvm () == -1)\n"; + pr " return -1;\n" | InitISOFS -> - pr " /* InitISOFS for %s */\n" test_name; - List.iter (generate_test_command_call test_name) - [["blockdev_setrw"; "/dev/sda"]; - ["umount_all"]; - ["lvm_remove_all"]; - ["mount_ro"; "/dev/sdd"; "/"]] + pr " if (init_iso_fs () == -1)\n"; + pr " return -1;\n" | InitScratchFS -> - pr " /* InitScratchFS for %s */\n" test_name; - List.iter (generate_test_command_call test_name) - [["blockdev_setrw"; "/dev/sda"]; - ["umount_all"]; - ["lvm_remove_all"]; - ["mount"; "/dev/sdb1"; "/"]] + pr " if (init_scratch_fs () == -1)\n"; + pr " return -1;\n" ); pr "\n"; diff --git a/tests/c-api/tests-main.c b/tests/c-api/tests-main.c index 9d5663f2f..ec27b0f35 100644 --- a/tests/c-api/tests-main.c +++ b/tests/c-api/tests-main.c @@ -35,6 +35,121 @@ guestfs_h *g; +int +init_none (void) +{ + /* XXX At some point in the distant past, InitNone and InitEmpty + * became folded together as the same thing. Really we should make + * InitNone do nothing at all, but the tests may need to be checked + * to make sure this is OK. + */ + return init_empty (); +} + +int +init_empty (void) +{ + if (guestfs_blockdev_setrw (g, "/dev/sda") == -1) + return -1; + + if (guestfs_umount_all (g) == -1) + return -1; + + if (guestfs_lvm_remove_all (g) == -1) + return -1; + + return 0; +} + +int +init_partition (void) +{ + if (init_empty () == -1) + return -1; + + if (guestfs_part_disk (g, "/dev/sda", "mbr") == -1) + return -1; + + return 0; +} + +int +init_gpt (void) +{ + if (init_empty () == -1) + return -1; + + if (guestfs_part_disk (g, "/dev/sda", "gpt") == -1) + return -1; + + return 0; +} + +int +init_basic_fs (void) +{ + if (init_partition () == -1) + return -1; + + if (guestfs_mkfs (g, "ext2", "/dev/sda1") == -1) + return -1; + + if (guestfs_mount (g, "/dev/sda1", "/") == -1) + return -1; + + return 0; +} + +int +init_basic_fs_on_lvm (void) +{ + const char *pvs[] = { "/dev/sda1", NULL }; + + if (init_partition () == -1) + return -1; + + if (guestfs_pvcreate (g, "/dev/sda1") == -1) + return -1; + + if (guestfs_vgcreate (g, "VG", (char **) pvs) == -1) + return -1; + + if (guestfs_lvcreate (g, "LV", "VG", 8) == -1) + return -1; + + if (guestfs_mkfs (g, "ext2", "/dev/VG/LV") == -1) + return -1; + + if (guestfs_mount (g, "/dev/VG/LV", "/") == -1) + return -1; + + return 0; +} + +int +init_iso_fs (void) +{ + if (init_empty () == -1) + return -1; + + if (guestfs_mount_ro (g, "/dev/sdd", "/") == -1) + return -1; + + return 0; +} + +int +init_scratch_fs (void) +{ + if (init_empty () == -1) + return -1; + + if (guestfs_mount (g, "/dev/sdb1", "/") == -1) + return -1; + + return 0; +} + static void print_strings (char *const *argv) { diff --git a/tests/c-api/tests.h b/tests/c-api/tests.h index c3288a55a..aa3b1d62b 100644 --- a/tests/c-api/tests.h +++ b/tests/c-api/tests.h @@ -22,6 +22,14 @@ extern guestfs_h *g; extern size_t nr_tests; +extern int init_none (void); +extern int init_empty (void); +extern int init_partition (void); +extern int init_gpt (void); +extern int init_basic_fs (void); +extern int init_basic_fs_on_lvm (void); +extern int init_iso_fs (void); +extern int init_scratch_fs (void); extern size_t perform_tests (void); extern void no_test_warnings (void); extern int is_string_list (char **ret, size_t n, ...);