fileq 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README +15 -0
- data/lib/fileq.rb +455 -0
- data/lib/job.rb +181 -0
- data/lib/lockfile.rb +88 -0
- data/test/fileq_createdir_tests.rb +83 -0
- data/test/fileq_find_tests.rb +74 -0
- data/test/fileq_first_tests.rb +33 -0
- data/test/fileq_job_tests.rb +218 -0
- data/test/fileq_queue_tests.rb +365 -0
- data/test/fileq_test.rb +12 -0
- data/test/lockfile_test.rb +4 -0
- data/test/lockfile_tests.rb +132 -0
- data/test/test_helper.rb +8 -0
- metadata +67 -0
@@ -0,0 +1,218 @@
|
|
1
|
+
|
2
|
+
class FileQJobTests < Test::Unit::TestCase
|
3
|
+
|
4
|
+
def setup
|
5
|
+
@fq = Xxeo::FileQ.new('test', {:dir => 'test/test_fq'})
|
6
|
+
@fq.create_queue_dirs
|
7
|
+
|
8
|
+
@tmp_fname1 = 'tmp_file1'
|
9
|
+
@tmp_name1 = 'test/test_fq/' + @tmp_fname1
|
10
|
+
@data1 = "blah blah1\nblah blah1\n"
|
11
|
+
File.open(@tmp_name1, "w") { |f| f.write(@data1) }
|
12
|
+
|
13
|
+
@tmp_fname2 = 'tmp_file2'
|
14
|
+
@tmp_name2 = 'test/test_fq/' + @tmp_fname2
|
15
|
+
@data2 = "blah blah2\nblah blah2\n"
|
16
|
+
File.open(@tmp_name2, "w") { |f| f.write(@data2) }
|
17
|
+
|
18
|
+
@job1 = @fq.insert_data('This is a test')
|
19
|
+
@job2 = @fq.insert_file(@tmp_name1)
|
20
|
+
@job3 = @fq.insert_file(@tmp_name2)
|
21
|
+
end
|
22
|
+
|
23
|
+
def teardown
|
24
|
+
FileUtils.rm_rf 'test/test_fq'
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_status_getter_plain
|
28
|
+
assert_equal(@job1.status, Xxeo::ST_QUEUED)
|
29
|
+
assert_equal(@job2.status, Xxeo::ST_QUEUED)
|
30
|
+
assert_equal(@job3.status, Xxeo::ST_QUEUED)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_pull_job
|
34
|
+
job1 = @fq.pull_job(@job1.name)
|
35
|
+
assert(job1)
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_pull_job_via_instance
|
39
|
+
assert(@job1.pull)
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
# This is a rare case, the typical cycle is
|
44
|
+
# Process 1 -> insert into que
|
45
|
+
# Process 2 -> pull from que, mark_done/err
|
46
|
+
def test_pull_job_via_instance_twice
|
47
|
+
assert(@job1.pull)
|
48
|
+
assert(@job1.pull)
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_pull_job_via_instance_fail
|
52
|
+
assert(@job1.pull)
|
53
|
+
@job1.mark_done
|
54
|
+
assert(!@job1.pull)
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_status_mesg_setter_bad
|
58
|
+
assert_raise Xxeo::WrongStatus do
|
59
|
+
@job1.status_mesg = 'blah'
|
60
|
+
end
|
61
|
+
assert_raise Xxeo::WrongStatus do
|
62
|
+
@job1.mark_done
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_status_mesg_setter
|
67
|
+
assert(@job1.pull)
|
68
|
+
@job1.status_mesg = 'pushing now'
|
69
|
+
|
70
|
+
assert_equal(@job1.status_mesg, 'pushing now')
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_logger
|
74
|
+
assert(@job1.pull)
|
75
|
+
assert(@job1.log('doing push now'))
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_log_reader
|
79
|
+
assert(@job1.pull)
|
80
|
+
assert(@job1.log('doing push now'))
|
81
|
+
assert_match(/ doing push now$/, @job1.read_log)
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_mark_done
|
85
|
+
@job1.pull
|
86
|
+
@job1.mark_done
|
87
|
+
|
88
|
+
assert_equal(@job1.status, Xxeo::ST_DONE)
|
89
|
+
assert_equal(@job2.status, Xxeo::ST_QUEUED)
|
90
|
+
assert_equal(@job3.status, Xxeo::ST_QUEUED)
|
91
|
+
|
92
|
+
assert_equal({:done => 1, :que => 2}, @fq.all_lengths)
|
93
|
+
|
94
|
+
assert_equal(2, @fq.length)
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_mark_err
|
98
|
+
@job1.pull
|
99
|
+
@job1.mark_error
|
100
|
+
|
101
|
+
assert_equal(@job1.status, Xxeo::ST_ERROR)
|
102
|
+
assert_equal(@job2.status, Xxeo::ST_QUEUED)
|
103
|
+
assert_equal(@job3.status, Xxeo::ST_QUEUED)
|
104
|
+
|
105
|
+
assert_equal({:que => 2, :_err => 1}, @fq.all_lengths)
|
106
|
+
|
107
|
+
assert_equal(2, @fq.length)
|
108
|
+
end
|
109
|
+
|
110
|
+
def test_reinsert
|
111
|
+
@job1.pull
|
112
|
+
@job1.reinsert
|
113
|
+
|
114
|
+
assert_equal(@job1.status, Xxeo::ST_QUEUED)
|
115
|
+
assert_equal(@job2.status, Xxeo::ST_QUEUED)
|
116
|
+
assert_equal(@job3.status, Xxeo::ST_QUEUED)
|
117
|
+
|
118
|
+
assert_equal({:que => 3 }, @fq.all_lengths)
|
119
|
+
|
120
|
+
assert_equal(3, @fq.length)
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_owning_pid1
|
124
|
+
@job1.pull
|
125
|
+
|
126
|
+
@job2.pull
|
127
|
+
@job2.mark_done
|
128
|
+
|
129
|
+
@job3.pull
|
130
|
+
@job3.mark_done
|
131
|
+
|
132
|
+
assert_equal(@job1.owning_pid, $$)
|
133
|
+
assert_equal(@job2.owning_pid, nil)
|
134
|
+
assert_equal(@job3.owning_pid, nil)
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_owning_pid2
|
138
|
+
@job1.pull
|
139
|
+
|
140
|
+
assert_equal(@job1.owning_pid, $$)
|
141
|
+
assert_equal(@job2.owning_pid, nil)
|
142
|
+
assert_equal(@job3.owning_pid, nil)
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_own_yes
|
146
|
+
@job1.pull
|
147
|
+
|
148
|
+
@job2.pull
|
149
|
+
@job2.mark_done
|
150
|
+
|
151
|
+
@job3.pull
|
152
|
+
@job3.mark_done
|
153
|
+
|
154
|
+
assert(@job1.own?)
|
155
|
+
assert(!@job2.own?)
|
156
|
+
assert(!@job3.own?)
|
157
|
+
end
|
158
|
+
|
159
|
+
def test_own_not
|
160
|
+
@job1.pull
|
161
|
+
|
162
|
+
@job2.pull
|
163
|
+
@job2.mark_done
|
164
|
+
|
165
|
+
@job3.pull
|
166
|
+
@job3.mark_done
|
167
|
+
|
168
|
+
job1 = @fq.find_job(@job1.name)
|
169
|
+
job2 = @fq.find_job(@job2.name)
|
170
|
+
job3 = @fq.find_job(@job3.name)
|
171
|
+
|
172
|
+
assert(!job1.own?)
|
173
|
+
assert(!job2.own?)
|
174
|
+
assert(!job3.own?)
|
175
|
+
end
|
176
|
+
|
177
|
+
|
178
|
+
def test_status_all1
|
179
|
+
@job1.pull
|
180
|
+
|
181
|
+
@job2.pull
|
182
|
+
@job2.mark_error
|
183
|
+
|
184
|
+
@job3.pull
|
185
|
+
@job3.mark_done
|
186
|
+
|
187
|
+
assert_equal(@job1.status_all, [Xxeo::ST_RUN, $$, ''])
|
188
|
+
assert_equal(@job2.status_all, [Xxeo::ST_ERROR, nil, ''])
|
189
|
+
assert_equal(@job3.status_all, [Xxeo::ST_DONE, nil, ''])
|
190
|
+
end
|
191
|
+
|
192
|
+
def test_status_all2
|
193
|
+
@job1.pull
|
194
|
+
assert_equal(@job1.status_all, [Xxeo::ST_RUN, $$, ''])
|
195
|
+
assert_equal(@job2.status_all, [Xxeo::ST_QUEUED, nil, ''])
|
196
|
+
assert_equal(@job3.status_all, [Xxeo::ST_QUEUED, nil, ''])
|
197
|
+
end
|
198
|
+
|
199
|
+
# TODO: test a crash and cleanup
|
200
|
+
# TODO: test a fork and owning pid of different process
|
201
|
+
|
202
|
+
def test_is_file
|
203
|
+
assert(!@job1.is_file?)
|
204
|
+
assert(@job2.is_file?)
|
205
|
+
assert(@job3.is_file?)
|
206
|
+
end
|
207
|
+
|
208
|
+
def test_file_original_name
|
209
|
+
assert(@job2.is_file?)
|
210
|
+
assert_equal(@job2.original_pathname, @tmp_name2)
|
211
|
+
end
|
212
|
+
|
213
|
+
def test_file_original_name
|
214
|
+
assert(!@job1.is_file?)
|
215
|
+
assert_equal(@job1.original_pathname, nil)
|
216
|
+
end
|
217
|
+
|
218
|
+
end
|
@@ -0,0 +1,365 @@
|
|
1
|
+
|
2
|
+
class FileQQueueTests < Test::Unit::TestCase
|
3
|
+
|
4
|
+
def setup
|
5
|
+
@fq = Xxeo::FileQ.new('test', {:dir => 'test/test_fq'})
|
6
|
+
@fq.create_queue_dirs
|
7
|
+
|
8
|
+
@tmp_fname1 = 'tmp_file1'
|
9
|
+
@tmp_name1 = 'test/test_fq/' + @tmp_fname1
|
10
|
+
@data1 = "blah blah1\nblah blah1\n"
|
11
|
+
File.open(@tmp_name1, "w") { |f| f.write(@data1) }
|
12
|
+
|
13
|
+
@tmp_fname2 = 'tmp_file2'
|
14
|
+
@tmp_name2 = 'test/test_fq/' + @tmp_fname2
|
15
|
+
@data2 = "blah blah2\nblah blah2\n"
|
16
|
+
File.open(@tmp_name2, "w") { |f| f.write(@data2) }
|
17
|
+
end
|
18
|
+
|
19
|
+
def teardown
|
20
|
+
FileUtils.rm_rf 'test/test_fq'
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_error_log
|
24
|
+
@fq.log('busted')
|
25
|
+
msgs = @fq.read_log
|
26
|
+
assert_match(/ busted$/, msgs)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_insert_data
|
30
|
+
assert_equal(0, @fq.length)
|
31
|
+
|
32
|
+
job1 = @fq.insert_data('This is a test')
|
33
|
+
assert(job1, 'invalid job1: nil : ' + @fq.read_log)
|
34
|
+
|
35
|
+
y = @fq.all_lengths
|
36
|
+
assert_equal({:que => 1}, y) #@fq.all_lengths)
|
37
|
+
|
38
|
+
assert_equal(1, @fq.length)
|
39
|
+
return
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_multi_insert_data
|
43
|
+
job1 = @fq.insert_data('This is a test1')
|
44
|
+
assert(job1, 'invalid job1: false : ' + @fq.read_log)
|
45
|
+
|
46
|
+
job2 = @fq.insert_data('This is a test2')
|
47
|
+
assert(job2, 'invalid job2: false : ' + @fq.read_log)
|
48
|
+
|
49
|
+
assert_equal({:que => 2}, @fq.all_lengths)
|
50
|
+
|
51
|
+
assert_equal(2, @fq.length)
|
52
|
+
end
|
53
|
+
|
54
|
+
# assert(FileTest.zero?('test/test_fq/_lock'))
|
55
|
+
# assert(FileTest.zero?('test/test_fq/_log'))
|
56
|
+
# assert_equal(0, Dir.glob('test/test_fq/_tmp/*').length, Dir.glob('test/test_fq/_tmp'))
|
57
|
+
# assert_equal(1, Dir.glob('test/test_fq/que/*').length)
|
58
|
+
# assert_equal(0, Dir.glob('test/test_fq/run/*').length)
|
59
|
+
# assert_equal(0, Dir.glob('test/test_fq/pause/*').length)
|
60
|
+
# assert_equal(0, Dir.glob('test/test_fq/done/*').length)
|
61
|
+
# assert_equal(0, Dir.glob('test/test_fq/_err/*').length)
|
62
|
+
|
63
|
+
def test_insert_file
|
64
|
+
job1 = @fq.insert_file(@tmp_name1)
|
65
|
+
assert(job1, 'invalid job1: false : ' + @fq.read_log)
|
66
|
+
|
67
|
+
assert_equal({:que => 1}, @fq.all_lengths)
|
68
|
+
|
69
|
+
assert_equal(1, @fq.length)
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_file_original_name
|
73
|
+
job1 = @fq.insert_file(@tmp_name1)
|
74
|
+
assert(job1, 'invalid job1: false : ' + @fq.read_log)
|
75
|
+
|
76
|
+
assert_equal(job1.original_pathname, @tmp_name1)
|
77
|
+
|
78
|
+
assert_equal(1, @fq.length)
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
def test_multi_insert_file
|
83
|
+
job1 = @fq.insert_file(@tmp_name1)
|
84
|
+
assert(job1, 'invalid job1: false : ' + @fq.read_log)
|
85
|
+
|
86
|
+
job2 = @fq.insert_file(@tmp_name2)
|
87
|
+
assert(job2, 'invalid job2: false : ' + @fq.read_log)
|
88
|
+
|
89
|
+
assert_equal({:que => 2}, @fq.all_lengths)
|
90
|
+
|
91
|
+
assert_equal(2, @fq.length)
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_pull_none
|
95
|
+
assert_equal(0, @fq.length)
|
96
|
+
|
97
|
+
job = @fq.pull_job
|
98
|
+
assert_equal(nil, job)
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_pull_none_by_id
|
102
|
+
assert_equal(0, @fq.length)
|
103
|
+
|
104
|
+
job = @fq.pull_job('slslslslsl')
|
105
|
+
assert_equal(nil, job)
|
106
|
+
end
|
107
|
+
|
108
|
+
|
109
|
+
# Test queueing
|
110
|
+
|
111
|
+
def test_insert_pull_data_top_of_queue
|
112
|
+
job1 = @fq.insert_data('This is a test 1')
|
113
|
+
assert(job1.name, 'invalid job1: false : ' + @fq.read_log)
|
114
|
+
job2 = @fq.insert_data('This is a test 2')
|
115
|
+
assert(job1.name, 'invalid job2: false : ' + @fq.read_log)
|
116
|
+
|
117
|
+
job = @fq.pull_job()
|
118
|
+
|
119
|
+
assert_equal(job.name, job.name)
|
120
|
+
|
121
|
+
assert_equal(job.data, 'This is a test 1')
|
122
|
+
|
123
|
+
assert_equal(job.status, Xxeo::ST_RUN)
|
124
|
+
assert_equal(1, @fq.length)
|
125
|
+
assert_equal({:que => 1, :run => 1}, @fq.all_lengths)
|
126
|
+
|
127
|
+
job.mark_done
|
128
|
+
|
129
|
+
assert_equal(job.status, Xxeo::ST_DONE)
|
130
|
+
assert_equal(1, @fq.length)
|
131
|
+
assert_equal({:que => 1, :done => 1}, @fq.all_lengths)
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_pull_by_wrong_id
|
135
|
+
job1 = @fq.insert_data('This is a test 1')
|
136
|
+
assert(job1.name, 'invalid job1: false : ' + @fq.read_log)
|
137
|
+
job2 = @fq.insert_data('This is a test 2')
|
138
|
+
assert(job1.name, 'invalid job2: false : ' + @fq.read_log)
|
139
|
+
|
140
|
+
assert_equal(2, @fq.length)
|
141
|
+
|
142
|
+
job = @fq.pull_job('slslslslsl')
|
143
|
+
assert_equal(nil, job)
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_insert_pull_data_by_id
|
147
|
+
job1 = @fq.insert_data('This is a test 1')
|
148
|
+
assert(job1.name, 'invalid job1 false : ' + @fq.read_log)
|
149
|
+
job2 = @fq.insert_data('This is a test 2')
|
150
|
+
assert(job2.name, 'invalid job2 false : ' + @fq.read_log)
|
151
|
+
|
152
|
+
job = @fq.pull_job(job1.name)
|
153
|
+
|
154
|
+
assert_equal(job.name, job1.name)
|
155
|
+
|
156
|
+
assert_equal(job.data, 'This is a test 1')
|
157
|
+
|
158
|
+
assert_equal(job.status, Xxeo::ST_RUN)
|
159
|
+
assert_equal(1, @fq.length)
|
160
|
+
assert_equal({:que => 1, :run => 1}, @fq.all_lengths)
|
161
|
+
|
162
|
+
job.mark_done
|
163
|
+
|
164
|
+
assert_equal(job.status, Xxeo::ST_DONE)
|
165
|
+
assert_equal(1, @fq.length)
|
166
|
+
assert_equal({:que => 1, :done => 1}, @fq.all_lengths)
|
167
|
+
end
|
168
|
+
|
169
|
+
|
170
|
+
def test_insert_pull_file
|
171
|
+
job1 = @fq.insert_file(@tmp_name1)
|
172
|
+
assert(job1.name, 'invalid job1 false : ' + @fq.read_log)
|
173
|
+
job2 = @fq.insert_file(@tmp_name2)
|
174
|
+
assert(job2.name, 'invalid job2: false : ' + @fq.read_log)
|
175
|
+
|
176
|
+
assert_equal(2, @fq.length)
|
177
|
+
|
178
|
+
job = @fq.pull_job()
|
179
|
+
|
180
|
+
assert_equal(job1.name, job.name)
|
181
|
+
|
182
|
+
assert_equal(job.data, @data1)
|
183
|
+
assert(job.is_file?)
|
184
|
+
assert(job.original_pathname, @tmp_name1)
|
185
|
+
|
186
|
+
assert_equal(job.status, Xxeo::ST_RUN)
|
187
|
+
assert_equal(1, @fq.length)
|
188
|
+
assert_equal({:que => 1, :run => 1 }, @fq.all_lengths)
|
189
|
+
|
190
|
+
job.mark_done
|
191
|
+
|
192
|
+
assert_equal(job.status, Xxeo::ST_DONE)
|
193
|
+
assert_equal(1, @fq.length)
|
194
|
+
assert_equal({:que => 1, :done => 1}, @fq.all_lengths)
|
195
|
+
end
|
196
|
+
|
197
|
+
def test_insert_pull_file_by_id1
|
198
|
+
job1 = @fq.insert_file(@tmp_name1)
|
199
|
+
assert(job1.name, 'invalid job1 false : ' + @fq.read_log)
|
200
|
+
job2 = @fq.insert_file(@tmp_name2)
|
201
|
+
assert(job2.name, 'invalid job2: false : ' + @fq.read_log)
|
202
|
+
|
203
|
+
assert_equal(2, @fq.length)
|
204
|
+
|
205
|
+
job = @fq.pull_job(job1.name)
|
206
|
+
|
207
|
+
assert_equal(job1.name, job.name)
|
208
|
+
|
209
|
+
assert_equal(job.data, @data1)
|
210
|
+
|
211
|
+
assert_equal(job.status, Xxeo::ST_RUN)
|
212
|
+
assert_equal(1, @fq.length)
|
213
|
+
assert_equal({:que => 1, :run => 1}, @fq.all_lengths)
|
214
|
+
|
215
|
+
job.mark_done
|
216
|
+
|
217
|
+
assert_equal(job.status, Xxeo::ST_DONE)
|
218
|
+
assert_equal(1, @fq.length)
|
219
|
+
assert_equal({:que => 1, :done => 1}, @fq.all_lengths)
|
220
|
+
end
|
221
|
+
|
222
|
+
def test_insert_pull_file_by_id2
|
223
|
+
job1 = @fq.insert_file(@tmp_name1)
|
224
|
+
assert(job1.name, 'invalid job1 false : ' + @fq.read_log)
|
225
|
+
job2 = @fq.insert_file(@tmp_name2)
|
226
|
+
assert(job2.name, 'invalid job2: false : ' + @fq.read_log)
|
227
|
+
|
228
|
+
assert_equal(2, @fq.length)
|
229
|
+
|
230
|
+
job = @fq.pull_job(job2.name)
|
231
|
+
|
232
|
+
assert_equal(job2.name, job.name)
|
233
|
+
|
234
|
+
assert_equal(job.data, @data2)
|
235
|
+
|
236
|
+
assert_equal(job.status, Xxeo::ST_RUN)
|
237
|
+
assert_equal(1, @fq.length)
|
238
|
+
assert_equal({:que => 1, :run => 1}, @fq.all_lengths)
|
239
|
+
|
240
|
+
job.mark_done
|
241
|
+
|
242
|
+
assert_equal(job.status, Xxeo::ST_DONE)
|
243
|
+
assert_equal(1, @fq.length)
|
244
|
+
assert_equal({:que => 1, :done => 1}, @fq.all_lengths)
|
245
|
+
end
|
246
|
+
|
247
|
+
def test_insert_pull_data_and_file
|
248
|
+
job1 = @fq.insert_data('This is a test 1')
|
249
|
+
assert(job1, 'invalid job1: ' + @fq.read_log)
|
250
|
+
job2 = @fq.insert_file(@tmp_name1)
|
251
|
+
assert(job2, 'invalid job2: ' + @fq.read_log)
|
252
|
+
job3 = @fq.insert_data('This is a test 2')
|
253
|
+
assert(job3, 'invalid job3: ' + @fq.read_log)
|
254
|
+
job4 = @fq.insert_file(@tmp_name2)
|
255
|
+
assert(job4, 'invalid job4: ' + @fq.read_log)
|
256
|
+
|
257
|
+
assert_equal(4, @fq.length)
|
258
|
+
|
259
|
+
jobX1 = @fq.pull_job
|
260
|
+
assert(jobX1, 'invalid jobX1: ' + @fq.read_log)
|
261
|
+
assert_equal(job1.name, jobX1.name)
|
262
|
+
|
263
|
+
assert_equal(jobX1.data, 'This is a test 1')
|
264
|
+
assert_equal(jobX1.status, Xxeo::ST_RUN)
|
265
|
+
assert_equal(3, @fq.length)
|
266
|
+
assert_equal({:que => 3, :run => 1}, @fq.all_lengths)
|
267
|
+
jobX1.mark_done
|
268
|
+
assert_equal(jobX1.status, Xxeo::ST_DONE)
|
269
|
+
|
270
|
+
jobX2 = @fq.pull_job()
|
271
|
+
assert_equal(job2.name, jobX2.name)
|
272
|
+
|
273
|
+
assert_equal(jobX2.data, @data1)
|
274
|
+
assert_equal(jobX2.status, Xxeo::ST_RUN)
|
275
|
+
assert_equal(2, @fq.length)
|
276
|
+
assert_equal({:run => 1, :que => 2, :done => 1}, @fq.all_lengths)
|
277
|
+
jobX2.mark_done
|
278
|
+
assert_equal(jobX1.status, Xxeo::ST_DONE)
|
279
|
+
|
280
|
+
jobX3 = @fq.pull_job()
|
281
|
+
assert_equal(job3.name, jobX3.name)
|
282
|
+
|
283
|
+
assert_equal(jobX3.data, 'This is a test 2')
|
284
|
+
assert_equal(jobX3.status, Xxeo::ST_RUN)
|
285
|
+
assert_equal(1, @fq.length)
|
286
|
+
assert_equal({:run => 1, :que => 1, :done => 2}, @fq.all_lengths)
|
287
|
+
jobX3.mark_done
|
288
|
+
assert_equal(jobX3.status, Xxeo::ST_DONE)
|
289
|
+
|
290
|
+
jobX4 = @fq.pull_job()
|
291
|
+
assert_equal(job4.name, jobX4.name)
|
292
|
+
|
293
|
+
assert_equal(jobX4.data, @data2)
|
294
|
+
assert_equal(jobX4.status, Xxeo::ST_RUN)
|
295
|
+
assert_equal(0, @fq.length)
|
296
|
+
assert_equal({:run => 1, :done => 3}, @fq.all_lengths)
|
297
|
+
jobX4.mark_done
|
298
|
+
assert_equal(jobX4.status, Xxeo::ST_DONE)
|
299
|
+
|
300
|
+
assert_equal(0, @fq.length)
|
301
|
+
assert_equal({:done => 4}, @fq.all_lengths)
|
302
|
+
|
303
|
+
end
|
304
|
+
|
305
|
+
def test_insert_pull_data_and_file_by_id
|
306
|
+
job1 = @fq.insert_data('This is a test 1')
|
307
|
+
assert(job1, 'invalid job1: false : ' + @fq.read_log)
|
308
|
+
job2 = @fq.insert_file(@tmp_name1)
|
309
|
+
assert(job2, 'invalid job2: false : ' + @fq.read_log)
|
310
|
+
job3 = @fq.insert_data('This is a test 2')
|
311
|
+
assert(job3, 'invalid job3: false : ' + @fq.read_log)
|
312
|
+
job4 = @fq.insert_file(@tmp_name2)
|
313
|
+
assert(job4, 'invalid job4: false : ' + @fq.read_log)
|
314
|
+
|
315
|
+
assert_equal(4, @fq.length)
|
316
|
+
|
317
|
+
# How do we pull items from the queue?
|
318
|
+
# Multiple consumers could happen
|
319
|
+
jobX1 = @fq.pull_job(job1.name)
|
320
|
+
assert_equal(job1.name, jobX1.name)
|
321
|
+
|
322
|
+
assert_equal(jobX1.data, 'This is a test 1')
|
323
|
+
assert_equal(jobX1.status, Xxeo::ST_RUN)
|
324
|
+
assert_equal(3, @fq.length)
|
325
|
+
assert_equal({:que => 3, :run => 1}, @fq.all_lengths)
|
326
|
+
jobX1.mark_done
|
327
|
+
assert_equal(jobX1.status, Xxeo::ST_DONE)
|
328
|
+
|
329
|
+
jobX2 = @fq.pull_job(job2.name)
|
330
|
+
assert_equal(job2.name, jobX2.name)
|
331
|
+
|
332
|
+
assert_equal(jobX2.data, @data1)
|
333
|
+
assert_equal(jobX2.status, Xxeo::ST_RUN)
|
334
|
+
assert_equal(2, @fq.length)
|
335
|
+
assert_equal({:done => 1, :que => 2, :run => 1}, @fq.all_lengths)
|
336
|
+
jobX2.mark_done
|
337
|
+
assert_equal(jobX1.status, Xxeo::ST_DONE)
|
338
|
+
|
339
|
+
jobX3 = @fq.pull_job(job3.name)
|
340
|
+
assert_equal(job3.name, jobX3.name)
|
341
|
+
|
342
|
+
assert_equal(jobX3.data, 'This is a test 2')
|
343
|
+
assert_equal(jobX3.status, Xxeo::ST_RUN)
|
344
|
+
assert_equal(1, @fq.length)
|
345
|
+
assert_equal({:done => 2, :que => 1, :run => 1}, @fq.all_lengths)
|
346
|
+
jobX3.mark_done
|
347
|
+
assert_equal(jobX3.status, Xxeo::ST_DONE)
|
348
|
+
|
349
|
+
jobX4 = @fq.pull_job(job4.name)
|
350
|
+
assert_equal(job4.name, jobX4.name)
|
351
|
+
|
352
|
+
assert_equal(jobX4.data, @data2)
|
353
|
+
assert_equal(jobX4.status, Xxeo::ST_RUN)
|
354
|
+
assert_equal(0, @fq.length)
|
355
|
+
assert_equal({:done => 3, :run => 1}, @fq.all_lengths)
|
356
|
+
jobX4.mark_done
|
357
|
+
assert_equal(jobX4.status, Xxeo::ST_DONE)
|
358
|
+
|
359
|
+
assert_equal(0, @fq.length)
|
360
|
+
assert_equal({:done => 4}, @fq.all_lengths)
|
361
|
+
|
362
|
+
end
|
363
|
+
|
364
|
+
|
365
|
+
end
|