128 lines
3.6 KiB
Groovy
128 lines
3.6 KiB
Groovy
import com.couchbase.client.java.Bucket
|
|
import com.couchbase.client.java.document.JsonDocument
|
|
import com.couchbase.client.java.document.json.JsonObject
|
|
import com.couchbase.client.java.query.N1qlQuery
|
|
import util.AbstractCouchbaseTest
|
|
|
|
import static datadog.trace.agent.test.utils.TraceUtils.basicSpan
|
|
import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace
|
|
|
|
class CouchbaseClientTest extends AbstractCouchbaseTest {
|
|
|
|
def "test hasBucket #type"() {
|
|
when:
|
|
def hasBucket = manager.hasBucket(bucketSettings.name())
|
|
|
|
then:
|
|
assert hasBucket
|
|
assertTraces(1) {
|
|
trace(0, 1) {
|
|
assertCouchbaseCall(it, 0, "ClusterManager.hasBucket")
|
|
}
|
|
}
|
|
|
|
where:
|
|
manager | cluster | bucketSettings
|
|
couchbaseManager | couchbaseCluster | bucketCouchbase
|
|
memcacheManager | memcacheCluster | bucketMemcache
|
|
|
|
type = bucketSettings.type().name()
|
|
}
|
|
|
|
def "test upsert and get #type"() {
|
|
when:
|
|
// Connect to the bucket and open it
|
|
Bucket bkt = cluster.openBucket(bucketSettings.name(), bucketSettings.password())
|
|
|
|
// Create a JSON document and store it with the ID "helloworld"
|
|
JsonObject content = JsonObject.create().put("hello", "world")
|
|
def inserted = bkt.upsert(JsonDocument.create("helloworld", content))
|
|
def found = bkt.get("helloworld")
|
|
|
|
then:
|
|
found == inserted
|
|
found.content().getString("hello") == "world"
|
|
|
|
assertTraces(2) {
|
|
trace(0, 1) {
|
|
assertCouchbaseCall(it, 0, "Bucket.upsert", bucketSettings.name())
|
|
}
|
|
trace(1, 1) {
|
|
assertCouchbaseCall(it, 0, "Bucket.get", bucketSettings.name())
|
|
}
|
|
}
|
|
|
|
where:
|
|
manager | cluster | bucketSettings
|
|
couchbaseManager | couchbaseCluster | bucketCouchbase
|
|
memcacheManager | memcacheCluster | bucketMemcache
|
|
|
|
type = bucketSettings.type().name()
|
|
}
|
|
|
|
def "test upsert and get #type under trace"() {
|
|
when:
|
|
// Connect to the bucket and open it
|
|
Bucket bkt = cluster.openBucket(bucketSettings.name(), bucketSettings.password())
|
|
|
|
// Create a JSON document and store it with the ID "helloworld"
|
|
JsonObject content = JsonObject.create().put("hello", "world")
|
|
|
|
def inserted
|
|
def found
|
|
|
|
runUnderTrace("someTrace") {
|
|
inserted = bkt.upsert(JsonDocument.create("helloworld", content))
|
|
found = bkt.get("helloworld")
|
|
}
|
|
|
|
then:
|
|
found == inserted
|
|
found.content().getString("hello") == "world"
|
|
|
|
assertTraces(1) {
|
|
trace(0, 3) {
|
|
basicSpan(it, 0, "someTrace")
|
|
assertCouchbaseCall(it, 2, "Bucket.upsert", bucketSettings.name(), span(0))
|
|
assertCouchbaseCall(it, 1, "Bucket.get", bucketSettings.name(), span(0))
|
|
}
|
|
}
|
|
|
|
where:
|
|
manager | cluster | bucketSettings
|
|
couchbaseManager | couchbaseCluster | bucketCouchbase
|
|
memcacheManager | memcacheCluster | bucketMemcache
|
|
|
|
type = bucketSettings.type().name()
|
|
}
|
|
|
|
def "test query"() {
|
|
setup:
|
|
Bucket bkt = cluster.openBucket(bucketSettings.name(), bucketSettings.password())
|
|
|
|
when:
|
|
// Mock expects this specific query.
|
|
// See com.couchbase.mock.http.query.QueryServer.handleString.
|
|
def result = bkt.query(N1qlQuery.simple("SELECT mockrow"))
|
|
|
|
then:
|
|
result.parseSuccess()
|
|
result.finalSuccess()
|
|
result.first().value().get("row") == "value"
|
|
|
|
and:
|
|
assertTraces(1) {
|
|
trace(0, 1) {
|
|
assertCouchbaseCall(it, 0, "Bucket.query", bucketSettings.name())
|
|
}
|
|
}
|
|
|
|
where:
|
|
manager | cluster | bucketSettings
|
|
couchbaseManager | couchbaseCluster | bucketCouchbase
|
|
// Only couchbase buckets support queries.
|
|
|
|
type = bucketSettings.type().name()
|
|
}
|
|
}
|