Exemplo n.º 1
0
 def get_fs_backup_interval_min(self):
     """Get minimum backup interval."""
     return ScheduleParser.parse_timedelta(
         BusinessHours(
             self.instance_metadata.get_tags()
         ).min
     )
Exemplo n.º 2
0
    def test_should_run_full_backup(self):
        """Test should_run_full_backup"""
        sample_data = ("bkp_fs_schedule:"
                       "mo:111111 111000 000000 011111, "
                       "tu:111111 111000 000000 011111, "
                       "we:111111 111000 000000 011111, "
                       "th:111111 111000 000000 011111, "
                       "fr:111111 111000 000000 011111, "
                       "sa:111111 111111 111111 111111, "
                       "su:111111 111111 111111 111111, "
                       "min:1d, "
                       "max:3d")

        business_hours = BusinessHours.parse_tag_str(sample_data)
        db_backup_interval_min = ScheduleParser.parse_timedelta("24h")
        db_backup_interval_max = ScheduleParser.parse_timedelta("3d")
        five_day_backup = "20180601_010000"
        two_day_backup = "20180604_010000"
        same_day_backup = "20180606_010000"
        during_business_hours = "20180606_150000"
        outside_business_hours = "20180606_220000"

        # Forced
        self.assertTrue(
            self.agent.should_run_full_backup(
                now_time=during_business_hours,
                force=True,
                latest_full_backup_timestamp=same_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
        # Forced
        self.assertTrue(
            self.agent.should_run_full_backup(
                now_time=during_business_hours,
                force=True,
                latest_full_backup_timestamp=two_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
        # Forced
        self.assertTrue(
            self.agent.should_run_full_backup(
                now_time=during_business_hours,
                force=True,
                latest_full_backup_timestamp=five_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
        # respecting business hours, and not needed anyway
        self.assertFalse(
            self.agent.should_run_full_backup(
                now_time=during_business_hours,
                force=False,
                latest_full_backup_timestamp=same_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
        # respecting business hours
        self.assertFalse(
            self.agent.should_run_full_backup(
                now_time=during_business_hours,
                force=False,
                latest_full_backup_timestamp=two_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
        # a really old backup, so we ignore business hours
        self.assertTrue(
            self.agent.should_run_full_backup(
                now_time=during_business_hours,
                force=False,
                latest_full_backup_timestamp=five_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
        # outside_business_hours, but same_day_backup, so no backup
        self.assertFalse(
            self.agent.should_run_full_backup(
                now_time=outside_business_hours,
                force=False,
                latest_full_backup_timestamp=same_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
        # outside_business_hours and need to backup
        self.assertTrue(
            self.agent.should_run_full_backup(
                now_time=outside_business_hours,
                force=False,
                latest_full_backup_timestamp=two_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
        # a really old backup
        self.assertTrue(
            self.agent.should_run_full_backup(
                now_time=outside_business_hours,
                force=False,
                latest_full_backup_timestamp=five_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
        # Forced
        self.assertTrue(
            self.agent.should_run_full_backup(
                now_time=outside_business_hours,
                force=True,
                latest_full_backup_timestamp=same_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
        # Forced
        self.assertTrue(
            self.agent.should_run_full_backup(
                now_time=outside_business_hours,
                force=True,
                latest_full_backup_timestamp=two_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
        # Forced
        self.assertTrue(
            self.agent.should_run_full_backup(
                now_time=outside_business_hours,
                force=True,
                latest_full_backup_timestamp=five_day_backup,
                business_hours=business_hours,
                db_backup_interval_min=db_backup_interval_min,
                db_backup_interval_max=db_backup_interval_max))
Exemplo n.º 3
0
 def get_business_hours(self):
     """Get business hours."""
     return BusinessHours(
         self.instance_metadata.get_tags()
     )