Search in sources :

Example 16 with MockRPMService

use of com.newrelic.agent.MockRPMService in project newrelic-java-agent by newrelic.

the class LogSenderServiceImplTest method testNoTransaction.

@Test
public void testNoTransaction() throws Exception {
    LogSenderServiceImpl logSenderService = createService();
    logSenderService.addHarvestableToService(appName);
    verify(txService, times(1)).addTransactionListener(logSenderService.transactionListener);
    logSenderService.recordLogEvent(ImmutableMap.of("field", "value"));
    logSenderService.recordLogEvent(ImmutableMap.of("field2", "value2"));
    logSenderService.recordLogEvent(ImmutableMap.of("field3", "value3"));
    MockRPMService analyticsData = new MockRPMService();
    when(ServiceFactory.getServiceManager().getRPMServiceManager().getOrCreateRPMService(appName)).thenReturn(analyticsData);
    logSenderService.harvestHarvestables();
    assertEquals(3, analyticsData.getEvents().size());
    logSenderService.stop();
    verify(txService, times(1)).removeTransactionListener(logSenderService.transactionListener);
}
Also used : MockRPMService(com.newrelic.agent.MockRPMService) Test(org.junit.Test)

Example 17 with MockRPMService

use of com.newrelic.agent.MockRPMService in project newrelic-java-agent by newrelic.

the class LogSenderServiceImplTest method testHighSecurity.

@Test
public void testHighSecurity() throws Exception {
    Map<String, Object> config = createConfig(true, 180);
    LogSenderServiceImpl logSenderService = createService(config);
    Transaction transaction = Mockito.mock(Transaction.class);
    when(ServiceFactory.getTransactionService().getTransaction(false)).thenReturn(transaction);
    LogSenderServiceImpl.TransactionLogs logs = new LogSenderServiceImpl.TransactionLogs(AgentConfigImpl.createAgentConfig(Collections.emptyMap()));
    when(transaction.getLogEventData()).thenReturn(logs);
    when(transaction.getApplicationName()).thenReturn(appName);
    when(transaction.isInProgress()).thenReturn(true);
    logSenderService.recordLogEvent(ImmutableMap.of("field", "value"));
    logSenderService.recordLogEvent(ImmutableMap.of("field2", "value2"));
    logSenderService.recordLogEvent(ImmutableMap.of("field3", "value3"));
    MockRPMService analyticsData = new MockRPMService();
    when(ServiceFactory.getServiceManager().getRPMServiceManager().getRPMService(appName)).thenReturn(analyticsData);
    TransactionData transactionData = Mockito.mock(TransactionData.class);
    when(transactionData.getApplicationName()).thenReturn(appName);
    when(transactionData.getLogEventData()).thenReturn(logs);
    logSenderService.transactionListener.dispatcherTransactionFinished(transactionData, null);
    logSenderService.harvestHarvestables();
    assertEquals(0, analyticsData.getEvents().size());
    assertEquals(0, logs.events.size());
}
Also used : Transaction(com.newrelic.agent.Transaction) TransactionData(com.newrelic.agent.TransactionData) MockRPMService(com.newrelic.agent.MockRPMService) Test(org.junit.Test)

Example 18 with MockRPMService

use of com.newrelic.agent.MockRPMService in project newrelic-java-agent by newrelic.

the class SqlTraceServiceTest method multipleHarvests.

