flok 0.0.83 → 0.0.84
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/kern/services/vm.rb +9 -6
- data/lib/flok/version.rb +1 -1
- data/spec/kern/vm_service_unsynced_persist_spec.rb +62 -2
- 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: 45e269cfb7782fb14a1cee271a4e3463469765e8
|
4
|
+
data.tar.gz: f75ef3e15dd33ba3c46b001f2d746e2e035c4714
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc8d027a642ebc2958501f1102697dea6a06e2a83feb1f865933e8d246d0a3a3a91c10a24575a4967f9d774e553a0779e1c9f67902231cdc86b36ec14d3e0f5e
|
7
|
+
data.tar.gz: 39cd9c82e3f12d2dc6b1479c266e7120e00b5217a568ce65ea12128a4721a288a3bfcd2e8f0a64acd072fe35c6803c75113015528e7c8e4e9ff128b1ecb5806c
|
data/app/kern/services/vm.rb
CHANGED
@@ -119,14 +119,17 @@ service :vm do
|
|
119
119
|
function int_per_get_res(s, ns, id, res) {
|
120
120
|
if (ns === "__reserved__") {
|
121
121
|
if (id === "vm_unsynced") {
|
122
|
-
|
123
|
-
|
122
|
+
if (res === null) { return; }
|
123
|
+
var cached_vm_unsynced = res;
|
124
124
|
|
125
125
|
<% @options[:pagers].each do |p| %>
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
126
|
+
//Make sure disk has the old namespace
|
127
|
+
if (cached_vm_unsynced.<%= p[:namespace] %> !== undefined) {
|
128
|
+
//Get all the ids from the old namespace
|
129
|
+
var ids = Object.keys(cached_vm_unsynced.<%= p[:namespace] %>)
|
130
|
+
for (var i = 0; i < ids.length; ++i) {
|
131
|
+
vm_unsynced.<%= p[:namespace] %>[ids[i]] = cached_vm_unsynced.<%= p[:namespace] %>[ids[i]];
|
132
|
+
}
|
130
133
|
}
|
131
134
|
<% end %>
|
132
135
|
}
|
data/lib/flok/version.rb
CHANGED
@@ -98,7 +98,8 @@ RSpec.describe "kern:vm_service unsynced (persist)" do
|
|
98
98
|
})
|
99
99
|
end
|
100
100
|
|
101
|
-
|
101
|
+
|
102
|
+
it "vm_pg_sync_pagein should not modify vm_unsynced if the read comes back with nothing" do
|
102
103
|
ctx = flok_new_user File.read('./spec/kern/assets/vm/controller0.rb'), File.read("./spec/kern/assets/vm/config5d.rb")
|
103
104
|
dump = ctx.evald %{
|
104
105
|
//Needed to initialize pagers
|
@@ -129,6 +130,59 @@ RSpec.describe "kern:vm_service unsynced (persist)" do
|
|
129
130
|
expect(res[2]).to eq("vm_unsynced")
|
130
131
|
|
131
132
|
#Return the vm_unsynced
|
133
|
+
@driver.int "int_per_get_res", [
|
134
|
+
"vm",
|
135
|
+
"__reserved__",
|
136
|
+
"vm_unsynced",
|
137
|
+
nil
|
138
|
+
]
|
139
|
+
|
140
|
+
#Expect vm_unsynced to have loaded the data
|
141
|
+
res = @ctx.dump("vm_unsynced")
|
142
|
+
expect(res).to eq({
|
143
|
+
"spec" => {
|
144
|
+
"foo" => 0,
|
145
|
+
},
|
146
|
+
"spec1" => {
|
147
|
+
"bar" => 1
|
148
|
+
}
|
149
|
+
})
|
150
|
+
end
|
151
|
+
|
152
|
+
it "vm_pg_sync_pagein should write out the read to vm_unsynced and merge if there are any existing elements" do
|
153
|
+
ctx = flok_new_user File.read('./spec/kern/assets/vm/controller0.rb'), File.read("./spec/kern/assets/vm/config5d.rb")
|
154
|
+
dump = ctx.evald %{
|
155
|
+
//Needed to initialize pagers
|
156
|
+
base = _embed("my_controller", 0, {}, null);
|
157
|
+
|
158
|
+
vm_pg_sync_pagein();
|
159
|
+
|
160
|
+
vm_unsynced = {
|
161
|
+
"spec": {
|
162
|
+
"foo": 0
|
163
|
+
},
|
164
|
+
|
165
|
+
"spec1": {
|
166
|
+
"bar": 1
|
167
|
+
},
|
168
|
+
"spec2": {
|
169
|
+
"hello": "world"
|
170
|
+
}
|
171
|
+
}
|
172
|
+
|
173
|
+
int_dispatch([]);
|
174
|
+
}
|
175
|
+
|
176
|
+
#Should be loaded (manually called)
|
177
|
+
expect(ctx.eval("vm_unsynced_paged_in")).to eq(true)
|
178
|
+
|
179
|
+
#Expect a request for the special page that holds vm_unsynced
|
180
|
+
@driver.ignore_up_to "if_per_get", 2
|
181
|
+
res = @driver.get "if_per_get", 2
|
182
|
+
expect(res[1]).to eq("__reserved__")
|
183
|
+
expect(res[2]).to eq("vm_unsynced")
|
184
|
+
|
185
|
+
#Return the vm_unsynced, spec3 no longer exists
|
132
186
|
@driver.int "int_per_get_res", [
|
133
187
|
"vm",
|
134
188
|
"__reserved__",
|
@@ -138,6 +192,9 @@ RSpec.describe "kern:vm_service unsynced (persist)" do
|
|
138
192
|
"holah" => 1,
|
139
193
|
},
|
140
194
|
"spec1" => {
|
195
|
+
},
|
196
|
+
"spec3" => {
|
197
|
+
"foo" => "bar"
|
141
198
|
}
|
142
199
|
}
|
143
200
|
]
|
@@ -146,11 +203,14 @@ RSpec.describe "kern:vm_service unsynced (persist)" do
|
|
146
203
|
res = @ctx.dump("vm_unsynced")
|
147
204
|
expect(res).to eq({
|
148
205
|
"spec" => {
|
149
|
-
"foo" => 0,
|
150
206
|
"holah" => 1,
|
207
|
+
"foo" => 0,
|
151
208
|
},
|
152
209
|
"spec1" => {
|
153
210
|
"bar" => 1
|
211
|
+
},
|
212
|
+
"spec2" => {
|
213
|
+
"hello" => "world"
|
154
214
|
}
|
155
215
|
})
|
156
216
|
end
|