On Wed, Sep 19, 2012 at 04:54:28PM +0800, Wanlong Gao wrote:
+ { defaults with + name = "mke2fs"; + style = RErr, [Device "device"], [OInt64 "blockscount"; OInt64 "blocksize"; OInt64 "fragsize"; OInt64 "blockspergroup"; OInt64 "numberofgroups"; OInt64 "bytesperinode"; OInt64 "inodesize"; OInt64 "journalsize"; OInt64 "numberofinodes"; OInt64 "stridesize"; OInt64 "stripewidth"; OInt64 "maxonlineresize"; OInt "reservedblockspercentage"; OInt "mmpupdateinterval"; OString "journaldevice"; OString "label"; OString "lastmounteddir"; OString "creatoros"; OString "fstype"; OString "usagetype"; OString "uuid"; OBool "forcecreate"; OBool "writesbandgrouponly"; OBool "lazyitableinit"; OBool "lazyjournalinit"; OBool "testfs"; OBool "discard"; OBool "quotatype"; OBool "extent"; OBool "filetype"; OBool "flexbg"; OBool "hasjournal"; OBool "journaldev"; OBool "largefile"; OBool "quota"; OBool "resizeinode"; OBool "sparsesuper"; OBool "uninitbg"]; + proc_nr = Some 368; + tests = [ + InitEmpty, Always, TestOutput ( + [["part_init"; "/dev/sda"; "mbr"]; + ["part_add"; "/dev/sda"; "p"; "64"; "204799"]; + ["part_add"; "/dev/sda"; "p"; "204800"; "-64"]; + ["mke2fs"; "/dev/sda1"; ""; "4096"; ""; ""; ""; + ""; ""; ""; ""; ""; + ""; ""; ""; ""; "NOARG"; + "NOARG"; "NOARG"; "NOARG"; "NOARG"; "NOARG"; + "NOARG"; "true"; ""; ""; ""; + ""; ""; ""; ""; ""; + ""; ""; "true"; ""; ""; + ""; ""; ""]; + ["mke2fs"; "/dev/sda2"; ""; "4096"; ""; ""; ""; + ""; ""; ""; ""; ""; + ""; ""; ""; ""; "/dev/sda1"; + "NOARG"; "NOARG"; "NOARG"; "ext2"; "NOARG"; + "NOARG"; "true"; ""; ""; ""; + ""; ""; ""; ""; ""; + ""; ""; ""; ""; ""; + ""; ""; ""]; + ["mount"; "/dev/sda2"; "/"]; + ["write"; "/new"; "new file contents"]; + ["cat"; "/new"]], "new file contents"); + InitEmpty, Always, TestOutput ( + [["part_init"; "/dev/sda"; "mbr"]; + ["part_add"; "/dev/sda"; "p"; "64"; "204799"]; + ["part_add"; "/dev/sda"; "p"; "204800"; "-64"]; + ["mke2fs"; "/dev/sda1"; ""; "4096"; ""; ""; ""; + ""; ""; ""; ""; ""; + ""; ""; ""; ""; "/dev/sda1"; + "JOURNAL"; "NOARG"; "NOARG"; "ext2"; "NOARG"; + "NOARG"; "true"; ""; ""; ""; + ""; ""; ""; ""; ""; + ""; ""; "true"; ""; ""; + ""; ""; ""]; + ["mke2fs"; "/dev/sda2"; ""; "4096"; ""; ""; ""; + ""; ""; ""; ""; ""; + ""; ""; ""; ""; "LABEL=JOURNAL"; + "JOURNAL"; "NOARG"; "NOARG"; "ext2"; "NOARG"; + "NOARG"; "true"; ""; ""; ""; + ""; ""; ""; ""; ""; + ""; ""; ""; ""; ""; + ""; ""; ""]; + ["mount"; "/dev/sda2"; "/"]; + ["write"; "/new"; "new file contents"]; + ["cat"; "/new"]], "new file contents"); + InitEmpty, Always, TestOutput ( + [["part_init"; "/dev/sda"; "mbr"]; + ["part_add"; "/dev/sda"; "p"; "64"; "204799"]; + ["part_add"; "/dev/sda"; "p"; "204800"; "-64"]; + ["mke2fs"; "/dev/sda1"; ""; "4096"; ""; ""; ""; + ""; ""; ""; ""; ""; + ""; ""; ""; ""; "NOARG"; + "NOARG"; "NOARG"; "NOARG"; "NOARG"; "NOARG"; +(* there is something wrong with uuid *)
Can you teach me how to test the "uuid" here?
Probably the best thing is to look at the tests for set_e2uuid: tests = (let uuid = uuidgen () in [ InitBasicFS, Always, TestOutput ( [["set_e2uuid"; "/dev/sda1"; uuid]; ["get_e2uuid"; "/dev/sda1"]], uuid); 'tests = (let uuid = uuidgen () in [...])' causes a fresh uuid to be generated (by 'uuidgen ()') and returned in 'uuid', and then substituted in the list of tests. In this case, 'uuid' is used as a parameter to 'set_e2uuid', and to test the return value from 'get_e2uuid'. Note that the random UUID changes each time the generator runs. The actual C code generated by the above test (ie. in tests/c-api/tests.c) is below. In this case, the value of the 'uuid' variable in the OCaml code was "d62333[..]". /* TestOutput for set_e2uuid (0) */ const char *expected = "d623335b-b2c7-461c-46a8-05a4f2af7bee"; { const char *device = "/dev/sda1"; const char *uuid = "d623335b-b2c7-461c-46a8-05a4f2af7bee"; int r; suppress_error = 0; r = guestfs_set_e2uuid (g, device, uuid); if (r == -1) return -1; } { const char *device = "/dev/sda1"; char *r; suppress_error = 0; r = guestfs_get_e2uuid (g, device); if (r == NULL) return -1; if (STRNEQ (r, expected)) { fprintf (stderr, "test_set_e2uuid_0: expected \"%s\" but got \"%s\"\n", expected, r); return -1; } free (r); } Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org