Search in sources :

Example 1 with Data

use of com.nr.lettuce5.instrumentation.helper.Data in project newrelic-java-agent by newrelic.

the class Lettuce5InstrumentationTest method testAsync.

@Test
public void testAsync() throws ExecutionException, InterruptedException {
    // given some data
    Data data = new Data("asyncKey1", "asyncValue1");
    // when async 'set' called
    String response = redisDataService.asyncSet(data);
    // then response should be 'OK'
    assertEquals("Then response should be 'OK'", "OK", response);
    // when async 'get' called
    String value = redisDataService.asyncGet(data.key);
    // then value returned
    assertEquals("Get value", data.value, value);
    // and 2 transactions have been sent
    Introspector introspector = InstrumentationTestRunner.getIntrospector();
    assertEquals("Finished transaction count", 2, introspector.getFinishedTransactionCount(1000));
    Collection<String> transactionNames = introspector.getTransactionNames();
    assertEquals("Transaction name count", 2, transactionNames.size());
    String setTransactionName = "OtherTransaction/Custom/com.nr.lettuce5.instrumentation.helper.RedisDataService/asyncSet";
    String getTransactionName = "OtherTransaction/Custom/com.nr.lettuce5.instrumentation.helper.RedisDataService/asyncGet";
    // and transaction names are in collection
    assertTrue("Should contain transaction name for 'set'", transactionNames.contains(setTransactionName));
    assertTrue("Should contain transaction name for 'get'", transactionNames.contains(getTransactionName));
    // and required datastore metrics are sent
    DatastoreHelper helper = new DatastoreHelper("Redis");
    helper.assertAggregateMetrics();
    assertEquals(1, introspector.getTransactionEvents(setTransactionName).iterator().next().getDatabaseCallCount());
    assertEquals(1, introspector.getTransactionEvents(getTransactionName).iterator().next().getDatabaseCallCount());
    helper.assertUnscopedOperationMetricCount("SET", 1);
    helper.assertUnscopedOperationMetricCount("GET", 1);
    helper.assertInstanceLevelMetric(DatastoreVendor.Redis.name(), redis.getHost(), redis.getFirstMappedPort().toString());
}
Also used : Introspector(com.newrelic.agent.introspec.Introspector) Data(com.nr.lettuce5.instrumentation.helper.Data) DatastoreHelper(com.newrelic.agent.introspec.DatastoreHelper) Test(org.junit.Test)

Example 2 with Data

use of com.nr.lettuce5.instrumentation.helper.Data in project newrelic-java-agent by newrelic.

the class Lettuce5InstrumentationTest method testReactive.

@Test
public void testReactive() {
    // given some data
    Data data1 = new Data("key1", "value1");
    Data data2 = new Data("key2", "value3");
    Data data3 = new Data("key3", "value3");
    // when reactive 'set' called
    List<String> ids = redisDataService.reactiveSet(Flux.just(data1, data2, data3));
    // then all 'OK'
    assertArrayEquals("All responses should be 'OK'", new String[] { "OK", "OK", "OK" }, ids.toArray());
    // when reactive 'get' called
    List<String> values = redisDataService.reactiveGet(Flux.just(data1.key, data2.key, data3.key));
    // then 3 values returned
    String[] expectedValues = new String[] { data1.value, data2.value, data3.value };
    assertEquals("Get values size did not math the amount set", 3, values.size());
    assertArrayEquals("Values returned should equal sent", expectedValues, values.toArray());
    // and 2 transactions have been sent
    Introspector introspector = InstrumentationTestRunner.getIntrospector();
    assertEquals(2, introspector.getFinishedTransactionCount(1000));
    Collection<String> transactionNames = introspector.getTransactionNames();
    assertEquals(2, transactionNames.size());
    String setTransactionName = "OtherTransaction/Custom/com.nr.lettuce5.instrumentation.helper.RedisDataService/reactiveSet";
    String getTransactionName = "OtherTransaction/Custom/com.nr.lettuce5.instrumentation.helper.RedisDataService/reactiveGet";
    // and transaction names are in collection
    assertTrue("Should contain transaction name for 'set'", transactionNames.contains(setTransactionName));
    assertTrue("Should contain transaction name for 'get'", transactionNames.contains(getTransactionName));
    // and required datastore metrics are sent
    DatastoreHelper helper = new DatastoreHelper("Redis");
    helper.assertAggregateMetrics();
    assertEquals(3, introspector.getTransactionEvents(setTransactionName).iterator().next().getDatabaseCallCount());
    assertEquals(3, introspector.getTransactionEvents(getTransactionName).iterator().next().getDatabaseCallCount());
    helper.assertUnscopedOperationMetricCount("SET", 3);
    helper.assertUnscopedOperationMetricCount("GET", 3);
    helper.assertInstanceLevelMetric("Redis", "localhost", redis.getFirstMappedPort().toString());
}
Also used : Introspector(com.newrelic.agent.introspec.Introspector) Data(com.nr.lettuce5.instrumentation.helper.Data) DatastoreHelper(com.newrelic.agent.introspec.DatastoreHelper) Test(org.junit.Test)

