flok 0.0.36 → 0.0.38
Sign up to get free protection for your applications and to get access to all the features.
- 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
|