Asterisk - The Open Source Telephony Project GIT-master-b023714
Loading...
Searching...
No Matches
Functions | Variables
test_uuid.c File Reference

Universally unique identifier tests. More...

#include "asterisk.h"
#include "asterisk/test.h"
#include "asterisk/uuid.h"
#include "asterisk/module.h"
Include dependency graph for test_uuid.c:

Go to the source code of this file.

Functions

static void __reg_module (void)
 
static void __unreg_module (void)
 
struct ast_moduleAST_MODULE_SELF_SYM (void)
 
 AST_TEST_DEFINE (uuid)
 
static int load_module (void)
 
static int unload_module (void)
 

Variables

static struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "UUID test module" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, .support_level = AST_MODULE_SUPPORT_CORE, }
 
static const struct ast_module_infoast_module_info = &__mod_info
 

Detailed Description

Universally unique identifier tests.

Definition in file test_uuid.c.

Function Documentation

◆ __reg_module()

static void __reg_module ( void  )
static

Definition at line 152 of file test_uuid.c.

◆ __unreg_module()

static void __unreg_module ( void  )
static

Definition at line 152 of file test_uuid.c.

◆ AST_MODULE_SELF_SYM()

struct ast_module * AST_MODULE_SELF_SYM ( void  )

Definition at line 152 of file test_uuid.c.

◆ AST_TEST_DEFINE()

AST_TEST_DEFINE ( uuid  )

Definition at line 33 of file test_uuid.c.

34{
35 struct ast_uuid *uuid1 = NULL;
36 struct ast_uuid *uuid2 = NULL;
37 struct ast_uuid *uuid3 = NULL;
38 char uuid_str[AST_UUID_STR_LEN];
40
41 switch (cmd) {
42 case TEST_INIT:
43 info->name = "uuid";
44 info->category = "/main/uuid/";
45 info->summary = "UUID unit test";
46 info->description =
47 "This tests basic UUID operations to ensure they work properly";
48 return AST_TEST_NOT_RUN;
49 case TEST_EXECUTE:
50 break;
51 }
52
53 /* Use method of generating UUID directly as a string. */
54 ast_uuid_generate_str(uuid_str, sizeof(uuid_str));
55 if (strlen(uuid_str) != (AST_UUID_STR_LEN - 1)) {
56 ast_test_status_update(test, "Failed to directly generate UUID string\n");
57 goto end;
58 }
59 ast_test_status_update(test, "Generate UUID direct to string, got %s\n", uuid_str);
60
61 /* Now convert the direct UUID string to a UUID */
62 uuid1 = ast_str_to_uuid(uuid_str);
63 if (!uuid1) {
64 ast_test_status_update(test, "Unable to convert direct UUID string %s to UUID\n", uuid_str);
65 goto end;
66 }
67 ast_free(uuid1);
68
69 /* Make sure that we can generate a UUID */
70 uuid1 = ast_uuid_generate();
71 if (!uuid1) {
72 ast_test_status_update(test, "Unable to generate a UUID\n");
73 goto end;
74 }
75
76 /* Make sure we're not generating nil UUIDs */
77 if (ast_uuid_is_nil(uuid1)) {
78 ast_test_status_update(test, "We generated a nil UUID. Something is wrong\n");
79 goto end;
80 }
81
82 /* Convert it to a string */
83 ast_uuid_to_str(uuid1, uuid_str, sizeof(uuid_str));
84
85 if (strlen(uuid_str) != (AST_UUID_STR_LEN - 1)) {
86 ast_test_status_update(test, "Failed to convert the UUID to a string\n");
87 goto end;
88 }
89
90 ast_test_status_update(test, "Second generated UUID converted to string, got %s\n", uuid_str);
91
92 /* Now convert the string back to a UUID */
93 uuid2 = ast_str_to_uuid(uuid_str);
94 if (!uuid2) {
95 ast_test_status_update(test, "Unable to convert string %s to UUID\n", uuid_str);
96 goto end;
97 }
98
99 /* Make sure the UUIDs are identical */
100 if (ast_uuid_compare(uuid1, uuid2) != 0) {
101 ast_test_status_update(test, "UUIDs that should be identical are different\n");
102 goto end;
103 }
104
105 /* Try copying a UUID */
106 uuid3 = ast_uuid_copy(uuid1);
107 if (!uuid3) {
108 ast_test_status_update(test, "Unable to copy UUID\n");
109 goto end;
110 }
111
112 /* Make sure copied UUIDs are identical */
113 if (ast_uuid_compare(uuid1, uuid3) != 0) {
114 ast_test_status_update(test, "UUIDs that should be identical are different\n");
115 goto end;
116 }
117
118 if (ast_uuid_compare(uuid2, uuid3) != 0) {
119 ast_test_status_update(test, "UUIDs that should be identical are different\n");
120 goto end;
121 }
122
123 /* Clear a UUID and ensure that it registers as nil */
124 ast_uuid_clear(uuid1);
125
126 if (!ast_uuid_is_nil(uuid1)) {
127 ast_test_status_update(test, "UUID that was cleared does not appear to be nil\n");
128 goto end;
129 }
130
131 res = AST_TEST_PASS;
132
133end:
134 ast_free(uuid1);
135 ast_free(uuid2);
136 ast_free(uuid3);
137 return res;
138}
#define ast_free(a)
Definition astmm.h:180
char * end
Definition eagi_proxy.c:73
#define NULL
Definition resample.c:96
@ TEST_INIT
Definition test.h:200
@ TEST_EXECUTE
Definition test.h:201
#define ast_test_status_update(a, b, c...)
Definition test.h:129
ast_test_result_state
Definition test.h:193
@ AST_TEST_PASS
Definition test.h:195
@ AST_TEST_FAIL
Definition test.h:196
@ AST_TEST_NOT_RUN
Definition test.h:194
int ast_uuid_compare(struct ast_uuid *left, struct ast_uuid *right)
Compare two UUIDs.
Definition uuid.c:177
#define AST_UUID_STR_LEN
Definition uuid.h:27
struct ast_uuid * ast_uuid_generate(void)
Generate a UUID.
Definition uuid.c:123
void ast_uuid_clear(struct ast_uuid *uuid)
Clear a UUID by setting it to be a nil UUID (all 0s)
Definition uuid.c:182
struct ast_uuid * ast_str_to_uuid(char *str)
Convert a string to a UUID.
Definition uuid.c:149
struct ast_uuid * ast_uuid_copy(struct ast_uuid *src)
Make a copy of a UUID.
Definition uuid.c:166
int ast_uuid_is_nil(struct ast_uuid *uuid)
Check if a UUID is a nil UUID (all 0s)
Definition uuid.c:187
char * ast_uuid_generate_str(char *buf, size_t size)
Generate a UUID string.
Definition uuid.c:141
char * ast_uuid_to_str(struct ast_uuid *uuid, char *buf, size_t size)
Convert a UUID to a string.
Definition uuid.c:134

