Ejemplo n.º 1
0
def test_reservoir_size_zeros(harvest_name, event_name):
    app = Application("Python Agent Test (Harvest Loop)")
    app.connect_to_data_collector(None)

    setattr(settings.event_harvest_config.harvest_limits, harvest_name, 0)
    settings.event_harvest_config.allowlist = frozenset(())
    app._stats_engine.reset_stats(settings)

    app._stats_engine.transaction_events.add("transaction event")
    app._stats_engine.error_events.add("error event")
    app._stats_engine.custom_events.add("custom event")
    app._stats_engine.span_events.add("span event")

    assert app._stats_engine.transaction_events.num_seen == 1
    assert app._stats_engine.error_events.num_seen == 1
    assert app._stats_engine.custom_events.num_seen == 1
    assert app._stats_engine.span_events.num_seen == 1

    stat_events = set(
        ("transaction_events", "error_events", "custom_events", "span_events"))

    for stat_event in stat_events:
        event = getattr(app._stats_engine, stat_event)

        if stat_event == event_name:
            assert event.num_samples == 0
        else:
            assert event.num_samples == 1

    app.harvest()

    assert app._stats_engine.transaction_events.num_seen == 0
    assert app._stats_engine.error_events.num_seen == 0
    assert app._stats_engine.custom_events.num_seen == 0
    assert app._stats_engine.span_events.num_seen == 0
Ejemplo n.º 2
0
def test_default_events_harvested(allowlist_event):
    app = Application("Python Agent Test (Harvest Loop)")
    app.connect_to_data_collector(None)

    settings.event_harvest_config.allowlist = frozenset((allowlist_event, ))
    app._stats_engine.reset_stats(settings)

    app._stats_engine.transaction_events.add("transaction event")
    app._stats_engine.error_events.add("error event")
    app._stats_engine.custom_events.add("custom event")
    app._stats_engine.span_events.add("span event")

    assert app._stats_engine.transaction_events.num_seen == 1
    assert app._stats_engine.error_events.num_seen == 1
    assert app._stats_engine.custom_events.num_seen == 1
    assert app._stats_engine.span_events.num_seen == 1
    assert app._stats_engine.metrics_count() == 0

    app.harvest(flexible=False)

    num_seen = 0 if (allowlist_event != "analytic_event_data") else 1
    assert app._stats_engine.transaction_events.num_seen == num_seen

    num_seen = 0 if (allowlist_event != "error_event_data") else 1
    assert app._stats_engine.error_events.num_seen == num_seen

    num_seen = 0 if (allowlist_event != "custom_event_data") else 1
    assert app._stats_engine.custom_events.num_seen == num_seen

    num_seen = 0 if (allowlist_event != "span_event_data") else 1
    assert app._stats_engine.span_events.num_seen == num_seen

    assert app._stats_engine.metrics_count() == 1
def test_default_events_harvested(whitelist_event):
    app = Application('Python Agent Test (Harvest Loop)')
    app.connect_to_data_collector(None)

    settings.event_harvest_config.whitelist = frozenset((whitelist_event, ))
    app._stats_engine.reset_stats(settings)

    app._stats_engine.transaction_events.add('transaction event')
    app._stats_engine.error_events.add('error event')
    app._stats_engine.custom_events.add('custom event')
    app._stats_engine.span_events.add('span event')

    assert app._stats_engine.transaction_events.num_seen == 1
    assert app._stats_engine.error_events.num_seen == 1
    assert app._stats_engine.custom_events.num_seen == 1
    assert app._stats_engine.span_events.num_seen == 1
    assert app._stats_engine.metrics_count() == 0

    app.harvest(flexible=False)

    num_seen = 0 if (whitelist_event != 'analytic_event_data') else 1
    assert app._stats_engine.transaction_events.num_seen == num_seen

    num_seen = 0 if (whitelist_event != 'error_event_data') else 1
    assert app._stats_engine.error_events.num_seen == num_seen

    num_seen = 0 if (whitelist_event != 'custom_event_data') else 1
    assert app._stats_engine.custom_events.num_seen == num_seen

    num_seen = 0 if (whitelist_event != 'span_event_data') else 1
    assert app._stats_engine.span_events.num_seen == num_seen

    assert app._stats_engine.metrics_count() == 1
