Viewing file: test_tutorial.py (3.1 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
from .lib import TestBase
class TestTutorial(TestBase):
def test_example(self): # Memory Managers ################## import smmap # This instance should be globally available in your application # It is configured to be well suitable for 32-bit or 64 bit applications. mman = smmap.SlidingWindowMapManager()
# the manager provides much useful information about its current state # like the amount of open file handles or the amount of mapped memory assert mman.num_file_handles() == 0 assert mman.mapped_memory_size() == 0 # and many more ...
# Cursors ########## import smmap.test.lib with smmap.test.lib.FileCreator(1024 * 1024 * 8, "test_file") as fc: # obtain a cursor to access some file. c = mman.make_cursor(fc.path)
# the cursor is now associated with the file, but not yet usable assert c.is_associated() assert not c.is_valid()
# before you can use the cursor, you have to specify a window you want to # access. The following just says you want as much data as possible starting # from offset 0. # To be sure your region could be mapped, query for validity assert c.use_region().is_valid() # use_region returns self
# once a region was mapped, you must query its dimension regularly # to assure you don't try to access its buffer out of its bounds assert c.size() c.buffer()[0] # first byte c.buffer()[1:10] # first 9 bytes c.buffer()[c.size() - 1] # last byte
# you can query absolute offsets, and check whether an offset is included # in the cursor's data. assert c.ofs_begin() < c.ofs_end() assert c.includes_ofs(100)
# If you are over out of bounds with one of your region requests, the # cursor will be come invalid. It cannot be used in that state assert not c.use_region(fc.size, 100).is_valid() # map as much as possible after skipping the first 100 bytes assert c.use_region(100).is_valid()
# You can explicitly free cursor resources by unusing the cursor's region c.unuse_region() assert not c.is_valid()
# Buffers ######### # Create a default buffer which can operate on the whole file buf = smmap.SlidingWindowMapBuffer(mman.make_cursor(fc.path))
# you can use it right away assert buf.cursor().is_valid()
buf[0] # access the first byte buf[-1] # access the last ten bytes on the file buf[-10:] # access the last ten bytes
# If you want to keep the instance between different accesses, use the # dedicated methods buf.end_access() assert not buf.cursor().is_valid() # you cannot use the buffer anymore assert buf.begin_access(offset=10) # start using the buffer at an offset
|