flok 0.0.36 → 0.0.38
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/Rakefile +1 -0
- data/app/drivers/chrome/build_context.rb +1 -1
- data/app/drivers/chrome/config.yml +10 -0
- data/app/drivers/chrome/pipe.rb +24 -1
- data/app/drivers/chrome/src/persist.js +29 -0
- data/app/drivers/chrome/src/sockio.js +3 -1
- data/app/drivers/chrome/src/vendor/store2.js +3 -0
- data/app/kern/callout.js +55 -0
- data/app/kern/controller.js +3 -0
- data/app/kern/crc32.js +22 -0
- data/app/kern/dispatch.js +16 -0
- data/app/kern/mod/event.js +3 -0
- data/app/kern/mod/persist.js +1 -0
- data/app/kern/mod/timer.js +5 -0
- data/app/kern/pagers/mem_pager.js +2 -0
- data/app/kern/pagers/sockio_pager.js +66 -0
- data/app/kern/pagers/spec0.js +35 -0
- data/app/kern/pagers/spec1.js +24 -0
- data/app/kern/pagers/spec2.js +31 -0
- data/app/kern/services/test.rb +7 -0
- data/app/kern/services/vm.rb +141 -0
- data/app/kern/spec_helper.js +5 -0
- data/bin/flok +27 -5
- data/docs/callout.md +8 -0
- data/docs/client_api.md +1 -1
- data/docs/compilation.md +14 -8
- data/docs/controllers.md +2 -1
- data/docs/datatypes.md +3 -1
- data/docs/environmentals.md +6 -0
- data/docs/interactive.md +6 -1
- data/docs/kernel_api.md +3 -0
- data/docs/mod/event.md +5 -1
- data/docs/mod/persist.md +14 -31
- data/docs/mod/timer.md +4 -2
- data/docs/project.md +16 -5
- data/docs/scheduling.md +1 -0
- data/docs/services.md +141 -56
- data/docs/services/vm.md +128 -0
- data/docs/services/vm/pagers.md +46 -0
- data/lib/flok/build.rb +11 -16
- data/lib/flok/platform.rb +29 -6
- data/lib/flok/project_template/app/scripts/script.js +3 -0
- data/lib/flok/project_template/app/services/service.rb +1 -0
- data/lib/flok/project_template/config/config.yml +1 -0
- data/lib/flok/project_template/config/platforms/chrome/config.yml +1 -0
- data/lib/flok/project_template/config/services.rb +1 -0
- data/lib/flok/service_compiler_templates/services.js.erb +78 -9
- data/lib/flok/services_compiler.rb +117 -20
- data/lib/flok/user_compiler.rb +14 -6
- data/lib/flok/user_compiler_templates/ctable.js.erb +10 -0
- data/lib/flok/version.rb +1 -1
- data/spec/env/etc.rb +1 -1
- data/spec/env/global.rb +2 -0
- data/spec/env/iface.rb +20 -4
- data/spec/env/kern.rb +8 -3
- data/spec/etc/cli_spec.rb +319 -165
- data/spec/etc/lib/assets/config.yml +3 -0
- data/spec/etc/lib/platform_spec.rb +14 -10
- data/spec/etc/lib/project_spec.rb +22 -0
- data/spec/etc/service_compiler/config0.rb +1 -0
- data/spec/etc/service_compiler/config1.rb +1 -0
- data/spec/etc/service_compiler/config2.rb +3 -0
- data/spec/etc/service_compiler/service0.rb +22 -6
- data/spec/etc/service_compiler/service1.rb +26 -0
- data/spec/etc/service_compiler/service_bad_type.rb +20 -0
- data/spec/etc/services_compiler_spec.rb +35 -16
- data/spec/etc/user_compiler/data.js +2 -0
- data/spec/etc/user_compiler_spec.rb +7 -1
- data/spec/iface/driver/persist_spec.rb +106 -0
- data/spec/iface/driver/pipe_spec.rb +5 -0
- data/spec/iface/kern/ping_spec.rb +4 -3
- data/spec/kern/assets/blank.rb +0 -0
- data/spec/kern/assets/service0.rb +24 -0
- data/spec/kern/assets/service1.rb +22 -0
- data/spec/kern/assets/service2.rb +27 -0
- data/spec/kern/assets/service_config0.rb +2 -0
- data/spec/kern/assets/service_config1.rb +2 -0
- data/spec/kern/assets/service_controller0.rb +13 -0
- data/spec/kern/assets/service_controller1.rb +32 -0
- data/spec/kern/assets/service_controller2.rb +38 -0
- data/spec/kern/assets/service_controller3.rb +38 -0
- data/spec/kern/assets/vm/config0.rb +2 -0
- data/spec/kern/assets/vm/config1.rb +12 -0
- data/spec/kern/assets/vm/config2.rb +12 -0
- data/spec/kern/assets/vm/config3.rb +12 -0
- data/spec/kern/assets/vm/controller0.rb +8 -0
- data/spec/kern/assets/vm/controller1.rb +18 -0
- data/spec/kern/assets/vm/controller2.rb +18 -0
- data/spec/kern/assets/vm/controller3.rb +20 -0
- data/spec/kern/assets/vm/controller4.rb +22 -0
- data/spec/kern/assets/vm/controller5.rb +22 -0
- data/spec/kern/assets/vm/controller6.rb +21 -0
- data/spec/kern/assets/vm/service0.rb +24 -0
- data/spec/kern/assets/vm/service_controller0.rb +7 -0
- data/spec/kern/callout_spec.rb +153 -0
- data/spec/kern/functions_spec.rb +29 -0
- data/spec/kern/service_controller_spec.rb +213 -0
- data/spec/kern/vm_service_spec.rb +195 -0
- metadata +98 -12
- data/app/kern/services/rest.rb +0 -310
- data/app/kern/services/timer.rb +0 -30
- data/docs/services/timer.md +0 -21
- data/spec/kern/assets/rest_service.rb +0 -20
- data/spec/kern/assets/timer_service.rb +0 -19
- data/spec/kern/timer_service_spec.rb +0 -40
@@ -0,0 +1,29 @@
|
|
1
|
+
#Generic kernel functions
|
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:functions_spec" do
|
10
|
+
include_context "kern"
|
11
|
+
|
12
|
+
it "can use crc32" do
|
13
|
+
ctx = flok_new_user File.read('./spec/kern/assets/controller0.rb')
|
14
|
+
|
15
|
+
#Run the check
|
16
|
+
res = ctx.eval("crc32(0, 'test')")
|
17
|
+
expect(res).to eq(3632233996)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "can use crc32 multiple times" do
|
21
|
+
ctx = flok_new_user File.read('./spec/kern/assets/controller0.rb')
|
22
|
+
|
23
|
+
#Run the check
|
24
|
+
res = ctx.eval("crc32(crc32(0, 'test'), 'test2')")
|
25
|
+
res2 = ctx.eval("crc32(crc32(0, 'test2'), 'test')")
|
26
|
+
expect(res).not_to eq(res2)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,213 @@
|
|
1
|
+
#Anything and everything to do with view controllers (not directly UI) 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:service_controller_spec" do
|
10
|
+
include_context "kern"
|
11
|
+
|
12
|
+
it "service can be used inside a controller" do
|
13
|
+
#Compile the controller
|
14
|
+
ctx = flok_new_user File.read('./spec/kern/assets/service_controller0.rb'), File.read("./spec/kern/assets/service_config0.rb")
|
15
|
+
|
16
|
+
#Run the embed function
|
17
|
+
ctx.eval %{
|
18
|
+
//Call embed on main root view
|
19
|
+
base = _embed("my_controller", 0, {}, null);
|
20
|
+
|
21
|
+
//Drain queue
|
22
|
+
int_dispatch([]);
|
23
|
+
}
|
24
|
+
|
25
|
+
base = ctx.eval("base")
|
26
|
+
|
27
|
+
@driver.mexpect("if_init_view", ["my_controller", {}, base+1, ["main", "hello", "world"]])
|
28
|
+
@driver.mexpect("if_controller_init", [base, base+1, "my_controller", {}])
|
29
|
+
@driver.mexpect("if_attach_view", [base+1, 0])
|
30
|
+
@driver.mexpect("if_event", [base, "action", {"from" => nil, "to" => "my_action"}])
|
31
|
+
end
|
32
|
+
|
33
|
+
it "service can use the global block to create static functions" do
|
34
|
+
#Compile the controller
|
35
|
+
ctx = flok_new_user File.read('./spec/kern/assets/service_controller0.rb'), File.read("./spec/kern/assets/service_config0.rb")
|
36
|
+
|
37
|
+
#Run the embed function
|
38
|
+
ctx.eval %{
|
39
|
+
spec_function(3);
|
40
|
+
}
|
41
|
+
expect(ctx.eval("spec_function_args")).to eq(3)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "Does call the wakeup and the connect for service when a controller is opened" do
|
45
|
+
#Compile the controller
|
46
|
+
ctx = flok_new_user File.read('./spec/kern/assets/service_controller0.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service0.rb")
|
47
|
+
|
48
|
+
#Run the embed function
|
49
|
+
ctx.eval %{
|
50
|
+
//Call embed on main root view
|
51
|
+
base = _embed("my_controller", 0, {}, null);
|
52
|
+
|
53
|
+
//Drain queue
|
54
|
+
int_dispatch([]);
|
55
|
+
}
|
56
|
+
|
57
|
+
expect(ctx.eval("on_wakeup_called")).to eq(true)
|
58
|
+
expect(ctx.eval("on_connect_called")).to eq(true)
|
59
|
+
end
|
60
|
+
|
61
|
+
it "Does signal disconnect to the service" do
|
62
|
+
#Compile the controller
|
63
|
+
ctx = flok_new_user File.read('./spec/kern/assets/service_controller1.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service0.rb")
|
64
|
+
|
65
|
+
#Run the embed function
|
66
|
+
ctx.eval %{
|
67
|
+
//Call embed on main root view
|
68
|
+
base = _embed("my_controller", 0, {}, null);
|
69
|
+
|
70
|
+
//Drain queue
|
71
|
+
int_dispatch([3, "int_event", base, "next", {}]);
|
72
|
+
}
|
73
|
+
|
74
|
+
expect(ctx.eval("on_disconnect_called")).to eq(true)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "Does send a controller a timed signal when it is connected" do
|
78
|
+
#Compile the controller
|
79
|
+
ctx = flok_new_user File.read('./spec/kern/assets/service_controller0.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service0.rb")
|
80
|
+
|
81
|
+
#Run the embed function
|
82
|
+
ctx.eval %{
|
83
|
+
//Call embed on main root view
|
84
|
+
base = _embed("my_controller", 0, {}, null);
|
85
|
+
}
|
86
|
+
|
87
|
+
@driver.int "int_timer"
|
88
|
+
@driver.int "int_timer"
|
89
|
+
@driver.int "int_timer"
|
90
|
+
@driver.int "int_timer"
|
91
|
+
expect(ctx.eval("ping_called")).to eq(true)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "Does sleep when there are no more sessions" do
|
95
|
+
#Compile the controller
|
96
|
+
ctx = flok_new_user File.read('./spec/kern/assets/service_controller1.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service0.rb")
|
97
|
+
|
98
|
+
#Run the embed function
|
99
|
+
ctx.eval %{
|
100
|
+
//Call embed on main root view
|
101
|
+
base = _embed("my_controller", 0, {}, null);
|
102
|
+
|
103
|
+
//Drain queue
|
104
|
+
int_dispatch([3, "int_event", base, "next", {}]);
|
105
|
+
}
|
106
|
+
|
107
|
+
expect(ctx.eval("on_sleep_called")).to eq(true)
|
108
|
+
end
|
109
|
+
|
110
|
+
it "No longer receives timer events when it is not awake" do
|
111
|
+
#Compile the controller
|
112
|
+
ctx = flok_new_user File.read('./spec/kern/assets/service_controller1.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service1.rb")
|
113
|
+
|
114
|
+
#Run the embed function
|
115
|
+
ctx.eval %{
|
116
|
+
//Call embed on main root view
|
117
|
+
base = _embed("my_controller", 0, {}, null);
|
118
|
+
|
119
|
+
//Drain queue
|
120
|
+
int_dispatch([3, "int_event", base, "next", {}]);
|
121
|
+
}
|
122
|
+
|
123
|
+
100.times do
|
124
|
+
@driver.int "int_timer"
|
125
|
+
end
|
126
|
+
|
127
|
+
expect(ctx.eval("every_ticks")).to eq(0)
|
128
|
+
end
|
129
|
+
|
130
|
+
it "Receives timer events when it is re-activated" do
|
131
|
+
#Compile the controller
|
132
|
+
ctx = flok_new_user File.read('./spec/kern/assets/service_controller1.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service1.rb")
|
133
|
+
|
134
|
+
#Run the embed function
|
135
|
+
ctx.eval %{
|
136
|
+
//Call embed on main root view
|
137
|
+
base = _embed("my_controller", 0, {}, null);
|
138
|
+
|
139
|
+
//Drain queue
|
140
|
+
int_dispatch([3, "int_event", base, "next", {}]);
|
141
|
+
}
|
142
|
+
|
143
|
+
100.times do
|
144
|
+
@driver.int "int_timer"
|
145
|
+
end
|
146
|
+
|
147
|
+
#Now we are going back to the other action, which should wake it up
|
148
|
+
ctx.eval %{
|
149
|
+
//Drain queue
|
150
|
+
int_dispatch([3, "int_event", base, "next", {}]);
|
151
|
+
}
|
152
|
+
|
153
|
+
100.times do
|
154
|
+
@driver.int "int_timer"
|
155
|
+
end
|
156
|
+
|
157
|
+
expect(ctx.eval("every_ticks")).to eq(25)
|
158
|
+
end
|
159
|
+
|
160
|
+
it "Does have all the right variables after sending a custom event to the service and a timer event has fired" do
|
161
|
+
#Compile the controller
|
162
|
+
ctx = flok_new_user File.read('./spec/kern/assets/service_controller2.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service2.rb")
|
163
|
+
|
164
|
+
#Run the embed function
|
165
|
+
ctx.eval %{
|
166
|
+
//Call embed on main root view
|
167
|
+
base = _embed("my_controller", 0, {}, null);
|
168
|
+
}
|
169
|
+
|
170
|
+
#Base pointer of the controller that uses the service
|
171
|
+
my_base = ctx.eval("my_base")
|
172
|
+
|
173
|
+
#Need to get timer first because the first controller holds the timer
|
174
|
+
100.times do
|
175
|
+
@driver.int "int_timer"
|
176
|
+
end
|
177
|
+
|
178
|
+
#Next will now cause a disconnect (controller no longer holds service)
|
179
|
+
ctx.eval %{
|
180
|
+
int_dispatch([3, "int_event", base, "next", {}]);
|
181
|
+
}
|
182
|
+
|
183
|
+
connect_sessions = JSON.parse(ctx.eval("JSON.stringify(connect_sessions)"))
|
184
|
+
disconnect_bp = ctx.eval("disconnect_bp")
|
185
|
+
disconnect_sessions = JSON.parse(ctx.eval("JSON.stringify(disconnect_sessions)"))
|
186
|
+
every_ticks_sessions= JSON.parse(ctx.eval("JSON.stringify(every_ticks_sessions)"))
|
187
|
+
ping_bp = ctx.eval("ping_bp")
|
188
|
+
ping_params = JSON.parse(ctx.eval("JSON.stringify(ping_params)"))
|
189
|
+
ping_sessions = JSON.parse(ctx.eval("JSON.stringify(ping_sessions)"))
|
190
|
+
|
191
|
+
#We need to convert to strings because we're using Object.keys to verify hashes
|
192
|
+
#Connect happends when my_other_controller is embedded
|
193
|
+
expect(connect_sessions).to eq([my_base.to_s])
|
194
|
+
|
195
|
+
#Disconnect happends when my_controller switches to my_other_action
|
196
|
+
expect(disconnect_bp).to eq(my_base)
|
197
|
+
expect(disconnect_sessions).to eq([])
|
198
|
+
|
199
|
+
#Timer was fired before we switched to no service instance
|
200
|
+
expect(every_ticks_sessions).to eq([my_base.to_s])
|
201
|
+
|
202
|
+
#Ping is hit during the service
|
203
|
+
expect(ping_bp).to eq(7)
|
204
|
+
expect(ping_params).to eq({"hello" => "world"})
|
205
|
+
expect(ping_sessions).to eq([my_base.to_s])
|
206
|
+
end
|
207
|
+
|
208
|
+
it "fails to compile when trying to Request() with something not defined in services" do
|
209
|
+
#Compile the controller
|
210
|
+
expect { flok_new_user File.read('./spec/kern/assets/service_controller3.rb'), File.read("./spec/kern/assets/service_config1.rb"), File.read("./spec/kern/assets/service2.rb")
|
211
|
+
}.to raise_exception
|
212
|
+
end
|
213
|
+
end
|
@@ -0,0 +1,195 @@
|
|
1
|
+
#Anything and everything to do with view controllers (not directly UI) 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:vm_service" do
|
10
|
+
include_context "kern"
|
11
|
+
|
12
|
+
#it "Can be used inside a controller" do
|
13
|
+
##Compile the controller
|
14
|
+
#ctx = flok_new_user File.read('./spec/kern/assets/vm/controller0.rb'), File.read("./spec/kern/assets/vm/config0.rb")
|
15
|
+
|
16
|
+
##Run the embed function
|
17
|
+
#ctx.eval %{
|
18
|
+
#//Call embed on main root view
|
19
|
+
#base = _embed("my_controller", 0, {}, null);
|
20
|
+
|
21
|
+
#//Drain queue
|
22
|
+
#int_dispatch([]);
|
23
|
+
#}
|
24
|
+
|
25
|
+
#base = ctx.eval("base")
|
26
|
+
#res = ctx.eval("vm_did_wakeup")
|
27
|
+
#expect(res).to eq(true)
|
28
|
+
#end
|
29
|
+
|
30
|
+
#it "Does pass options to spec0 in init" do
|
31
|
+
##Compile the controller
|
32
|
+
#ctx = flok_new_user File.read('./spec/kern/assets/vm/controller0.rb'), File.read("./spec/kern/assets/vm/config1.rb")
|
33
|
+
|
34
|
+
##Run the embed function
|
35
|
+
#ctx.eval %{
|
36
|
+
#//Call embed on main root view
|
37
|
+
#base = _embed("my_controller", 0, {}, null);
|
38
|
+
|
39
|
+
#//Drain queue
|
40
|
+
#int_dispatch([]);
|
41
|
+
#}
|
42
|
+
|
43
|
+
#base = ctx.eval("base")
|
44
|
+
#res = JSON.parse(ctx.eval("JSON.stringify(spec0_init_options)"))
|
45
|
+
#expect(res).to eq({"hello" => "world"})
|
46
|
+
#end
|
47
|
+
|
48
|
+
#it "Can include the spec0 pager and call read_sync" do
|
49
|
+
##Compile the controller
|
50
|
+
#ctx = flok_new_user File.read('./spec/kern/assets/vm/controller1.rb'), File.read("./spec/kern/assets/vm/config1.rb")
|
51
|
+
|
52
|
+
##Run the embed function
|
53
|
+
#ctx.eval %{
|
54
|
+
#//Call embed on main root view
|
55
|
+
#base = _embed("my_controller", 0, {}, null);
|
56
|
+
|
57
|
+
#//Drain queue
|
58
|
+
#int_dispatch([]);
|
59
|
+
#}
|
60
|
+
|
61
|
+
##Verify that the vm service is getting the read_sync request
|
62
|
+
#res = ctx.eval("vm_read_sync_called")
|
63
|
+
#expect(res).to eq(true)
|
64
|
+
|
65
|
+
##Verify that the vm service is disptaching the request
|
66
|
+
#res = ctx.eval("spec0_read_sync_called")
|
67
|
+
#expect(res).to eq(true)
|
68
|
+
#end
|
69
|
+
|
70
|
+
#it "Can include the spec0 pager and call read_sync and then get a reply" do
|
71
|
+
##Compile the controller
|
72
|
+
#ctx = flok_new_user File.read('./spec/kern/assets/vm/controller1.rb'), File.read("./spec/kern/assets/vm/config1.rb")
|
73
|
+
|
74
|
+
##Run the embed function
|
75
|
+
#ctx.eval %{
|
76
|
+
#//Call embed on main root view
|
77
|
+
#base = _embed("my_controller", 0, {}, null);
|
78
|
+
|
79
|
+
#//Drain queue
|
80
|
+
#int_dispatch([]);
|
81
|
+
#}
|
82
|
+
|
83
|
+
##Verify that the read did return from the spec0 pager
|
84
|
+
#res = ctx.eval("read_res_params")
|
85
|
+
#expect(res).not_to eq(nil)
|
86
|
+
#end
|
87
|
+
|
88
|
+
|
89
|
+
#it "Can include the spec0 pager and call read and then get a reply" do
|
90
|
+
##Compile the controller
|
91
|
+
#ctx = flok_new_user File.read('./spec/kern/assets/vm/controller2.rb'), File.read("./spec/kern/assets/vm/config1.rb")
|
92
|
+
|
93
|
+
##Run the embed function
|
94
|
+
#ctx.eval %{
|
95
|
+
#//Call embed on main root view
|
96
|
+
#base = _embed("my_controller", 0, {}, null);
|
97
|
+
|
98
|
+
#//Drain queue
|
99
|
+
#int_dispatch([]);
|
100
|
+
#}
|
101
|
+
|
102
|
+
##Verify that the read did return from the spec0 pager
|
103
|
+
#res = ctx.eval("read_res_params")
|
104
|
+
#expect(res).not_to eq(nil)
|
105
|
+
#end
|
106
|
+
|
107
|
+
#it "Can include the spec0 pager and call write and and then read to get a reply" do
|
108
|
+
##Compile the controller
|
109
|
+
#ctx = flok_new_user File.read('./spec/kern/assets/vm/controller3.rb'), File.read("./spec/kern/assets/vm/config1.rb")
|
110
|
+
|
111
|
+
##Run the embed function
|
112
|
+
#ctx.eval %{
|
113
|
+
#//Call embed on main root view
|
114
|
+
#base = _embed("my_controller", 0, {}, null);
|
115
|
+
|
116
|
+
#//Drain queue
|
117
|
+
#int_dispatch([]);
|
118
|
+
#}
|
119
|
+
|
120
|
+
##Verify that the read did return from the spec0 pager
|
121
|
+
#res = JSON.parse(ctx.eval("JSON.stringify(read_res_params)"))
|
122
|
+
#expect(res).to eq({
|
123
|
+
#"key" => 33,
|
124
|
+
#"value" => 22
|
125
|
+
#})
|
126
|
+
#end
|
127
|
+
|
128
|
+
# it "Write then read does will hit the pager for the read, a write is not guaranteed to be 1 to 1 but a read is, additionally, the reads only went through once" do
|
129
|
+
##Compile the controller
|
130
|
+
#ctx = flok_new_user File.read('./spec/kern/assets/vm/controller4.rb'), File.read("./spec/kern/assets/vm/config1.rb")
|
131
|
+
|
132
|
+
##Run the embed function
|
133
|
+
#ctx.eval %{
|
134
|
+
#//Call embed on main root view
|
135
|
+
#base = _embed("my_controller", 0, {}, null);
|
136
|
+
|
137
|
+
#//Drain queue
|
138
|
+
#int_dispatch([]);
|
139
|
+
#}
|
140
|
+
|
141
|
+
#expect(ctx.eval("spec0_read_count")).to eq(1)
|
142
|
+
#end
|
143
|
+
|
144
|
+
#it "Can read through and then send another read_res for a change on the page" do
|
145
|
+
##Compile the controller
|
146
|
+
#ctx = flok_new_user File.read('./spec/kern/assets/vm/controller5.rb'), File.read("./spec/kern/assets/vm/config2.rb")
|
147
|
+
|
148
|
+
##Run the embed function
|
149
|
+
#ctx.eval %{
|
150
|
+
#//Call embed on main root view
|
151
|
+
#base = _embed("my_controller", 0, {}, null);
|
152
|
+
|
153
|
+
#//Drain queue
|
154
|
+
#int_dispatch([]);
|
155
|
+
#}
|
156
|
+
|
157
|
+
##read_res from spec is called multiple times and returns an array of the parms
|
158
|
+
#res = JSON.parse(ctx.eval("JSON.stringify(read_res_called_with)"))
|
159
|
+
|
160
|
+
##Expect 2 responses, first is cache miss, second is cache hit, third is cache updated
|
161
|
+
#expect(res).to eq [
|
162
|
+
#{"key" => "my_key", "value" => "a"},
|
163
|
+
#{"key" => "my_key", "value" => "a"},
|
164
|
+
#{"key" => "my_key", "value" => "b"}
|
165
|
+
#]
|
166
|
+
#end
|
167
|
+
|
168
|
+
it "Can watch a key and then be sent a read_res whenever that key changes" do
|
169
|
+
#Compile the controller
|
170
|
+
ctx = flok_new_user File.read('./spec/kern/assets/vm/controller6.rb'), File.read("./spec/kern/assets/vm/config3.rb")
|
171
|
+
|
172
|
+
#Run the embed function
|
173
|
+
ctx.eval %{
|
174
|
+
//Call embed on main root view
|
175
|
+
base = _embed("my_controller", 0, {}, null);
|
176
|
+
|
177
|
+
//Drain queue
|
178
|
+
int_dispatch([]);
|
179
|
+
}
|
180
|
+
|
181
|
+
#Trigger notification
|
182
|
+
ctx.eval("spec2_spec_trigger()")
|
183
|
+
|
184
|
+
#read_res from spec is called multiple times and returns an array of the parms
|
185
|
+
res = JSON.parse(ctx.eval("JSON.stringify(read_res_called_with)"))
|
186
|
+
|
187
|
+
#Expect 2 responses, first is cache miss, second is cache hit, third is cache updated
|
188
|
+
expect(res).to eq [
|
189
|
+
{"key" => "my_key", "value" => "a"},
|
190
|
+
{"key" => "my_key", "value" => "a"},
|
191
|
+
{"key" => "my_key", "value" => "b"}
|
192
|
+
]
|
193
|
+
end
|
194
|
+
|
195
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flok
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.38
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- seo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-06-
|
11
|
+
date: 2015-06-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: execjs
|
@@ -284,35 +284,49 @@ files:
|
|
284
284
|
- app/drivers/chrome/src/event.js
|
285
285
|
- app/drivers/chrome/src/helpers.js
|
286
286
|
- app/drivers/chrome/src/net.js
|
287
|
+
- app/drivers/chrome/src/persist.js
|
287
288
|
- app/drivers/chrome/src/segue.js
|
288
289
|
- app/drivers/chrome/src/sockio.js
|
289
290
|
- app/drivers/chrome/src/timer.js
|
290
291
|
- app/drivers/chrome/src/ui.js
|
291
292
|
- app/drivers/chrome/src/vendor/jquery.js
|
292
293
|
- app/drivers/chrome/src/vendor/socket.io.js
|
294
|
+
- app/drivers/chrome/src/vendor/store2.js
|
295
|
+
- app/kern/callout.js
|
293
296
|
- app/kern/controller.js
|
297
|
+
- app/kern/crc32.js
|
294
298
|
- app/kern/dispatch.js
|
295
299
|
- app/kern/macro.rb
|
296
300
|
- app/kern/mod/controller.js
|
297
301
|
- app/kern/mod/debug.js
|
298
302
|
- app/kern/mod/event.js
|
299
303
|
- app/kern/mod/net.js
|
304
|
+
- app/kern/mod/persist.js
|
300
305
|
- app/kern/mod/segue.js
|
301
306
|
- app/kern/mod/sockio.js
|
307
|
+
- app/kern/mod/timer.js
|
302
308
|
- app/kern/mod/ui.js
|
303
309
|
- app/kern/net_cb.js
|
304
|
-
- app/kern/
|
305
|
-
- app/kern/
|
310
|
+
- app/kern/pagers/mem_pager.js
|
311
|
+
- app/kern/pagers/sockio_pager.js
|
312
|
+
- app/kern/pagers/spec0.js
|
313
|
+
- app/kern/pagers/spec1.js
|
314
|
+
- app/kern/pagers/spec2.js
|
315
|
+
- app/kern/services/test.rb
|
316
|
+
- app/kern/services/vm.rb
|
317
|
+
- app/kern/spec_helper.js
|
306
318
|
- app/kern/tel.js
|
307
319
|
- bin/flok
|
308
320
|
- docs/architecture.md
|
309
321
|
- docs/branches.md
|
322
|
+
- docs/callout.md
|
310
323
|
- docs/client_api.md
|
311
324
|
- docs/compilation.md
|
312
325
|
- docs/controllers.md
|
313
326
|
- docs/datatypes.md
|
314
327
|
- docs/debug_server.md
|
315
328
|
- docs/drivers.md
|
329
|
+
- docs/environmentals.md
|
316
330
|
- docs/images/flok_arch.png
|
317
331
|
- docs/images/ui_surface_and_views.png
|
318
332
|
- docs/images/view_and_spot.png
|
@@ -336,7 +350,8 @@ files:
|
|
336
350
|
- docs/scheduling.md
|
337
351
|
- docs/services.md
|
338
352
|
- docs/services/rest.md
|
339
|
-
- docs/services/
|
353
|
+
- docs/services/vm.md
|
354
|
+
- docs/services/vm/pagers.md
|
340
355
|
- docs/testing.md
|
341
356
|
- flok.gemspec
|
342
357
|
- lib/flok.rb
|
@@ -347,6 +362,11 @@ files:
|
|
347
362
|
- lib/flok/project_template/Gemfile.erb
|
348
363
|
- lib/flok/project_template/Guardfile
|
349
364
|
- lib/flok/project_template/app/controllers/controller.rb
|
365
|
+
- lib/flok/project_template/app/scripts/script.js
|
366
|
+
- lib/flok/project_template/app/services/service.rb
|
367
|
+
- lib/flok/project_template/config/config.yml
|
368
|
+
- lib/flok/project_template/config/platforms/chrome/config.yml
|
369
|
+
- lib/flok/project_template/config/services.rb
|
350
370
|
- lib/flok/service_compiler_templates/services.js.erb
|
351
371
|
- lib/flok/services_compiler.rb
|
352
372
|
- lib/flok/transition_compiler.rb
|
@@ -360,18 +380,26 @@ files:
|
|
360
380
|
- opt/clojure/flokjure
|
361
381
|
- opt/clojure/main.js
|
362
382
|
- spec/env/etc.rb
|
383
|
+
- spec/env/global.rb
|
363
384
|
- spec/env/iface.rb
|
364
385
|
- spec/env/kern.rb
|
365
386
|
- spec/etc/cli_spec.rb
|
387
|
+
- spec/etc/lib/assets/config.yml
|
366
388
|
- spec/etc/lib/build_spec.rb
|
367
389
|
- spec/etc/lib/platform_spec.rb
|
368
390
|
- spec/etc/lib/project_spec.rb
|
369
391
|
- spec/etc/macro_spec.rb
|
392
|
+
- spec/etc/service_compiler/config0.rb
|
393
|
+
- spec/etc/service_compiler/config1.rb
|
394
|
+
- spec/etc/service_compiler/config2.rb
|
370
395
|
- spec/etc/service_compiler/service0.rb
|
396
|
+
- spec/etc/service_compiler/service1.rb
|
397
|
+
- spec/etc/service_compiler/service_bad_type.rb
|
371
398
|
- spec/etc/services_compiler_spec.rb
|
372
399
|
- spec/etc/transition_compiler/trans0.rb
|
373
400
|
- spec/etc/transition_complier_spec.rb
|
374
401
|
- spec/etc/user_compiler/controller0.rb
|
402
|
+
- spec/etc/user_compiler/data.js
|
375
403
|
- spec/etc/user_compiler_spec.rb
|
376
404
|
- spec/iface/driver/assets/debug_socket_server.js
|
377
405
|
- spec/iface/driver/assets/node_modules/socket.io/.npmignore
|
@@ -1088,6 +1116,7 @@ files:
|
|
1088
1116
|
- spec/iface/driver/debug_socketio_spec.rb
|
1089
1117
|
- spec/iface/driver/debug_spec.rb
|
1090
1118
|
- spec/iface/driver/net_spec.rb
|
1119
|
+
- spec/iface/driver/persist_spec.rb
|
1091
1120
|
- spec/iface/driver/ping_spec.rb
|
1092
1121
|
- spec/iface/driver/pipe_spec.rb
|
1093
1122
|
- spec/iface/driver/sockio_spec.rb
|
@@ -1098,6 +1127,7 @@ files:
|
|
1098
1127
|
- spec/iface/kern/net_spec.rb
|
1099
1128
|
- spec/iface/kern/ping_spec.rb
|
1100
1129
|
- spec/iface/kern/pipe_spec.rb
|
1130
|
+
- spec/kern/assets/blank.rb
|
1101
1131
|
- spec/kern/assets/controller0.rb
|
1102
1132
|
- spec/kern/assets/controller1.rb
|
1103
1133
|
- spec/kern/assets/controller_bare.rb
|
@@ -1113,18 +1143,41 @@ files:
|
|
1113
1143
|
- spec/kern/assets/goto2.rb
|
1114
1144
|
- spec/kern/assets/lower_event.rb
|
1115
1145
|
- spec/kern/assets/raise_event.rb
|
1116
|
-
- spec/kern/assets/rest_service.rb
|
1117
1146
|
- spec/kern/assets/send_event.rb
|
1147
|
+
- spec/kern/assets/service0.rb
|
1148
|
+
- spec/kern/assets/service1.rb
|
1149
|
+
- spec/kern/assets/service2.rb
|
1150
|
+
- spec/kern/assets/service_config0.rb
|
1151
|
+
- spec/kern/assets/service_config1.rb
|
1152
|
+
- spec/kern/assets/service_controller0.rb
|
1153
|
+
- spec/kern/assets/service_controller1.rb
|
1154
|
+
- spec/kern/assets/service_controller2.rb
|
1155
|
+
- spec/kern/assets/service_controller3.rb
|
1118
1156
|
- spec/kern/assets/test_event.rb
|
1119
1157
|
- spec/kern/assets/test_event2.rb
|
1120
1158
|
- spec/kern/assets/test_event3.rb
|
1121
|
-
- spec/kern/assets/
|
1159
|
+
- spec/kern/assets/vm/config0.rb
|
1160
|
+
- spec/kern/assets/vm/config1.rb
|
1161
|
+
- spec/kern/assets/vm/config2.rb
|
1162
|
+
- spec/kern/assets/vm/config3.rb
|
1163
|
+
- spec/kern/assets/vm/controller0.rb
|
1164
|
+
- spec/kern/assets/vm/controller1.rb
|
1165
|
+
- spec/kern/assets/vm/controller2.rb
|
1166
|
+
- spec/kern/assets/vm/controller3.rb
|
1167
|
+
- spec/kern/assets/vm/controller4.rb
|
1168
|
+
- spec/kern/assets/vm/controller5.rb
|
1169
|
+
- spec/kern/assets/vm/controller6.rb
|
1170
|
+
- spec/kern/assets/vm/service0.rb
|
1171
|
+
- spec/kern/assets/vm/service_controller0.rb
|
1172
|
+
- spec/kern/callout_spec.rb
|
1122
1173
|
- spec/kern/controller_spec.rb
|
1123
1174
|
- spec/kern/debug_spec.rb
|
1124
1175
|
- spec/kern/debug_ui_spec.rb
|
1176
|
+
- spec/kern/functions_spec.rb
|
1125
1177
|
- spec/kern/net_spec.rb
|
1126
1178
|
- spec/kern/rest_service_spec.rb
|
1127
|
-
- spec/kern/
|
1179
|
+
- spec/kern/service_controller_spec.rb
|
1180
|
+
- spec/kern/vm_service_spec.rb
|
1128
1181
|
- spec/lib/helpers.rb
|
1129
1182
|
- spec/lib/io_extensions.rb
|
1130
1183
|
- spec/lib/rspec_extensions.rb
|
@@ -1149,24 +1202,32 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1149
1202
|
version: '0'
|
1150
1203
|
requirements: []
|
1151
1204
|
rubyforge_project:
|
1152
|
-
rubygems_version: 2.4.
|
1205
|
+
rubygems_version: 2.4.7
|
1153
1206
|
signing_key:
|
1154
1207
|
specification_version: 4
|
1155
1208
|
summary: A boring javascript application framework
|
1156
1209
|
test_files:
|
1157
1210
|
- spec/env/etc.rb
|
1211
|
+
- spec/env/global.rb
|
1158
1212
|
- spec/env/iface.rb
|
1159
1213
|
- spec/env/kern.rb
|
1160
1214
|
- spec/etc/cli_spec.rb
|
1215
|
+
- spec/etc/lib/assets/config.yml
|
1161
1216
|
- spec/etc/lib/build_spec.rb
|
1162
1217
|
- spec/etc/lib/platform_spec.rb
|
1163
1218
|
- spec/etc/lib/project_spec.rb
|
1164
1219
|
- spec/etc/macro_spec.rb
|
1220
|
+
- spec/etc/service_compiler/config0.rb
|
1221
|
+
- spec/etc/service_compiler/config1.rb
|
1222
|
+
- spec/etc/service_compiler/config2.rb
|
1165
1223
|
- spec/etc/service_compiler/service0.rb
|
1224
|
+
- spec/etc/service_compiler/service1.rb
|
1225
|
+
- spec/etc/service_compiler/service_bad_type.rb
|
1166
1226
|
- spec/etc/services_compiler_spec.rb
|
1167
1227
|
- spec/etc/transition_compiler/trans0.rb
|
1168
1228
|
- spec/etc/transition_complier_spec.rb
|
1169
1229
|
- spec/etc/user_compiler/controller0.rb
|
1230
|
+
- spec/etc/user_compiler/data.js
|
1170
1231
|
- spec/etc/user_compiler_spec.rb
|
1171
1232
|
- spec/iface/driver/assets/debug_socket_server.js
|
1172
1233
|
- spec/iface/driver/assets/node_modules/socket.io/.npmignore
|
@@ -1883,6 +1944,7 @@ test_files:
|
|
1883
1944
|
- spec/iface/driver/debug_socketio_spec.rb
|
1884
1945
|
- spec/iface/driver/debug_spec.rb
|
1885
1946
|
- spec/iface/driver/net_spec.rb
|
1947
|
+
- spec/iface/driver/persist_spec.rb
|
1886
1948
|
- spec/iface/driver/ping_spec.rb
|
1887
1949
|
- spec/iface/driver/pipe_spec.rb
|
1888
1950
|
- spec/iface/driver/sockio_spec.rb
|
@@ -1893,6 +1955,7 @@ test_files:
|
|
1893
1955
|
- spec/iface/kern/net_spec.rb
|
1894
1956
|
- spec/iface/kern/ping_spec.rb
|
1895
1957
|
- spec/iface/kern/pipe_spec.rb
|
1958
|
+
- spec/kern/assets/blank.rb
|
1896
1959
|
- spec/kern/assets/controller0.rb
|
1897
1960
|
- spec/kern/assets/controller1.rb
|
1898
1961
|
- spec/kern/assets/controller_bare.rb
|
@@ -1908,18 +1971,41 @@ test_files:
|
|
1908
1971
|
- spec/kern/assets/goto2.rb
|
1909
1972
|
- spec/kern/assets/lower_event.rb
|
1910
1973
|
- spec/kern/assets/raise_event.rb
|
1911
|
-
- spec/kern/assets/rest_service.rb
|
1912
1974
|
- spec/kern/assets/send_event.rb
|
1975
|
+
- spec/kern/assets/service0.rb
|
1976
|
+
- spec/kern/assets/service1.rb
|
1977
|
+
- spec/kern/assets/service2.rb
|
1978
|
+
- spec/kern/assets/service_config0.rb
|
1979
|
+
- spec/kern/assets/service_config1.rb
|
1980
|
+
- spec/kern/assets/service_controller0.rb
|
1981
|
+
- spec/kern/assets/service_controller1.rb
|
1982
|
+
- spec/kern/assets/service_controller2.rb
|
1983
|
+
- spec/kern/assets/service_controller3.rb
|
1913
1984
|
- spec/kern/assets/test_event.rb
|
1914
1985
|
- spec/kern/assets/test_event2.rb
|
1915
1986
|
- spec/kern/assets/test_event3.rb
|
1916
|
-
- spec/kern/assets/
|
1987
|
+
- spec/kern/assets/vm/config0.rb
|
1988
|
+
- spec/kern/assets/vm/config1.rb
|
1989
|
+
- spec/kern/assets/vm/config2.rb
|
1990
|
+
- spec/kern/assets/vm/config3.rb
|
1991
|
+
- spec/kern/assets/vm/controller0.rb
|
1992
|
+
- spec/kern/assets/vm/controller1.rb
|
1993
|
+
- spec/kern/assets/vm/controller2.rb
|
1994
|
+
- spec/kern/assets/vm/controller3.rb
|
1995
|
+
- spec/kern/assets/vm/controller4.rb
|
1996
|
+
- spec/kern/assets/vm/controller5.rb
|
1997
|
+
- spec/kern/assets/vm/controller6.rb
|
1998
|
+
- spec/kern/assets/vm/service0.rb
|
1999
|
+
- spec/kern/assets/vm/service_controller0.rb
|
2000
|
+
- spec/kern/callout_spec.rb
|
1917
2001
|
- spec/kern/controller_spec.rb
|
1918
2002
|
- spec/kern/debug_spec.rb
|
1919
2003
|
- spec/kern/debug_ui_spec.rb
|
2004
|
+
- spec/kern/functions_spec.rb
|
1920
2005
|
- spec/kern/net_spec.rb
|
1921
2006
|
- spec/kern/rest_service_spec.rb
|
1922
|
-
- spec/kern/
|
2007
|
+
- spec/kern/service_controller_spec.rb
|
2008
|
+
- spec/kern/vm_service_spec.rb
|
1923
2009
|
- spec/lib/helpers.rb
|
1924
2010
|
- spec/lib/io_extensions.rb
|
1925
2011
|
- spec/lib/rspec_extensions.rb
|