@Test
public void multipleHarvests() throws Exception {
    Map<String, Object> configMap = createStagingMap();
    createServiceManager(configMap);
    SqlTraceService sqlTraceService = ServiceFactory.getSqlTraceService();
    Assert.assertTrue(sqlTraceService.isEnabled());
    // run a transaction
    Tracer requestDispatcherTracer = startDispatcherTracer();
    long duration = TimeUnit.NANOSECONDS.convert(getExplainThresholdInMillis() + 1, TimeUnit.MILLISECONDS);
    startSqlTracer("select * from dude where somevalue = 'cool'", duration).finish(Opcodes.RETURN, null);
    startSqlTracer("select * from dude where somevalue = 'cool'", duration).finish(Opcodes.RETURN, null);
    startSqlTracer("select * from dudette where somevalue = 'cool'", duration).finish(Opcodes.RETURN, null);
    requestDispatcherTracer.finish(Opcodes.RETURN, null);
    // run a harvest
    MockHarvestService mockharvestService = (MockHarvestService) ServiceFactory.getHarvestService();
    mockharvestService.runHarvest(ServiceFactory.getConfigService().getDefaultAgentConfig().getApplicationName(), new StatsEngineImpl());
    MockRPMService mockRPMService = (MockRPMService) ServiceFactory.getRPMService();
    List<SqlTrace> sqlTraces = mockRPMService.getSqlTraces();
    // verify results
    Assert.assertEquals(2, sqlTraces.size());
    // run a transaction
    requestDispatcherTracer = startDispatcherTracer();
    startSqlTracer("select * from dude where somevalue = 'cool'", duration).finish(Opcodes.RETURN, null);
    startSqlTracer("select * from dude where somevalue = 'cool'", duration).finish(Opcodes.RETURN, null);
    startSqlTracer("select * from dudette where somevalue = 'cool'", duration).finish(Opcodes.RETURN, null);
    requestDispatcherTracer.finish(Opcodes.RETURN, null);
    // run a harvest
    mockharvestService.runHarvest(ServiceFactory.getConfigService().getDefaultAgentConfig().getApplicationName(), new StatsEngineImpl());
    sqlTraces = mockRPMService.getSqlTraces();
    // verify results
    Assert.assertEquals(2, sqlTraces.size());
    long expectedDuration = TimeUnit.MILLISECONDS.convert(duration, TimeUnit.NANOSECONDS);
    String expectedSql = "select * from dude where somevalue = ?";
    SqlObfuscator sqlObfuscator = ServiceFactory.getDatabaseService().getDefaultSqlObfuscator();
    long expectedId = sqlObfuscator.obfuscateSql(expectedSql).hashCode();
    SqlTrace sqlTrace = getSqlTrace(expectedId, sqlTraces);
    Assert.assertNotNull(sqlTrace);
    Assert.assertEquals(expectedId, sqlTrace.getId());
    Assert.assertEquals(expectedSql, sqlTrace.getQuery());
    Assert.assertEquals(2, sqlTrace.getCallCount());
    Assert.assertEquals(expectedDuration * 2, sqlTrace.getTotal());
    Assert.assertEquals(expectedDuration, sqlTrace.getMin());
    Assert.assertEquals(expectedDuration, sqlTrace.getMax());
    expectedSql = "select * from dudette where somevalue = ?";
    expectedId = sqlObfuscator.obfuscateSql(expectedSql).hashCode();
    sqlTrace = getSqlTrace(expectedId, sqlTraces);
    Assert.assertNotNull(sqlTrace);
    Assert.assertEquals(expectedId, sqlTrace.getId());
    Assert.assertEquals(expectedSql, sqlTrace.getQuery());
    Assert.assertEquals(1, sqlTrace.getCallCount());
    Assert.assertEquals(expectedDuration, sqlTrace.getTotal());
    Assert.assertEquals(expectedDuration, sqlTrace.getMin());
    Assert.assertEquals(expectedDuration, sqlTrace.getMax());
}
Also used : StatsEngineImpl(com.newrelic.agent.stats.StatsEngineImpl) SqlTracer(com.newrelic.agent.tracers.SqlTracer) OtherRootSqlTracer(com.newrelic.agent.tracers.OtherRootSqlTracer) BasicRequestRootTracer(com.newrelic.agent.tracers.servlet.BasicRequestRootTracer) Tracer(com.newrelic.agent.tracers.Tracer) MockHarvestService(com.newrelic.agent.MockHarvestService) SqlObfuscator(com.newrelic.agent.database.SqlObfuscator) MockRPMService(com.newrelic.agent.MockRPMService) Test(org.junit.Test)

Example 19 with MockRPMService

use of com.newrelic.agent.MockRPMService in project newrelic-java-agent by newrelic.

the class SqlTraceServiceTest method insertSqlMaxLength.

