1
/*___INFO__MARK_BEGIN__*/
2
/*************************************************************************
4
* The Contents of this file are made available subject to the terms of
5
* the Sun Industry Standards Source License Version 1.2
7
* Sun Microsystems Inc., March, 2001
10
* Sun Industry Standards Source License Version 1.2
11
* =================================================
12
* The contents of this file are subject to the Sun Industry Standards
13
* Source License Version 1.2 (the "License"); You may not use this file
14
* except in compliance with the License. You may obtain a copy of the
15
* License at http://gridengine.sunsource.net/Gridengine_SISSL_license.html
17
* Software provided under this License is provided on an "AS IS" basis,
18
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
19
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
20
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
21
* See the License for the specific provisions governing your rights and
22
* obligations concerning the Software.
24
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
26
* Copyright: 2003 by Sun Microsystems, Inc.
28
* All Rights Reserved.
30
************************************************************************/
31
/*___INFO__MARK_END__*/
36
#include "sge_qmaster_timed_event.h"
38
#include "sge_bootstrap.h"
39
#include "sge_feature.h"
40
#include "sge_profiling.h"
41
#include "gdi/sge_gdi_ctx.h"
44
void calendar_event_handler(sge_gdi_ctx_class_t *ctx, te_event_t anEvent, monitoring_t *monitor);
45
void signal_resend_event_handler(sge_gdi_ctx_class_t *ctx, te_event_t anEvent, monitoring_t *monitor);
46
void job_resend_event_handler(sge_gdi_ctx_class_t *ctx, te_event_t anEvent, monitoring_t *monitor);
48
static void test_delete_nonexistent_event(void);
49
static void test_add_one_time_event_without_handler(void);
50
static void test_delete_one_time_event(void);
51
static void test_delete_multiple_one_time_events(void);
52
static void test_one_time_event_delivery(void);
53
static void test_multiple_one_time_events_delivery(void);
54
static void test_recurring_event_delivery(void);
55
static void test_add_earlier_one_time_event(void);
56
static void test_add_earlier_recurring_event(void);
58
int main(int argc, char* argv[])
60
DENTER_MAIN(TOP_LAYER, "test_sge_qmaster_timed_event");
64
sge_prof_set_enabled(false);
66
printf("%s: delete_nonexistent_event ----------------------------------\n", SGE_FUNC);
68
test_delete_nonexistent_event();
70
printf("%s: add_one_time_event_without_hander -------------------------\n", SGE_FUNC);
72
test_add_one_time_event_without_handler();
74
printf("%s: delete_one_time_event -------------------------------------\n", SGE_FUNC);
76
test_delete_one_time_event();
78
printf("%s: delete_multiple_one_time_events ---------------------------\n", SGE_FUNC);
80
test_delete_multiple_one_time_events();
82
printf("%s: one_time_event_delivery -----------------------------------\n", SGE_FUNC);
84
test_one_time_event_delivery();
86
printf("%s: multiple_one_time_events_delivery -------------------------\n", SGE_FUNC);
88
test_multiple_one_time_events_delivery();
90
printf("%s: recurring_event_delivery ----------------------------------\n", SGE_FUNC);
92
test_recurring_event_delivery();
94
printf("%s: add_earlier_one_time_event --------------------------------\n", SGE_FUNC);
96
test_add_earlier_one_time_event();
98
printf("%s: add_earlier_recurring_event -------------------------------\n", SGE_FUNC);
100
test_add_earlier_recurring_event();
102
printf("%s: shutdown --------------------------------------------------\n", SGE_FUNC);
110
void calendar_event_handler(sge_gdi_ctx_class_t *ctx, te_event_t anEvent, monitoring_t *monitor)
112
DENTER(TOP_LAYER, "calendar_event_handler");
114
DPRINTF(("%s: time:"sge_u32" when:"sge_u32"\n", SGE_FUNC, time(NULL), te_get_when(anEvent)));
118
} /* calendar_event_handler() */
120
void signal_resend_event_handler(sge_gdi_ctx_class_t *ctx, te_event_t anEvent, monitoring_t *monitor)
122
DENTER(TOP_LAYER, "signal_resend_event_handler");
124
DPRINTF(("%s: time:"sge_u32" when:"sge_u32"\n", SGE_FUNC, time(NULL), te_get_when(anEvent)));
128
} /* signal_resend_event_handler() */
130
void job_resend_event_handler(sge_gdi_ctx_class_t *ctx, te_event_t anEvent, monitoring_t *monitor)
132
DENTER(TOP_LAYER, "job_resend_event_handler");
134
DPRINTF(("%s: time:"sge_u32" when:"sge_u32"\n", SGE_FUNC, time(NULL), te_get_when(anEvent)));
138
} /* job_resend_event_handler() */
140
static void test_delete_nonexistent_event(void)
142
te_delete_one_time_event(TYPE_CALENDAR_EVENT, 0, 0, "no-event");
147
static void test_add_one_time_event_without_handler(void)
151
ev1 = te_new_event(time(NULL), TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-1");
160
static void test_delete_one_time_event(void)
163
time_t when = time(NULL) + 30;
165
ev1 = te_new_event(when, TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-2");
171
te_delete_one_time_event(TYPE_CALENDAR_EVENT, 0, 0, "calendar_event-2");
178
static void test_delete_multiple_one_time_events(void)
181
time_t when1, when2 = 0;
183
when1 = time(NULL) + 10;
184
ev1 = te_new_event(when1, TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-3");
188
when1 = time(NULL) + 20;
189
ev1 = te_new_event(when1, TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-3");
193
when2 = time(NULL) + 30;
194
ev1 = te_new_event(when2, TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-3");
200
te_delete_one_time_event(TYPE_CALENDAR_EVENT, 0, 0, "calendar_event-3");
207
static void test_one_time_event_delivery(void)
211
te_register_event_handler(calendar_event_handler, TYPE_CALENDAR_EVENT);
212
ev1 = te_new_event(time(NULL), TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-4");
221
static void test_multiple_one_time_events_delivery(void)
223
te_event_t ev1, ev2, ev3;
225
te_register_event_handler(signal_resend_event_handler, TYPE_SIGNAL_RESEND_EVENT);
226
te_register_event_handler(job_resend_event_handler, TYPE_JOB_RESEND_EVENT);
228
ev1 = te_new_event(time(NULL), TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-5");
229
ev2 = te_new_event(time(NULL), TYPE_SIGNAL_RESEND_EVENT, ONE_TIME_EVENT, 0, 0, "signal-resend-event-1");
230
ev3 = te_new_event(time(NULL), TYPE_JOB_RESEND_EVENT, ONE_TIME_EVENT, 0, 0, "job-resend-event-1");
245
static void test_recurring_event_delivery(void)
249
ev1 = te_new_event(20, TYPE_SIGNAL_RESEND_EVENT, RECURRING_EVENT, 0, 0, "signal-resend-event-2");
258
static void test_add_earlier_one_time_event(void)
262
ev1 = te_new_event(time(NULL), TYPE_JOB_RESEND_EVENT, ONE_TIME_EVENT, 0, 0, "job-resend-event-2");
271
static void test_add_earlier_recurring_event(void)
275
ev1 = te_new_event(5, TYPE_JOB_RESEND_EVENT, RECURRING_EVENT, 0, 0, "job-resend-event-3");