17
17
18
18
import static io .opentelemetry .proto .trace .v1 .Span .SpanKind .SPAN_KIND_CLIENT ;
19
19
import static org .assertj .core .api .Assertions .assertThat ;
20
- import static org .junit .Assert .assertThat ;
21
20
22
21
import io .opentelemetry .proto .common .v1 .KeyValue ;
23
22
import io .opentelemetry .proto .metrics .v1 .ExponentialHistogramDataPoint ;
31
30
32
31
public class JdbcContractTestBase extends ContractTestBase {
33
32
protected static final String DB_NAME = "testdb" ;
34
- protected static final String DB_USER = "sa" ;
33
+ protected static final String CREATE_DB_NAME = "testdb2" ;
34
+ protected static final String DB_USER = "root" ;
35
35
protected static final String DB_PASSWORD = "password" ;
36
- protected static final String DB_OPERATION = "SELECT" ;
36
+ protected static final String DB_SELECT_OPERATION = "SELECT" ;
37
+ protected static final String DB_CREATE_DATABASE_OPERATION = "CREATE DATABASE" ;
37
38
protected static final String DB_RESOURCE_TYPE = "DB::Connection" ;
38
39
39
40
@ Override
@@ -130,20 +131,29 @@ protected void assertSemanticConventionsSpanAttributes(
130
131
.satisfiesOnlyOnce (
131
132
rss -> {
132
133
assertThat (rss .getSpan ().getKind ()).isEqualTo (SPAN_KIND_CLIENT );
133
- assertThat (rss .getSpan ().getName ())
134
- .isEqualTo (String .format ("%s %s.%s" , dbOperation , dbName , dbSqlTable ));
135
134
assertThat (rss .getSpan ().getStatus ().getCode ().toString ()).isEqualTo (otelStatusCode );
135
+ assertSemanticConventionForOperation (rss , dbOperation , dbName , dbSqlTable );
136
136
var attributesList = rss .getSpan ().getAttributesList ();
137
137
assertSemanticConventionsAttributes (
138
- attributesList , dbSqlTable , dbSystem , dbOperation , dbUser , dbName , jdbcUrl );
138
+ attributesList , dbSystem , dbUser , dbName , jdbcUrl );
139
+ assertSemanticConventionsAttributesForOperation (
140
+ attributesList , dbOperation , dbSqlTable );
139
141
});
140
142
}
141
143
144
+ private void assertSemanticConventionForOperation (
145
+ ResourceScopeSpan rss , String dbOperation , String dbName , String dbSqlTable ) {
146
+ if (dbOperation .equals (DB_CREATE_DATABASE_OPERATION )) {
147
+ assertThat (rss .getSpan ().getName ()).isEqualTo (String .format ("%s" , dbName ));
148
+ } else if (dbOperation .equals (DB_SELECT_OPERATION )) {
149
+ assertThat (rss .getSpan ().getName ())
150
+ .isEqualTo (String .format ("%s %s.%s" , dbOperation , dbName , dbSqlTable ));
151
+ }
152
+ }
153
+
142
154
protected void assertSemanticConventionsAttributes (
143
155
List <KeyValue > attributesList ,
144
- String dbSqlTable ,
145
156
String dbSystem ,
146
- String dbOperation ,
147
157
String dbUser ,
148
158
String dbName ,
149
159
String jdbcUrl ) {
@@ -167,35 +177,51 @@ protected void assertSemanticConventionsAttributes(
167
177
assertThat (attribute .getKey ()).isEqualTo (SemanticConventionsConstants .DB_NAME );
168
178
assertThat (attribute .getValue ().getStringValue ()).isEqualTo (dbName );
169
179
})
170
- .satisfiesOnlyOnce (
171
- attribute -> {
172
- assertThat (attribute .getKey ()).isEqualTo (SemanticConventionsConstants .DB_SQL_TABLE );
173
- assertThat (attribute .getValue ().getStringValue ()).isEqualTo (dbSqlTable );
174
- })
175
- .satisfiesOnlyOnce (
176
- attribute -> {
177
- assertThat (attribute .getKey ()).isEqualTo (SemanticConventionsConstants .DB_STATEMENT );
178
- assertThat (attribute .getValue ().getStringValue ())
179
- .isEqualTo (
180
- String .format ("%s count(*) from %s" , dbOperation .toLowerCase (), dbSqlTable ));
181
- })
182
180
.satisfiesOnlyOnce (
183
181
attribute -> {
184
182
assertThat (attribute .getKey ()).isEqualTo (SemanticConventionsConstants .DB_USER );
185
183
assertThat (attribute .getValue ().getStringValue ()).isEqualTo (dbUser );
186
184
})
187
- .satisfiesOnlyOnce (
188
- attribute -> {
189
- assertThat (attribute .getKey ()).isEqualTo (SemanticConventionsConstants .DB_OPERATION );
190
- assertThat (attribute .getValue ().getStringValue ()).isEqualTo (dbOperation );
191
- })
192
185
.satisfiesOnlyOnce (
193
186
attribute -> {
194
187
assertThat (attribute .getKey ()).isEqualTo (SemanticConventionsConstants .DB_SYSTEM );
195
188
assertThat (attribute .getValue ().getStringValue ()).isEqualTo (dbSystem );
196
189
});
197
190
}
198
191
192
+ private void assertSemanticConventionsAttributesForOperation (
193
+ List <KeyValue > attributesList , String dbOperation , String dbSqlTable ) {
194
+ if (dbOperation .equals (DB_CREATE_DATABASE_OPERATION )) {
195
+ assertThat (attributesList )
196
+ .satisfiesOnlyOnce (
197
+ attribute -> {
198
+ assertThat (attribute .getKey ()).isEqualTo (SemanticConventionsConstants .DB_STATEMENT );
199
+ assertThat (attribute .getValue ().getStringValue ())
200
+ .isEqualTo (String .format ("%s %s" , dbOperation .toLowerCase (), CREATE_DB_NAME ));
201
+ });
202
+ } else if (dbOperation .equals (DB_SELECT_OPERATION )) {
203
+ assertThat (attributesList )
204
+ .satisfiesOnlyOnce (
205
+ attribute -> {
206
+ assertThat (attribute .getKey ()).isEqualTo (SemanticConventionsConstants .DB_SQL_TABLE );
207
+ assertThat (attribute .getValue ().getStringValue ()).isEqualTo (dbSqlTable );
208
+ })
209
+ .satisfiesOnlyOnce (
210
+ attribute -> {
211
+ assertThat (attribute .getKey ()).isEqualTo (SemanticConventionsConstants .DB_STATEMENT );
212
+ assertThat (attribute .getValue ().getStringValue ())
213
+ .isEqualTo (
214
+ String .format (
215
+ "%s count(*) from %s" , dbOperation .toLowerCase (), dbSqlTable ));
216
+ })
217
+ .satisfiesOnlyOnce (
218
+ attribute -> {
219
+ assertThat (attribute .getKey ()).isEqualTo (SemanticConventionsConstants .DB_OPERATION );
220
+ assertThat (attribute .getValue ().getStringValue ()).isEqualTo (dbOperation );
221
+ });
222
+ }
223
+ }
224
+
199
225
protected void assertMetricAttributes (
200
226
List <ResourceScopeMetric > resourceScopeMetrics ,
201
227
String method ,
@@ -292,7 +318,7 @@ protected void assertSuccess(
292
318
String jdbcUrl ,
293
319
String type ,
294
320
String identifier ) {
295
- var path = "success" ;
321
+ var path = "success/" + dbOperation ;
296
322
var method = "GET" ;
297
323
var otelStatusCode = "STATUS_CODE_UNSET" ;
298
324
var dbSqlTable = "employee" ;
@@ -351,7 +377,7 @@ protected void assertFault(
351
377
String jdbcUrl ,
352
378
String type ,
353
379
String identifier ) {
354
- var path = "fault" ;
380
+ var path = "fault/" + dbOperation ;
355
381
var method = "GET" ;
356
382
var otelStatusCode = "STATUS_CODE_ERROR" ;
357
383
var dbSqlTable = "userrr" ;
0 commit comments