Home | Trees | Indices | Help |
---|
|
1 # 2 # Copyright (c) 2013, EMC Corporation 3 # All rights reserved. 4 # 5 # Redistribution and use in source and binary forms, with or without 6 # modification, are permitted provided that the following conditions are met: 7 # 8 # 1. Redistributions of source code must retain the above copyright notice, 9 # this list of conditions and the following disclaimer. 10 # 2. Redistributions in binary form must reproduce the above copyright notice, 11 # this list of conditions and the following disclaimer in the documentation 12 # and/or other materials provided with the distribution. 13 # 14 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 15 # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17 # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 18 # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 19 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 20 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 22 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 23 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 24 # POSSIBILITY OF SUCH DAMAGE. 25 # 26 # Module Name: 27 # 28 # changenotify.py 29 # 30 # Abstract: 31 # 32 # Change Notify tests 33 # 34 # Authors: Masen Furer <masen.furer@emc.com> 35 # 36 37 import pike.model 38 import pike.smb2 39 import pike.test 408043 filename = "change_notify.txt" 44 chan, tree = self.tree_connect() 45 46 # connect to the root of the share 47 root = chan.create(tree, 48 '', 49 access=pike.smb2.GENERIC_READ, 50 options=pike.smb2.FILE_DIRECTORY_FILE, 51 share=pike.smb2.FILE_SHARE_READ).result() 52 53 # build a change notify request 54 smb_req = chan.request(obj=root) 55 notify_req = pike.smb2.ChangeNotifyRequest(smb_req) 56 notify_req.file_id = root.file_id 57 notify_req.completion_filter = pike.smb2.SMB2_NOTIFY_CHANGE_FILE_NAME 58 # send the request async 59 futures = chan.connection.submit(smb_req.parent) 60 61 # create a file on the share to trigger the notification 62 file = chan.create(tree, 63 filename, 64 access=pike.smb2.FILE_READ_DATA | pike.smb2.FILE_WRITE_DATA | pike.smb2.DELETE, 65 share=pike.smb2.FILE_SHARE_READ | pike.smb2.FILE_SHARE_WRITE | pike.smb2.FILE_SHARE_DELETE, 66 options=pike.smb2.FILE_DELETE_ON_CLOSE, 67 disposition=pike.smb2.FILE_SUPERSEDE).result() 68 69 chan.close(file) 70 71 # collect the change notify response 72 result = futures[0].result()[0] 73 74 # expect one notification, for the file add 75 self.assertEqual(len(result.notifications), 1) 76 self.assertEqual(result.notifications[0].filename, filename) 77 self.assertEqual(result.notifications[0].action, pike.smb2.SMB2_ACTION_ADDED) 78 79 chan.close(root)
Home | Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Thu Jun 29 08:51:26 2017 | http://epydoc.sourceforge.net |