def test_next_month(self): """Test the next_month method.""" current_month = timezone.now().replace(microsecond=0, second=0, minute=0, hour=0, day=1) last_month = current_month.replace(month=(current_month.month - 1)) self.assertEqual(current_month, ReportQueryHandler.next_month(last_month))
def add_data_to_tenant(self): """Populate tenant with data.""" payer_account_id = self.fake.ean(length=13) # pylint: disable=no-member self.payer_account_id = payer_account_id one_day = datetime.timedelta(days=1) one_hour = datetime.timedelta(minutes=60) this_hour = timezone.now().replace(microsecond=0, second=0, minute=0) yesterday = this_hour - one_day bill_start = this_hour.replace(microsecond=0, second=0, minute=0, hour=0, day=1) bill_end = ReportQueryHandler.next_month(bill_start) with tenant_context(self.tenant): bill = AWSCostEntryBill(bill_type='Anniversary', payer_account_id=payer_account_id, billing_period_start=bill_start, billing_period_end=bill_end) bill.save() rate = 0.199 amount = 1 cost = rate * amount # pylint: disable=no-member sku = self.fake.pystr(min_chars=12, max_chars=12).upper() prod_ec2 = 'Amazon Elastic Compute Cloud' ce_product = AWSCostEntryProduct(sku=sku, product_name=prod_ec2, product_family='Compute Instance', service_code='AmazonEC2', region='US East (N. Virginia)', instance_type='c4.xlarge', memory=7.5, vcpu=4) ce_product.save() ce_pricing = AWSCostEntryPricing(public_on_demand_cost=rate * 1, public_on_demand_rate=rate, term='OnDemand', unit='Hrs') ce_pricing.save() current = yesterday while current < this_hour: end_hour = current + one_hour self.create_hourly_instance_usage(payer_account_id, bill, ce_pricing, ce_product, rate, cost, current, end_hour) current = end_hour
def test_get_time_frame_filter_current_month(self): """Test _get_time_frame_filter for current month.""" query_params = { 'filter': { 'resolution': 'daily', 'time_scope_value': -1, 'time_scope_units': 'month' } } handler = ReportQueryHandler(query_params, '', self.tenant, 'unblended_cost', 'currency_code') current_month = timezone.now().replace(microsecond=0, second=0, minute=0, hour=0, day=1) next_month = ReportQueryHandler.next_month(current_month) start = handler.start_datetime end = handler.end_datetime interval = handler.time_interval self.assertEqual(start, current_month) self.assertEqual(end, next_month) self.assertIsInstance(interval, list) self.assertTrue(len(interval) >= 28)