def test_oauth_auth(instance): # Test oauth oauth_inst = copy.deepcopy(instance) oauth_inst['authenticator'] = 'oauth' oauth_inst['token'] = 'testtoken' with mock.patch('datadog_checks.snowflake.check.sf') as sf: check = SnowflakeCheck(CHECK_NAME, {}, [oauth_inst]) check._conn = mock.MagicMock() check._query_manager = mock.MagicMock() check.check(oauth_inst) sf.connect.assert_called_with( user='******', password='******', account='test_acct.us-central1.gcp', database='SNOWFLAKE', schema='ACCOUNT_USAGE', warehouse=None, role='ACCOUNTADMIN', passcode_in_password=False, passcode=None, client_prefetch_threads=4, login_timeout=60, ocsp_response_cache_filename=None, authenticator='oauth', token='testtoken', client_session_keep_alive=False, )
def test_warehouse_load(dd_run_check, aggregator, instance): # type: (Callable[[SnowflakeCheck], None], AggregatorStub, Dict[str, Any]) -> None expected_wl_metrics = [ ('COMPUTE_WH', Decimal('0.000446667'), Decimal('0E-9'), Decimal('0E-9'), Decimal('0E-9')), ] expected_tags = EXPECTED_TAGS + ['warehouse:COMPUTE_WH'] with mock.patch( 'datadog_checks.snowflake.SnowflakeCheck.execute_query_raw', return_value=expected_wl_metrics): check = SnowflakeCheck(CHECK_NAME, {}, [instance]) check._conn = mock.MagicMock() check._query_manager.queries = [Query(queries.WarehouseLoad)] dd_run_check(check) aggregator.assert_metric('snowflake.query.executed', value=0.000446667, tags=expected_tags) aggregator.assert_metric('snowflake.query.queued_overload', value=0, count=1, tags=expected_tags) aggregator.assert_metric('snowflake.query.queued_provision', value=0, count=1, tags=expected_tags) aggregator.assert_metric('snowflake.query.blocked', value=0, count=1, tags=expected_tags)
def test_default_auth(instance): check = SnowflakeCheck(CHECK_NAME, {}, [instance]) check._conn = mock.MagicMock() check._query_manager = mock.MagicMock() with mock.patch('datadog_checks.snowflake.check.sf') as sf: check.check(instance) sf.connect.assert_called_with( user='******', password='******', account='test_acct.us-central1.gcp', database='SNOWFLAKE', schema='ACCOUNT_USAGE', warehouse=None, role='ACCOUNTADMIN', passcode_in_password=False, passcode=None, client_prefetch_threads=4, login_timeout=60, ocsp_response_cache_filename=None, authenticator='snowflake', token=None, client_session_keep_alive=False, proxy_host=None, proxy_port=None, proxy_user=None, proxy_password=None, )
def test_login_metrics(dd_run_check, aggregator, instance): # type: (Callable[[SnowflakeCheck], None], AggregatorStub, Dict[str, Any]) -> None expected_login_metrics = [('SNOWFLAKE_UI', 2, 6, 8), ('PYTHON_DRIVER', 0, 148, 148)] with mock.patch( 'datadog_checks.snowflake.SnowflakeCheck.execute_query_raw', return_value=expected_login_metrics): check = SnowflakeCheck(CHECK_NAME, {}, [instance]) check._conn = mock.MagicMock() check._query_manager.queries = [Query(queries.LoginMetrics)] dd_run_check(check) snowflake_tags = EXPECTED_TAGS + ['client_type:SNOWFLAKE_UI'] aggregator.assert_metric('snowflake.logins.fail.count', value=2, tags=snowflake_tags) aggregator.assert_metric('snowflake.logins.success.count', value=6, tags=snowflake_tags) aggregator.assert_metric('snowflake.logins.total', value=8, tags=snowflake_tags) python_tags = EXPECTED_TAGS + ['client_type:PYTHON_DRIVER'] aggregator.assert_metric('snowflake.logins.fail.count', value=0, tags=python_tags) aggregator.assert_metric('snowflake.logins.success.count', value=148, tags=python_tags) aggregator.assert_metric('snowflake.logins.total', value=148, tags=python_tags)
def test_query_metrics(dd_run_check, aggregator, instance): # type: (Callable[[SnowflakeCheck], None], AggregatorStub, Dict[str, Any]) -> None expected_query_metrics = [ ( 'USE', 'COMPUTE_WH', 'SNOWFLAKE', None, Decimal('4.333333'), Decimal('24.555556'), Decimal('0.000000'), Decimal('0.000000'), Decimal('0.000000'), Decimal('0.000000'), Decimal('0.000000'), ), ] expected_tags = EXPECTED_TAGS + [ 'warehouse:COMPUTE_WH', 'database:SNOWFLAKE', 'schema:None', 'query_type:USE' ] with mock.patch( 'datadog_checks.snowflake.SnowflakeCheck.execute_query_raw', return_value=expected_query_metrics): check = SnowflakeCheck(CHECK_NAME, {}, [instance]) check._conn = mock.MagicMock() check._query_manager.queries = [Query(queries.QueryHistory)] dd_run_check(check) aggregator.assert_metric('snowflake.query.execution_time', value=4.333333, tags=expected_tags) aggregator.assert_metric('snowflake.query.compilation_time', value=24.555556, tags=expected_tags) aggregator.assert_metric('snowflake.query.bytes_scanned', value=0, count=1, tags=expected_tags) aggregator.assert_metric('snowflake.query.bytes_written', value=0, count=1, tags=expected_tags) aggregator.assert_metric('snowflake.query.bytes_deleted', value=0, count=1, tags=expected_tags) aggregator.assert_metric('snowflake.query.bytes_spilled.local', value=0, count=1, tags=expected_tags) aggregator.assert_metric('snowflake.query.bytes_spilled.remote', value=0, count=1, tags=expected_tags)
def test_db_storage_metrics(dd_run_check, aggregator, instance): # type: (Callable[[SnowflakeCheck], None], AggregatorStub, Dict[str, Any]) -> None expected_db_storage_usage = [('SNOWFLAKE_DB', Decimal('133.000000'), Decimal('9.100000'))] expected_tags = EXPECTED_TAGS + ['database:SNOWFLAKE_DB'] with mock.patch( 'datadog_checks.snowflake.SnowflakeCheck.execute_query_raw', return_value=expected_db_storage_usage): check = SnowflakeCheck(CHECK_NAME, {}, [instance]) check._conn = mock.MagicMock() check._query_manager.queries = [Query(queries.DatabaseStorageMetrics)] dd_run_check(check) aggregator.assert_metric('snowflake.storage.database.storage_bytes', value=133.0, tags=expected_tags) aggregator.assert_metric('snowflake.storage.database.failsafe_bytes', value=9.1, tags=expected_tags)
def test_version_metadata(dd_run_check, instance, datadog_agent): expected_version = [('4.30.2', )] version_metadata = { 'version.major': '4', 'version.minor': '30', 'version.patch': '2', 'version.raw': '4.30.2', 'version.scheme': 'semver', } with mock.patch( 'datadog_checks.snowflake.SnowflakeCheck.execute_query_raw', return_value=expected_version): check = SnowflakeCheck(CHECK_NAME, {}, [instance]) check.check_id = 'test:123' check._conn = mock.MagicMock() check._query_manager.queries = [] dd_run_check(check) datadog_agent.assert_metadata('test:123', version_metadata)
def test_warehouse_usage_metrics(dd_run_check, aggregator, instance): # type: (Callable[[SnowflakeCheck], None], AggregatorStub, Dict[str, Any]) -> None expected_wh_usage = [( 'COMPUTE_WH', Decimal('13.000000000'), Decimal('1.000000000'), Decimal('0.870148056'), Decimal('0.066934465846'), Decimal('13.870148056'), Decimal('1.066934465846'), )] expected_tags = EXPECTED_TAGS + ['warehouse:COMPUTE_WH'] with mock.patch( 'datadog_checks.snowflake.SnowflakeCheck.execute_query_raw', return_value=expected_wh_usage): check = SnowflakeCheck(CHECK_NAME, {}, [instance]) check._conn = mock.MagicMock() check._query_manager.queries = [Query(queries.WarehouseCreditUsage)] dd_run_check(check) aggregator.assert_metric('snowflake.billing.warehouse.cloud_service.avg', count=1, tags=expected_tags) aggregator.assert_metric('snowflake.billing.warehouse.total_credit.avg', count=1, tags=expected_tags) aggregator.assert_metric( 'snowflake.billing.warehouse.virtual_warehouse.avg', count=1, tags=expected_tags) aggregator.assert_metric('snowflake.billing.warehouse.cloud_service.sum', count=1, tags=expected_tags) aggregator.assert_metric('snowflake.billing.warehouse.total_credit.sum', count=1, tags=expected_tags) aggregator.assert_metric( 'snowflake.billing.warehouse.virtual_warehouse.sum', count=1, tags=expected_tags)
def test_storage_metrics(dd_run_check, aggregator, instance): # type: (Callable[[SnowflakeCheck], None], AggregatorStub, Dict[str, Any]) -> None expected_storage = [(Decimal('0.000000'), Decimal('1206.000000'), Decimal('19.200000'))] with mock.patch( 'datadog_checks.snowflake.SnowflakeCheck.execute_query_raw', return_value=expected_storage): check = SnowflakeCheck(CHECK_NAME, {}, [instance]) check._conn = mock.MagicMock() check._query_manager.queries = [Query(queries.StorageUsageMetrics)] dd_run_check(check) aggregator.assert_metric('snowflake.storage.storage_bytes.total', value=0.0, tags=EXPECTED_TAGS) aggregator.assert_metric('snowflake.storage.stage_bytes.total', value=1206.0, tags=EXPECTED_TAGS) aggregator.assert_metric('snowflake.storage.failsafe_bytes.total', value=19.2, tags=EXPECTED_TAGS)
def test_credit_usage_metrics(dd_run_check, aggregator, instance): # type: (AggregatorStub, Dict[str, Any]) -> None expected_credit_usage = [( 'WAREHOUSE_METERING', 'COMPUTE_WH', Decimal('12.000000000'), Decimal('1.000000000'), Decimal('0.80397000'), Decimal('0.066997500000'), Decimal('12.803970000'), Decimal('1.066997500000'), )] expected_tags = EXPECTED_TAGS + [ 'service_type:WAREHOUSE_METERING', 'service:COMPUTE_WH' ] with mock.patch( 'datadog_checks.snowflake.SnowflakeCheck.execute_query_raw', return_value=expected_credit_usage): check = SnowflakeCheck(CHECK_NAME, {}, [instance]) check._conn = mock.MagicMock() check._query_manager.queries = [queries.CreditUsage] dd_run_check(check) aggregator.assert_metric('snowflake.billing.cloud_service.sum', count=1, tags=expected_tags) aggregator.assert_metric('snowflake.billing.cloud_service.avg', count=1, tags=expected_tags) aggregator.assert_metric('snowflake.billing.total_credit.sum', count=1) aggregator.assert_metric('snowflake.billing.total_credit.avg', count=1) aggregator.assert_metric('snowflake.billing.virtual_warehouse.sum', count=1) aggregator.assert_metric('snowflake.billing.virtual_warehouse.avg', count=1)