Ejemplo n.º 1
0
 def test_parse_runtime_limit_days_only_3(self):
     """dateutils - parse runtime using just at the end of a week range"""
     limit = 'Mon-Fri'
     now = datetime.datetime(year=2000, month=1, day=7)
     present_from = now
     present_to = now + datetime.timedelta(days=1)
     future_from = now + datetime.timedelta(days=3)
     future_to = now + datetime.timedelta(days=4)
     expected = (
         (present_from, present_to),
         (future_from, future_to),
     )
     result = dateutils.parse_runtime_limit(limit, now=now)
     self.assertEqual(expected, result)
Ejemplo n.º 2
0
 def test_parse_runtime_limit_days_times(self):
     """dateutils - parse runtime using just a week range"""
     limit = 'Mon-Fri 06:00-18:00'
     now = datetime.datetime(year=2000, month=1, day=3)
     day = now.date()
     t = now.time()
     present_from = datetime.datetime.combine(day, t.replace(hour=6))
     present_to = datetime.datetime.combine(day, t.replace(hour=18))
     future_from = present_from + datetime.timedelta(days=1)
     future_to = present_to + datetime.timedelta(days=1)
     expected = (
         (present_from, present_to),
         (future_from, future_to),
     )
     result = dateutils.parse_runtime_limit(limit, now=now)
     self.assertEqual(expected, result)
Ejemplo n.º 3
0
 def test_parse_runtime_limit_times_only(self):
     """dateutils - parse runtime using just a time range"""
     limit = '06:00-18:00'
     day = datetime.date.today()
     now = datetime.time()
     present_from = datetime.datetime.combine(day, now.replace(hour=6))
     present_to = datetime.datetime.combine(day, now.replace(hour=18))
     if present_to <= datetime.datetime.now():
         present_from += datetime.timedelta(days=1)
         present_to += datetime.timedelta(days=1)
     future_from = present_from + datetime.timedelta(days=1)
     future_to = present_to + datetime.timedelta(days=1)
     expected = (
         (present_from, present_to),
         (future_from, future_to),
     )
     result = dateutils.parse_runtime_limit(limit)
     self.assertEqual(expected, result)
Ejemplo n.º 4
0
 def test_parse_runtime_limit_times_only(self):
     """dateutils - parse runtime using just a time range"""
     limit = '06:00-18:00'
     day = datetime.date.today()
     now = datetime.time()
     present_from = datetime.datetime.combine(day, now.replace(hour=6))
     present_to = datetime.datetime.combine(day, now.replace(hour=18))
     if present_to <= datetime.datetime.now():
         present_from += datetime.timedelta(days=1)
         present_to += datetime.timedelta(days=1)
     future_from = present_from + datetime.timedelta(days=1)
     future_to = present_to + datetime.timedelta(days=1)
     expected = (
         (present_from, present_to),
         (future_from, future_to),
     )
     result = dateutils.parse_runtime_limit(limit)
     self.assertEqual(expected, result)
Ejemplo n.º 5
0
 def test_parse_runtime_limit_day_abbr_only(self):
     """dateutils - parse runtime using just a weekday abbreviation"""
     limit = 'Tue'
     day = datetime.date.today()
     now = datetime.time()
     while day.weekday() != calendar.TUESDAY:
         day += datetime.timedelta(1)
     present_from = datetime.datetime.combine(day, now.replace(hour=0))
     present_to = present_from + datetime.timedelta(days=1)
     if datetime.datetime.now() >= present_to:
         present_from += datetime.timedelta(days=7)
         present_to += datetime.timedelta(days=7)
     future_from = present_from + datetime.timedelta(days=7)
     future_to = present_to + datetime.timedelta(days=7)
     expected = (
         (present_from, present_to),
         (future_from, future_to),
     )
     result = dateutils.parse_runtime_limit(limit)
     self.assertEqual(expected, result)
Ejemplo n.º 6
0
 def test_parse_runtime_limit_day_plus_times(self):
     """dateutils - parse runtime using a weekday plus a time range"""
     limit = 'Thursday 18:00-22:00'
     day = datetime.date.today()
     now = datetime.time()
     while day.weekday() != calendar.THURSDAY:
         day += datetime.timedelta(1)
     present_from = datetime.datetime.combine(day, now.replace(hour=18))
     present_to = datetime.datetime.combine(day, now.replace(hour=22))
     if datetime.datetime.now() >= present_to:
         present_from += datetime.timedelta(days=7)
         present_to += datetime.timedelta(days=7)
     future_from = present_from + datetime.timedelta(days=7)
     future_to = present_to + datetime.timedelta(days=7)
     expected = (
         (present_from, present_to),
         (future_from, future_to),
     )
     result = dateutils.parse_runtime_limit(limit)
     self.assertEqual(expected, result)
Ejemplo n.º 7
0
 def test_parse_runtime_limit_day_abbr_only(self):
     """dateutils - parse runtime using just a weekday abbreviation"""
     limit = 'Tue'
     day = datetime.date.today()
     now = datetime.time()
     while day.weekday() != calendar.TUESDAY:
         day += datetime.timedelta(1)
     present_from = datetime.datetime.combine(day, now.replace(hour=0))
     present_to = present_from + datetime.timedelta(days=1)
     if datetime.datetime.now() >= present_to:
         present_from += datetime.timedelta(days=7)
         present_to += datetime.timedelta(days=7)
     future_from = present_from + datetime.timedelta(days=7)
     future_to = present_to + datetime.timedelta(days=7)
     expected = (
         (present_from, present_to),
         (future_from, future_to),
     )
     result = dateutils.parse_runtime_limit(limit)
     self.assertEqual(expected, result)
