marty 1.0.10 → 1.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/marty/rpc_controller.rb +19 -12
- data/lib/marty/version.rb +1 -1
- data/spec/controllers/rpc_controller_spec.rb +24 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 74092a6c860ba6143a686a653e304abd173f7b1e
|
|
4
|
+
data.tar.gz: 7e18178b04dacec033571c2566c653043d27116a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c9666aa7555d70c078cb27745206af4ae51dfa6728d21f0cb637d1736cb106b19228c6056c51d16a3a923f1630ee732a93768ca252d7fde6ecc7229a1f091586
|
|
7
|
+
data.tar.gz: 675388c07330499a07f89705c7887eadaf0da17cef12c65c0ae914ca55d3c59062e08676c6af36aff1b6891827b94348849ccb3770fe6cbc66577b70c5775bc9
|
|
@@ -6,6 +6,7 @@ class Marty::RpcController < ActionController::Base
|
|
|
6
6
|
params["attrs"] || "[]",
|
|
7
7
|
params["params"] || "{}",
|
|
8
8
|
params["api_key"] || nil,
|
|
9
|
+
params["background"],
|
|
9
10
|
)
|
|
10
11
|
|
|
11
12
|
respond_to do |format|
|
|
@@ -16,48 +17,49 @@ class Marty::RpcController < ActionController::Base
|
|
|
16
17
|
send_data Marty::DataExporter.to_csv(res)
|
|
17
18
|
}
|
|
18
19
|
end
|
|
19
|
-
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
private
|
|
23
23
|
|
|
24
|
-
def do_eval(sname, tag, node, attrs, params, api_key)
|
|
24
|
+
def do_eval(sname, tag, node, attrs, params, api_key, background)
|
|
25
|
+
err = "Marty::RpcController#do_eval,"
|
|
26
|
+
|
|
25
27
|
unless attrs.is_a?(String)
|
|
26
|
-
logger.info "
|
|
28
|
+
logger.info "#{err} Bad attrs (must be a string): <#{attrs.inspect}>"
|
|
27
29
|
return {error: "Bad attrs"}
|
|
28
30
|
end
|
|
29
31
|
|
|
30
32
|
begin
|
|
31
33
|
attrs = ActiveSupport::JSON.decode(attrs)
|
|
32
34
|
rescue JSON::ParserError => e
|
|
33
|
-
logger.info "
|
|
35
|
+
logger.info "#{err} Malformed attrs (json): #{attrs.inspect}, #{e.message}"
|
|
34
36
|
return {error: "Malformed attrs"}
|
|
35
37
|
end
|
|
36
38
|
|
|
37
39
|
unless attrs.is_a?(Array) && attrs.all? {|x| x.is_a? String}
|
|
38
|
-
logger.info "
|
|
40
|
+
logger.info "#{err} Malformed attrs (not string array): <#{attrs.inspect}>"
|
|
39
41
|
return {error: "Malformed attrs"}
|
|
40
42
|
end
|
|
41
43
|
|
|
42
44
|
unless params.is_a?(String)
|
|
43
|
-
logger.info "
|
|
45
|
+
logger.info "#{err} Bad params (must be a string): <#{params.inspect}>"
|
|
44
46
|
return {error: "Bad params"}
|
|
45
47
|
end
|
|
46
48
|
|
|
47
49
|
begin
|
|
48
50
|
params = ActiveSupport::JSON.decode(params)
|
|
49
51
|
rescue JSON::ParserError => e
|
|
50
|
-
logger.info "
|
|
52
|
+
logger.info "#{err} Malformed params (json): <#{params.inspect}>, #{e.message}"
|
|
51
53
|
return {error: "Malformed params"}
|
|
52
54
|
end
|
|
53
55
|
|
|
54
56
|
unless params.is_a?(Hash)
|
|
55
|
-
logger.info "
|
|
57
|
+
logger.info "#{err} Malformed params (not hash): <#{params.inspect}>"
|
|
56
58
|
return {error: "Malformed params"}
|
|
57
59
|
end
|
|
58
60
|
|
|
59
61
|
unless Marty::ApiAuth.authorized?(sname, api_key)
|
|
60
|
-
logger.info "
|
|
62
|
+
logger.info "#{err} permission denied"
|
|
61
63
|
return {error: "Permission denied" }
|
|
62
64
|
end
|
|
63
65
|
|
|
@@ -66,15 +68,20 @@ class Marty::RpcController < ActionController::Base
|
|
|
66
68
|
rescue => e
|
|
67
69
|
err_msg = "Can't get engine: #{sname || 'nil'} with tag: " +
|
|
68
70
|
"#{tag || 'nil'}; message: #{e.message}"
|
|
69
|
-
logger.info "
|
|
71
|
+
logger.info "#{err} #{err_msg}"
|
|
70
72
|
return {error: err_msg}
|
|
71
73
|
end
|
|
72
74
|
|
|
73
75
|
begin
|
|
74
|
-
|
|
76
|
+
if background
|
|
77
|
+
result = engine.background_eval(node, params, attrs)
|
|
78
|
+
{"job_id" => result.__promise__.id}
|
|
79
|
+
else
|
|
80
|
+
engine.evaluate_attrs(node, attrs, params)
|
|
81
|
+
end
|
|
75
82
|
rescue => exc
|
|
76
83
|
err_msg = Delorean::Engine.grok_runtime_exception(exc)
|
|
77
|
-
logger.info "
|
|
84
|
+
logger.info "#{err} Evaluation error: #{err_msg}"
|
|
78
85
|
err_msg
|
|
79
86
|
end
|
|
80
87
|
end
|
data/lib/marty/version.rb
CHANGED
|
@@ -91,10 +91,33 @@ describe Marty::RpcController do
|
|
|
91
91
|
node: "B",
|
|
92
92
|
attrs: ["e","f"].to_json,
|
|
93
93
|
tag: t1.name,
|
|
94
|
-
params: { a: 333, d: 5}.to_json
|
|
94
|
+
params: { a: 333, d: 5}.to_json,
|
|
95
95
|
}
|
|
96
96
|
expect(response.body).to eq([4,20].to_json)
|
|
97
97
|
end
|
|
98
|
+
|
|
99
|
+
it "should be able to post background job" do
|
|
100
|
+
Delayed::Worker.delay_jobs = false
|
|
101
|
+
post 'evaluate', {
|
|
102
|
+
format: :json,
|
|
103
|
+
script: "M1",
|
|
104
|
+
node: "B",
|
|
105
|
+
attrs: ["e","f"].to_json,
|
|
106
|
+
tag: t1.name,
|
|
107
|
+
params: { a: 333, d: 5}.to_json,
|
|
108
|
+
background: true,
|
|
109
|
+
}
|
|
110
|
+
res = ActiveSupport::JSON.decode response.body
|
|
111
|
+
expect(res).to include('job_id')
|
|
112
|
+
job_id = res['job_id']
|
|
113
|
+
|
|
114
|
+
promise = Marty::Promise.find_by_id(job_id)
|
|
115
|
+
|
|
116
|
+
expect(promise.result).to eq({"e"=>4, "f"=>20})
|
|
117
|
+
|
|
118
|
+
Delayed::Worker.delay_jobs = true
|
|
119
|
+
end
|
|
120
|
+
|
|
98
121
|
it "should be able to post with complex data" do
|
|
99
122
|
post 'evaluate', {
|
|
100
123
|
format: :json,
|