Skip to content

Commit 312aca8

Browse files
committed
[wip] Upgrade java dse driver to 2.x
1 parent 8e8ed15 commit 312aca8

25 files changed

+266
-242
lines changed

build.sbt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ val gatlingVersion = "2.3.0"
44

55
scalacOptions += "-target:jvm-1.8"
66

7-
libraryDependencies += "com.datastax.dse" % "dse-java-driver-core" % "1.6.8"
8-
libraryDependencies += "com.datastax.dse" % "dse-java-driver-graph" % "1.6.8"
7+
libraryDependencies += "com.datastax.dse" % "dse-java-driver-core" % "2.0.1"
8+
libraryDependencies += "com.datastax.dse" % "dse-java-driver-graph" % "1.8.1"
99
libraryDependencies += "com.github.nscala-time" %% "nscala-time" % "2.18.0"
1010
libraryDependencies += "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.9.1"
1111
libraryDependencies += "org.hdrhistogram" % "HdrHistogram" % "2.1.10"
12+
libraryDependencies += "com.google.guava" % "guava" % "23.0"
13+
1214

1315
libraryDependencies += "io.gatling.highcharts" % "gatling-charts-highcharts" % gatlingVersion % Provided
1416

src/main/scala/com/datastax/gatling/plugin/DseProtocol.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import java.util.concurrent.atomic.AtomicLong
1111

