class testWatchdog(object): def __init__(self): self.publisher = None self.dispatcher = None self.subscriber = None self.topic = None self.folder = None def setup(self): self.folder = translatepath("special://addon/resources/lib/tests") setPathRW(self.folder) watchdogSettings = [ { "folder": self.folder, "patterns": "*", "ignore_patterns": "", "ignore_directories": True, "recursive": False, "key": "E1", } ] self.dispatcher = Dispatcher() self.subscriber = MockSubscriber() self.topic = Topic("onFileSystemChange", "E1") self.subscriber.addTopic(self.topic) self.dispatcher.addSubscriber(self.subscriber) settings = Settings() flexmock(settings, getWatchdogSettings=watchdogSettings) self.publisher = WatchdogPublisher(self.dispatcher, settings) self.dispatcher.start() def teardown(self): self.publisher.abort() self.dispatcher.abort() del self.publisher del self.dispatcher def testWatchdogPublisherCreate(self): fn = os.path.join(self.folder, "test.txt") if os.path.exists(fn): os.remove(fn) time.sleep(1) self.publisher.start() time.sleep(1) with open(fn, "w") as f: f.writelines("test") self.subscriber.waitForMessage(count=2, timeout=2) self.publisher.abort() self.dispatcher.abort() time.sleep(1) os.remove(fn) messages = self.subscriber.retrieveMessages() foundc = False foundm = False fmesgc = None fmesgm = None for message in messages: assert isinstance(message, Message) if message.kwargs["event"] == "created": foundc = True fmesgc = message elif message.kwargs["event"] == "modified": foundm = True fmesgm = message assert foundc is True assert fmesgc.topic == self.topic assert fmesgc.kwargs["path"] == fn assert foundm is True assert fmesgm.topic == self.topic, "Warning Only" assert fmesgm.kwargs["path"] == fn, "Warning Only" if len(messages) > 2: raise AssertionError("Warning: Too many messages found for Watchdog Create") def testWatchdogPublisherDelete(self): fn = os.path.join(self.folder, "test.txt") if os.path.exists(fn) is False: with open(fn, "w") as f: f.writelines("test") time.sleep(1) self.publisher.start() time.sleep(2) os.remove(fn) self.subscriber.waitForMessage(count=1, timeout=2) self.publisher.abort() self.dispatcher.abort() messages = self.subscriber.retrieveMessages() found = False fmesg = None for message in messages: assert isinstance(message, Message) if message.kwargs["event"] == "deleted": found = True fmesg = message assert found is True assert fmesg.topic == self.topic assert fmesg.kwargs["path"] == fn if len(messages) > 1: raise AssertionError("Warning: Too many messages found for Watchdog Delete") def testWatchdogPublisherModify(self): fn = os.path.join(self.folder, "test.txt") if os.path.exists(fn) is False: with open(fn, "w") as f: f.writelines("test") time.sleep(1) self.publisher.start() time.sleep(1) with open(fn, "a") as f: f.writelines("test2") self.subscriber.waitForMessage(count=1, timeout=2) self.publisher.abort() self.dispatcher.abort() os.remove(fn) messages = self.subscriber.retrieveMessages() found = False fmesg = None for message in messages: assert isinstance(message, Message) if message.kwargs["event"] == "modified": found = True fmesg = message assert found is True assert fmesg.topic == self.topic assert fmesg.kwargs["path"] == fn if len(messages) > 1: raise AssertionError("Warning: Too many messages found for Watchdog Modify")
class testWatchdog(object): def __init__(self): self.publisher = None self.dispatcher = None self.subscriber = None self.topic = None self.folder = None def setup(self): self.folder = translatepath('special://addon/resources/lib/tests') setPathRW(self.folder) watchdogSettings = [{ 'folder': self.folder, 'patterns': '*', 'ignore_patterns': '', 'ignore_directories': True, 'recursive': False, 'key': 'E1' }] self.dispatcher = Dispatcher() self.subscriber = testSubscriber() self.topic = Topic('onFileSystemChange', 'E1') self.subscriber.addTopic(self.topic) self.dispatcher.addSubscriber(self.subscriber) settings = Settings() flexmock(settings, getWatchdogSettings=watchdogSettings) self.publisher = WatchdogPublisher(self.dispatcher, settings) self.dispatcher.start() def teardown(self): self.publisher.abort() self.dispatcher.abort() del self.publisher del self.dispatcher def testWatchdogPublisherCreate(self): fn = os.path.join(self.folder, 'test.txt') if os.path.exists(fn): os.remove(fn) time.sleep(1) self.publisher.start() time.sleep(1) with open(fn, 'w') as f: f.writelines('test') time.sleep(1) self.publisher.abort() self.dispatcher.abort() time.sleep(1) os.remove(fn) messages = self.subscriber.retrieveMessages() foundc = False foundm = False fmesgc = None fmesgm = None for message in messages: assert isinstance(message, Message) if message.kwargs['event'] == 'created': foundc = True fmesgc = message elif message.kwargs['event'] == 'modified': foundm = True fmesgm = message assert foundc is True assert fmesgc.topic == self.topic assert fmesgc.kwargs['path'] == fn assert foundm is True assert fmesgm.topic == self.topic assert fmesgm.kwargs['path'] == fn if len(messages) > 2: raise AssertionError( 'Warning: Too many messages found for Watchdog Create') def testWatchdogPublisherDelete(self): fn = os.path.join(self.folder, 'test.txt') if os.path.exists(fn) is False: with open(fn, 'w') as f: f.writelines('test') time.sleep(1) self.publisher.start() time.sleep(2) os.remove(fn) time.sleep(2) self.publisher.abort() self.dispatcher.abort() messages = self.subscriber.retrieveMessages() found = False fmesg = None for message in messages: assert isinstance(message, Message) if message.kwargs['event'] == 'deleted': found = True fmesg = message assert found is True assert fmesg.topic == self.topic assert fmesg.kwargs['path'] == fn if len(messages) > 1: raise AssertionError( 'Warning: Too many messages found for Watchdog Delete') def testWatchdogPublisherModify(self): fn = os.path.join(self.folder, 'test.txt') if os.path.exists(fn) is False: with open(fn, 'w') as f: f.writelines('test') time.sleep(1) self.publisher.start() time.sleep(1) with open(fn, 'a') as f: f.writelines('test2') time.sleep(2) self.publisher.abort() self.dispatcher.abort() os.remove(fn) messages = self.subscriber.retrieveMessages() found = False fmesg = None for message in messages: assert isinstance(message, Message) if message.kwargs['event'] == 'modified': found = True fmesg = message assert found is True assert fmesg.topic == self.topic assert fmesg.kwargs['path'] == fn if len(messages) > 1: raise AssertionError( 'Warning: Too many messages found for Watchdog Modify')
class testWatchdog(object): def __init__(self): self.publisher=None self.dispatcher=None self.subscriber=None self.topic=None self.folder=None def setup(self): self.folder = translatepath('special://addon/resources/lib/tests') setPathRW(self.folder) watchdogSettings = [{'folder':self.folder, 'patterns':'*', 'ignore_patterns':'', 'ignore_directories':True, 'recursive':False, 'key':'E1'}] self.dispatcher = Dispatcher() self.subscriber = testSubscriber() self.topic = Topic('onFileSystemChange','E1') self.subscriber.addTopic(self.topic) self.dispatcher.addSubscriber(self.subscriber) settings = Settings() flexmock(settings, getWatchdogSettings=watchdogSettings) self.publisher = WatchdogPublisher(self.dispatcher, settings) self.dispatcher.start() def teardown(self): self.publisher.abort() self.dispatcher.abort() del self.publisher del self.dispatcher def testWatchdogPublisherCreate(self): fn = os.path.join(self.folder,'test.txt') if os.path.exists(fn): os.remove(fn) time.sleep(1) self.publisher.start() time.sleep(1) with open(fn, 'w') as f: f.writelines('test') time.sleep(1) self.publisher.abort() self.dispatcher.abort() time.sleep(1) os.remove(fn) messages = self.subscriber.retrieveMessages() foundc = False foundm = False fmesgc = None fmesgm = None for message in messages: assert isinstance(message, Message) if message.kwargs['event'] == 'created': foundc = True fmesgc = message elif message.kwargs['event'] == 'modified': foundm = True fmesgm = message assert foundc is True assert fmesgc.topic == self.topic assert fmesgc.kwargs['path'] == fn assert foundm is True assert fmesgm.topic == self.topic assert fmesgm.kwargs['path'] == fn if len(messages) > 2: raise AssertionError('Warning: Too many messages found for Watchdog Create') def testWatchdogPublisherDelete(self): fn = os.path.join(self.folder,'test.txt') if os.path.exists(fn) is False: with open(fn, 'w') as f: f.writelines('test') time.sleep(1) self.publisher.start() time.sleep(2) os.remove(fn) time.sleep(2) self.publisher.abort() self.dispatcher.abort() messages = self.subscriber.retrieveMessages() found = False fmesg = None for message in messages: assert isinstance(message, Message) if message.kwargs['event'] == 'deleted': found = True fmesg = message assert found is True assert fmesg.topic == self.topic assert fmesg.kwargs['path'] == fn if len(messages) > 1: raise AssertionError('Warning: Too many messages found for Watchdog Delete') def testWatchdogPublisherModify(self): fn = os.path.join(self.folder,'test.txt') if os.path.exists(fn) is False: with open(fn, 'w') as f: f.writelines('test') time.sleep(1) self.publisher.start() time.sleep(1) with open(fn, 'a') as f: f.writelines('test2') time.sleep(2) self.publisher.abort() self.dispatcher.abort() os.remove(fn) messages = self.subscriber.retrieveMessages() found = False fmesg = None for message in messages: assert isinstance(message, Message) if message.kwargs['event'] == 'modified': found = True fmesg = message assert found is True assert fmesg.topic == self.topic assert fmesg.kwargs['path'] == fn if len(messages) > 1: raise AssertionError('Warning: Too many messages found for Watchdog Modify')