flok 0.0.85 → 0.0.86

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a54d7b4eb562d2e9c7ad773c6d24768b52dc5846
4
- data.tar.gz: c32c892e3d2554ace4f96f820c76be6f27937a01
3
+ metadata.gz: 79132faeb16d0bf4de2723307d51313d97186e88
4
+ data.tar.gz: b3e8e4d92cf40227136cb9be54202f627041af19
5
5
  SHA512:
6
- metadata.gz: 027ab89d55f7f796c6936a521037d8cbd793dec833760191873556899e891d9c701c5f0f1c36d4b207f008699cd773c54c29994bca170dba56edd15251793b95
7
- data.tar.gz: e153d16196eb2370784bb1f41c48573018a380a1c7d430efe281e8732692d215262029f342cfa29d40acd38c1c0e70e26c5d324aaf2c47ba2be2ad019b430a53
6
+ metadata.gz: 43c7946e65a229ed70b1d6658dd93a86776385e6cd57f461a4debc97b9e82adb06899cfaac71b63608622b6381586c95a471f1ef23e2c378cacbb7403522fb0b
7
+ data.tar.gz: 3a6ad4ba5bbbe9bdf504f1128ac23e04751cae4431baea66f31c8890d268ffa6000018ad22708e958cccb949804e20b01dc5d04077b7d7dc262a435a98088c0b
@@ -20,7 +20,8 @@
20
20
  }
21
21
 
22
22
  //Mark page as synced if it contains no changes, we don't need to check base
23
- //here because if it has base, it has __changes as well
23
+ //here because if it has base, it has __changes as well, we're using einfo
24
+ //at this point, because it was rebased
24
25
  if (einfo.page.__changes === undefined) {
25
26
  vm_pg_unmark_needs_sync(pg_sockio<%= i %>_ns, einfo.page._id)
26
27
  }
@@ -118,7 +119,13 @@
118
119
  var page = vm_cache[pg_sockio<%= i %>_ns][page_id];
119
120
  //Clone page and send a copy to the server
120
121
  var copied = vm_copy_page(page);
121
- var info = {page: copied, changes: page.__changes, changes_id: page.__changes_id};
122
+
123
+ //Depending on whether the page is based, send the changes id
124
+ if (page.__base !== undefined) {
125
+ var info = {page: copied, changes: page.__base.__changes, changes_id: page.__base.__changes_id};
126
+ } else {
127
+ var info = {page: copied, changes: page.__changes, changes_id: page.__changes_id};
128
+ }
122
129
  SEND("net", "if_sockio_send", pg_sockio<%= i %>_bp, "write", info);
123
130
  }
124
131
  <% end %>
@@ -1,3 +1,3 @@
1
1
  module Flok
2
- VERSION = "0.0.85"
2
+ VERSION = "0.0.86"
3
3
  end
@@ -0,0 +1,39 @@
1
+ controller :my_controller do
2
+ services :vm
3
+
4
+ on_entry %{
5
+ read_res_params = [];
6
+
7
+ /////////////////////////////////////////////////////////////////////////
8
+ //Create a page and commit it to the sockio cache (cheating)
9
+ //This way we know a commit should be performed when a write goes through
10
+ /////////////////////////////////////////////////////////////////////////
11
+ var page = vm_create_page("test");
12
+ page.entries.push(
13
+ {"_id": "test", "_sig": "test", "val": "test"}
14
+ );
15
+ page.__changes_id = "my_changes_id";
16
+ page.__changes = [];
17
+ vm_reindex_page(page);
18
+ vm_rehash_page(page);
19
+ vm_cache["sockio"]["test"] = page;
20
+ /////////////////////////////////////////////////////////////////////////
21
+ }
22
+
23
+ action :my_action do
24
+ on_entry %{
25
+ var page = vm_create_page("test");
26
+
27
+ var info = {
28
+ ns: "sockio",
29
+ page: page,
30
+ };
31
+
32
+ Request("vm", "write", info);
33
+ }
34
+
35
+ on "read_res", %{
36
+ read_res_params.push(JSON.parse(JSON.stringify(params)));
37
+ }
38
+ end
39
+ end
@@ -854,6 +854,27 @@ RSpec.describe "kern:sockio_pager" do
854
854
  expect(res[2]["changes_id"].class).to eq(String)
855
855
  end
856
856
 
857
+ it "Does write to sockio interface when a page is requested to be written with changes with a page and changes (and the cached page is based)" do
858
+ ctx = flok_new_user File.read('./spec/kern/assets/vm/pg_sockio/write2d.rb'), File.read("./spec/kern/assets/vm/pg_sockio/config.rb")
859
+ dump = ctx.evald %{
860
+ //Call embed on main root view
861
+ dump.base = _embed("my_controller", 0, {}, null);
862
+
863
+ //Drain queue
864
+ int_dispatch([]);
865
+
866
+ dump.vm_cache = vm_cache;
867
+ }
868
+
869
+ #The kernel should have signaled to the driver to send a sockio request with the changes
870
+ @driver.ignore_up_to "if_sockio_send", 1
871
+ res = @driver.get "if_sockio_send", 1
872
+ expect(res[2]["page"]["_id"]).to eq("test")
873
+ expect(res[2]["changes"]).to eq([])
874
+ expect(res[2]["changes_id"]).to eq("my_changes_id")
875
+ end
876
+
877
+
857
878
  it "Does write to sockio interface when a page is requested to be written without changes with a page: and no changes: field" do
858
879
  ctx = flok_new_user File.read('./spec/kern/assets/vm/pg_sockio/write3.rb'), File.read("./spec/kern/assets/vm/pg_sockio/config.rb")
859
880
  dump = ctx.evald %{
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.85
4
+ version: 0.0.86
5
5
  platform: ruby
6
6
  authors:
7
7
  - seo
@@ -1284,6 +1284,7 @@ files:
1284
1284
  - spec/kern/assets/vm/pg_sockio/watch3.rb
1285
1285
  - spec/kern/assets/vm/pg_sockio/write.rb
1286
1286
  - spec/kern/assets/vm/pg_sockio/write2.rb
1287
+ - spec/kern/assets/vm/pg_sockio/write2d.rb
1287
1288
  - spec/kern/assets/vm/pg_sockio/write3.rb
1288
1289
  - spec/kern/assets/vm/service0.rb
1289
1290
  - spec/kern/assets/vm/service_controller0.rb
@@ -2238,6 +2239,7 @@ test_files:
2238
2239
  - spec/kern/assets/vm/pg_sockio/watch3.rb
2239
2240
  - spec/kern/assets/vm/pg_sockio/write.rb
2240
2241
  - spec/kern/assets/vm/pg_sockio/write2.rb
2242
+ - spec/kern/assets/vm/pg_sockio/write2d.rb
2241
2243
  - spec/kern/assets/vm/pg_sockio/write3.rb
2242
2244
  - spec/kern/assets/vm/service0.rb
2243
2245
  - spec/kern/assets/vm/service_controller0.rb