flok 0.0.85 → 0.0.86

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: 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