Example 3 with Data

use of com.nr.lettuce5.instrumentation.helper.Data in project newrelic-java-agent by newrelic.

the class Lettuce6InstrumentationTest method testReactive.

@Test
public void testReactive() {
    // given some data
    Data data1 = new Data("key1", "value1");
    Data data2 = new Data("key2", "value3");
    Data data3 = new Data("key3", "value3");
    // when reactive 'set' called
    List<String> ids = redisDataService.reactiveSet(Flux.just(data1, data2, data3));
    // then all 'OK'
    assertArrayEquals("All responses should be 'OK'", new String[] { "OK", "OK", "OK" }, ids.toArray());
    // when reactive 'get' called
    List<String> values = redisDataService.reactiveGet(Flux.just(data1.key, data2.key, data3.key));
    // then 3 values returned
    String[] expectedValues = new String[] { data1.value, data2.value, data3.value };
    assertEquals("Get values size did not math the amount set", 3, values.size());
    assertArrayEquals("Values returned should equal sent", expectedValues, values.toArray());
    // and 2 transactions have been sent
    Introspector introspector = InstrumentationTestRunner.getIntrospector();
    assertEquals(2, introspector.getFinishedTransactionCount(1000));
    Collection<String> transactionNames = introspector.getTransactionNames();
    assertEquals(2, transactionNames.size());
    String setTransactionName = "OtherTransaction/Custom/com.nr.lettuce6.instrumentation.helper.RedisDataService/reactiveSet";
    String getTransactionName = "OtherTransaction/Custom/com.nr.lettuce6.instrumentation.helper.RedisDataService/reactiveGet";
    // and transaction names are in collection
    assertTrue("Should contain transaction name for 'set'", transactionNames.contains(setTransactionName));
    assertTrue("Should contain transaction name for 'get'", transactionNames.contains(getTransactionName));
    // and required datastore metrics are sent
    DatastoreHelper helper = new DatastoreHelper("Redis");
    helper.assertAggregateMetrics();
    assertEquals(3, introspector.getTransactionEvents(setTransactionName).iterator().next().getDatabaseCallCount());
    assertEquals(3, introspector.getTransactionEvents(getTransactionName).iterator().next().getDatabaseCallCount());
    helper.assertUnscopedOperationMetricCount("SET", 3);
    helper.assertUnscopedOperationMetricCount("GET", 3);
    helper.assertInstanceLevelMetric("Redis", "localhost", redis.getFirstMappedPort().toString());
}
Also used : Introspector(com.newrelic.agent.introspec.Introspector) Data(com.nr.lettuce6.instrumentation.helper.Data) DatastoreHelper(com.newrelic.agent.introspec.DatastoreHelper) Test(org.junit.Test)

Example 4 with Data

use of com.nr.lettuce5.instrumentation.helper.Data in project newrelic-java-agent by newrelic.

the class Lettuce43InstrumentationTest method testAsync.

