42 #define TZDIR "/usr/share/lib/zoneinfo"
44 #define TZDIR "/usr/share/zoneinfo"
50 const char *
zones[] = {
"America/Chicago",
"America/New_York" };
51 int type, i, res = AST_TEST_PASS;
53 struct ast_tm atm[ARRAY_LEN(zones)];
54 char tmpdir[] =
"/tmp/timezone.XXXXXX";
55 char tzfile[50], syscmd[256];
59 info->name =
"timezone_watch";
60 info->category =
"/main/stdtime/";
61 info->summary =
"Verify deleting timezone file purges cache";
63 "Verifies that the caching engine properly destroys a timezone entry when its file is deleted.";
64 return AST_TEST_NOT_RUN;
69 if (!mkdtemp(tmpdir)) {
70 ast_test_status_update(
test,
"Unable to create working directory: %s\n", strerror(errno));
71 return AST_TEST_NOT_RUN;
73 snprintf(tzfile,
sizeof(tzfile),
"%s/test", tmpdir);
82 ast_test_status_update(
test,
"Executing %s test...\n", type == 0 ?
"deletion" :
"symlink");
83 for (i = 0; i < ARRAY_LEN(zones); i++) {
85 snprintf(syscmd,
sizeof(syscmd),
"%s " TZDIR
"/%s %s", type == 0 ?
"cp" :
"ln -sf", zones[i], tzfile);
87 ast_log(LOG_WARNING,
"system(%s) returned non-zero: %d\n", syscmd, system_res);
89 ast_localtime_wakeup_monitor(
test);
90 ast_test_status_update(
test,
"Querying timezone %s\n", tzfile);
96 ast_test_status_update(
test,
"Failed %s test: %d(%s) = %d(%s)\n", type == 0 ?
"deletion" :
"symlink", atm[i].
tm_hour, zones[i], atm[i-1].tm_hour, zones[i-1]);
98 ast_log(LOG_WARNING,
"DST transition during %s test: %d(%s/%d) != %d(%s/%d)\n", type == 0 ?
"deletion" :
"symlink", atm[i].
tm_hour, zones[i], atm[i].
tm_isdst, atm[i-1].tm_hour, zones[i-1], atm[i-1].tm_isdst);
103 if (i + 1 != ARRAY_LEN(zones)) {
110 snprintf(syscmd,
sizeof(syscmd),
"rm -rf %s", tmpdir);
112 ast_log(LOG_WARNING,
"system(%s) returned non-zero.\n", syscmd);
122 info->name =
"time_str_to_unit";
123 info->category =
"/main/stdtime/";
124 info->summary =
"Verify string to time unit conversions";
125 info->description = info->summary;
126 return AST_TEST_NOT_RUN;
167 return AST_TEST_PASS;
176 info->name =
"time_create_by_unit";
177 info->category =
"/main/stdtime/";
178 info->summary =
"Verify unit value to timeval conversions";
179 info->description = info->summary;
180 return AST_TEST_NOT_RUN;
199 ast_test_validate(
test, tv.tv_sec == 1 && tv.tv_usec == 500000);
202 ast_test_validate(
test, tv.tv_sec == 1 && tv.tv_usec == 500000);
205 ast_test_validate(
test, tv.tv_sec == 1 && tv.tv_usec == 500000);
207 return AST_TEST_PASS;
216 info->name =
"time_create_by_unit_str";
217 info->category =
"/main/stdtime/";
218 info->summary =
"Verify value with unit as a string to timeval conversions";
219 info->description = info->summary;
220 return AST_TEST_NOT_RUN;
239 ast_test_validate(
test, tv.tv_sec == 1 && tv.tv_usec == 500000);
242 ast_test_validate(
test, tv.tv_sec == 1 && tv.tv_usec == 500000);
245 ast_test_validate(
test, tv.tv_sec == 1 && tv.tv_usec == 500000);
247 return AST_TEST_PASS;
256 info->name =
"time_tv_to_usec";
257 info->category =
"/main/stdtime/";
258 info->summary =
"Verify conversion of a timeval structure to microseconds";
259 info->description = info->summary;
260 return AST_TEST_NOT_RUN;
277 return AST_TEST_PASS;
280 static int unload_module(
void)
282 AST_TEST_UNREGISTER(test_time_create_by_unit_str);
283 AST_TEST_UNREGISTER(test_time_create_by_unit);
284 AST_TEST_UNREGISTER(test_time_str_to_unit);
285 AST_TEST_UNREGISTER(test_time_tv_to_usec);
286 AST_TEST_UNREGISTER(test_timezone_watch);
290 static int load_module(
void)
292 AST_TEST_REGISTER(test_timezone_watch);
293 AST_TEST_REGISTER(test_time_tv_to_usec);
294 AST_TEST_REGISTER(test_time_str_to_unit);
295 AST_TEST_REGISTER(test_time_create_by_unit);
296 AST_TEST_REGISTER(test_time_create_by_unit_str);
Asterisk main include file. File version handling, generic pbx functions.
ast_suseconds_t ast_time_tv_to_usec(const struct timeval *tv)
Convert a timeval structure to microseconds.
struct ast_tm * ast_localtime(const struct timeval *timep, struct ast_tm *p_tm, const char *zone)
Timezone-independent version of localtime_r(3).
struct timeval ast_time_create_by_unit_str(unsigned long val, const char *unit)
Convert the given unit value, and create a timeval object from it.
struct timeval ast_tvnow(void)
Returns current timeval. Meant to replace calls to gettimeofday().
int ast_safe_system(const char *s)
Safely spawn an OS shell command while closing file descriptors.
struct timeval ast_time_create(ast_time_t sec, ast_suseconds_t usec)
Create a timeval object initialized to given values.
enum TIME_UNIT ast_time_str_to_unit(const char *unit)
Convert a string to a time unit enumeration value.
#define AST_TEST_DEFINE(hdr)
struct timeval ast_time_create_by_unit(unsigned long val, enum TIME_UNIT unit)
Convert the given unit value, and create a timeval object from it.
#define ASTERISK_GPL_KEY
The text the key() function should return.
Asterisk module definitions.
Application convenience functions, designed to give consistent look and feel to Asterisk apps...