[PATCH 2/4] tests: make test_uuid_parser to read files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This allows using the command to check uuidgen and uuidd are generating
valid outputs.

Signed-off-by: Sami Kerola <kerolasa@xxxxxx>
---
 libuuid/src/test_uuid.c | 156 ++++++++++++++----------------------------------
 1 file changed, 45 insertions(+), 111 deletions(-)

diff --git a/libuuid/src/test_uuid.c b/libuuid/src/test_uuid.c
index e8f0703..4d155b5 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);
-- 
2.6.2

--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux