Beispiel #1
0
 def test_open_in_demand_systems(self):
     with session.begin():
         # system with waiting recipes
         system_with_waiting_recipes = data_setup.create_system()
         data_setup.create_manual_reservation(system_with_waiting_recipes,
                                              start=datetime.utcnow() - timedelta(days=self.reservation_length),
                                              user=self.user)
         recipe = data_setup.create_recipe()
         recipe.systems[:] = [system_with_waiting_recipes]
         job = data_setup.create_job_for_recipes([recipe])
         data_setup.mark_job_queued(job)
         job.recipesets[0].queue_time = datetime.utcnow() - timedelta(hours=self.waiting_recipe_age)
         # Create another system with waiting recipes and delete the job
         recipe_in_deleted_job = data_setup.create_recipe()
         recipe_in_deleted_job.systems[:] = [system_with_waiting_recipes]
         deleted_job = data_setup.create_job_for_recipes([recipe_in_deleted_job])
         data_setup.mark_job_queued(deleted_job)
         deleted_job.recipesets[0].queue_time = datetime.utcnow() - timedelta(hours=self.waiting_recipe_age)
         deleted_job.delete()
         # system with no waiting recipes
         system_without_waiting_recipes = data_setup.create_system()
         data_setup.create_manual_reservation(system_without_waiting_recipes,
                                              start=datetime.utcnow() - timedelta(days=self.reservation_length),
                                              user=self.user)
     beaker_usage = BeakerUsage(self.user, self.reservation_expiry, self.reservation_length,
                            self.waiting_recipe_age, self.delayed_job_age)
     open_in_demand_systems = beaker_usage.open_in_demand_systems()
     self.assertEqual(len(open_in_demand_systems), 1)
     self.assertEqual(open_in_demand_systems[0][1], 1)
     self.assertEqual(open_in_demand_systems[0][2], system_with_waiting_recipes.fqdn)
Beispiel #2
0
    def test_send_usage_reminder(self):
        with session.begin():
            email_content = self._create_expiring_reservation()
            email_content += self._create_open_reservation()
            email_content += self._create_delayed_job()

        beaker_usage = BeakerUsage(self.user, self.reservation_expiry,
                                   self.reservation_length,
                                   self.waiting_recipe_age,
                                   self.delayed_job_age)
        current_date = datetime.utcnow().strftime("%Y-%m-%d")
        data = {
            'user_name': self.user.user_name,
            'current_date': current_date,
            'beaker_fqdn': absolute_url('/'),
            'reservation_expiry': self.reservation_expiry,
            'reservation_length': self.reservation_length,
            'waiting_recipe_age': self.waiting_recipe_age,
            'delayed_job_age': self.delayed_job_age,
            'expiring_reservations': beaker_usage.expiring_reservations(),
            'open_reservations': beaker_usage.open_in_demand_systems(),
            'delayed_jobs': beaker_usage.delayed_jobs()
        }

        mail_capture_thread.start_capturing()
        with session.begin():
            bkr.server.mail.send_usage_reminder(self.user, data)
        captured_mails = mail_capture_thread.stop_capturing()
        self.assertEqual(len(captured_mails), 1)
        sender, rcpts, raw_msg = captured_mails[0]
        self.assertEqual(rcpts, [self.user.email_address])
        msg = email.message_from_string(raw_msg)
        self.assertEqual(msg['To'], self.user.email_address)
        self.assertTrue(
            msg['Subject'], '[Beaker] Usage report for %s (%s)' %
            (self.user.user_name, current_date))
        expected_mail_body = u"""=========
[Beaker] Usage report for %s (%s)
=========

Hi %s,
%s
=========""" % (self.user.user_name, current_date, self.user.user_name,
                email_content)
        actual_mail_body = msg.get_payload(decode=True)
        self.assertEqual(actual_mail_body, expected_mail_body)
        self.assertEqual(msg['X-Beaker-Notification'], 'usage-report')
Beispiel #3
0
    def test_send_usage_reminder(self):
        with session.begin():
            email_content = self._create_expiring_reservation()
            email_content += self._create_open_reservation()
            email_content += self._create_delayed_job()

        beaker_usage = BeakerUsage(self.user, self.reservation_expiry, self.reservation_length,
                                   self.waiting_recipe_age, self.delayed_job_age)
        current_date = datetime.utcnow().strftime("%Y-%m-%d")
        data = {
            'user_name': self.user.user_name,
            'current_date': current_date,
            'beaker_fqdn': absolute_url('/'),
            'reservation_expiry': self.reservation_expiry,
            'reservation_length': self.reservation_length,
            'waiting_recipe_age': self.waiting_recipe_age,
            'delayed_job_age': self.delayed_job_age,
            'expiring_reservations': beaker_usage.expiring_reservations(),
            'open_reservations': beaker_usage.open_in_demand_systems(),
            'delayed_jobs': beaker_usage.delayed_jobs()
        }

        mail_capture_thread.start_capturing()
        with session.begin():
            bkr.server.mail.send_usage_reminder(self.user, data)
        captured_mails = mail_capture_thread.stop_capturing()
        self.assertEqual(len(captured_mails),1)
        sender, rcpts, raw_msg = captured_mails[0]
        self.assertEqual(rcpts, [self.user.email_address])
        msg = email.message_from_string(raw_msg)
        self.assertEqual(msg['To'], self.user.email_address)
        self.assertTrue(msg['Subject'], '[Beaker] Usage report for %s (%s)' % (self.user.user_name, current_date))
        expected_mail_body = u"""=========
[Beaker] Usage report for %s (%s)
=========

Hi %s,
%s
=========""" % (self.user.user_name,
                current_date,
                self.user.user_name,
                email_content)
        actual_mail_body = msg.get_payload(decode=True)
        self.assertEqual(actual_mail_body, expected_mail_body)
        self.assertEqual(msg['X-Beaker-Notification'], 'usage-report')
 def test_open_in_demand_systems(self):
     with session.begin():
         # system with waiting recipes
         system_with_waiting_recipes = data_setup.create_system()
         data_setup.create_manual_reservation(
             system_with_waiting_recipes,
             start=datetime.utcnow() -
             timedelta(days=self.reservation_length),
             user=self.user)
         recipe = data_setup.create_recipe()
         recipe.systems[:] = [system_with_waiting_recipes]
         job = data_setup.create_job_for_recipes([recipe])
         data_setup.mark_job_queued(job)
         job.recipesets[0].queue_time = datetime.utcnow() - timedelta(
             hours=self.waiting_recipe_age)
         # Create another system with waiting recipes and delete the job
         recipe_in_deleted_job = data_setup.create_recipe()
         recipe_in_deleted_job.systems[:] = [system_with_waiting_recipes]
         deleted_job = data_setup.create_job_for_recipes(
             [recipe_in_deleted_job])
         data_setup.mark_job_queued(deleted_job)
         deleted_job.recipesets[0].queue_time = datetime.utcnow(
         ) - timedelta(hours=self.waiting_recipe_age)
         deleted_job.delete()
         # system with no waiting recipes
         system_without_waiting_recipes = data_setup.create_system()
         data_setup.create_manual_reservation(
             system_without_waiting_recipes,
             start=datetime.utcnow() -
             timedelta(days=self.reservation_length),
             user=self.user)
     beaker_usage = BeakerUsage(self.user, self.reservation_expiry,
                                self.reservation_length,
                                self.waiting_recipe_age,
                                self.delayed_job_age)
     open_in_demand_systems = beaker_usage.open_in_demand_systems()
     self.assertEqual(len(open_in_demand_systems), 1)
     self.assertEqual(open_in_demand_systems[0][1], 1)
     self.assertEqual(open_in_demand_systems[0][2],
                      system_with_waiting_recipes.fqdn)