class FileSystemTest(TestCase):
    def setUp(self):
        self.fs = FileSystem(".")

    def tearDown(self):
        pass
    
    def testOne(self):    
        print self.fs.absPath("../watchDir")
        pass
Example #2
0
class Watcher(object):
    def __init__(self):
        os.chdir("../")
        self.programPath = os.getcwd()
        os.chdir("app")
        self.__fs = FileSystem(".")
        self.__utils = Utils()
        self.__config = Config(fileSystem=self.__fs)
        self.__dbFullFileame = None
        self.__db = None
        self.__controller = None
        self.__feeder = None
        self.__webServerShutdownMethod = None
        self.__watcherProgDir = self.__fs.absPath(".").rstrip("/app")
        dbName = self.__config.watcher.get("db", "sqlite")
        sys.path.append("../db/%s" % dbName)
        Database = __import__(dbName).Database
        self.__dbFullFileame = self.__config.watcher.get("dbFile", "queue.db")
        self.__dbFullFileame = self.__fs.absPath(self.__dbFullFileame)


        #------------------------
        stdout = sys.stdout
        stderr = sys.stderr
        # Note: must not output any data when running as a windows server.
        class Writer(object):
            def write(self, data):
                #stdout.write("** "+ data)
                # log
                pass
        if self.__config.daemon:
            w = Writer()
            sys.stdout = w
            sys.stderr = w
        #------------------------
        self.__db = Database(self.__dbFullFileame)
        self.__controller = Controller(self.__db, self.__fs, self.__config, \
                                FileWatcher, WatchDirectory, update=False, \
                                globalIgnoreFilter=self.__globalIgnoreFilter)
        #self.__controller.configChanged(config)
        #self.__config.addReloadWatcher(self.__controller.configChanged)
        configFile = self.__fs.absPath(self.__config.configFile)
        configWatcher = FileWatcher(configFile, self.__fs)
        configWatcher.startWatching()
        def configChanged(file, eventName, **kwargs):
            #file=path, eventTime=eventTime, eventName=eventName, isDir=isDir, walk=False
            if eventName!="del" and file==self.__config.configFile:
                print "configChanged - reloading"
                self.__config.reload()
                self.__controller.configChanged(self.__config)
        configWatcher.addListener(configChanged)

        self.__feeder = Feeder(self.__utils, self.__controller)
        feedservice = self.__config.watcher.get("feedservice", {})
        host = feedservice.get("host", "localhost")
        port = feedservice.get("port", 9000)
        self.__webServerShutdownMethod = webServe(host, port, self.__feeder)
        #------------------------
        print "host='%s', port=%s" % (host, port)
        print "Press enter to exit..."
        raw_input()
        configWatcher.close()
        self.__controller.close()
        self.__webServerShutdownMethod()
        #print self.__controller._getRecordsCount()
        #print self.queue.getFromDate(0)
        sys.stdout = stdout
        sys.stderr = stderr


    def __globalIgnoreFilter(self, fullFile):
        if fullFile==self.__dbFullFileame or fullFile.startswith(self.__watcherProgDir):
            return True
        return False


    def __testListener(self, *args, **kwargs):
        path = kwargs.get("path")
        eTime = kwargs.get("eventTime")
        eName = kwargs.get("eventName")
        isDir = kwargs.get("isDir")
        print path, eTime, eName, isDir