Ejemplo n.º 8
0
 def test_parse_runtime_limit_day_plus_times(self):
     """dateutils - parse runtime using a weekday plus a time range"""
     limit = 'Thursday 18:00-22:00'
     day = datetime.date.today()
     now = datetime.time()
     while day.weekday() != calendar.THURSDAY:
         day += datetime.timedelta(1)
     present_from = datetime.datetime.combine(day, now.replace(hour=18))
     present_to = datetime.datetime.combine(day, now.replace(hour=22))
     if datetime.datetime.now() >= present_to:
         present_from += datetime.timedelta(days=7)
         present_to += datetime.timedelta(days=7)
     future_from = present_from + datetime.timedelta(days=7)
     future_to = present_to + datetime.timedelta(days=7)
     expected = (
         (present_from, present_to),
         (future_from, future_to),
     )
     result = dateutils.parse_runtime_limit(limit)
     self.assertEqual(expected, result)
Ejemplo n.º 9
0
def _task_build_params(
    task_name,
    argv,
    description="",
    help_specific_usage="",
    version=__revision__,
    specific_params=("", []),
    task_submit_elaborate_specific_parameter_fnc=None,
    task_submit_check_options_fnc=None):
    """ Build the BibTask params.
    @param argv: a list of string as in sys.argv
    @param description: is the generic description printed in the usage page;
    @param help_specific_usage: is the specific parameter help
    @param task_submit_elaborate_specific_parameter_fnc: will be called passing
    a key and a value, for parsing specific cli parameters. Must return True if
    it has recognized the parameter. Must eventually update the options with
    bibtask_set_option;
    @param task_submit_check_options: must check the validity of options (via
    bibtask_get_option) once all the options where parsed;
    """
    global _OPTIONS
    _OPTIONS = {}

    if task_name in CFG_BIBTASK_DEFAULT_TASK_SETTINGS:
        _OPTIONS.update(CFG_BIBTASK_DEFAULT_TASK_SETTINGS[task_name])

    # set user-defined options:
    try:
        (short_params, long_params) = specific_params
        opts, args = getopt.gnu_getopt(argv[1:], "hVv:u:s:t:P:N:L:I:" +
            short_params, [
                "help",
                "version",
                "verbose=",
                "user="******"sleep=",
                "runtime=",
                "priority=",
                "name=",
                "limit=",
                "profile=",
                "post-process=",
                "sequence-id=",
                "stop-on-error",
                "continue-on-error",
                "fixed-time",
                "email-logs-to="
            ] + long_params)
    except getopt.GetoptError as err:
        _usage(1, err, help_specific_usage=help_specific_usage, description=description)
    try:
        for opt in opts:
            if opt[0] in ("-h", "--help"):
                _usage(0, help_specific_usage=help_specific_usage, description=description)
            elif opt[0] in ("-V", "--version"):
                print(_TASK_PARAMS["version"])
                sys.exit(0)
            elif opt[0] in ("-u", "--user"):
                _TASK_PARAMS["user"] = opt[1]
            elif opt[0] in ("-v", "--verbose"):
                _TASK_PARAMS["verbose"] = int(opt[1])
            elif opt[0] in ("-s", "--sleeptime"):
                if task_name not in CFG_TASK_IS_NOT_A_DEAMON:
                    get_datetime(opt[1]) # see if it is a valid shift
                    _TASK_PARAMS["sleeptime"] = opt[1]
            elif opt[0] in ("-t", "--runtime"):
                _TASK_PARAMS["runtime"] = get_datetime(opt[1])
            elif opt[0] in ("-P", "--priority"):
                _TASK_PARAMS["priority"] = int(opt[1])
            elif opt[0] in ("-N", "--name"):
                _TASK_PARAMS["task_specific_name"] = opt[1]
            elif opt[0] in ("-L", "--limit"):
                _TASK_PARAMS["runtime_limit"] = parse_runtime_limit(opt[1])
            elif opt[0] in ("--profile", ):
                _TASK_PARAMS["profile"] += opt[1].split(',')
            elif opt[0] in ("--post-process", ):
                _TASK_PARAMS["post-process"] += [opt[1]]
            elif opt[0] in ("-I","--sequence-id"):
                _TASK_PARAMS["sequence-id"] = opt[1]
            elif opt[0] in ("--stop-on-error", ):
                _TASK_PARAMS["stop_queue_on_error"] = True
            elif opt[0] in ("--continue-on-error", ):
                _TASK_PARAMS["stop_queue_on_error"] = False
            elif opt[0] in ("--fixed-time", ):
                _TASK_PARAMS["fixed_time"] = True
            elif opt[0] in ("--email-logs-to",):
                _TASK_PARAMS["email_logs_to"] = opt[1].split(',')
            elif not callable(task_submit_elaborate_specific_parameter_fnc) or \
                not task_submit_elaborate_specific_parameter_fnc(opt[0],
                    opt[1], opts, args):
                _usage(1, help_specific_usage=help_specific_usage, description=description)
    except StandardError as e:
        _usage(e, help_specific_usage=help_specific_usage, description=description)
    if callable(task_submit_check_options_fnc):
        if not task_submit_check_options_fnc():
            _usage(1, help_specific_usage=help_specific_usage, description=description)