summaryrefslogtreecommitdiffstats
path: root/libuuid
diff options
context:
space:
mode:
authorSami Kerola2015-10-18 20:07:11 +0200
committerSami Kerola2015-10-18 20:12:30 +0200
commit85638702ed2d156f461ae638b4b140073119d07f (patch)
treeb9e5f2abcf297cc6dd5e49a17b1ec191a46bd4fb /libuuid
parenttests: add uuid parser check (diff)
downloadkernel-qcow2-util-linux-85638702ed2d156f461ae638b4b140073119d07f.tar.gz
kernel-qcow2-util-linux-85638702ed2d156f461ae638b4b140073119d07f.tar.xz
kernel-qcow2-util-linux-85638702ed2d156f461ae638b4b140073119d07f.zip
tests: make test_uuid_parser to read files
This allows using the command to check uuidgen and uuidd are generating valid outputs. Signed-off-by: Sami Kerola <kerolasa@iki.fi>
Diffstat (limited to 'libuuid')
-rw-r--r--libuuid/src/test_uuid.c156
1 files changed, 45 insertions, 111 deletions
diff --git a/libuuid/src/test_uuid.c b/libuuid/src/test_uuid.c
index e8f070317..4d155b533 100644
--- a/libuuid/src/test_uuid.c
+++ b/libuuid/src/test_uuid.c
@@ -38,9 +38,13 @@
#define UUID MYUUID
#endif
+#include <ctype.h>
+#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
+#include <sys/stat.h>
+#include "c.h"
#include "uuid.h"
static int test_uuid(const char * uuid, int isValid)
@@ -60,124 +64,54 @@ static int test_uuid(const char * uuid, int isValid)
return 0;
}
-#ifdef __GNUC__
-#define ATTR(x) __attribute__(x)
-#else
-#define ATTR(x)
-#endif
-
-int
-main(int argc ATTR((unused)) , char **argv ATTR((unused)))
+static int check_uuids_in_file(const char *file)
{
- int failed = 0;
-/* Code commented out will print random uuid's that are unsuitable output
- * for test suite.
- uuid_t buf, tst;
- char str[100];
- struct timeval tv;
- time_t time_reg;
- unsigned char *cp;
- int i;
- int type, variant;
+ int fd, ret = 0;
+ size_t sz;
+ char str[sizeof("01234567-89ab-cdef-0134-567890abcedf")];
+ uuid_t uuidBits;
- uuid_generate(buf);
- uuid_unparse(buf, str);
- printf("UUID generate = %s\n", str);
- printf("UUID: ");
- for (i=0, cp = (unsigned char *) &buf; i < 16; i++) {
- printf("%02x", *cp++);
+ if ((fd = open(file, O_RDONLY)) < 0) {
+ warn("%s", file);
+ return 1;
}
- printf("\n");
- type = uuid_type(buf); variant = uuid_variant(buf);
- printf("UUID type = %d, UUID variant = %d\n", type, variant);
- if (variant != UUID_VARIANT_DCE) {
- printf("Incorrect UUID Variant; was expecting DCE!\n");
- failed++;
+ while ((sz = read(fd, str, sizeof(str))) != 0) {
+ if (isspace(str[sizeof(str) - 1]))
+ str[sizeof(str) - 1] = '\0';
+ if (uuid_parse(str, uuidBits)) {
+ warnx("%s: %s", file, str);
+ ret++;
+ }
}
- printf("\n");
+ return ret;
+}
- uuid_generate_random(buf);
- uuid_unparse(buf, str);
- printf("UUID random string = %s\n", str);
- printf("UUID: ");
- for (i=0, cp = (unsigned char *) &buf; i < 16; i++) {
- printf("%02x", *cp++);
- }
- printf("\n");
- type = uuid_type(buf); variant = uuid_variant(buf);
- printf("UUID type = %d, UUID variant = %d\n", type, variant);
- if (variant != UUID_VARIANT_DCE) {
- printf("Incorrect UUID Variant; was expecting DCE!\n");
- failed++;
- }
- if (type != 4) {
- printf("Incorrect UUID type; was expecting "
- "4 (random type)!\n");
- failed++;
- }
- printf("\n");
+int
+main(int argc, char **argv)
+{
+ int failed = 0;
- uuid_generate_time(buf);
- uuid_unparse(buf, str);
- printf("UUID string = %s\n", str);
- printf("UUID time: ");
- for (i=0, cp = (unsigned char *) &buf; i < 16; i++) {
- printf("%02x", *cp++);
- }
- printf("\n");
- type = uuid_type(buf); variant = uuid_variant(buf);
- printf("UUID type = %d, UUID variant = %d\n", type, variant);
- if (variant != UUID_VARIANT_DCE) {
- printf("Incorrect UUID Variant; was expecting DCE!\n");
- failed++;
- }
- if (type != 1) {
- printf("Incorrect UUID type; was expecting "
- "1 (time-based type)!\\n");
- failed++;
- }
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- time_reg = uuid_time(buf, &tv);
- printf("UUID time is: (%ld, %ld): %s\n", tv.tv_sec, tv.tv_usec,
- ctime(&time_reg));
- uuid_parse(str, tst);
- if (!uuid_compare(buf, tst))
- printf("UUID parse and compare succeeded.\n");
- else {
- printf("UUID parse and compare failed!\n");
- failed++;
- }
- uuid_clear(tst);
- if (uuid_is_null(tst))
- printf("UUID clear and is null succeeded.\n");
- else {
- printf("UUID clear and is null failed!\n");
- failed++;
- }
- uuid_copy(buf, tst);
- if (!uuid_compare(buf, tst))
- printf("UUID copy and compare succeeded.\n");
- else {
- printf("UUID copy and compare failed!\n");
- failed++;
- }
-*/
- failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981b", 1);
- failed += test_uuid("84949CC5-4701-4A84-895B-354C584A981B", 1);
- failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981bc", 0);
- failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981", 0);
- failed += test_uuid("84949cc5x4701-4a84-895b-354c584a981b", 0);
- failed += test_uuid("84949cc504701-4a84-895b-354c584a981b", 0);
- failed += test_uuid("84949cc5-470104a84-895b-354c584a981b", 0);
- failed += test_uuid("84949cc5-4701-4a840895b-354c584a981b", 0);
- failed += test_uuid("84949cc5-4701-4a84-895b0354c584a981b", 0);
- failed += test_uuid("g4949cc5-4701-4a84-895b-354c584a981b", 0);
- failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981g", 0);
- failed += test_uuid("00000000-0000-0000-0000-000000000000", 1);
- failed += test_uuid("01234567-89ab-cdef-0134-567890abcedf", 1);
- failed += test_uuid("ffffffff-ffff-ffff-ffff-ffffffffffff", 1);
+ if (argc < 2) {
+ failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981b", 1);
+ failed += test_uuid("84949CC5-4701-4A84-895B-354C584A981B", 1);
+ failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981bc", 0);
+ failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981", 0);
+ failed += test_uuid("84949cc5x4701-4a84-895b-354c584a981b", 0);
+ failed += test_uuid("84949cc504701-4a84-895b-354c584a981b", 0);
+ failed += test_uuid("84949cc5-470104a84-895b-354c584a981b", 0);
+ failed += test_uuid("84949cc5-4701-4a840895b-354c584a981b", 0);
+ failed += test_uuid("84949cc5-4701-4a84-895b0354c584a981b", 0);
+ failed += test_uuid("g4949cc5-4701-4a84-895b-354c584a981b", 0);
+ failed += test_uuid("84949cc5-4701-4a84-895b-354c584a981g", 0);
+ failed += test_uuid("00000000-0000-0000-0000-000000000000", 1);
+ failed += test_uuid("01234567-89ab-cdef-0134-567890abcedf", 1);
+ failed += test_uuid("ffffffff-ffff-ffff-ffff-ffffffffffff", 1);
+ } else {
+ int i;
+ for (i = 1; i < argc; i++)
+ failed += check_uuids_in_file(argv[i]);
+ }
if (failed) {
printf("%d failures.\n", failed);
exit(1);