~ubuntu-branches/ubuntu/utopic/gridengine/utopic

« back to all changes in this revision

Viewing changes to source/daemons/qmaster/test_sge_qmaster_timed_event.c

  • Committer: Bazaar Package Importer
  • Author(s): Mark Hymers
  • Date: 2008-06-25 22:36:13 UTC
  • Revision ID: james.westby@ubuntu.com-20080625223613-tvd9xlhuoct9kyhm
Tags: upstream-6.2~beta2
ImportĀ upstreamĀ versionĀ 6.2~beta2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*___INFO__MARK_BEGIN__*/
 
2
/*************************************************************************
 
3
 * 
 
4
 *  The Contents of this file are made available subject to the terms of
 
5
 *  the Sun Industry Standards Source License Version 1.2
 
6
 * 
 
7
 *  Sun Microsystems Inc., March, 2001
 
8
 * 
 
9
 * 
 
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
 
16
 * 
 
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.
 
23
 * 
 
24
 *   The Initial Developer of the Original Code is: Sun Microsystems, Inc.
 
25
 * 
 
26
 *   Copyright: 2003 by Sun Microsystems, Inc.
 
27
 * 
 
28
 *   All Rights Reserved.
 
29
 * 
 
30
 ************************************************************************/
 
31
/*___INFO__MARK_END__*/
 
32
 
 
33
#include <stdio.h>
 
34
#include <unistd.h>
 
35
 
 
36
#include "sge_qmaster_timed_event.h"
 
37
#include "sgermon.h"
 
38
#include "sge_bootstrap.h"
 
39
#include "sge_feature.h"
 
40
#include "sge_profiling.h"
 
41
#include "gdi/sge_gdi_ctx.h"
 
42
 
 
43
 
 
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);
 
47
 
 
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);
 
57
 
 
58
int main(int argc, char* argv[])
 
59
{
 
60
   DENTER_MAIN(TOP_LAYER, "test_sge_qmaster_timed_event");
 
61
 
 
62
   bootstrap_mt_init();
 
63
   feature_mt_init();
 
64
   sge_prof_set_enabled(false);
 
65
 
 
66
   printf("%s: delete_nonexistent_event ----------------------------------\n", SGE_FUNC);
 
67
 
 
68
   test_delete_nonexistent_event();
 
69
 
 
70
   printf("%s: add_one_time_event_without_hander -------------------------\n", SGE_FUNC);
 
71
 
 
72
   test_add_one_time_event_without_handler();
 
73
 
 
74
   printf("%s: delete_one_time_event -------------------------------------\n", SGE_FUNC);
 
75
 
 
76
   test_delete_one_time_event();
 
77
 
 
78
   printf("%s: delete_multiple_one_time_events ---------------------------\n", SGE_FUNC);
 
79
 
 
80
   test_delete_multiple_one_time_events();
 
81
 
 
82
   printf("%s: one_time_event_delivery -----------------------------------\n", SGE_FUNC);
 
83
 
 
84
   test_one_time_event_delivery();
 
85
 
 
86
   printf("%s: multiple_one_time_events_delivery -------------------------\n", SGE_FUNC);
 
87
 
 
88
   test_multiple_one_time_events_delivery();
 
89
 
 
90
   printf("%s: recurring_event_delivery ----------------------------------\n", SGE_FUNC);
 
91
 
 
92
   test_recurring_event_delivery();
 
93
 
 
94
   printf("%s: add_earlier_one_time_event --------------------------------\n", SGE_FUNC);
 
95
 
 
96
   test_add_earlier_one_time_event();
 
97
 
 
98
   printf("%s: add_earlier_recurring_event -------------------------------\n", SGE_FUNC);
 
99
 
 
100
   test_add_earlier_recurring_event();
 
101
 
 
102
   printf("%s: shutdown --------------------------------------------------\n", SGE_FUNC);
 
103
 
 
104
   te_shutdown();
 
105
 
 
106
   DEXIT;
 
107
   return 0;
 
108
} /* main() */
 
109
 
 
110
void calendar_event_handler(sge_gdi_ctx_class_t *ctx, te_event_t anEvent, monitoring_t *monitor)
 
111
{
 
112
   DENTER(TOP_LAYER, "calendar_event_handler");
 
113
 
 
114
   DPRINTF(("%s: time:"sge_u32" when:"sge_u32"\n", SGE_FUNC, time(NULL), te_get_when(anEvent)));
 
115
 
 
116
   DEXIT;
 
117
   return;
 
118
} /* calendar_event_handler() */
 
119
 
 
120
void signal_resend_event_handler(sge_gdi_ctx_class_t *ctx, te_event_t anEvent, monitoring_t *monitor)
 
121
{
 
122
   DENTER(TOP_LAYER, "signal_resend_event_handler");
 
123
 
 
124
   DPRINTF(("%s: time:"sge_u32" when:"sge_u32"\n", SGE_FUNC, time(NULL), te_get_when(anEvent)));
 
125
 
 
126
   DEXIT;
 
127
   return;
 
128
} /* signal_resend_event_handler() */
 
129
 
 
130
void job_resend_event_handler(sge_gdi_ctx_class_t *ctx, te_event_t anEvent, monitoring_t *monitor)
 
