Commit d750f5e5 authored by Kirill Smelkov's avatar Kirill Smelkov

.

parent ac8dfb69
...@@ -29,6 +29,7 @@ from __future__ import print_function, absolute_import ...@@ -29,6 +29,7 @@ from __future__ import print_function, absolute_import
from golang import func, defer, b from golang import func, defer, b
from golang.golang_test import panics from golang.golang_test import panics
from wendelin.bigfile.file_zodb import ZBigFile
from wendelin.wcfs.wcfs_test import tDB, tAt from wendelin.wcfs.wcfs_test import tDB, tAt
from wendelin.wcfs import wcfs_test from wendelin.wcfs import wcfs_test
from wendelin.wcfs.internal.wcfs_test import read_mustfault from wendelin.wcfs.internal.wcfs_test import read_mustfault
...@@ -180,30 +181,39 @@ def test_wcfs_client(): ...@@ -180,30 +181,39 @@ def test_wcfs_client():
@func @func
def test_wcfs_client_down_efault(): def test_wcfs_client_down_efault():
# XXX all fileh / mappings become invalid after wconn.close # XXX all fileh / mappings become invalid after wconn.close
t = tDB(); zf = t.zfile; at0=t.at0 t = tDB(); zf1 = t.zfile; at0=t.at0
defer(t.close) defer(t.close)
at1 = t.commit(zf, {2:'c1', 3:'d1'}) at1 = t.commit(zf1, {2:'c1', 3:'d1'})
zf2 = t.root['zfile2'] = ZBigFile(zf1.blksize) # XXX blksize=zf1.blksize?
at2 = t.commit()
at3 = t.commit(zf2, {1:'β3', 2:'γ3'})
wconn = t.wc.connect(at1) wconn = t.wc.connect(at1)
defer(wconn.close) defer(wconn.close)
fh1 = wconn.open(zf._p_oid) fh1 = wconn.open(zf1._p_oid); defer(fh1.close)
defer(fh1.close) fh2 = wconn.open(zf2._p_oid); defer(fh2.close)
m11 = fh1.mmap(1, 4); defer(m11.unmap)
m12 = fh1.mmap(3, 3); defer(m12.unmap)
tm11 = tMapping(t, m11) m11 = fh1.mmap(1, 4); defer(m11.unmap); tm11 = tMapping(t, m11)
tm12 = tMapping(t, m12) m12 = fh1.mmap(3, 3); defer(m12.unmap); tm12 = tMapping(t, m12)
m21 = fh2.mmap(0, 4); defer(m21.unmap); tm21 = tMapping(t, m21)
m22 = fh2.mmap(2, 3); defer(m22.unmap); tm22 = tMapping(t, m22)
# initially fh1 and fh2 mmaps read ok.
tm11.assertBlk(1, '', {}) tm11.assertBlk(1, '', {})
tm11.assertBlk(2, 'c1', {}) tm11.assertBlk(2, 'c1', {})
tm11.assertBlk(3, 'd1', {}); tm12.assertBlk(3, 'd1', {}) tm11.assertBlk(3, 'd1', {}); tm12.assertBlk(3, 'd1', {})
tm11.assertBlk(4, '', {}); tm12.assertBlk(4, '', {}) tm11.assertBlk(4, '', {}); tm12.assertBlk(4, '', {})
pass; tm12.assertBlk(5, '', {}) pass; tm12.assertBlk(5, '', {})
# close fh1 -> all fh1 mmaps must turn into efaulting memory. tm21.assertBlk(0, '', {})
tm21.assertBlk(1, 'β3', {})
tm21.assertBlk(2, 'γ3', {}); tm22.assertBlk(2, 'γ3', {})
tm21.assertBlk(3, '', {}); tm22.assertBlk(3, '', {})
pass; tm22.assertBlk(4, '', {})
# close fh1 -> all fh1 mmaps must turn into efaulting memory; fh2 mmaps continue to work ok.
fh1.close() fh1.close()
tm11.assertBlkFaults(1) tm11.assertBlkFaults(1)
tm11.assertBlkFaults(2) tm11.assertBlkFaults(2)
...@@ -211,6 +221,12 @@ def test_wcfs_client_down_efault(): ...@@ -211,6 +221,12 @@ def test_wcfs_client_down_efault():
tm11.assertBlkFaults(4); tm12.assertBlkFaults(4) tm11.assertBlkFaults(4); tm12.assertBlkFaults(4)
pass; tm12.assertBlkFaults(5) pass; tm12.assertBlkFaults(5)
tm21.assertBlk(0, '', {})
tm21.assertBlk(1, 'β3', {})
tm21.assertBlk(2, 'γ3', {}); tm22.assertBlk(2, 'γ3', {})
tm21.assertBlk(3, '', {}); tm22.assertBlk(3, '', {})
pass; tm22.assertBlk(4, '', {})
# verify that read_mustfault works as expected. # verify that read_mustfault works as expected.
def test_read_mustfault(): def test_read_mustfault():
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment