2
* Copyright (C) 2013-2014 Red Hat Inc.
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are
9
* * Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
12
* * Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
16
* * Neither the name of Red Hat nor the names of its contributors may be
17
* used to endorse or promote products derived from this software without
18
* specific prior written permission.
20
* THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND
21
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
23
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR
24
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
30
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48
main (int argc, char *argv[])
54
if (test_start_nbdkit (NBDKIT_PLUGIN (LANG), "script=" SCRIPT, NULL) == -1)
57
g = guestfs_create ();
59
perror ("guestfs_create");
63
r = guestfs_add_drive_opts (g, "",
64
GUESTFS_ADD_DRIVE_OPTS_FORMAT, "raw",
65
GUESTFS_ADD_DRIVE_OPTS_PROTOCOL, "nbd",
66
GUESTFS_ADD_DRIVE_OPTS_SERVER, server,
71
if (guestfs_launch (g) == -1)
74
/* The test script creates an empty disk. We format it, write some
75
* data, and check we can read it back.
78
if (guestfs_part_disk (g, "/dev/sda", "mbr") == -1)
80
if (guestfs_mkfs (g, "ext4", "/dev/sda1") == -1)
83
if (guestfs_mount (g, "/dev/sda1", "/") == -1)
86
#define filename "/hello.txt"
87
#define content "hello, people of the world"
89
if (guestfs_write (g, filename, content, strlen (content)) == -1)
92
data = guestfs_cat (g, filename);
96
if (strcmp (data, content) != 0) {
97
fprintf (stderr, "%s FAILED: unexpected content of %s file (actual: %s, expected: %s)\n",
98
program_name, filename, data, content);
102
/* Run sync to test flush path. */
103
if (guestfs_sync (g) == -1)
106
/* Run fstrim to test trim path. However only recent versions of
107
* libguestfs have this, and it probably only works in recent
110
#ifdef GUESTFS_HAVE_FSTRIM
111
if (guestfs_fstrim (g, "/", -1) == -1)
115
if (guestfs_shutdown (g) == -1)