|
538 | 538 | expect(new_server.load).to eq(1) |
539 | 539 | end |
540 | 540 |
|
| 541 | + context 'when the meeting is pinned to a cordoned server' do |
| 542 | + let!(:cordoned_server) do |
| 543 | + s = create(:server) |
| 544 | + s.state = 'cordoned' |
| 545 | + s.save! |
| 546 | + s |
| 547 | + end |
| 548 | + |
| 549 | + it 're-allocates to an available server when the meeting is no longer running there' do |
| 550 | + Meeting.find_or_create_with_server!('test-meeting-1', cordoned_server, 'mp') |
| 551 | + |
| 552 | + stub_request(:get, /#{Regexp.escape(cordoned_server.url)}isMeetingRunning/) |
| 553 | + .to_return(body: '<response><returncode>SUCCESS</returncode><running>false</running></response>') |
| 554 | + stub_create = stub_request(:get, /#{Regexp.escape(server.url)}create/) |
| 555 | + .to_return(body: '<response><returncode>SUCCESS</returncode><meetingID>test-meeting-1</meetingID></response>') |
| 556 | + |
| 557 | + get bigbluebutton_api_create_url, params: { meetingID: 'test-meeting-1', moderatorPW: 'mp', voiceBridge: '1234567' } |
| 558 | + |
| 559 | + expect(stub_create).to have_been_requested |
| 560 | + expect(Meeting.find('test-meeting-1').server.id).to eq(server.id) |
| 561 | + end |
| 562 | + |
| 563 | + it 'keeps the meeting on the cordoned server when it is still running there' do |
| 564 | + Meeting.find_or_create_with_server!('test-meeting-1', cordoned_server, 'mp') |
| 565 | + |
| 566 | + stub_request(:get, /#{Regexp.escape(cordoned_server.url)}isMeetingRunning/) |
| 567 | + .to_return(body: '<response><returncode>SUCCESS</returncode><running>true</running></response>') |
| 568 | + stub_create = stub_request(:get, /#{Regexp.escape(cordoned_server.url)}create/) |
| 569 | + .to_return(body: '<response><returncode>SUCCESS</returncode><meetingID>test-meeting-1</meetingID></response>') |
| 570 | + |
| 571 | + get bigbluebutton_api_create_url, params: { meetingID: 'test-meeting-1', moderatorPW: 'mp', voiceBridge: '1234567' } |
| 572 | + |
| 573 | + expect(stub_create).to have_been_requested |
| 574 | + expect(Meeting.find('test-meeting-1').server.id).to eq(cordoned_server.id) |
| 575 | + end |
| 576 | + end |
| 577 | + |
541 | 578 | it "returns an appropriate error on timeout" do |
542 | 579 | params = { meetingID: "test-meeting-1", moderatorPW: "mp", voiceBridge: "1234567" } |
543 | 580 |
|
|
0 commit comments