tests/c-api: Factor out common init_* into separate functions.

This commit is contained in:
Richard W.M. Jones
2013-05-01 09:09:55 +01:00
parent 02fbf566e8
commit 9d5236d73c
3 changed files with 140 additions and 54 deletions

View File

@@ -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";

View File

@@ -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)
{

View File

@@ -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, ...);