@Test
public void insertSqlMaxLength() throws Exception {
    Map<String, Object> configMap = createStagingMap();
    createServiceManager(configMap);
    // run a transaction
    Tracer requestDispatcherTracer = startDispatcherTracer();
    long duration = TimeUnit.NANOSECONDS.convert(getExplainThresholdInMillis() + 1, TimeUnit.MILLISECONDS);
    char[] charData = new char[2100];
    String sql = "select * from dude where  where somevalue = 'cool'";
    for (int i = 0; i < sql.length(); i++) {
        charData[i] = sql.charAt(i);
    }
    for (int i = sql.length(); i < charData.length; i++) {
        charData[i] = 'a';
    }
    sql = String.valueOf(charData);
    startSqlTracer(sql, duration).finish(Opcodes.RETURN, null);
    requestDispatcherTracer.finish(Opcodes.RETURN, null);
    // run a harvest
    MockHarvestService mockharvestService = (MockHarvestService) ServiceFactory.getHarvestService();
    mockharvestService.runHarvest(ServiceFactory.getConfigService().getDefaultAgentConfig().getApplicationName(), new StatsEngineImpl());
    MockRPMService mockRPMService = (MockRPMService) ServiceFactory.getRPMService();
    List<SqlTrace> sqlTraces = mockRPMService.getSqlTraces();
    Assert.assertEquals(1, sqlTraces.size());
    SqlTrace sqlTrace = sqlTraces.get(0);
    int maxSqlLength = ServiceFactory.getConfigService().getDefaultAgentConfig().getTransactionTracerConfig().getInsertSqlMaxLength();
    SqlObfuscator sqlObfuscator = ServiceFactory.getDatabaseService().getDefaultSqlObfuscator();
    sql = sqlObfuscator.obfuscateSql(sql);
    Assert.assertEquals(TransactionSegment.truncateSql(sql, maxSqlLength).length(), sqlTrace.getQuery().length());
}
Also used : StatsEngineImpl(com.newrelic.agent.stats.StatsEngineImpl) SqlTracer(com.newrelic.agent.tracers.SqlTracer) OtherRootSqlTracer(com.newrelic.agent.tracers.OtherRootSqlTracer) BasicRequestRootTracer(com.newrelic.agent.tracers.servlet.BasicRequestRootTracer) Tracer(com.newrelic.agent.tracers.Tracer) MockHarvestService(com.newrelic.agent.MockHarvestService) SqlObfuscator(com.newrelic.agent.database.SqlObfuscator) MockRPMService(com.newrelic.agent.MockRPMService) Test(org.junit.Test)

Example 20 with MockRPMService

use of com.newrelic.agent.MockRPMService in project newrelic-java-agent by newrelic.

the class SqlTraceServiceTest method serializeSqlTrace.

