def test_datastore_instance(name, system_hostname, db_hostname, product, port, unix_socket, database_path, expected_instance_metric, monkeypatch): monkeypatch.setattr('newrelic.common.system_info.gethostname', lambda: system_hostname) class FakeModule(): pass register_database_client(FakeModule, product) enable_datastore_instance_feature(FakeModule) port_path_or_id = port or database_path or unix_socket node = DatabaseNode( dbapi2_module=FakeModule, sql='', children=[], start_time=0, end_time=1, duration=1, exclusive=1, stack_trace=None, sql_format='obfuscated', connect_params=None, cursor_params=None, sql_parameters=None, execute_params=None, host=db_hostname, port_path_or_id=port_path_or_id, database_name=database_path, guid=None, agent_attributes={}, user_attributes={}, ) empty_stats = StatsEngine() transaction = current_transaction() unscoped_scope = '' # Check 'Datastore/instance' metric to confirm that: # 1. metric name is reported correctly # 2. metric scope is always unscoped for metric in node.time_metrics(empty_stats, transaction, None): if metric.name.startswith("Datastore/instance/"): assert metric.name == expected_instance_metric, name assert metric.scope == unscoped_scope