1212
import akka.Done
1313
import akka.actor.ActorSystem
14-
import com.datastax.driver.dse.DseSession
14+
import com.datastax.dse.driver.api.core.DseSession
1515
import com.datastax.gatling.plugin.metrics.MetricsLogger
1616
import com.datastax.gatling.plugin.request.{CqlRequestActionBuilder, GraphRequestActionBuilder}
1717
import com.datastax.gatling.plugin.utils.GatlingTimingSource
@@ -132,4 +132,3 @@ object DseProtocolBuilder {
132132
case class DseProtocolBuilder(session: DseSession) {
133133
def build = DseProtocol(session)
134134
}
135-

src/main/scala/com/datastax/gatling/plugin/Predef.scala

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,9 @@
77
package com.datastax.gatling.plugin
88

99
import com.datastax.gatling.plugin.checks.DseCheckSupport
10-
import com.datastax.gatling.plugin.model.{DseCqlAttributesBuilder, DseCqlStatementBuilder, DseGraphStatementBuilder, DseGraphAttributesBuilder}
10+
import com.datastax.gatling.plugin.model.{DseCqlAttributesBuilder, DseCqlStatementBuilder, DseGraphAttributesBuilder, DseGraphStatementBuilder}
1111
import com.datastax.gatling.plugin.request._
12+
import com.datastax.oss.driver.api.core.cql.SimpleStatement
1213
import io.gatling.core.action.builder.ActionBuilder
1314

1415
import scala.language.implicitConversions
@@ -30,13 +31,13 @@ trait DsePredefBase extends DseCheckSupport {
3031
@deprecated("use dseProtocolBuilder instead, will be removed in future versions")
3132
val cql: DseProtocolBuilder.type = dseProtocolBuilder
3233

33-
def cql(tag: String): DseCqlStatementBuilder = DseCqlStatementBuilder(tag)
34+
def cql(tag: String): DseCqlStatementBuilder[SimpleStatement] = DseCqlStatementBuilder(tag)
3435

3536
def graph(tag: String): DseGraphStatementBuilder = DseGraphStatementBuilder(tag)
3637

3738
implicit def protocolBuilder2DseProtocol(builder: DseProtocolBuilder): DseProtocol = builder.build
3839

39-
implicit def cqlRequestAttributes2ActionBuilder(builder: DseCqlAttributesBuilder): ActionBuilder = builder.build()
40+
implicit def cqlRequestAttributes2ActionBuilder(builder: DseCqlAttributesBuilder[SimpleStatement]): ActionBuilder = builder.build()
4041

4142
implicit def graphRequestAttributes2ActionBuilder(builder: DseGraphAttributesBuilder): ActionBuilder = builder.build()
4243
}

src/main/scala/com/datastax/gatling/plugin/checks/CqlChecks.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
package com.datastax.gatling.plugin.checks
88

9-
import com.datastax.driver.core.{ResultSet, Row}
9+
import com.datastax.oss.driver.api.core.cql.{ResultSet, Row}
1010
import com.datastax.gatling.plugin.response.CqlResponse
1111
import io.gatling.commons.validation.{SuccessWrapper, Validation}
1212
import io.gatling.core.check._

src/main/scala/com/datastax/gatling/plugin/checks/GenericChecks.scala

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,17 @@
66

77
package com.datastax.gatling.plugin.checks
88

9-
import com.datastax.driver.core._
9+
import com.datastax.oss.driver.api.core.cql._
10+
import com.datastax.oss.driver.api.core._
11+
import com.datastax.oss.driver.api.core.metadata._
1012
import com.datastax.gatling.plugin.response.DseResponse
1113
import io.gatling.commons.validation.{SuccessWrapper, Validation}
1214
import io.gatling.core.check.extractor.{Extractor, SingleArity}
1315
import io.gatling.core.check._
1416
import io.gatling.core.session.{Expression, ExpressionSuccessWrapper, Session}
1517

1618
import scala.collection.mutable
19+
import java.nio.ByteBuffer
1720

1821
/**
1922
* This class allows to execute checks on either CQL or Graph responses.
@@ -61,15 +64,15 @@ object GenericChecks {
6164
.toCheckBuilder
6265

6366
val queriedHost =
64-
new GenericResponseExtractor[Host](
67+
new GenericResponseExtractor[Node](
6568
"queriedHost",
6669
r => r.queriedHost())
6770
.toCheckBuilder
6871

6972
val achievedConsistencyLevel =
7073
new GenericResponseExtractor[ConsistencyLevel](
7174
"achievedConsistencyLevel",
72-
r => r.achievedConsistencyLevel())
75+
r => r.executionInfo().getStatement.getConsistencyLevel())
7376
.toCheckBuilder
7477

7578
val speculativeExecutionsExtractor =
@@ -79,13 +82,13 @@ object GenericChecks {
7982
.toCheckBuilder
8083

8184
val pagingState =
82-
new GenericResponseExtractor[PagingState](
85+
new GenericResponseExtractor[ByteBuffer](
8386
"pagingState",
8487
r => r.pagingState())
8588
.toCheckBuilder
8689

8790
val triedHosts =
88-
new GenericResponseExtractor[List[Host]](
91+
new GenericResponseExtractor[List[Node]](
8992
"triedHost",
9093
r => r.triedHosts())
9194
.toCheckBuilder
@@ -123,7 +126,6 @@ object GenericChecks {
123126
val exhausted =
124127
new GenericResponseExtractor[Boolean](
125128
"exhausted",
126-
r => r.exhausted())
129+
r => r.applied())
127130
.toCheckBuilder
128131
}
129-

src/main/scala/com/datastax/gatling/plugin/checks/GraphChecks.scala

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@
66

77
package com.datastax.gatling.plugin.checks
88

9-
import com.datastax.driver.dse.graph._
9+
import com.datastax.dse.driver.api.core.graph._
10+
import org.apache.tinkerpop.gremlin.structure.Property
1011
import com.datastax.gatling.plugin.response.GraphResponse
1112
import io.gatling.commons.validation.{SuccessWrapper, Validation}
1213
import io.gatling.core.check.extractor.{Extractor, SingleArity}
1314
import io.gatling.core.check._
1415
import io.gatling.core.session.{Expression, ExpressionSuccessWrapper, Session}
16+
import org.apache.tinkerpop.gremlin.structure._
17+
import org.apache.tinkerpop.gremlin.process.traversal.Path
1518

1619
import scala.collection.mutable
1720

@@ -89,14 +92,14 @@ object GraphChecks {
8992
.toCheckBuilder
9093

9194
def properties(column: String) =
92-
new GraphResponseExtractor[Seq[Property]](
95+
new GraphResponseExtractor[Seq[Property[String]]](
9396
"properties",
9497
r => r.getProperties(column))
9598
.toCheckBuilder
9699

97100
def vertexProperties(column: String) =
98-
new GraphResponseExtractor[Seq[Property]](
101+
new GraphResponseExtractor[Seq[Property[String]]](
99102
"vertexProperties",
100103
r => r.getVertexProperties(column))
101104
.toCheckBuilder
102-
}
105+
}

src/main/scala/com/datastax/gatling/plugin/model/DseCqlAttributes.scala

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@ package com.datastax.gatling.plugin.model
88

99
import java.nio.ByteBuffer
1010

11-
import com.datastax.driver.core.policies.RetryPolicy
12-
import com.datastax.driver.core.{ConsistencyLevel, PagingState, Statement}
11+
import com.datastax.oss.driver.api.core.retry.RetryPolicy
12+
import com.datastax.oss.driver.api.core.ConsistencyLevel
13+
import com.datastax.oss.driver.api.core.cql.Statement
1314
import com.datastax.gatling.plugin.response.{CqlResponse, DseResponse}
1415
import io.gatling.core.check.Check
1516

@@ -36,8 +37,8 @@ import io.gatling.core.check.Check
3637
* @param cqlStatements String version of the CQL statement that is sent
3738
*
3839
*/
39-
case class DseCqlAttributes(tag: String,
40-
statement: DseStatement[Statement],
40+
case class DseCqlAttributes[T](tag: String,
41+
statement: DseCqlStatement[T],
4142
cl: Option[ConsistencyLevel] = None,
4243
cqlChecks: List[Check[CqlResponse]] = List.empty,
4344
genericChecks: List[Check[DseResponse]] = List.empty,
@@ -50,5 +51,5 @@ case class DseCqlAttributes(tag: String,
5051
serialCl: Option[ConsistencyLevel] = None,
5152
fetchSize: Option[Int] = None,
5253
retryPolicy: Option[RetryPolicy] = None,
53-
pagingState: Option[PagingState] = None,
54+
pagingState: Option[ByteBuffer] = None,
5455
cqlStatements: Seq[String] = Seq.empty)

src/main/scala/com/datastax/gatling/plugin/model/DseCqlAttributesBuilder.scala

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,26 @@
66

77
package com.datastax.gatling.plugin.model
88

9-
import com.datastax.driver.core.policies.RetryPolicy
10-
import com.datastax.driver.core.{ConsistencyLevel, PagingState}
9+
import java.nio.ByteBuffer
10+
1111
import com.datastax.gatling.plugin.checks.{DseCqlCheck, GenericCheck}
1212
import com.datastax.gatling.plugin.request.CqlRequestActionBuilder
13-
import io.gatling.core.action.builder.ActionBuilder
13+
import com.datastax.oss.driver.api.core.ConsistencyLevel
14+
import com.datastax.oss.driver.api.core.retry.RetryPolicy
1415

1516

1617
/**
1718
* Request Builder for CQL Requests
1819
*
1920
* @param attr Addition Attributes
2021
*/
21-
case class DseCqlAttributesBuilder(attr: DseCqlAttributes) {
22+
case class DseCqlAttributesBuilder[T](attr: DseCqlAttributes[T]) {
2223
/**
2324
* Builds to final action to run
2425
*
2526
* @return
2627
*/
27-
def build(): CqlRequestActionBuilder = new CqlRequestActionBuilder(attr)
28+
def build(): CqlRequestActionBuilder[T] = new CqlRequestActionBuilder(attr)
2829

2930
/**
3031
* Set Consistency Level
@@ -39,8 +40,8 @@ case class DseCqlAttributesBuilder(attr: DseCqlAttributes) {
3940
*
4041
* This permission MUST be granted to the currently logged in user using the CQL statement: `GRANT PROXY.EXECUTE ON
4142
* ROLE someRole TO alice`. The user MUST be logged in with
42-
* [[com.datastax.driver.dse.auth.DsePlainTextAuthProvider]] or
43-
* [[com.datastax.driver.dse.auth.DseGSSAPIAuthProvider]]
43+
* [[com.datastax.dse.driver.internal.core.auth.DsePlainTextAuthProvider]] or
44+
* [[com.datastax.dse.driver.internal.core.auth.DseGssApiAuthProvider]]
4445
*
4546
* @param userOrRole String
4647
* @return
@@ -83,7 +84,7 @@ case class DseCqlAttributesBuilder(attr: DseCqlAttributes) {
8384

8485

8586
/**
86-
* Define the [[com.datastax.driver.core.policies.RetryPolicy]] to be used for query
87+
* Define the [[com.datastax.oss.driver.api.core.retry.RetryPolicy]] to be used for query
8788
*
8889
* @param retryPolicy DataStax drivers retry policy
8990
* @return
@@ -113,7 +114,7 @@ case class DseCqlAttributesBuilder(attr: DseCqlAttributes) {
113114
* @param pagingState CQL Paging state
114115
* @return
115116
*/
116-
def withPagingState(pagingState: PagingState) = DseCqlAttributesBuilder(attr.copy(pagingState = Some(pagingState)))
117+
def withPagingState(pagingState: ByteBuffer) = DseCqlAttributesBuilder(attr.copy(pagingState = Some(pagingState)))
117118

118119

119120
/**

src/main/scala/com/datastax/gatling/plugin/model/DseCqlStatementBuilders.scala

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66

77
package com.datastax.gatling.plugin.model
88

9-
import com.datastax.driver.core.{PreparedStatement, SimpleStatement}
109
import com.datastax.gatling.plugin._
1110
import com.datastax.gatling.plugin.utils.CqlPreparedStatementUtil
11+
import com.datastax.oss.driver.api.core.cql.{BatchableStatement, BoundStatement, PreparedStatement, SimpleStatement}
1212
import io.gatling.core.session.Expression
1313

1414
/**
@@ -20,7 +20,7 @@ import io.gatling.core.session.Expression
2020
*
2121
* @param tag Name of the CQL query to execute
2222
*/
23-
case class DseCqlStatementBuilder(tag: String) {
23+
case class DseCqlStatementBuilder[T](tag: String) {
2424

2525
/**
2626
* Execute a simple Statement built from a CQL string.
@@ -29,7 +29,7 @@ case class DseCqlStatementBuilder(tag: String) {
2929
* @return
3030
*/
3131
@deprecated("Replaced by executeStatement(String)")
32-
def executeCql(query: String): DseCqlAttributesBuilder =
32+
def executeCql(query: String): DseCqlAttributesBuilder[SimpleStatement] =
3333
executeStatement(query)
3434

3535
/**
@@ -38,21 +38,21 @@ case class DseCqlStatementBuilder(tag: String) {
3838
* @param query Simple string query
3939
* @return
4040
*/
41-
def executeStatement(query: String): DseCqlAttributesBuilder =
42-
executeStatement(new SimpleStatement(query))
41+
def executeStatement(query: String): DseCqlAttributesBuilder[SimpleStatement] =
42+
executeStatement(SimpleStatement.newInstance(query))
4343

4444
/**
4545
* Execute a Simple Statement
4646
*
4747
* @param statement SimpleStatement
4848
* @return
4949
*/
50-
def executeStatement(statement: SimpleStatement): DseCqlAttributesBuilder =
50+
def executeStatement(statement: SimpleStatement): DseCqlAttributesBuilder[SimpleStatement] =
5151
DseCqlAttributesBuilder(
5252
DseCqlAttributes(
5353
tag,
5454
DseCqlSimpleStatement(statement),
55-
cqlStatements = Seq(statement.getQueryString))
55+
cqlStatements = Seq(statement.getQuery))
5656
)
5757

5858
/**
@@ -90,7 +90,7 @@ case class DseCqlStatementBuilder(tag: String) {
9090
*
9191
* @param preparedStatement CQL Prepared statement with named parameters
9292
*/
93-
def executeNamed(preparedStatement: PreparedStatement): DseCqlAttributesBuilder =
93+
def executeNamed(preparedStatement: PreparedStatement): DseCqlAttributesBuilder[BoundStatement] =
9494
DsePreparedCqlStatementBuilder(tag, preparedStatement).withSessionParams()
9595

9696
/**
@@ -102,7 +102,7 @@ case class DseCqlStatementBuilder(tag: String) {
102102
DseCqlAttributes(
103103
tag,
104104
DseCqlBoundBatchStatement(CqlPreparedStatementUtil, preparedStatements),
105-
cqlStatements = preparedStatements.map(_.getQueryString)
105+
cqlStatements = preparedStatements.map(_.getQuery)
106106
)
107107
)
108108

@@ -113,14 +113,14 @@ case class DseCqlStatementBuilder(tag: String) {
113113
* @param payloadSessionKey Session key of the payload from session/feed
114114
* @return
115115
*/
116-
def executeCustomPayload(statement: SimpleStatement, payloadSessionKey: String): DseCqlAttributesBuilder =
116+
def executeCustomPayload(statement: SimpleStatement, payloadSessionKey: String): DseCqlAttributesBuilder[SimpleStatement] =
117117
DseCqlAttributesBuilder(
118118
DseCqlAttributes(
119119
tag,
120120
DseCqlCustomPayloadStatement(statement, payloadSessionKey),
121-
cqlStatements = Seq(statement.getQueryString)))
121+
cqlStatements = Seq(statement.getQuery)))
122122

123-
def executePreparedFromSession(key: String): DseCqlAttributesBuilder =
123+
def executePreparedFromSession(key: String): DseCqlAttributesBuilder[SimpleStatement] =
124124
DseCqlAttributesBuilder(
125125
DseCqlAttributes(
126126
tag,
@@ -140,25 +140,25 @@ case class DsePreparedCqlStatementBuilder(tag: String, prepared: PreparedStateme
140140
*
141141
* @return
142142
*/
143-
def withSessionParams(): DseCqlAttributesBuilder =
143+
def withSessionParams(): DseCqlAttributesBuilder[BoundStatement] =
144144
DseCqlAttributesBuilder(
145145
DseCqlAttributes(
146146
tag,
147147
DseCqlBoundStatementNamed(CqlPreparedStatementUtil, prepared),
148-
cqlStatements = Seq(prepared.getQueryString)))
148+
cqlStatements = Seq(prepared.getQuery)))
149149

150150
/**
151151
* Bind Gatling Session Values to CQL Prepared Statement
152152
*
153153
* @param params Gatling Session variables
154154
* @return
155155
*/
156-
def withParams(params: Expression[AnyRef]*): DseCqlAttributesBuilder =
156+
def withParams(params: Expression[AnyRef]*): DseCqlAttributesBuilder[BoundStatement] =
157157
DseCqlAttributesBuilder(
158158
DseCqlAttributes(
159159
tag,
160160
DseCqlBoundStatementWithPassedParams(CqlPreparedStatementUtil, prepared, params: _*),
161-
cqlStatements = Seq(prepared.getQueryString))
161+
cqlStatements = Seq(prepared.getQuery))
162162
)
163163

164164
/**
@@ -172,6 +172,6 @@ case class DsePreparedCqlStatementBuilder(tag: String, prepared: PreparedStateme
172172
DseCqlAttributes(
173173
tag,
174174
DseCqlBoundStatementWithParamList(CqlPreparedStatementUtil, prepared, sessionKeys),
175-
cqlStatements = Seq(prepared.getQueryString))
175+
cqlStatements = Seq(prepared.getQuery))
176176
)
177177
}

0 commit comments

Comments
 (0)