@Test
public void testAsync() throws ExecutionException, InterruptedException {
    // given some data
    Data data = new Data("asyncKey1", "asyncValue1");
    // when async 'set' called
    String response = redisDataService.asyncSet(data);
    // then response should be 'OK'
    assertEquals("Then response should be 'OK'", "OK", response);
    // when async 'get' called
    String value = redisDataService.asyncGet(data.key);
    // then value returned
    assertEquals("Get value", data.value, value);
    // and 2 transactions have been sent
    Introspector introspector = InstrumentationTestRunner.getIntrospector();
    assertEquals("Finished transaction count", 2, introspector.getFinishedTransactionCount(1000));
    Collection<String> transactionNames = introspector.getTransactionNames();
    assertEquals("Transaction name count", 2, transactionNames.size());
    String setTransactionName = "OtherTransaction/Custom/com.nr.lettuce43.instrumentation.helper.RedisDataService/asyncSet";
    String getTransactionName = "OtherTransaction/Custom/com.nr.lettuce43.instrumentation.helper.RedisDataService/asyncGet";
    // and transaction names are in collection
    assertTrue("Should contain transaction name for 'set'", transactionNames.contains(setTransactionName));
    assertTrue("Should contain transaction name for 'get'", transactionNames.contains(getTransactionName));
    // and required datastore metrics are sent
    DatastoreHelper helper = new DatastoreHelper("Redis");
    helper.assertAggregateMetrics();
    assertEquals(1, introspector.getTransactionEvents(setTransactionName).iterator().next().getDatabaseCallCount());
    assertEquals(1, introspector.getTransactionEvents(getTransactionName).iterator().next().getDatabaseCallCount());
    helper.assertUnscopedOperationMetricCount("SET", 1);
    helper.assertUnscopedOperationMetricCount("GET", 1);
    helper.assertInstanceLevelMetric(DatastoreVendor.Redis.name(), redis.getHost(), redis.getFirstMappedPort().toString());
}
Also used : Introspector(com.newrelic.agent.introspec.Introspector) Data(com.nr.lettuce43.instrumentation.helper.Data) DatastoreHelper(com.newrelic.agent.introspec.DatastoreHelper) Test(org.junit.Test)

Example 5 with Data

use of com.nr.lettuce5.instrumentation.helper.Data in project newrelic-java-agent by newrelic.

the class Lettuce6InstrumentationTest method testAsync.

@Test
public void testAsync() throws ExecutionException, InterruptedException {
    // given some data
    Data data = new Data("asyncKey1", "asyncValue1");
    // when async 'set' called
    String response = redisDataService.asyncSet(data);
    // then response should be 'OK'
    assertEquals("Then response should be 'OK'", "OK", response);
    // when async 'get' called
    String value = redisDataService.asyncGet(data.key);
    // then value returned
    assertEquals("Get value", data.value, value);
    // and 2 transactions have been sent
    Introspector introspector = InstrumentationTestRunner.getIntrospector();
    assertEquals("Finished transaction count", 2, introspector.getFinishedTransactionCount(1000));
    Collection<String> transactionNames = introspector.getTransactionNames();
    assertEquals("Transaction name count", 2, transactionNames.size());
    String setTransactionName = "OtherTransaction/Custom/com.nr.lettuce6.instrumentation.helper.RedisDataService/asyncSet";
    String getTransactionName = "OtherTransaction/Custom/com.nr.lettuce6.instrumentation.helper.RedisDataService/asyncGet";
    // and transaction names are in collection
    assertTrue("Should contain transaction name for 'set'", transactionNames.contains(setTransactionName));
    assertTrue("Should contain transaction name for 'get'", transactionNames.contains(getTransactionName));
    // and required datastore metrics are sent
    DatastoreHelper helper = new DatastoreHelper("Redis");
    helper.assertAggregateMetrics();
    assertEquals(1, introspector.getTransactionEvents(setTransactionName).iterator().next().getDatabaseCallCount());
    assertEquals(1, introspector.getTransactionEvents(getTransactionName).iterator().next().getDatabaseCallCount());
    helper.assertUnscopedOperationMetricCount("SET", 1);
    helper.assertUnscopedOperationMetricCount("GET", 1);
    helper.assertInstanceLevelMetric(DatastoreVendor.Redis.name(), redis.getHost(), redis.getFirstMappedPort().toString());
}
Also used : Introspector(com.newrelic.agent.introspec.Introspector) Data(com.nr.lettuce6.instrumentation.helper.Data) DatastoreHelper(com.newrelic.agent.introspec.DatastoreHelper) Test(org.junit.Test)

Aggregations

DatastoreHelper (com.newrelic.agent.introspec.DatastoreHelper)5 Introspector (com.newrelic.agent.introspec.Introspector)5 Test (org.junit.Test)5 Data (com.nr.lettuce5.instrumentation.helper.Data)2 Data (com.nr.lettuce6.instrumentation.helper.Data)2 Data (com.nr.lettuce43.instrumentation.helper.Data)1