131
{
 
132
   DENTER(TOP_LAYER, "job_resend_event_handler");
 
133
 
 
134
   DPRINTF(("%s: time:"sge_u32" when:"sge_u32"\n", SGE_FUNC, time(NULL), te_get_when(anEvent)));
 
135
 
 
136
   DEXIT;
 
137
   return;
 
138
} /* job_resend_event_handler() */
 
139
 
 
140
static void test_delete_nonexistent_event(void)
 
141
{
 
142
   te_delete_one_time_event(TYPE_CALENDAR_EVENT, 0, 0, "no-event");
 
143
 
 
144
   sleep(2);
 
145
}
 
146
 
 
147
static void test_add_one_time_event_without_handler(void)
 
148
{
 
149
   te_event_t ev1;
 
150
 
 
151
   ev1 = te_new_event(time(NULL), TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-1");
 
152
   te_add_event(ev1);
 
153
   te_free_event(&ev1);
 
154
 
 
155
   sleep(3);
 
156
 
 
157
   return;
 
158
}
 
159
 
 
160
static void test_delete_one_time_event(void)
 
161
{
 
162
   te_event_t ev1;
 
163
   time_t when = time(NULL) + 30;
 
164
 
 
165
   ev1 = te_new_event(when, TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-2");
 
166
   te_add_event(ev1);
 
167
   te_free_event(&ev1);
 
168
 
 
169
   sleep(3);
 
170
 
 
171
   te_delete_one_time_event(TYPE_CALENDAR_EVENT, 0, 0, "calendar_event-2");
 
172
 
 
173
   sleep(2);
 
174
 
 
175
   return;
 
176
}
 
177
 
 
178
static void test_delete_multiple_one_time_events(void)
 
179
{
 
180
   te_event_t ev1;
 
181
   time_t when1, when2 = 0;
 
182
 
 
183
   when1 = time(NULL) + 10;
 
184
   ev1 = te_new_event(when1, TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-3");
 
185
   te_add_event(ev1);
 
186
   te_free_event(&ev1);
 
187
 
 
188
   when1 = time(NULL) + 20;
 
189
   ev1 = te_new_event(when1, TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-3");
 
190
   te_add_event(ev1);
 
191
   te_free_event(&ev1);
 
192
 
 
193
   when2 = time(NULL) + 30;
 
194
   ev1 = te_new_event(when2, TYPE_CALENDAR_EVENT, ONE_TIME_EVENT, 0, 0, "calendar_event-3");
 
195
   te_add_event(ev1);
 
196
   te_free_event(&ev1);
 
197
 
 
198
   sleep(3);
 
199
 
 
200
   te_delete_one_time_event(TYPE_CALENDAR_EVENT, 0, 0, "calendar_event-3");
 
201
 
 
202
   sleep(10);
 
203
 
 
204
   return;
 
205
}
 
206
 
 
207
static void test_one_time_event_delivery(void)
 
208
{
 
209
   te_event_t ev1;
 
210
 
 
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");
 
213
   te_add_event(ev1);
 
214
   te_free_event(&ev1);
 
215
 
 
216
   sleep(2);
 
217
 
 
218
   return;
 
219
}
 
220
 
 
221
static void test_multiple_one_time_events_delivery(void)
 
222
{
 
223
   te_event_t ev1, ev2, ev3;
 
224
 
 
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);
 
227
 
 
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");
 
231
 
 
232
   te_add_event(ev1);
 
233
   te_add_event(ev2);
 
234
   te_add_event(ev3);
 
235
 
 
236
   te_free_event(&ev1);
 
237
   te_free_event(&ev2);
 
238
   te_free_event(&ev3);
 
239
 
 
240
   sleep(4);
 
241
 
 
242
   return;
 
243
}
 
244
 
 
245
static void test_recurring_event_delivery(void)
 
246
{
 
247
   te_event_t ev1;
 
248
 
 
249
   ev1 = te_new_event(20, TYPE_SIGNAL_RESEND_EVENT, RECURRING_EVENT, 0, 0, "signal-resend-event-2");
 
250
   te_add_event(ev1);
 
251
   te_free_event(&ev1);
 
252
 
 
253
   sleep(45);
 
254
 
 
255
   return;
 
256
}
 
257
 
 
258
static void test_add_earlier_one_time_event(void)
 
259
{
 
260
   te_event_t ev1;
 
261
 
 
262
   ev1 = te_new_event(time(NULL), TYPE_JOB_RESEND_EVENT, ONE_TIME_EVENT, 0, 0, "job-resend-event-2");
 
263
   te_add_event(ev1);
 
264
   te_free_event(&ev1);
 
265
 
 
266
   sleep(20);
 
267
 
 
268
   return;
 
269
}
 
270
 
 
271
static void test_add_earlier_recurring_event(void)
 
272
{
 
273
   te_event_t ev1;
 
274
 
 
275
   ev1 = te_new_event(5, TYPE_JOB_RESEND_EVENT, RECURRING_EVENT, 0, 0, "job-resend-event-3");
 
276
   te_add_event(ev1);
 
277
   te_free_event(&ev1);
 
278
 
 
279
   sleep(20);
 
280
 
 
281
   return;
 
282
}