Skip to content

Commit 20b8f3c

Browse files
committed
add tests for extended tag feature
1 parent 1ca8dcd commit 20b8f3c

File tree

2 files changed

+89
-1
lines changed

2 files changed

+89
-1
lines changed

spec/models/server_spec.rb

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,22 @@
339339
expect(server.id).to eq 'test-3'
340340
end
341341
end
342+
343+
context 'and with none tag argument' do
344+
let(:server) { described_class.find_available('none') }
345+
346+
it 'returns untagged server with lowest load' do
347+
expect(server.id).to eq 'test-3'
348+
end
349+
end
350+
351+
context 'and with none! tag argument' do
352+
let(:server) { described_class.find_available('none!') }
353+
354+
it 'returns untagged server with lowest load' do
355+
expect(server.id).to eq 'test-3'
356+
end
357+
end
342358
end
343359

344360
context 'with differently tagged servers' do
@@ -366,6 +382,11 @@
366382
redis.sadd?('servers', 'test-4')
367383
redis.sadd?('server_enabled', 'test-4')
368384
redis.zadd('server_load', 1, 'test-4')
385+
redis.mapped_hmset('server:test-5', url: 'https://test-5.example.com/bigbluebutton/api', secret: 'test-5-secret',
386+
tag: 'test-tag2', enabled: 'true')
387+
redis.sadd?('servers', 'test-5')
388+
redis.sadd?('server_enabled', 'test-5')
389+
redis.zadd('server_load', 1, 'test-5')
369390
end
370391
end
371392

@@ -391,6 +412,29 @@
391412
expect(server.tag).to eq 'test-tag'
392413
end
393414
end
415+
416+
context 'and optional tag list argument' do
417+
let(:server) { described_class.find_available('test-tag,test-tag2') }
418+
419+
it 'returns matching tagged server with lowest load' do
420+
expect(server.id).to eq 'test-5'
421+
expect(server.url).to eq 'https://test-5.example.com/bigbluebutton/api'
422+
expect(server.secret).to eq 'test-5-secret'
423+
expect(server.tag).to eq 'test-tag2'
424+
expect(server.enabled).to be true
425+
expect(server.state).to be_nil
426+
expect(server.load).to eq 1
427+
end
428+
end
429+
430+
context 'and required tag list argument' do
431+
let(:server) { described_class.find_available('test-tag,test-tag2!') }
432+
433+
it 'returns matching tagged server with lowest load' do
434+
expect(server.id).to eq 'test-5'
435+
expect(server.tag).to eq 'test-tag2'
436+
end
437+
end
394438
end
395439

396440
context 'with no matching tagged servers' do

test/models/server_test.rb

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ class ServerTest < ActiveSupport::TestCase
243243
end
244244
end
245245

246-
test 'Server find_available without or with empty tag returns untagged server with lowest load' do
246+
test 'Server find_available without or with empty tag or with none tag returns untagged server with lowest load' do
247247
RedisStore.with_connection do |redis|
248248
redis.mapped_hmset('server:test-1', url: 'https://test-1.example.com/bigbluebutton/api', secret: 'test-1-secret',
249249
tag: 'test-tag', enabled: 'true')
@@ -276,6 +276,12 @@ class ServerTest < ActiveSupport::TestCase
276276

277277
server = Server.find_available('!')
278278
assert_equal('test-3', server.id)
279+
280+
server = Server.find_available('none')
281+
assert_equal('test-3', server.id)
282+
283+
server = Server.find_available('none!')
284+
assert_equal('test-3', server.id)
279285
end
280286

281287
test 'Server find_available with tag argument returns matching tagged server with lowest load' do
@@ -316,6 +322,44 @@ class ServerTest < ActiveSupport::TestCase
316322
assert_equal('test-tag', server.tag)
317323
end
318324

325+
test 'Server find_available with multiple tag arguments returns matching tagged server with lowest load' do
326+
RedisStore.with_connection do |redis|
327+
redis.mapped_hmset('server:test-1', url: 'https://test-1.example.com/bigbluebutton/api', secret: 'test-1-secret',
328+
enabled: 'true')
329+
redis.sadd?('servers', 'test-1')
330+
redis.sadd?('server_enabled', 'test-1')
331+
redis.zadd('server_load', 1, 'test-1')
332+
redis.mapped_hmset('server:test-2', url: 'https://test-2.example.com/bigbluebutton/api', secret: 'test-2-secret',
333+
tag: 'test-tag', enabled: 'true')
334+
redis.sadd?('servers', 'test-2')
335+
redis.sadd?('server_enabled', 'test-2')
336+
redis.zadd('server_load', 3, 'test-2')
337+
redis.mapped_hmset('server:test-3', url: 'https://test-3.example.com/bigbluebutton/api', secret: 'test-3-secret',
338+
tag: 'test-tag2', enabled: 'true')
339+
redis.sadd?('servers', 'test-3')
340+
redis.sadd?('server_enabled', 'test-3')
341+
redis.zadd('server_load', 2, 'test-3')
342+
redis.mapped_hmset('server:test-4', url: 'https://test-4.example.com/bigbluebutton/api', secret: 'test-4-secret',
343+
tag: 'wrong-tag', enabled: 'true')
344+
redis.sadd?('servers', 'test-4')
345+
redis.sadd?('server_enabled', 'test-4')
346+
redis.zadd('server_load', 1, 'test-4')
347+
end
348+
349+
server = Server.find_available('test-tag,test-tag2')
350+
assert_equal('test-3', server.id)
351+
assert_equal('https://test-3.example.com/bigbluebutton/api', server.url)
352+
assert_equal('test-3-secret', server.secret)
353+
assert_equal('test-tag2', server.tag)
354+
assert(server.enabled)
355+
assert_nil(server.state)
356+
assert_equal(2, server.load)
357+
358+
server = Server.find_available('test-tag,test-tag2!')
359+
assert_equal('test-3', server.id)
360+
assert_equal('test-tag2', server.tag)
361+
end
362+
319363
test 'Server find_available with optional tag returns untagged server with lowest load if no matching tagged server available' do
320364
RedisStore.with_connection do |redis|
321365
redis.mapped_hmset('server:test-1', url: 'https://test-1.example.com/bigbluebutton/api', secret: 'test-1-secret',

0 commit comments

Comments
 (0)