Skip to content

Commit 0326da4

Browse files
committed
adding Couchbase Java Client instrumentation
1 parent 528cfc3 commit 0326da4

36 files changed

+4654
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
jar {
2+
manifest { attributes 'Implementation-Title': 'com.newrelic.instrumentation.labs.Couchbase_Client-2.4.0'}
3+
}
4+
5+
dependencies {
6+
implementation(project(":agent-bridge"))
7+
implementation(project(":agent-bridge-datastore"))
8+
implementation(project(":newrelic-api"))
9+
implementation(project(":newrelic-weaver-api"))
10+
implementation 'com.couchbase.client:java-client:2.4.0'
11+
}
12+
13+
verifyInstrumentation {
14+
passes 'com.couchbase.client:java-client:[2.4.0,3.0.0)'
15+
exclude 'com.couchbase.client:java-client:2.7.5'
16+
exclude 'com.couchbase.client:java-client:2.7.8'
17+
excludeRegex '.*SNAPSHOT'
18+
}
19+
20+
site {
21+
title 'Couchbase'
22+
type 'Framework'
23+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.couchbase.client.core;
2+
3+
import rx.Observable;
4+
5+
import com.couchbase.client.core.message.CouchbaseRequest;
6+
import com.couchbase.client.core.message.CouchbaseResponse;
7+
import com.newrelic.api.agent.Trace;
8+
import com.newrelic.api.agent.weaver.MatchType;
9+
import com.newrelic.api.agent.weaver.Weave;
10+
import com.newrelic.api.agent.weaver.Weaver;
11+
12+
@Weave(type=MatchType.Interface, originalName = "com.couchbase.client.core.ClusterFacade")
13+
public abstract class ClusterFacade_Instrumentation {
14+
15+
@Trace
16+
public <R extends CouchbaseResponse> Observable<R> send(CouchbaseRequest paramCouchbaseRequest) {
17+
18+
Observable<R> observable = Weaver.callOriginal();
19+
20+
return observable;
21+
22+
}
23+
}

instrumentation/couchbase-client-2.4.0/src/main/java/com/couchbase/client/java/Bucket_Instrumentation.java

+1,268
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.couchbase.client.java;
2+
3+
import java.util.List;
4+
import java.util.concurrent.TimeUnit;
5+
6+
import com.couchbase.client.java.document.Document;
7+
import com.couchbase.client.java.transcoder.Transcoder;
8+
import com.newrelic.api.agent.DatastoreParameters;
9+
import com.newrelic.api.agent.NewRelic;
10+
import com.newrelic.api.agent.Trace;
11+
import com.newrelic.api.agent.weaver.MatchType;
12+
import com.newrelic.api.agent.weaver.Weave;
13+
import com.newrelic.api.agent.weaver.Weaver;
14+
15+
@SuppressWarnings("rawtypes")
16+
@Weave(type=MatchType.Interface, originalName = "com.couchbase.client.java.Cluster")
17+
public abstract class Cluster_Instrumentation {
18+
19+
@Trace(leaf=true)
20+
public Bucket_Instrumentation openBucket() {
21+
Bucket_Instrumentation bucket = Weaver.callOriginal();
22+
DatastoreParameters params = DatastoreParameters.product("Couchbase").collection(bucket.name()).operation("openBucket").build();
23+
NewRelic.getAgent().getTracedMethod().reportAsExternal(params);
24+
return bucket;
25+
}
26+
27+
@Trace(leaf=true)
28+
public Bucket_Instrumentation openBucket(long timeout, TimeUnit timeUnit) {
29+
Bucket_Instrumentation bucket = Weaver.callOriginal();
30+
DatastoreParameters params = DatastoreParameters.product("Couchbase").collection(bucket.name()).operation("openBucket").build();
31+
NewRelic.getAgent().getTracedMethod().reportAsExternal(params);
32+
return bucket;
33+
}
34+
35+
@Trace(leaf=true)
36+
public Bucket_Instrumentation openBucket(String name) {
37+
DatastoreParameters params = DatastoreParameters.product("Couchbase").collection(name).operation("openBucket").build();
38+
NewRelic.getAgent().getTracedMethod().reportAsExternal(params);
39+
return Weaver.callOriginal();
40+
}
41+
42+
@Trace(leaf=true)
43+
public Bucket_Instrumentation openBucket(String name, long timeout, TimeUnit timeUnit) {
44+
DatastoreParameters params = DatastoreParameters.product("Couchbase").collection(name).operation("openBucket").build();
45+
NewRelic.getAgent().getTracedMethod().reportAsExternal(params);
46+
return Weaver.callOriginal();
47+
}
48+
49+
@Trace(leaf=true)
50+
public Bucket_Instrumentation openBucket(String name, String password) {
51+
DatastoreParameters params = DatastoreParameters.product("Couchbase").collection(name).operation("openBucket").build();
52+
NewRelic.getAgent().getTracedMethod().reportAsExternal(params);
53+
return Weaver.callOriginal();
54+
}
55+
56+
@Trace(leaf=true)
57+
public Bucket_Instrumentation openBucket(String name, String password, long timeout, TimeUnit timeUnit) {
58+
DatastoreParameters params = DatastoreParameters.product("Couchbase").collection(name).operation("openBucket").build();
59+
NewRelic.getAgent().getTracedMethod().reportAsExternal(params);
60+
return Weaver.callOriginal();
61+
}
62+
63+
@Trace(leaf=true)
64+
public Bucket_Instrumentation openBucket(String name, String password, List<Transcoder<? extends Document, ?>> transcoders) {
65+
DatastoreParameters params = DatastoreParameters.product("Couchbase").collection(name).operation("openBucket").build();
66+
NewRelic.getAgent().getTracedMethod().reportAsExternal(params);
67+
return Weaver.callOriginal();
68+
}
69+
70+
@Trace(leaf=true)
71+
public Bucket_Instrumentation openBucket(String name, String password, List<Transcoder<? extends Document, ?>> transcoders, long timeout, TimeUnit timeUnit) {
72+
DatastoreParameters params = DatastoreParameters.product("Couchbase").collection(name).operation("openBucket").build();
73+
NewRelic.getAgent().getTracedMethod().reportAsExternal(params);
74+
return Weaver.callOriginal();
75+
}
76+
}

0 commit comments

Comments
 (0)