Message Buffer
Tests
- Message Buffer marks buffered status values as old for rsmp 3.2 and later
- Message Buffer preserves buffered status timestamps from before reconnect
- Message Buffer sends buffered status messages after communication is restored
Message Buffer marks buffered status values as old for rsmp 3.2 and later
Verify that buffered status messages use quality “old” for core versions where the core spec requires it.
- Given the site is connected using core 3.2 or later
- And a status subscription is active
- When communication is disrupted and later restored
- Then buffered status values should have q=old
View Source
it 'marks buffered status values as old for rsmp 3.2 and later' do
skip 'requires core >= 3.2' unless RSMP::Validator.core_matches?('>=3.2')
update = collect_buffered_status_after_disruption
expect(update.attributes['sS'].map { |status| status['q'] }.uniq).to be == ['old']
end
Message Buffer preserves buffered status timestamps from before reconnect
Verify that buffered status timestamps reflect when the status data was generated, not when the buffered message was sent after reconnect.
- Given the site is connected and a status subscription is active
- When communication is disrupted long enough for a status update to be due
- And communication is restored
- Then the buffered status timestamp should be older than the reconnect
View Source
it 'preserves buffered status timestamps from before reconnect' do
skip 'requires core >= 3.1.4' unless RSMP::Validator.core_matches?('>=3.1.4')
result = collect_buffered_status_after_disruption_with_timing
status_time = Time.parse(result[:update].attributes['sTs'])
assert(status_time < result[:reconnect_started_at],
"expected buffered status timestamp #{status_time} to be before reconnect " \
"#{result[:reconnect_started_at]}")
end
Message Buffer sends buffered status messages after communication is restored
Verify that a site sends buffered status messages after communication is restored.
- Given the site is connected and a status subscription is active
- When communication is disrupted long enough for a status update to be due
- And communication is restored
- Then the site should send the buffered status update
View Source
it 'sends buffered status messages after communication is restored' do
skip 'requires core >= 3.1.4' unless RSMP::Validator.core_matches?('>=3.1.4')
update = collect_buffered_status_after_disruption
expect(update).to be_a(RSMP::StatusUpdate)
assert(!update.attributes['sS'].empty?, 'expected buffered status update to include status values')
end