Ejemplo n.º 4
0
    def _test():
        app = Application("Python Agent Test (Harvest Loop)")
        app.connect_to_data_collector(None)

        for _ in range(spans_to_send):
            app._stats_engine.span_stream.put(None)
        app.harvest()
def test_serverless_application_harvest(audit_log_file):
    app = Application('Python Agent Test (Serverless Harvest Loop)')
    app.connect_to_data_collector(None)
    app.harvest()

    # verify audit log is not empty
    assert audit_log_file.tell()
Ejemplo n.º 6
0
    def _test():
        app = Application("Python Agent Test (Harvest Loop)")
        app.connect_to_data_collector(None)

        app._stats_engine.transaction_events.add("transaction event")
        app._stats_engine.synthetics_events.add("synthetic event")

        app.harvest()
Ejemplo n.º 7
0
    def _test():
        app = Application("Python Agent Test (Harvest Loop)")
        app.connect_to_data_collector(None)

        for _ in range(events_seen):
            app._stats_engine.error_events.add("error")

        app.harvest()
Ejemplo n.º 8
0
def test_serverless_application_harvest():
    app = Application("Python Agent Test (Serverless Harvest Loop)")
    app.connect_to_data_collector(None)
    app.harvest()

    # verify audit log is not empty
    with open(settings.audit_log_file, "rb") as f:
        assert f.read()
def test_application_harvest(audit_log_file):
    app = Application('Python Agent Test (Harvest Loop)')
    app.connect_to_data_collector(None)
    app.harvest()

    # Verify that the metric_data endpoint is the 2nd to last endpoint called
    # Last endpoint called is get_agent_commands
    assert endpoints_called[-2] == 'metric_data'

    # verify audit log is not empty
    assert audit_log_file.tell()
    def _test():
        app = Application('Python Agent Test (Harvest Loop)')
        app.connect_to_data_collector(None)

        if has_transaction_events:
            app._stats_engine.transaction_events.add('transaction event')

        if has_synthetic_events:
            app._stats_engine.synthetics_events.add('synthetic event')

        app.harvest()
Ejemplo n.º 11
0
def test_infinite_merges():
    app = Application("Python Agent Test (Harvest Loop)")
    app.connect_to_data_collector(None)

    app._stats_engine.transaction_events.add("transaction event")

    assert app._stats_engine.transaction_events.num_seen == 1

    app.harvest()

    # the agent_limits.merge_stats_maximum is not respected
    assert app._stats_engine.transaction_events.num_seen == 1
Ejemplo n.º 12
0
def test_application_harvest():
    app = Application("Python Agent Test (Harvest Loop)")
    app.connect_to_data_collector(None)
    app.harvest()

    # Verify that the metric_data endpoint is the 2nd to last endpoint called
    # Last endpoint called is get_agent_commands
    assert endpoints_called[-2] == "metric_data"

    # verify audit log is not empty
    with open(settings.audit_log_file, "rb") as f:
        assert f.read()
Ejemplo n.º 13
0
    def _test():
        # Test that if an endpoint call that occurs after we successfully send
        # span data fails, we do not try to send span data again with the next
        # harvest.

        app = Application("Python Agent Test (Harvest Loop)")
        app.connect_to_data_collector(None)

        app._stats_engine.span_events.add("event")
        assert app._stats_engine.span_events.num_samples == 1
        app.harvest()
        assert app._stats_engine.span_events.num_samples == 0
Ejemplo n.º 14
0
def test_reset_synthetics_events():
    app = Application("Python Agent Test (Harvest Loop)")
    app.connect_to_data_collector(None)

    app._stats_engine.synthetics_events.add("synthetics event")
    app._stats_engine.transaction_events.add("transaction event")

    assert app._stats_engine.synthetics_events.num_seen == 1
    assert app._stats_engine.transaction_events.num_seen == 1

    app.harvest()

    assert app._stats_engine.synthetics_events.num_seen == 0
    assert app._stats_engine.transaction_events.num_seen == 1
