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>
This commit is contained in:
parent
4d3f964e4a
commit
85638702ed
|
@ -38,9 +38,13 @@
|
||||||
#define UUID MYUUID
|
#define UUID MYUUID
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <ctype.h>
|
||||||
|
#include <fcntl.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
|
||||||
|
#include "c.h"
|
||||||
#include "uuid.h"
|
#include "uuid.h"
|
||||||
|
|
||||||
static int test_uuid(const char * uuid, int isValid)
|
static int test_uuid(const char * uuid, int isValid)
|
||||||
|
@ -60,109 +64,34 @@ static int test_uuid(const char * uuid, int isValid)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __GNUC__
|
static int check_uuids_in_file(const char *file)
|
||||||
#define ATTR(x) __attribute__(x)
|
{
|
||||||
#else
|
int fd, ret = 0;
|
||||||
#define ATTR(x)
|
size_t sz;
|
||||||
#endif
|
char str[sizeof("01234567-89ab-cdef-0134-567890abcedf")];
|
||||||
|
uuid_t uuidBits;
|
||||||
|
|
||||||
|
if ((fd = open(file, O_RDONLY)) < 0) {
|
||||||
|
warn("%s", file);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
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++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc ATTR((unused)) , char **argv ATTR((unused)))
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int failed = 0;
|
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;
|
|
||||||
|
|
||||||
uuid_generate(buf);
|
if (argc < 2) {
|
||||||
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++);
|
|
||||||
}
|
|
||||||
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++;
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
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");
|
|
||||||
|
|
||||||
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-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-354c584a981bc", 0);
|
||||||
|
@ -177,7 +106,12 @@ main(int argc ATTR((unused)) , char **argv ATTR((unused)))
|
||||||
failed += test_uuid("00000000-0000-0000-0000-000000000000", 1);
|
failed += test_uuid("00000000-0000-0000-0000-000000000000", 1);
|
||||||
failed += test_uuid("01234567-89ab-cdef-0134-567890abcedf", 1);
|
failed += test_uuid("01234567-89ab-cdef-0134-567890abcedf", 1);
|
||||||
failed += test_uuid("ffffffff-ffff-ffff-ffff-ffffffffffff", 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) {
|
if (failed) {
|
||||||
printf("%d failures.\n", failed);
|
printf("%d failures.\n", failed);
|
||||||
exit(1);
|
exit(1);
|
||||||
|
|
Loading…
Reference in New Issue