コード例 #1
0
 def test_cron_event1(self):
     cron1 = CronEvent("0 1 * * *")
     #print cron1.numerical_tab
     self.assertTrue(cron1.numerical_tab[0] == set([0]))
     self.assertTrue(cron1.numerical_tab[1] == set([1]))
     self.assertTrue(cron1.numerical_tab[2] == set(xrange(1, 32)))
     self.assertTrue(cron1.numerical_tab[3] == set(xrange(1, 13)))
     self.assertTrue(cron1.numerical_tab[4] == set(xrange(0, 7)))
     self.assertFalse(cron1.check_trigger((2015, 6, 16, 10, 0)))
コード例 #2
0
 def test_cron_event2(self):
     cron2 = CronEvent("0 */5 * * 0-4")
     #print cron2.numerical_tab
     self.assertTrue(cron2.numerical_tab[0] == set([0]))
     self.assertTrue(cron2.numerical_tab[1] == set([0, 10, 20, 5, 15]))
     self.assertTrue(cron2.numerical_tab[2] == set([]))
     self.assertTrue(cron2.numerical_tab[3] == set(xrange(1, 13)))
     self.assertTrue(cron2.numerical_tab[4] == set(xrange(0, 5)))
     self.assertTrue(cron2.check_trigger((2015, 6, 16, 10, 0)))
コード例 #3
0
 def test_cron_event3(self):
     cron3 = CronEvent("*/2 * * * *")
     #print cron1.numerical_tab
     self.assertTrue(cron3.numerical_tab[0] == set([
         0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34,
         36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58
     ]))
     self.assertTrue(cron3.numerical_tab[1] == set(xrange(0, 24)))
     self.assertTrue(cron3.numerical_tab[2] == set(xrange(1, 32)))
     self.assertTrue(cron3.numerical_tab[3] == set(xrange(1, 13)))
     self.assertTrue(cron3.numerical_tab[4] == set(xrange(0, 7)))
     self.assertTrue(cron3.check_trigger((2015, 6, 17, 9, 40)))
コード例 #4
0
    def __init__(self, collector_name, config, output, tailer=None):
        threading.Thread.__init__(self, name=collector_name)
        self.__collector_name=collector_name
        self.__config=config
        self.__sleep_time=self.__config['input'].get('frequency',10)
        self.__cron=self.__config['input'].get('schedule',None)
        self.__schedule=None
        if self.__cron is not None:
            self.__schedule=CronEvent(self.__cron)
            log.debug("job scheduled at %s"%self.__schedule.numerical_tab)
        self.__input=None
        self.__parser=None
        self.__output=output

        if self.__config['input']['type']=='command':
            self.__input=CommandRunner(self.__config['input']['source'])
        elif self.__config['input']['type']=='file':
            self.__input=FileReader(self.__config['input']['path'])
        elif self.__config['input']['type']=='http':
            #log.debug('input %s'%self.__config['input'])
            url=self.__config['input']['url']
            headers=self.__config['input'].get('headers', {})
            #log.debug('headers %s'%headers)
            auth=self.__config['input'].get('auth', None)
            self.__input=HTTPReader(url, headers, auth)
        elif self.__config['input']['type']=='class':
            arguments={}
            if 'arguments' in self.__config['input']:
                arguments=self.__config['input']['arguments']
            self.__input=init_object(self.__config['input']['name'], **arguments)
        elif self.__config['input']['type']=='tailer':
            if tailer is None:
                raise AttributeError("Missing tailer in config file for tailer type input")
            self.__input=tailer

        assert(self.__input)

        if 'parser' in self.__config:
            if self.__config['parser']['type']=='match':
                self.__parser=MatchParser(self.__config['parser']['pattern'].strip(), self.__config['parser']['transform'].strip())
            elif self.__config['parser']['type']=='split':
                self.__parser=SplitParser(self.__config['parser']['delimiter'].strip(), self.__config['parser']['transform'].strip())
            elif self.__config['parser']['type']=='dummy':
                self.__parser=DummyParser()
            elif self.__config['parser']['type']=='json':
                arguments={}
                if 'arguments' in self.__config['parser']:
                    arguments=self.__config['parser']['arguments']
                self.__parser=JsonGrepParser(**arguments)
            elif self.__config['parser']['type']=='class':
                arguments={}
                if 'arguments' in self.__config['parser']:
                    arguments=self.__config['parser']['arguments']
                self.__parser=init_object(self.__config['parser']['name'], **arguments)
        self.__running=True
        self.__session_id=str(uuid.uuid4())
        self.__max_error_count=self.__config['input'].get('max_error_count', -1)
        self.__current_data=None
        self.__number_collected=0
        self.__number_failed=0
        self.__sleep_count=0
        self.__error_count=0
        self.__last_check_minute=-1