flok 0.0.43 → 0.0.44

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3e0d45d6c71fab7dd38c7692e0f123e1c066c959
4
- data.tar.gz: be210489af74948276d3e21ceb689fc51e054f89
3
+ metadata.gz: 012105cd4ab1a238ba2cc8d06605e30d672ba0ee
4
+ data.tar.gz: e3edf3a8c64227344f35030966f645cf6cfb99a4
5
5
  SHA512:
6
- metadata.gz: 038e4ec9c74142f331a0d6f4d155d206f0570ef36ff2b9a5d3a14bc22843b1de682549c27cfa8d76e8f48fdf306ca6b7a5832e1e15af99e59c747819d5709276
7
- data.tar.gz: 10b75dc31d35bda8494d5fdfa09eaae0b82f0841684beaf23f2bedc3e628ff0aa9999699e0b42fa9538255ee6409cdffd1620c5dd9970ff7b99d464d3e4b34a2
6
+ metadata.gz: 51522633e57cb371e0bf2d0dd400b15b771fec2dbe6e3aa63699c1fba99a1e31029f8c25c02fa89cffd1721da5449adf6e3b1b9d14b8f1456852e53303692d70
7
+ data.tar.gz: a15aff14e629db8f1759a3edd5281df6d3be6cfb8d090926178a2f001062923bb27f206c70b13bd0557da47b572b6e1b2236efdb7dbbe406fac8993427e5257b
@@ -0,0 +1,46 @@
1
+ service :rest do
2
+ global %{
3
+ rest_in_flight = {}
4
+
5
+ function rest_cb(tp, success, info) {
6
+ var e = rest_in_flight[tp];
7
+ var bp = e[0];
8
+ var path = e[1];
9
+
10
+ int_event(bp, "rest_res", {
11
+ path: path,
12
+ res: info
13
+ });
14
+
15
+ tel_del(tp);
16
+ }
17
+ }
18
+
19
+ on_wakeup %{
20
+ }
21
+
22
+ on_sleep %{
23
+ }
24
+
25
+ on_connect %{
26
+ }
27
+
28
+ on "get", %{
29
+ <% if @debug %>
30
+ if (params.path === undefined) {
31
+ throw "rest_service, no path given in get request";
32
+ }
33
+
34
+ if (params.params === undefined) {
35
+ throw "rest_service, no params given in get request";
36
+ }
37
+ <% end %>
38
+
39
+ var tp = tel_reg(rest_cb);
40
+ rest_in_flight[tp] = [bp, params.path];
41
+ SEND("net", "if_net_req", "GET", "<%= @options[:base_url] %>"+params.path, params.params, tp);
42
+ }
43
+
44
+ on_disconnect %{
45
+ }
46
+ end
@@ -1,21 +1,27 @@
1
1
  #Rest Service
2
2
  This is the RESTful network request service. Designed for small payloads of RESTful network requests.
3
3
 
4
+ #Options
5
+ * `base_url` - The url like `"http://services.my_host.com/"` for the path to be based on. Must include ending slash.
6
+
4
7
  ###Info to start a request
5
8
  ```js
6
9
  var info = {
7
- url: "http://my_rest_endpoint",
10
+ path: "/user/register",
8
11
  params: {
9
12
  my_param_0: "test",
10
13
  }
11
14
  }
12
- ```
13
15
 
14
- When you receive a request back, you will receive
15
- ```js
16
- {
17
- success: true,
18
- info:
19
- }
16
+ Request("<service name>", "get", info);
20
17
  ```
21
- Where if success is true, then info is a hash. If success is false, then info is a failure message.
18
+
19
+ You will then receive the event `rest_res`.
20
+
21
+ For sucessful requests, `rest_res` will be sent as an event. This event
22
+ will contain `path` and `res` where `path` is the `path` given in th
23
+ request and `res` is the results of the request.
24
+
25
+ ###Globals
26
+ * `rest_in_flight` - A hash that maps `rest_in_flight[tp_base] => bp` where `[bp, path]` is the requesting entity for the original request and
27
+ `path` is the original path.
@@ -1,3 +1,3 @@
1
1
  module Flok
2
- VERSION = "0.0.43"
2
+ VERSION = "0.0.44"
3
3
  end
