Specifications:
Validate that a detector logic fault A0302 is raises and cleared.
The test requires that the device is programmed so that the alarm is raise when a specific input is activated, as specified in the test configuration.
-
Given the site is connected
-
When we force the input to True
-
Then an alarm should be raised, with a timestamp close to now
-
When we force the input to False
-
Then the alarm issue should become inactive, with a timestamp close to now
29 30 31 32 33 34 35 36 37 38 39 40 41 42
# File 'spec/site/tlc/alarm_spec.rb', line 29 Validator::Site.connected do |task,supervisor,site| alarm_code_id = 'A0302' prepare task, site def alarm, duration=1.minute alarm_time = Time.parse(alarm.attributes["aTs"]) expect(alarm_time).to be_within(duration).of Time.now.utc end deactivated, component_id = with_alarm_activated(task, site, alarm_code_id) do |alarm,component_id| # raise alarm, by activating input alarm log "Alarm #{alarm_code_id} is now Active on component #{component_id}" end deactivated log "Alarm #{alarm_code_id} is now Inactive on component #{component_id}" end
-
Validate that a detector logic fault A0302 is raises and cleared.
The test requires that the device is programmed so that the alarm is raise when a specific input is activated, as specified in the test configuration.
-
Given the site is connected
-
When we force the input to True
-
Then an alarm should be raised, with a timestamp close to now
-
When we force the input to False
-
Then the alarm issue should become inactive, with a timestamp close to now
58 59 60 61 62 63 64 65 66 67 68 69 70 71
# File 'spec/site/tlc/alarm_spec.rb', line 58 Validator::Site.connected do |task,supervisor,site| alarm_code_id = 'A0302' prepare task, site def alarm, duration=1.minute alarm_time = Time.parse(alarm.attributes["aTs"]) expect(alarm_time).to be_within(duration).of Time.now.utc end deactivate, component_id = with_alarm_activated(task, site, alarm_code_id) do |alarm,component_id| # raise alarm, by activating input alarm log "Alarm #{alarm_code_id} is now Active on component #{component_id}" end deactivate log "Alarm #{alarm_code_id} is now Inactive on component #{component_id}" end
-
Validate that an alarm can be acknowledged.
The test expects that the TLC is programmed so that an detector logic fault alarm A0302 is raised and can be acknowledged when a specific input is activated. The alarm code and input nr is read from the test configuration.
-
Given the site is connected
-
When we trigger an alarm
-
Then we should receive an unacknowledged alarm issue
-
When we acknowledge the alarm
-
Then we should recieve an acknowledged alarm issue
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
# File 'spec/site/tlc/alarm_spec.rb', line 87 Validator::Site.connected do |task,supervisor,site| prepare task, site alarm_code_id = 'A0302' # what alarm to expect timeout = Validator.get_config('timeouts','alarm') log "Activating alarm #{alarm_code_id}" deactivate, component_id = with_alarm_activated(task, site, alarm_code_id) do |alarm, component_id| # raise alarm, by activating input log "Alarm #{alarm_code_id} is now active on component #{component_id}" # verify timestamp alarm_time = Time.parse(alarm.attributes["aTs"]) expect(alarm_time).to be_within(1.minute).of Time.now.utc # test acknowledge and confirm log "Acknowledge alarm #{alarm_code_id}" collect_task = task.async do RSMP::AlarmCollector.new(site, num: 1, query: { 'aCId' => alarm_code_id, 'aSp' => /Acknowledge/i, 'ack' => /Acknowledged/i, 'aS' => /Active/i }, timeout: timeout ).collect! end site. RSMP::AlarmAcknowledge.new( 'cId' => component_id, 'aTs' => site.clock.to_s, 'aCId' => alarm_code_id ) = collect_task.wait expect().to be_an(Array) expect(.first).to be_a(RSMP::Alarm) end end
-
Validate that alarms can be suspended. We’re using A0302 in this test.
-
Given the site is connected
-
And the alarm is resumed
-
When we suspend the alarm
-
Then we should received an alarm suspended messsage
-
When we resume the alarm
-
Then we should receive an alarm resumed message
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
# File 'spec/site/tlc/alarm_spec.rb', line 138 Validator::Site.connected do |task,supervisor,site| alarm_code_id = 'A0302' action = Validator.config.dig('alarms', alarm_code_id) skip "alarm #{alarm_code_id} is not configured" unless action component_id = action['component'] skip "alarm #{alarm_code_id} has no component configured" unless component_id # first resume alarm to make sure something happens when we suspend resume_alarm site, task, cId: component_id, aCId: alarm_code_id, collect: false begin # suspend alarm request, response = suspend_alarm site, task, cId: component_id, aCId: alarm_code_id, collect: true expect(response).to be_a(RSMP::AlarmSuspended) # resume alarm request, response = resume_alarm site, task, cId: component_id, aCId: alarm_code_id, collect: true expect(response).to be_a(RSMP::AlarmResumed) ensure # always end with resuming alarm resume_alarm site, task, cId: component_id, aCId: alarm_code_id, collect: false end end
-