update to newest ct; fixes #60
[beanstalkd.git] / job-test.c
blob025b318d9caacf8f76a672b52f567d2c81d534a0
1 #include <stdint.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <string.h>
5 #include <sys/time.h>
7 #include "ct/ct.h"
8 #include "dat.h"
10 static tube default_tube;
12 void
13 cttestjob_creation()
15 job j;
17 TUBE_ASSIGN(default_tube, make_tube("default"));
18 j = make_job(1, 0, 1, 0, default_tube);
19 assertf(j->pri == 1, "priority should match");
22 void
23 cttestjob_cmp_pris()
25 job a, b;
27 TUBE_ASSIGN(default_tube, make_tube("default"));
28 a = make_job(1, 0, 1, 0, default_tube);
29 b = make_job(1 << 27, 0, 1, 0, default_tube);
31 assertf(job_pri_cmp(a, b) < 0, "should be a < b");
34 void
35 cttestjob_cmp_ids()
37 job a, b;
39 TUBE_ASSIGN(default_tube, make_tube("default"));
40 a = make_job(1, 0, 1, 0, default_tube);
41 b = make_job(1, 0, 1, 0, default_tube);
43 b->id <<= 49;
44 assertf(job_pri_cmp(a, b) < 0, "should be a < b");
48 void
49 cttestjob_large_pris()
51 job a, b;
53 TUBE_ASSIGN(default_tube, make_tube("default"));
54 a = make_job(1, 0, 1, 0, default_tube);
55 b = make_job(-5, 0, 1, 0, default_tube);
57 assertf(job_pri_cmp(a, b) < 0, "should be a < b");
59 a = make_job(-5, 0, 1, 0, default_tube);
60 b = make_job(1, 0, 1, 0, default_tube);
62 assertf(job_pri_cmp(a, b) > 0, "should be a > b");
65 void
66 cttestjob_hash_free()
68 job j;
69 uint64 jid = 83;
71 TUBE_ASSIGN(default_tube, make_tube("default"));
72 j = make_job_with_id(0, 0, 1, 0, default_tube, jid);
73 job_free(j);
75 assertf(!job_find(jid), "job should be missing");
78 void
79 cttestjob_hash_free_next()
81 job a, b;
82 uint64 aid = 97, bid = 12386;
84 TUBE_ASSIGN(default_tube, make_tube("default"));
85 b = make_job_with_id(0, 0, 1, 0, default_tube, bid);
86 a = make_job_with_id(0, 0, 1, 0, default_tube, aid);
88 assertf(a->ht_next == b, "b should be chained to a");
90 job_free(b);
92 assertf(a->ht_next == NULL, "job should be missing");
95 void
96 cttestjob_all_jobs_used()
98 job j, x;
100 TUBE_ASSIGN(default_tube, make_tube("default"));
101 j = make_job(0, 0, 1, 0, default_tube);
102 assertf(get_all_jobs_used() == 1, "should match");
104 x = allocate_job(10);
105 assertf(get_all_jobs_used() == 1, "should match");
107 job_free(x);
108 assertf(get_all_jobs_used() == 1, "should match");
110 job_free(j);
111 assertf(get_all_jobs_used() == 0, "should match");
114 void
115 cttestjob_100_000_jobs()
117 int i;
119 TUBE_ASSIGN(default_tube, make_tube("default"));
120 for (i = 0; i < 100000; i++) {
121 make_job(0, 0, 1, 0, default_tube);
123 assertf(get_all_jobs_used() == 100000, "should match");
125 for (i = 1; i <= 100000; i++) {
126 job_free(job_find(i));
128 fprintf(stderr, "get_all_jobs_used() => %zu\n", get_all_jobs_used());
129 assertf(get_all_jobs_used() == 0, "should match");