Ejemplo n.º 15
0
    def _test():
        app = Application("Python Agent Test (Harvest Loop)")
        app.connect_to_data_collector(None)

        for _ in range(spans_created):
            app._stats_engine.span_events.add("event")

        assert app._stats_engine.span_events.num_samples == (min(
            spans_created, max_samples_stored))
        app.harvest()
        assert app._stats_engine.span_events.num_samples == 0

        # Verify that the metric_data endpoint is the 2nd to last and
        # span_event_data is the 3rd to last endpoint called
        assert span_endpoints_called[-2] == "metric_data"

        if span_events_enabled and spans_created > 0:
            assert span_endpoints_called[-3] == "span_event_data"
        else:
            assert span_endpoints_called[-3] != "span_event_data"
Ejemplo n.º 16
0
def test_flexible_events_harvested(allowlist_event):
    app = Application("Python Agent Test (Harvest Loop)")
    app.connect_to_data_collector(None)

    settings.event_harvest_config.allowlist = frozenset((allowlist_event, ))
    app._stats_engine.reset_stats(settings)

    app._stats_engine.transaction_events.add("transaction event")
    app._stats_engine.error_events.add("error event")
    app._stats_engine.custom_events.add("custom event")
    app._stats_engine.log_events.add(
        LogEventNode(1653609717, "WARNING", "A", {}))
    app._stats_engine.span_events.add("span event")
    app._stats_engine.record_custom_metric("CustomMetric/Int", 1)

    assert app._stats_engine.transaction_events.num_seen == 1
    assert app._stats_engine.error_events.num_seen == 1
    assert app._stats_engine.custom_events.num_seen == 1
    assert app._stats_engine.log_events.num_seen == 1
    assert app._stats_engine.span_events.num_seen == 1
    assert app._stats_engine.record_custom_metric("CustomMetric/Int", 1)

    app.harvest(flexible=True)

    num_seen = 0 if (allowlist_event == "analytic_event_data") else 1
    assert app._stats_engine.transaction_events.num_seen == num_seen

    num_seen = 0 if (allowlist_event == "error_event_data") else 1
    assert app._stats_engine.error_events.num_seen == num_seen

    num_seen = 0 if (allowlist_event == "custom_event_data") else 1
    assert app._stats_engine.custom_events.num_seen == num_seen

    num_seen = 0 if (allowlist_event == "log_event_data") else 1
    assert app._stats_engine.log_events.num_seen == num_seen

    num_seen = 0 if (allowlist_event == "span_event_data") else 1
    assert app._stats_engine.span_events.num_seen == num_seen

    assert ("CustomMetric/Int", "") in app._stats_engine.stats_table
    assert app._stats_engine.metrics_count() > 1
Ejemplo n.º 17
0
def test_transaction_count(transaction_node):
    app = Application("Python Agent Test (Harvest Loop)")
    app.connect_to_data_collector(None)

    app.record_transaction(transaction_node)

    # Harvest has not run yet
    assert app._transaction_count == 1

    app.harvest()

    # Harvest resets the transaction count
    assert app._transaction_count == 0

    # Record a transaction
    app.record_transaction(transaction_node)
    assert app._transaction_count == 1

    app.harvest()

    # Harvest resets the transaction count
    assert app._transaction_count == 0
Ejemplo n.º 18
0
def test_flexible_harvest_rollback():
    app = Application("Python Agent Test (Harvest Loop)")
    app.connect_to_data_collector(None)

    settings.event_harvest_config.allowlist = frozenset(
        ("analytic_event_data", ))
    app._stats_engine.reset_stats(settings)

    # Cause a transaction event to attempt sending
    app._stats_engine.transaction_events.add(
        "Custom/test_flexible_harvest_rollback")

    # Add a metric to the stats engine
    app._stats_engine.record_custom_metric(
        "Custom/test_flexible_harvest_rollback", 1)
    stats_key = ("Custom/test_flexible_harvest_rollback", "")
    assert stats_key in app._stats_engine.stats_table

    app.harvest(flexible=True)

    # The metric should not be changed after a rollback
    assert app._stats_engine.stats_table[stats_key].call_count == 1
Ejemplo n.º 19
0
 def _test():
     app = Application("Python Agent Test (Harvest Loop)")
     app.connect_to_data_collector(None)
     app.harvest()