def test_update_summary_tables_ocp(self, mock_cpu_rate, mock_mem_rate, mock_charge_info): """Test that the summary table task runs.""" mem_rate = {'tiered_rate': [{'value': '1.5', 'unit': 'USD'}]} cpu_rate = {'tiered_rate': [{'value': '2.5', 'unit': 'USD'}]} mock_cpu_rate.return_value = cpu_rate mock_mem_rate.return_value = mem_rate provider = 'OCP' provider_ocp_uuid = self.ocp_test_provider_uuid daily_table_name = OCP_REPORT_TABLE_MAP['line_item_daily'] start_date = self.start_date.replace(day=1) + relativedelta.relativedelta(months=-1) daily_query = self.ocp_accessor._get_db_obj_query(daily_table_name) initial_daily_count = daily_query.count() self.assertEqual(initial_daily_count, 0) update_summary_tables(self.schema_name, provider, provider_ocp_uuid, start_date) self.assertNotEqual(daily_query.count(), initial_daily_count) update_charge_info(schema_name=self.test_schema, provider_uuid=provider_ocp_uuid) table_name = OCP_REPORT_TABLE_MAP['line_item_daily_summary'] with ProviderDBAccessor(provider_ocp_uuid) as provider_accessor: provider_obj = provider_accessor.get_provider() usage_period_qry = self.ocp_accessor.get_usage_period_query_by_provider(provider_obj.id) cluster_id = usage_period_qry.first().cluster_id items = self.ocp_accessor._get_db_obj_query(table_name).filter_by(cluster_id=cluster_id) for item in items: self.assertIsNotNone(item.pod_charge_memory_gigabyte_hours) self.assertIsNotNone(item.pod_charge_cpu_core_hours) storage_daily_name = OCP_REPORT_TABLE_MAP['storage_line_item_daily'] items = self.ocp_accessor._get_db_obj_query(storage_daily_name).filter_by(cluster_id=cluster_id) for item in items: self.assertIsNotNone(item.volume_request_storage_byte_seconds) self.assertIsNotNone(item.persistentvolumeclaim_usage_byte_seconds) storage_summary_name = OCP_REPORT_TABLE_MAP['storage_line_item_daily_summary'] items = self.ocp_accessor._get_db_obj_query(storage_summary_name).filter_by(cluster_id=cluster_id) for item in items: self.assertIsNotNone(item.volume_request_storage_gigabyte_months) self.assertIsNotNone(item.persistentvolumeclaim_usage_gigabyte_months)
def test_update_summary_tables_ocp(self, mock_markup, mock_rate_map, mock_charge_info, mock_view, mock_chain): """Test that the summary table task runs.""" markup = {} mem_rate = {"tiered_rates": [{"value": "1.5", "unit": "USD"}]} cpu_rate = {"tiered_rates": [{"value": "2.5", "unit": "USD"}]} rate_metric_map = {"cpu_core_usage_per_hour": cpu_rate, "memory_gb_usage_per_hour": mem_rate} mock_markup.return_value = markup mock_rate_map.return_value = rate_metric_map provider = Provider.PROVIDER_OCP provider_ocp_uuid = self.ocp_test_provider_uuid daily_table_name = OCP_REPORT_TABLE_MAP["line_item_daily"] start_date = self.start_date.replace( day=1, hour=0, minute=0, second=0, microsecond=0 ) + relativedelta.relativedelta(months=-1) end_date = start_date + timedelta(days=10) with schema_context(self.schema): daily_query = self.ocp_accessor._get_db_obj_query(daily_table_name) initial_daily_count = daily_query.count() self.assertEqual(initial_daily_count, 0) update_summary_tables(self.schema, provider, provider_ocp_uuid, start_date, end_date) with schema_context(self.schema): self.assertNotEqual(daily_query.count(), initial_daily_count) update_charge_info( schema_name=self.schema, provider_uuid=provider_ocp_uuid, start_date=start_date, end_date=end_date ) table_name = OCP_REPORT_TABLE_MAP["line_item_daily_summary"] with ProviderDBAccessor(provider_ocp_uuid) as provider_accessor: provider_obj = provider_accessor.get_provider() usage_period_qry = self.ocp_accessor.get_usage_period_query_by_provider(provider_obj.uuid) with schema_context(self.schema): cluster_id = usage_period_qry.first().cluster_id items = self.ocp_accessor._get_db_obj_query(table_name).filter(cluster_id=cluster_id) for item in items: self.assertIsNotNone(item.pod_charge_memory_gigabyte_hours) self.assertIsNotNone(item.pod_charge_cpu_core_hours) storage_daily_name = OCP_REPORT_TABLE_MAP["storage_line_item_daily"] items = self.ocp_accessor._get_db_obj_query(storage_daily_name).filter(cluster_id=cluster_id) for item in items: self.assertIsNotNone(item.volume_request_storage_byte_seconds) self.assertIsNotNone(item.persistentvolumeclaim_usage_byte_seconds) storage_summary_name = OCP_REPORT_TABLE_MAP["line_item_daily_summary"] items = self.ocp_accessor._get_db_obj_query(storage_summary_name).filter( cluster_id=cluster_id, data_source="Storage" ) for item in items: self.assertIsNotNone(item.volume_request_storage_gigabyte_months) self.assertIsNotNone(item.persistentvolumeclaim_usage_gigabyte_months) mock_chain.return_value.apply_async.assert_called()
def test_update_charge_info_aws(self): """Test that update_charge_info is not called for AWS.""" update_charge_info(schema_name=self.test_schema, provider_uuid=self.aws_test_provider_uuid)
def test_update_summary_tables_ocp(self, mock_markup, mock_rate_map, mock_charge_info, mock_cost_summary): """Test that the summary table task runs.""" markup = {} mem_rate = {'tiered_rates': [{'value': '1.5', 'unit': 'USD'}]} cpu_rate = {'tiered_rates': [{'value': '2.5', 'unit': 'USD'}]} rate_metric_map = { 'cpu_core_usage_per_hour': cpu_rate, 'memory_gb_usage_per_hour': mem_rate } mock_markup.return_value = markup mock_rate_map.return_value = rate_metric_map provider = 'OCP' provider_ocp_uuid = self.ocp_test_provider_uuid daily_table_name = OCP_REPORT_TABLE_MAP['line_item_daily'] start_date = self.start_date.replace( day=1) + relativedelta.relativedelta(months=-1) with schema_context(self.schema): daily_query = self.ocp_accessor._get_db_obj_query(daily_table_name) initial_daily_count = daily_query.count() self.assertEqual(initial_daily_count, 0) update_summary_tables(self.schema, provider, provider_ocp_uuid, start_date) with schema_context(self.schema): self.assertNotEqual(daily_query.count(), initial_daily_count) update_charge_info(schema_name=self.schema, provider_uuid=provider_ocp_uuid) table_name = OCP_REPORT_TABLE_MAP['line_item_daily_summary'] with ProviderDBAccessor(provider_ocp_uuid) as provider_accessor: provider_obj = provider_accessor.get_provider() usage_period_qry = self.ocp_accessor.get_usage_period_query_by_provider( provider_obj.id) with schema_context(self.schema): cluster_id = usage_period_qry.first().cluster_id items = self.ocp_accessor._get_db_obj_query(table_name).filter( cluster_id=cluster_id) for item in items: self.assertIsNotNone(item.pod_charge_memory_gigabyte_hours) self.assertIsNotNone(item.pod_charge_cpu_core_hours) storage_daily_name = OCP_REPORT_TABLE_MAP[ 'storage_line_item_daily'] items = self.ocp_accessor._get_db_obj_query( storage_daily_name).filter(cluster_id=cluster_id) for item in items: self.assertIsNotNone(item.volume_request_storage_byte_seconds) self.assertIsNotNone( item.persistentvolumeclaim_usage_byte_seconds) storage_summary_name = OCP_REPORT_TABLE_MAP[ 'line_item_daily_summary'] items = self.ocp_accessor._get_db_obj_query( storage_summary_name).filter(cluster_id=cluster_id, data_source='Storage') for item in items: self.assertIsNotNone( item.volume_request_storage_gigabyte_months) self.assertIsNotNone( item.persistentvolumeclaim_usage_gigabyte_months) mock_charge_info.apply_async.assert_called() mock_cost_summary.si.assert_called()