@@ -131,9 +131,17 @@ shared_context "kern" do
131
131
  name = @cq.shift
132
132
  args = @cq.shift(arg_len)
133
133
 
134
+ msg_args.each_with_index do |e, i|
135
+ if e == Integer
136
+ msg_args[i] = args[i];
137
+ end
138
+ end
139
+
134
140
  expect(name).to eq(msg_name)
135
141
  expect(args).to eq(msg_args)
136
142
  expect(priority).to eq(@cp)
143
+
144
+ return args
137
145
  end
138
146
 
139
147
  #Ignore all messages until this one is received, then keep that one in the queue
@@ -0,0 +1,4 @@
1
+ #Simple service config that uses built-in spec service to create a instance called 'spec'
2
+ service_instance :rest, :rest, {
3
+ :base_url => "http://localhost:8080/"
4
+ }
@@ -0,0 +1,8 @@
1
+ controller :my_controller do
2
+ services :rest
3
+
4
+ action :my_action do
5
+ on_entry %{
6
+ }
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ controller :my_controller do
2
+ services :rest
3
+
4
+ action :my_action do
5
+ on_entry %{
6
+ var info = {
7
+ path: "test",
8
+ params: {"hello": "world"}
9
+ }
10
+ Request("rest", "get", info);
11
+ }
12
+
13
+ on "rest_res", %{
14
+ rest_res_params = params;
15
+ }
16
+ end
17
+ end
@@ -0,0 +1,71 @@
1
+ #The rest service
2
+
3
+ Dir.chdir File.join File.dirname(__FILE__), '../../'
4
+ require './spec/env/kern.rb'
5
+ require './spec/lib/helpers.rb'
6
+ require './spec/lib/io_extensions.rb'
7
+ require './spec/lib/rspec_extensions.rb'
8
+ require 'zlib'
9
+
10
+ RSpec.describe "kern:rest_service" do
11
+ include Zlib
12
+ include_context "kern"
13
+
14
+ it "Can use rest service" do
15
+ ctx = flok_new_user File.read('./spec/kern/assets/rest_service/controller0.rb'), File.read("./spec/kern/assets/rest_service/config0.rb")
16
+ dump = ctx.evald %{
17
+ base = _embed("my_controller", 0, {}, null);
18
+
19
+ //Drain queue
20
+ int_dispatch([]);
21
+
22
+ dump["rest_base_url"] = rest_base_url;
23
+ }
24
+
25
+ expect(dump["rest_base_url"]).to eq("http://localhost:8080/")
26
+ end
27
+
28
+ it "Can make a request on the rest service" do
29
+ ctx = flok_new_user File.read('./spec/kern/assets/rest_service/controller1.rb'), File.read("./spec/kern/assets/rest_service/config0.rb")
30
+ dump = ctx.evald %{
31
+ dump.base = _embed("my_controller", 0, {}, null);
32
+
33
+ //Drain queue
34
+ int_dispatch([]);
35
+ }
36
+
37
+ @driver.ignore_up_to("if_net_req")
38
+ @driver.mexpect("if_net_req", ["GET", "http://localhost:8080/test", {"hello" => "world"}, Integer], 1) #network priority
39
+ end
40
+
41
+ it "Does send the controller the rest_res when a response is returned" do
42
+ ctx = flok_new_user File.read('./spec/kern/assets/rest_service/controller1.rb'), File.read("./spec/kern/assets/rest_service/config0.rb")
43
+ dump = ctx.evald %{
44
+ dump.base = _embed("my_controller", 0, {}, null);
45
+
46
+ //Drain queue
47
+ int_dispatch([]);
48
+ }
49
+
50
+ @driver.ignore_up_to("if_net_req")
51
+ msg = @driver.mexpect("if_net_req", ["GET", "http://localhost:8080/test", {"hello" => "world"}, Integer], 1) #network priority
52
+
53
+ #Last argument is teh tp_base for if_net_req
54
+ tp_base = msg.last
55
+
56
+ @driver.int "int_net_cb", [
57
+ tp_base, true, {"foo" => "bar"}
58
+ ]
59
+
60
+ dump = ctx.evald %{
61
+ dump.rest_res_params = rest_res_params;
62
+ }
63
+
64
+ expect(dump["rest_res_params"]).to eq({
65
+ "path" => "test",
66
+ "res" => {
67
+ "foo" => "bar"
68
+ }
69
+ })
70
+ end
71
+ end
@@ -23,7 +23,12 @@ class DuplexPipe
23
23
  @w = @w1
