Class: Factor::Connector::ServiceInstance
- Inherits:
-
Instance
- Object
- Instance
- Factor::Connector::ServiceInstance
show all
- Defined in:
- lib/factor-connector-api/test.rb,
lib/instances/service_instance.rb
Instance Attribute Summary collapse
Attributes inherited from Instance
#instance_id
Instance Method Summary
collapse
Methods inherited from Instance
#debug, #error, #id, #info, #log, #respond, #warn
Constructor Details
Returns a new instance of ServiceInstance.
22
23
24
25
26
27
|
# File 'lib/instances/service_instance.rb', line 22
def initialize(options = {})
@listener_instances = {}
@action_instances = {}
@instance_id = SecureRandom.hex
super(options)
end
|
Instance Attribute Details
#action_instances ⇒ Object
Returns the value of attribute action_instances.
20
21
22
|
# File 'lib/instances/service_instance.rb', line 20
def action_instances
@action_instances
end
|
#callback ⇒ Object
Returns the value of attribute callback.
20
21
22
|
# File 'lib/instances/service_instance.rb', line 20
def callback
@callback
end
|
#definition ⇒ Object
Returns the value of attribute definition.
20
21
22
|
# File 'lib/instances/service_instance.rb', line 20
def definition
@definition
end
|
#listener_instances ⇒ Object
Returns the value of attribute listener_instances.
20
21
22
|
# File 'lib/instances/service_instance.rb', line 20
def listener_instances
@listener_instances
end
|
#step_data ⇒ Object
Returns the value of attribute step_data.
20
21
22
|
# File 'lib/instances/service_instance.rb', line 20
def step_data
@step_data
end
|
Instance Method Details
#call_action(action_id, params) ⇒ Object
34
35
36
37
38
39
40
41
42
|
# File 'lib/instances/service_instance.rb', line 34
def call_action(action_id,params)
action_instance = ActionInstance.new
action_instance.service_id = self.id
action_instance.instance_id = @instance_id
action_instance.definition = @definition.actions[action_id]
action_instance.callback = @callback
action_instances[action_id] = action_instance
action_instance.async.start(params)
end
|
#call_hook(listener_id, hook_id, data, request, response) ⇒ Object
29
30
31
32
|
# File 'lib/instances/service_instance.rb', line 29
def call_hook(listener_id,hook_id,data,request,response)
listener_instance = @listener_instances[listener_id]
listener_instance.async.call_web_hook(hook_id,data,request,response)
end
|
#eventually(&block) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/factor-connector-api/test.rb', line 12
def eventually(&block)
found = false
timeout = 10
frequency = 4.0
pause = 1 / frequency
count = timeout * frequency
(0..count).each do |tick|
any = begin
block.call
rescue
false
end
if any
found = true
break
end
sleep pause
end
found
end
|
#expect_error(expected_values = {}) ⇒ Object
84
85
86
|
# File 'lib/factor-connector-api/test.rb', line 84
def expect_error(expected_values={})
expect_log('error',expected_values)
end
|
#expect_fail(options = {}) ⇒ Object
63
64
65
|
# File 'lib/factor-connector-api/test.rb', line 63
def expect_fail(options={})
expect_in_logs type: 'fail'
end
|
#expect_in_logs(expected_hash = {}) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/factor-connector-api/test.rb', line 34
def expect_in_logs(expected_hash={})
match = {}
found = eventually do
any = @logs.any? do |actual_output|
all_equal = true
expected_hash.each_pair do |key, expected_value|
all_equal = false unless actual_output[key] == expected_value
end
match = actual_output if all_equal
all_equal
end
end
last_log = if @logs.last[:type]=='log' && @logs.last[:status]=='debug'
@logs.select {|log| log[:type] == 'log' && log[:status]=='debug'}.first
else
@logs.last
end
raise "No match found for #{expected_hash}. Last line was #{last_log}" unless found
match if found
end
|
#expect_info(expected_values = {}) ⇒ Object
76
77
78
|
# File 'lib/factor-connector-api/test.rb', line 76
def expect_info(expected_values={})
expect_log('info',expected_values)
end
|
#expect_log(status, expected_values = {}) ⇒ Object
67
68
69
70
71
72
73
74
|
# File 'lib/factor-connector-api/test.rb', line 67
def expect_log(status,expected_values={})
compares = {
type:'log',
status:status
}
compares[:message] = expected_values[:message] if expected_values[:message]
expect_in_logs compares
end
|
#expect_return(expected_values = {}) ⇒ Object
57
58
59
60
61
|
# File 'lib/factor-connector-api/test.rb', line 57
def expect_return(expected_values={})
compares = { type: 'return' }
compares[:payload] = expected_values if expected_values && expected_values!={}
expect_in_logs compares
end
|
#expect_warn(expected_values = {}) ⇒ Object
80
81
82
|
# File 'lib/factor-connector-api/test.rb', line 80
def expect_warn(expected_values={})
expect_log('info',expected_values)
end
|
#has_action?(action_id) ⇒ Boolean
72
73
74
|
# File 'lib/instances/service_instance.rb', line 72
def has_action?(action_id)
@definition.actions.include?(action_id)
end
|
#has_listener?(listener_id) ⇒ Boolean
76
77
78
|
# File 'lib/instances/service_instance.rb', line 76
def has_listener?(listener_id)
@definition.listeners.include?(listener_id)
end
|
#start_listener(listener_id, params) ⇒ Object
44
45
46
47
48
49
50
51
52
|
# File 'lib/instances/service_instance.rb', line 44
def start_listener(listener_id,params)
listener_instance = ListenerInstance.new
listener_instance.service_id = self.id
listener_instance.instance_id = @instance_id
listener_instance.definition = @definition.listeners[listener_id]
listener_instance.callback = @callback
@listener_instances[listener_id]=listener_instance
listener_instance.async.start(params)
end
|
#stop_action(action_id) ⇒ Object
65
66
67
68
69
70
|
# File 'lib/instances/service_instance.rb', line 65
def stop_action(action_id)
if @action_instances[action_id]
@action_instances[action_id].terminate
@action_instances.delete action_id
end
end
|
#stop_listener(listener_id) ⇒ Object
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/instances/service_instance.rb', line 54
def stop_listener(listener_id)
if !@listener_instances[listener_id]
warn "Listener isn't running, no need to stop"
respond type:'stopped'
else
@listener_instances[listener_id].stop
@listener_instances[listener_id].terminate
@listener_instances.delete listener_id
end
end
|
#test_action(action_name, params = {}, &block) ⇒ Object
88
89
90
91
92
93
94
95
96
97
|
# File 'lib/factor-connector-api/test.rb', line 88
def test_action(action_name, params={}, &block)
@logs = []
self.callback = proc do |action_response|
@logs << action_response
end
call_action(action_name,params)
instance_exec &block
end
|