@Test
public void serializeSqlTrace() throws Exception {
    Map<String, Object> configMap = createStagingMap();
    createServiceManager(configMap);
    // run a transaction
    Tracer requestDispatcherTracer = startDispatcherTracer();
    long duration = TimeUnit.NANOSECONDS.convert(getExplainThresholdInMillis() + 1, TimeUnit.MILLISECONDS);
    startSqlTracer("select * from dude where somevalue = 'cool'", duration).finish(Opcodes.RETURN, null);
    requestDispatcherTracer.finish(Opcodes.RETURN, null);
    // run a harvest
    MockHarvestService mockharvestService = (MockHarvestService) ServiceFactory.getHarvestService();
    mockharvestService.runHarvest(ServiceFactory.getConfigService().getDefaultAgentConfig().getApplicationName(), new StatsEngineImpl());
    MockRPMService mockRPMService = (MockRPMService) ServiceFactory.getRPMService();
    List<SqlTrace> sqlTraces = mockRPMService.getSqlTraces();
    Assert.assertEquals(1, sqlTraces.size());
    SqlTrace sqlTrace = sqlTraces.get(0);
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    Writer writer = new OutputStreamWriter(os);
    JSONValue.writeJSONString(sqlTraces, writer);
    writer.close();
    String json = os.toString();
    JSONParser parser = new JSONParser();
    JSONArray deserializedSqlTraces = (JSONArray) parser.parse(json);
    Assert.assertEquals(1, deserializedSqlTraces.size());
    JSONArray deserializedSqlTrace = (JSONArray) deserializedSqlTraces.get(0);
    Assert.assertEquals(10, deserializedSqlTrace.size());
    Assert.assertEquals(sqlTrace.getBlameMetricName(), deserializedSqlTrace.get(0));
    Assert.assertEquals(sqlTrace.getUri(), deserializedSqlTrace.get(1));
    Assert.assertEquals(sqlTrace.getId(), deserializedSqlTrace.get(2));
    Assert.assertEquals(sqlTrace.getQuery(), deserializedSqlTrace.get(3));
    Assert.assertEquals(sqlTrace.getMetricName(), deserializedSqlTrace.get(4));
    Assert.assertEquals(Integer.valueOf(sqlTrace.getCallCount()).longValue(), deserializedSqlTrace.get(5));
    Assert.assertEquals(sqlTrace.getTotal(), deserializedSqlTrace.get(6));
    Assert.assertEquals(sqlTrace.getMin(), deserializedSqlTrace.get(7));
    Assert.assertEquals(sqlTrace.getMax(), deserializedSqlTrace.get(8));
    Map<String, Object> decodedParams = (Map<String, Object>) decodeParams(deserializedSqlTrace.get(9));
    Map<String, Object> sqlTraceParams = sqlTrace.getParameters();
    Double decodedPriority = (Double) decodedParams.remove("priority");
    Float sqlTracePriority = (Float) sqlTraceParams.remove("priority");
    Assert.assertEquals(decodedParams, sqlTraceParams);
    Assert.assertEquals(decodedPriority, sqlTracePriority, 0.0000001f);
}
Also used : StatsEngineImpl(com.newrelic.agent.stats.StatsEngineImpl) SqlTracer(com.newrelic.agent.tracers.SqlTracer) OtherRootSqlTracer(com.newrelic.agent.tracers.OtherRootSqlTracer) BasicRequestRootTracer(com.newrelic.agent.tracers.servlet.BasicRequestRootTracer) Tracer(com.newrelic.agent.tracers.Tracer) JSONArray(org.json.simple.JSONArray) ByteArrayOutputStream(java.io.ByteArrayOutputStream) MockHarvestService(com.newrelic.agent.MockHarvestService) OutputStreamWriter(java.io.OutputStreamWriter) JSONParser(org.json.simple.parser.JSONParser) Map(java.util.Map) HashMap(java.util.HashMap) MockRPMService(com.newrelic.agent.MockRPMService) Writer(java.io.Writer) OutputStreamWriter(java.io.OutputStreamWriter) Test(org.junit.Test)

Aggregations

MockRPMService (com.newrelic.agent.MockRPMService)97 Test (org.junit.Test)59 MockRPMServiceManager (com.newrelic.agent.MockRPMServiceManager)44 MockServiceManager (com.newrelic.agent.MockServiceManager)39 MockHarvestService (com.newrelic.agent.MockHarvestService)30 HashMap (java.util.HashMap)28 TransactionService (com.newrelic.agent.TransactionService)26 ConfigService (com.newrelic.agent.config.ConfigService)21 MockCoreService (com.newrelic.agent.MockCoreService)20 StatsEngineImpl (com.newrelic.agent.stats.StatsEngineImpl)18 HarvestService (com.newrelic.agent.HarvestService)17 ErrorServiceImpl (com.newrelic.agent.errors.ErrorServiceImpl)17 ThreadService (com.newrelic.agent.ThreadService)15 StatsService (com.newrelic.agent.stats.StatsService)15 TransactionTraceService (com.newrelic.agent.trace.TransactionTraceService)15 OtherRootSqlTracer (com.newrelic.agent.tracers.OtherRootSqlTracer)15 SqlTracer (com.newrelic.agent.tracers.SqlTracer)15 Tracer (com.newrelic.agent.tracers.Tracer)15 BasicRequestRootTracer (com.newrelic.agent.tracers.servlet.BasicRequestRootTracer)15 TransactionData (com.newrelic.agent.TransactionData)14