References ast_free, ast_str_to_uuid(), AST_TEST_FAIL, AST_TEST_NOT_RUN, AST_TEST_PASS, ast_test_status_update, ast_uuid_clear(), ast_uuid_compare(), ast_uuid_copy(), ast_uuid_generate(), ast_uuid_generate_str(), ast_uuid_is_nil(), AST_UUID_STR_LEN, ast_uuid_to_str(), end, NULL, TEST_EXECUTE, and TEST_INIT.

◆ load_module()

static int load_module ( void  )
static

Definition at line 146 of file test_uuid.c.

147{
150}
static int uuid(struct ast_channel *chan, const char *cmd, char *data, char *buf, size_t len)
Definition func_uuid.c:52
@ AST_MODULE_LOAD_SUCCESS
Definition module.h:70
#define AST_TEST_REGISTER(cb)
Definition test.h:127

References AST_MODULE_LOAD_SUCCESS, AST_TEST_REGISTER, and uuid().

◆ unload_module()

static int unload_module ( void  )
static

Definition at line 140 of file test_uuid.c.

141{
143 return 0;
144}
#define AST_TEST_UNREGISTER(cb)
Definition test.h:128

References AST_TEST_UNREGISTER, and uuid().

Variable Documentation

◆ __mod_info

struct ast_module_info __mod_info = { .name = AST_MODULE, .flags = AST_MODFLAG_LOAD_ORDER , .description = "UUID test module" , .key = ASTERISK_GPL_KEY , .buildopt_sum = AST_BUILDOPT_SUM, .load = load_module, .unload = unload_module, .load_pri = AST_MODPRI_DEFAULT, .support_level = AST_MODULE_SUPPORT_CORE, }
static

Definition at line 152 of file test_uuid.c.

◆ ast_module_info

const struct ast_module_info* ast_module_info = &__mod_info
static

Definition at line 152 of file test_uuid.c.