Esempio n. 1
0
    def do_agent_status(self):
        """
        Displays general status information about the agent, registered
        applications, harvest cycles etc.
        """

        agent_instance().dump(self.stdout)
Esempio n. 2
0
    def do_agent_status(self):
        """
        Displays general status information about the agent, registered
        applications, harvest cycles etc.
        """

        agent_instance().dump(self.stdout)
Esempio n. 3
0
    def do_application_status(self, name=None):
        """
        Displays general status information about an application, last
        harvest cycle, etc.
        """

        if name is not None:
            applications = [agent_instance().application(name)]
        else:
            applications = agent_instance().applications.values()

        for application in applications:
            if application is not None:
                application.dump(self.stdout)
                print(file=self.stdout)
Esempio n. 4
0
    def do_dump_config(self, name=None):
        """
        Displays global configuration or that of the named application.
        """

        if name is None:
            config = agent_instance().global_settings()
        else:
            config = agent_instance().application_settings(name)

        if config is not None:
            config = flatten_settings(config)
            keys = sorted(config.keys())
            for key in keys:
                print('%s = %r' % (key, config[key]), file=self.stdout)
Esempio n. 5
0
    def do_application_status(self, name=None):
        """
        Displays general status information about an application, last
        harvest cycle, etc.
        """

        if name is not None:
            applications = [agent_instance().application(name)]
        else:
            applications = agent_instance().applications.values()

        for application in applications:
            if application is not None:
                application.dump(self.stdout)
                print >> self.stdout
Esempio n. 6
0
    def do_dump_config(self, name=None):
        """
        Displays global configuration or that of the named application.
        """

        if name is None:
            config = agent_instance().global_settings()
        else:
            config = agent_instance().application_settings(name)

        if config is not None:
            config = flatten_settings(config)
            keys = sorted(config.keys())
            for key in keys:
                print >> self.stdout, '%s = %r' % (key, config[key])
Esempio n. 7
0
    def do_applications(self):
        """
        Displays a list of the applications.
        """

        print(repr(sorted(agent_instance().applications.keys())),
              file=self.stdout)
def segment_rules(name, rules):
    application = agent_instance().application(name)
    old_rules = application._rules_engine['segment']
    new_rules = SegmentCollapseEngine(rules) 
    application._rules_engine['segment'] = new_rules
    yield
    application._rules_engine['segment'] = old_rules
Esempio n. 9
0
    def do_applications(self):
        """
        Displays a list of the applications.
        """

        print >> self.stdout, repr(sorted(
              agent_instance().applications.keys()))
Esempio n. 10
0
def test_uninstrumented_none():
    # tests a bug that returned "TypeError: 'NoneType' object is not iterable"
    app_name = 'Python Agent Test (uninstrumented 3)'
    agent = agent_instance()
    agent.activate_application(app_name)
    application = agent._applications.get(app_name)
    application.harvest()
Esempio n. 11
0
    def _nr_wrap_api_call_(wrapped, instance, args, kwargs):
        settings = global_settings()

        # agent is not initialized / enabled
        if (settings.debug.disable_api_supportability_metrics
                or not Agent._instance or not settings.enabled):
            return wrapped(*args, **kwargs)

        transaction = current_transaction()

        if transaction:
            m = transaction._transaction_metrics.get(metric_name, 0)
            transaction._transaction_metrics[metric_name] = m + 1
        else:
            agent = agent_instance()
            app_name = settings.app_name
            agent.record_custom_metric(app_name, metric_name, {'count': 1})

        return wrapped(*args, **kwargs)
def _synthetics_limit_test(num_requests, num_events, num_transactions):

    # Force harvest to clear stats

    instance = agent_instance()
    application = list(instance.applications.values())[0]
    application.harvest()

    # Send requests

    headers = _make_synthetics_header()
    for i in range(num_requests):
        response = target_application.get("/", headers=headers)

    # Check that we've saved the right number events and traces

    stats = application._stats_engine
    assert len(stats.synthetics_events) == num_events
    assert len(stats.synthetics_transactions) == num_transactions
def global_settings(request, monkeypatch):
    ini_contents = request.getfixturevalue("ini")

    monkeypatch.delenv("NEW_RELIC_HOST", raising=False)
    monkeypatch.delenv("NEW_RELIC_LICENSE_KEY", raising=False)

    if "env" in request.fixturenames:
        env = request.getfixturevalue("env")
        for k, v in env.items():
            monkeypatch.setenv(k, v)

    import newrelic.config as config  # pylint: disable=R0402
    import newrelic.core.config as core_config  # pylint: disable=R0402

    original = {}
    for attr in dir(core_config):
        original[attr] = getattr(core_config, attr)

    agent = agent_instance()
    original_agent_config = agent._config

    reload(core_config)
    reload(config)

    with tempfile.NamedTemporaryFile() as ini_file:
        ini_file.write(ini_contents)
        ini_file.seek(0)

        config.initialize(ini_file.name)

    agent._config = core_config.global_settings()

    yield core_config.global_settings

    monkeypatch.undo()
    for attr_name, attr_value in original.items():
        setattr(core_config, attr_name, attr_value)
    agent._config = original_agent_config
    reload(config)
def global_settings(request, monkeypatch):
    ini_contents = request.getfixturevalue('ini')

    monkeypatch.delenv('NEW_RELIC_HOST', raising=False)
    monkeypatch.delenv('NEW_RELIC_LICENSE_KEY', raising=False)

    if 'env' in request.funcargnames:
        env = request.getfixturevalue('env')
        for k, v in env.items():
            monkeypatch.setenv(k, v)

    import newrelic.config as config
    import newrelic.core.config as core_config

    original = {}
    for attr in dir(core_config):
        original[attr] = getattr(core_config, attr)

    agent = agent_instance()
    original_agent_config = agent._config

    reload(core_config)
    reload(config)

    ini_file = tempfile.NamedTemporaryFile()
    ini_file.write(ini_contents)
    ini_file.seek(0)

    config.initialize(ini_file.name)

    agent._config = core_config.global_settings()

    yield core_config.global_settings

    monkeypatch.undo()
    for attr_name, attr_value in original.items():
        setattr(core_config, attr_name, attr_value)
    agent._config = original_agent_config
    reload(config)