Traffic Light Controller Signal Plan
Tests
- Signal plan config is read with S0098
- Signal plan currently active is read with S0014
- Signal plan currently active is set with M0002
- Signal plan cycle time is read with S0028
- Signal plan cycle time is set with M0018
- Signal plan day table is read with S0027
- Signal plan day table is set with M0017
- Signal plan dynamic bands are read with S0023
- Signal plan dynamic bands are set with M0014
- Signal plan dynamic bands values can be changed and read back
- Signal plan list is read with S0022
- Signal plan list size is read with S0018
- Signal plan offset is read with S0024
- Signal plan offset is set with M0015
- Signal plan timeout for dynamic bands is set with M0023
- Signal plan version is read with S0097
- Signal plan week table is read with S0026
- Signal plan week table is set with M0016
Signal plan config is read with S0098
Verify status S0098 configuration of traffic parameters
- Given the site is connected
- When we request the status
- We should receive a status response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
result = request_status_and_confirm site, "config of traffic parameters",
{ S0098: [:timestamp,:config,:version] }
# the site should have stored the received status
message = result[:collector].messages.first
expect(message).to be_an(RSMP::StatusResponse)
values = message.attributes['sS'].map { |item| [item['n'], item['s']] }.to_h
expect(values['timestamp']).not_to be_empty
expect(values['config']).not_to be_empty
expect(values['timestamp']).not_to be_empty
end
Signal plan currently active is read with S0014
Verify status S0014 current time plan
- Given the site is connected
- When we request the status
- We should receive a status response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
if RSMP::Proxy.version_meets_requirement?( site.sxl_version, '>=1.1' )
status_list = { S0014: [:status,:source] }
else
status_list = { S0014: [:status] }
end
request_status_and_confirm site, "current time plan", status_list
end
Signal plan currently active is set with M0002
Verify that we change time plan (signal program) We try switching all programs configured
- Given the site is connected
- And there is a Validator.get_config(‘validator’) with a time plan
- When we send the command
- We should receive a confirmative command response before timeout
View Source
plans = Validator.get_config('items','plans')
skip("No time plans configured") if plans.nil? || plans.empty?
Validator::Site.connected do |task,supervisor,site|
prepare task, site
plans.each { |plan| switch_plan plan }
end
Signal plan cycle time is read with S0028
Verify status S0028 cycle time
- Given the site is connected
- When we request the status
- We should receive a status response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
request_status_and_confirm site, "cycle time",
{ S0028: [:status] }
end
Signal plan cycle time is set with M0018
Verify that cycle time can be changed with M0018
- Given the site is connected
- And we read cycle times
- When we extend cycle time of curent plan with 5s
- Then reading the cycle time should confirm the change
- Finally when we revert cycle time to previous value
- Then reading cycle time should confirm the reversion
View Source
Validator::Site.connected do |task,supervisor,site|
with_cycle_time_extended(site) do
log "Cycle time extension confirmed"
end
end
Signal plan day table is read with S0027
Verify status S0027 time tables
- Given the site is connected
- When we request the status
- We should receive a status response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
request_status_and_confirm site, "command table",
{ S0027: [:status] }
end
Signal plan day table is set with M0017
Verify that we can set day table with M0017
- Given the site is connected
- When we send the command
- We should receive a confirmative command response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
status = "12-1-12-59,1-0-23-12"
prepare task, site
set_day_table status
end
Signal plan dynamic bands are read with S0023
Verify status S0023 command table
- Given the site is connected
- When we request the status
- We should receive a status response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
request_status_and_confirm site, "command table",
{ S0023: [:status] }
end
Signal plan dynamic bands are set with M0014
Verify that dynamic bands can the set with M0014
- Given the site is connected
- When we send the command
- We should receive a confirmative command response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
plan = Validator.get_config('items','plans').first
status = "1-12"
prepare task, site
set_dynamic_bands plan, status
end
Signal plan dynamic bands values can be changed and read back
Verify that dynamic bands can be read and changed
- Given the site is connected
- And we read dynamic band
- When we set dynamic band to 2x previous value
- Then reading dynamic bands should confirm the change
- Finally when we revert dynamic band to previous value
- Then reading dynamic bands should confirm the reversion
View Source
Validator::Site.connected do |task,supervisor,site|
prepare task, site
plan = Validator.get_config('items','plans').first
band = 3
value = get_dynamic_bands(plan, band) || 0
expect( value ).to be_a(Integer)
new_value = value + 1
set_dynamic_bands plan, "#{band}-#{new_value}"
expect( get_dynamic_bands(plan, band) ).to eq(new_value)
set_dynamic_bands plan, "#{band}-#{value}"
expect( get_dynamic_bands(plan, band) ).to eq(value)
end
Signal plan list is read with S0022
Verify status S0022 list of time plans
- Given the site is connected
- When we request the status
- We should receive a status response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
request_status_and_confirm site, "list of time plans",
{ S0022: [:status] }
end
Signal plan list size is read with S0018
Verify status S0018 number of time plans Deprecated from 1.2, use S0022 instead.
- Given the site is connected
- When we request the status
- We should receive a status response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
request_status_and_confirm site, "number of time plans",
{ S0018: [:number] }
end
Signal plan offset is read with S0024
Verify status S0024 offset time
- Given the site is connected
- Request status
- Expect status response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
request_status_and_confirm site, "offset time",
{ S0024: [:status] }
end
Signal plan offset is set with M0015
- Verify connection
- Send control command to set dynamic_bands
- Wait for status = true
View Source
Validator::Site.connected do |task,supervisor,site|
plan = Validator.get_config('items','plans').first
status = 99
prepare task, site
set_offset status, plan
end
Signal plan timeout for dynamic bands is set with M0023
Verify command M0023 timeout of dynamic bands
- Given the site is connected
- When we send command to set timeout
- Then we should get a confirmation
- When we send command to disable timeout
- Then we should get a confirmation
View Source
Validator::Site.connected do |task,supervisor,site|
prepare task, site
status = 10
set_timeout_for_dynamic_bands status
status = 0
set_timeout_for_dynamic_bands status
end
Signal plan version is read with S0097
Verify status S0097 version of traffic program
- Given the site is connected
- When we request the status
- We should receive a status response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
request_status_and_confirm site, "version of traffic program",
{ S0097: [:timestamp,:checksum] }
end
Signal plan week table is read with S0026
Verify status S0026 week time table
- Given the site is connected
- When we request the status
- We should receive a status response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
request_status_and_confirm site, "week time table",
{ S0026: [:status] }
end
Signal plan week table is set with M0016
Verify that we can set week table with M0016
- Given the site is connected
- When we send the command
- We should receive a confirmative command response before timeout
View Source
Validator::Site.connected do |task,supervisor,site|
status = "0-1,6-2"
prepare task, site
set_week_table status
end