24
24
  end
25
25
 
26
-
26
+ def close
27
+ @r0.close
28
+ @w0.close
29
+ @r1.close
30
+ @w1.close
31
+ end
27
32
 
28
33
  def claim_high
29
34
  @r = @r1
@@ -56,7 +61,9 @@ module Webbing
56
61
  attr_accessor :port
57
62
 
58
63
  def kill
59
- Process.kill(:KILL, @pid)
64
+ $stderr.puts "KILL"
65
+ @pipe.close
66
+ Process.kill(:TERM, @pid)
60
67
  end
61
68
 
62
69
  def initialize verb, path, port=nil, &block
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flok
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.43
4
+ version: 0.0.44
5
5
  platform: ruby
6
6
  authors:
7
7
  - seo
@@ -316,6 +316,7 @@ files:
316
316
  - app/kern/pagers/spec0.js
317
317
  - app/kern/pagers/spec1.js
318
318
  - app/kern/pagers/spec2.js
319
+ - app/kern/services/rest.rb
319
320
  - app/kern/services/test.rb
320
321
  - app/kern/services/vm.rb
321
322
  - app/kern/spec_helper.js
@@ -1167,6 +1168,9 @@ files:
1167
1168
  - spec/kern/assets/interval3.rb
1168
1169
  - spec/kern/assets/lower_event.rb
1169
1170
  - spec/kern/assets/raise_event.rb
1171
+ - spec/kern/assets/rest_service/config0.rb
1172
+ - spec/kern/assets/rest_service/controller0.rb
1173
+ - spec/kern/assets/rest_service/controller1.rb
1170
1174
  - spec/kern/assets/send_event.rb
1171
1175
  - spec/kern/assets/service0.rb
1172
1176
  - spec/kern/assets/service1.rb
@@ -1257,7 +1261,7 @@ files:
1257
1261
  - spec/kern/dispatch_spec.rb
1258
1262
  - spec/kern/event_spec.rb
1259
1263
  - spec/kern/functions_spec.rb
1260
- - spec/kern/net_spec.rb
1264
+ - spec/kern/rest_service_spec.rb
1261
1265
  - spec/kern/service_controller_spec.rb
1262
1266
  - spec/kern/vm_service_functional_spec.rb
1263
1267
  - spec/kern/vm_service_mem_pagers_spec.rb
@@ -2074,6 +2078,9 @@ test_files:
2074
2078
  - spec/kern/assets/interval3.rb
2075
2079
  - spec/kern/assets/lower_event.rb
2076
2080
  - spec/kern/assets/raise_event.rb
2081
+ - spec/kern/assets/rest_service/config0.rb
2082
+ - spec/kern/assets/rest_service/controller0.rb
2083
+ - spec/kern/assets/rest_service/controller1.rb
2077
2084
  - spec/kern/assets/send_event.rb
2078
2085
  - spec/kern/assets/service0.rb
2079
2086
  - spec/kern/assets/service1.rb
@@ -2164,7 +2171,7 @@ test_files:
2164
2171
  - spec/kern/dispatch_spec.rb
2165
2172
  - spec/kern/event_spec.rb
2166
2173
  - spec/kern/functions_spec.rb
2167
- - spec/kern/net_spec.rb
2174
+ - spec/kern/rest_service_spec.rb
2168
2175
  - spec/kern/service_controller_spec.rb
2169
2176
  - spec/kern/vm_service_functional_spec.rb
2170
2177
  - spec/kern/vm_service_mem_pagers_spec.rb
@@ -1,14 +0,0 @@
1
- #Anything and everything to do with networking above the driver level
2
-
3
- Dir.chdir File.join File.dirname(__FILE__), '../../'
4
- require './spec/env/kern.rb'
5
- require './spec/lib/helpers.rb'
6
- require './spec/lib/io_extensions.rb'
7
- require './spec/lib/rspec_extensions.rb'
8
-
9
- RSpec.describe "kern:net_spec" do
10
- include_context "kern"
11
-
12
- it "can call get_req() and returns to the correct callback" do
13
- end
14
- end