Signal Priority

Tests

Signal Priority becomes completed when cancelled

View Source
it 'becomes completed when cancelled' do
  with_site(:connected, core: '>=3.2', sxl: '>=1.1') do |site_proxy|
    timeout = RSMP::Validator.get_config('timeouts', 'priority_completion')
    component = RSMP::Validator.get_config('main_component')
    signal_group_id = RSMP::Validator.get_config('components', 'signal_group').keys.first
    prio = RSMP::Validator::Helpers::SignalPriority::RequestHelper.new(
      site_proxy,
      component: component,
      signal_group_id: signal_group_id,
      timeout: timeout,
      task: Async::Task.current
    )
    prio.run do
      log 'Before: Send unrelated signal priority request.'
      prio.request_unrelated
      log 'Send signal priority request, wait for reception.'
      prio.request
      log 'After: Send unrelated signal priority request.'
      prio.request_unrelated
      prio.expect :received
      log 'Signal priority request was received, wait for activation.'
      prio.expect :activated
      log 'Signal priority request was activated, now cancel it and wait for completion.'
      prio.cancel
      prio.expect :completed
      log 'Signal priority request was completed.'
    end
  end
end

Signal Priority becomes stale if not cancelled

View Source
it 'becomes stale if not cancelled' do
  with_site(:connected, core: '>=3.2', sxl: '>=1.1') do |site_proxy|
    timeout = RSMP::Validator.get_config('timeouts', 'priority_completion')
    component = RSMP::Validator.get_config('main_component')
    signal_group_id = RSMP::Validator.get_config('components', 'signal_group').keys.first
    prio = RSMP::Validator::Helpers::SignalPriority::RequestHelper.new(
      site_proxy,
      component: component,
      signal_group_id: signal_group_id,
      timeout: timeout,
      task: Async::Task.current
    )
    prio.run do
      log 'Before: Send unrelated signal priority request.'
      prio.request_unrelated
      log 'Send signal priority request, wait for reception.'
      prio.request
      log 'After: Send unrelated signal priority request.'
      prio.request_unrelated
      prio.expect :received
      log 'Signal priority request was received, wait for activation.'
      prio.expect :activated
      log 'Signal priority request was activated, wait for it to become stale.'
      # don't cancel request, it should then become stale by itself
      prio.expect :stale
      log 'Signal priority request became stale.'
    end
  end
end

Signal Priority can be requested with M0022

Validate that a signal priority can be requested.

  1. Given the site_proxy is connected
  2. When we send a signal priority request
  3. Then we should receive an acknowledgement
View Source
it 'can be requested with M0022' do
  with_site(:connected, core: '>=3.2', sxl: '>=1.1') do |site_proxy|
    signal_group = RSMP::Validator.get_config('components', 'signal_group').keys.first
    command_list = RSMP::CommandList.new(:M0022, :requestPriority,
                                         requestId: SecureRandom.uuid[0..3],
                                         signalGroupId: signal_group,
                                         type: 'new',
                                         level: 7,
                                         eta: 10,
                                         vehicleType: 'car').to_a
    log "Request signal priority for signal group #{signal_group}"
    timeout = RSMP::Validator.get_config('timeouts', 'command_response')
    site_proxy.send_command_and_collect(command_list, within: timeout).ok!
  end
end

Signal Priority status can be fetched with S0033

Validate that signal priority status can be requested.

  1. Given the site_proxy is connected
  2. When we request signal priority status
  3. Then we should receive a status update
View Source
it 'status can be fetched with S0033' do
  with_site(:connected, core: '>=3.2', sxl: '>=1.1') do |site_proxy|
    site_proxy.request_status_and_collect({ S0033: [:status] },
                                          within: RSMP::Validator.get_config('timeouts', 'status_response')).ok!
  end
end

Signal Priority status can be subscribed to with S0033

Validate that we can subscribe signal priority status

  1. Given the site_proxy is connected
  2. And we subscribe to signal priority status updates
  3. Then we should receive an acknowledgement
  4. And we should reive a status updates
View Source
it 'status can be subscribed to with S0033' do
  with_site(:connected, core: '>=3.2', sxl: '>=1.1') do |site_proxy|
    status_list = [{ 'sCI' => 'S0033', 'n' => 'status', 'uRt' => '0' }]
    status_list.map! { |item| item.merge!('sOc' => true) } if site_proxy.tlc.use_soc?
    wait_for_status(site_proxy, 'signal priority status', status_list)
  end
end

This site uses Just the Docs, a documentation theme for Jekyll.