Skip to content

Commit f43b2ce

Browse files
committed
Set ODBC handles as test fixture fields
1 parent f22bee7 commit f43b2ce

12 files changed

Lines changed: 1312 additions & 1248 deletions

cpp/src/arrow/flight/sql/odbc/tests/columns_test.cc

Lines changed: 265 additions & 264 deletions
Large diffs are not rendered by default.

cpp/src/arrow/flight/sql/odbc/tests/connection_attr_test.cc

Lines changed: 76 additions & 72 deletions
Large diffs are not rendered by default.

cpp/src/arrow/flight/sql/odbc/tests/connection_info_test.cc

Lines changed: 171 additions & 169 deletions
Large diffs are not rendered by default.

cpp/src/arrow/flight/sql/odbc/tests/connection_test.cc

Lines changed: 50 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ TYPED_TEST(ConnectionTest, TestSQLGetEnvAttrOutputNTS) {
155155
SQLINTEGER output_nts;
156156

157157
ASSERT_EQ(SQL_SUCCESS,
158-
SQLGetEnvAttr(env, SQL_ATTR_OUTPUT_NTS, &output_nts, 0, nullptr));
158+
SQLGetEnvAttr(this->env, SQL_ATTR_OUTPUT_NTS, &output_nts, 0, nullptr));
159159

160160
ASSERT_EQ(SQL_TRUE, output_nts);
161161
}
@@ -165,7 +165,8 @@ TYPED_TEST(ConnectionTest, DISABLED_TestSQLGetEnvAttrGetLength) {
165165
// Windows. Windows driver manager ignores the length pointer.
166166
// This test case can be potentially used on macOS/Linux
167167
SQLINTEGER length;
168-
ASSERT_EQ(SQL_SUCCESS, SQLGetEnvAttr(env, SQL_ATTR_ODBC_VERSION, nullptr, 0, &length));
168+
ASSERT_EQ(SQL_SUCCESS,
169+
SQLGetEnvAttr(this->env, SQL_ATTR_ODBC_VERSION, nullptr, 0, &length));
169170

170171
EXPECT_EQ(sizeof(SQLINTEGER), length);
171172
}
@@ -174,7 +175,8 @@ TYPED_TEST(ConnectionTest, DISABLED_TestSQLGetEnvAttrNullValuePointer) {
174175
// Test is disabled because call to SQLGetEnvAttr is handled by the driver manager on
175176
// Windows. The Windows driver manager doesn't error out when null pointer is passed.
176177
// This test case can be potentially used on macOS/Linux
177-
ASSERT_EQ(SQL_ERROR, SQLGetEnvAttr(env, SQL_ATTR_ODBC_VERSION, nullptr, 0, nullptr));
178+
ASSERT_EQ(SQL_ERROR,
179+
SQLGetEnvAttr(this->env, SQL_ATTR_ODBC_VERSION, nullptr, 0, nullptr));
178180
}
179181

180182
TEST(SQLSetEnvAttr, TestSQLSetEnvAttrOutputNTSValid) {
@@ -227,10 +229,10 @@ TYPED_TEST(ConnectionHandleTest, TestSQLDriverConnect) {
227229

228230
// Connecting to ODBC server.
229231
ASSERT_EQ(SQL_SUCCESS,
230-
SQLDriverConnect(conn, NULL, &connect_str0[0],
232+
SQLDriverConnect(this->conn, NULL, &connect_str0[0],
231233
static_cast<SQLSMALLINT>(connect_str0.size()), out_str,
232234
kOdbcBufferSize, &out_str_len, SQL_DRIVER_NOPROMPT))
233-
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, conn);
235+
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, this->conn);
234236

235237
// Check that out_str has same content as connect_str
236238
std::string out_connection_string = ODBC::SqlWcharToString(out_str, out_str_len);
@@ -242,8 +244,8 @@ TYPED_TEST(ConnectionHandleTest, TestSQLDriverConnect) {
242244
ASSERT_TRUE(CompareConnPropertyMap(out_properties, in_properties));
243245

244246
// Disconnect from ODBC
245-
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(conn))
246-
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, conn);
247+
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(this->conn))
248+
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, this->conn);
247249
}
248250

249251
TYPED_TEST(ConnectionHandleTest, TestSQLDriverConnectDsn) {
@@ -269,17 +271,17 @@ TYPED_TEST(ConnectionHandleTest, TestSQLDriverConnectDsn) {
269271

270272
// Connecting to ODBC server.
271273
ASSERT_EQ(SQL_SUCCESS,
272-
SQLDriverConnect(conn, NULL, &connect_str0[0],
274+
SQLDriverConnect(this->conn, NULL, &connect_str0[0],
273275
static_cast<SQLSMALLINT>(connect_str0.size()), out_str,
274276
kOdbcBufferSize, &out_str_len, SQL_DRIVER_NOPROMPT))
275-
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, conn);
277+
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, this->conn);
276278

277279
// Remove DSN
278280
ASSERT_TRUE(UnregisterDsn(wdsn));
279281

280282
// Disconnect from ODBC
281-
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(conn))
282-
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, conn);
283+
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(this->conn))
284+
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, this->conn);
283285
}
284286

285287
TYPED_TEST(ConnectionHandleTest, TestSQLConnect) {
@@ -301,17 +303,17 @@ TYPED_TEST(ConnectionHandleTest, TestSQLConnect) {
301303

302304
// Connecting to ODBC server. Empty uid and pwd should be ignored.
303305
ASSERT_EQ(SQL_SUCCESS,
304-
SQLConnect(conn, dsn0.data(), static_cast<SQLSMALLINT>(dsn0.size()),
306+
SQLConnect(this->conn, dsn0.data(), static_cast<SQLSMALLINT>(dsn0.size()),
305307
uid0.data(), static_cast<SQLSMALLINT>(uid0.size()), pwd0.data(),
306308
static_cast<SQLSMALLINT>(pwd0.size())))
307-
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, conn);
309+
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, this->conn);
308310

309311
// Remove DSN
310312
ASSERT_TRUE(UnregisterDsn(wdsn));
311313

312314
// Disconnect from ODBC
313-
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(conn))
314-
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, conn);
315+
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(this->conn))
316+
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, this->conn);
315317
}
316318

317319
TEST_F(ConnectionRemoteTest, TestSQLConnectInputUidPwd) {
@@ -342,17 +344,17 @@ TEST_F(ConnectionRemoteTest, TestSQLConnectInputUidPwd) {
342344

343345
// Connecting to ODBC server.
344346
ASSERT_EQ(SQL_SUCCESS,
345-
SQLConnect(conn, dsn0.data(), static_cast<SQLSMALLINT>(dsn0.size()),
347+
SQLConnect(this->conn, dsn0.data(), static_cast<SQLSMALLINT>(dsn0.size()),
346348
uid0.data(), static_cast<SQLSMALLINT>(uid0.size()), pwd0.data(),
347349
static_cast<SQLSMALLINT>(pwd0.size())))
348-
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, conn);
350+
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, this->conn);
349351

350352
// Remove DSN
351353
ASSERT_TRUE(UnregisterDsn(wdsn));
352354

353355
// Disconnect from ODBC
354-
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(conn))
355-
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, conn);
356+
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(this->conn))
357+
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, this->conn);
356358
}
357359

358360
TEST_F(ConnectionRemoteTest, TestSQLConnectInvalidUid) {
@@ -384,11 +386,11 @@ TEST_F(ConnectionRemoteTest, TestSQLConnectInvalidUid) {
384386
// UID specified in DSN will take precedence,
385387
// so connection still fails despite passing valid uid in SQLConnect call
386388
ASSERT_EQ(SQL_ERROR,
387-
SQLConnect(conn, dsn0.data(), static_cast<SQLSMALLINT>(dsn0.size()),
389+
SQLConnect(this->conn, dsn0.data(), static_cast<SQLSMALLINT>(dsn0.size()),
388390
uid0.data(), static_cast<SQLSMALLINT>(uid0.size()), pwd0.data(),
389391
static_cast<SQLSMALLINT>(pwd0.size())));
390392

391-
VerifyOdbcErrorState(SQL_HANDLE_DBC, conn, kErrorState28000);
393+
VerifyOdbcErrorState(SQL_HANDLE_DBC, this->conn, kErrorState28000);
392394

393395
// Remove DSN
394396
ASSERT_TRUE(UnregisterDsn(wdsn));
@@ -416,17 +418,17 @@ TEST_F(ConnectionRemoteTest, TestSQLConnectDSNPrecedence) {
416418

417419
// Connecting to ODBC server.
418420
ASSERT_EQ(SQL_SUCCESS,
419-
SQLConnect(conn, dsn0.data(), static_cast<SQLSMALLINT>(dsn0.size()),
421+
SQLConnect(this->conn, dsn0.data(), static_cast<SQLSMALLINT>(dsn0.size()),
420422
uid0.data(), static_cast<SQLSMALLINT>(uid0.size()), pwd0.data(),
421423
static_cast<SQLSMALLINT>(pwd0.size())))
422-
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, conn);
424+
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, this->conn);
423425

424426
// Remove DSN
425427
ASSERT_TRUE(UnregisterDsn(wdsn));
426428

427429
// Disconnect from ODBC
428-
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(conn))
429-
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, conn);
430+
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(this->conn))
431+
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, this->conn);
430432
}
431433

432434
TEST_F(ConnectionRemoteTest, TestSQLDriverConnectInvalidUid) {
@@ -442,29 +444,29 @@ TEST_F(ConnectionRemoteTest, TestSQLDriverConnectInvalidUid) {
442444

443445
// Connecting to ODBC server.
444446
ASSERT_EQ(SQL_ERROR,
445-
SQLDriverConnect(conn, NULL, &connect_str0[0],
447+
SQLDriverConnect(this->conn, NULL, &connect_str0[0],
446448
static_cast<SQLSMALLINT>(connect_str0.size()), out_str,
447449
kOdbcBufferSize, &out_str_len, SQL_DRIVER_NOPROMPT));
448450

449-
VerifyOdbcErrorState(SQL_HANDLE_DBC, conn, kErrorState28000);
451+
VerifyOdbcErrorState(SQL_HANDLE_DBC, this->conn, kErrorState28000);
450452

451453
std::string out_connection_string = ODBC::SqlWcharToString(out_str, out_str_len);
452454
ASSERT_TRUE(out_connection_string.empty());
453455
}
454456

455457
TYPED_TEST(ConnectionHandleTest, TestSQLDisconnectWithoutConnection) {
456458
// Attempt to disconnect without a connection, expect to fail
457-
ASSERT_EQ(SQL_ERROR, SQLDisconnect(conn));
459+
ASSERT_EQ(SQL_ERROR, SQLDisconnect(this->conn));
458460

459461
// Expect ODBC driver manager to return error state
460-
VerifyOdbcErrorState(SQL_HANDLE_DBC, conn, kErrorState08003);
462+
VerifyOdbcErrorState(SQL_HANDLE_DBC, this->conn, kErrorState08003);
461463
}
462464

463465
TYPED_TEST(ConnectionTest, TestSQLAllocFreeStmt) {
464466
SQLHSTMT statement;
465467

466468
// Allocate a statement using alloc statement
467-
ASSERT_EQ(SQL_SUCCESS, SQLAllocStmt(conn, &statement));
469+
ASSERT_EQ(SQL_SUCCESS, SQLAllocStmt(this->conn, &statement));
468470

469471
// Close statement handle
470472
ASSERT_EQ(SQL_SUCCESS, SQLFreeStmt(statement, SQL_CLOSE));
@@ -487,23 +489,23 @@ TYPED_TEST(ConnectionHandleTest, TestCloseConnectionWithOpenStatement) {
487489

488490
// Connecting to ODBC server.
489491
ASSERT_EQ(SQL_SUCCESS,
490-
SQLDriverConnect(conn, NULL, &connect_str0[0],
492+
SQLDriverConnect(this->conn, NULL, &connect_str0[0],
491493
static_cast<SQLSMALLINT>(connect_str0.size()), out_str,
492494
kOdbcBufferSize, &out_str_len, SQL_DRIVER_NOPROMPT))
493-
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, conn);
495+
<< GetOdbcErrorMessage(SQL_HANDLE_DBC, this->conn);
494496

495497
// Allocate a statement using alloc statement
496-
ASSERT_EQ(SQL_SUCCESS, SQLAllocStmt(conn, &statement));
498+
ASSERT_EQ(SQL_SUCCESS, SQLAllocStmt(this->conn, &statement));
497499

498500
// Disconnect from ODBC without closing the statement first
499-
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(conn));
501+
ASSERT_EQ(SQL_SUCCESS, SQLDisconnect(this->conn));
500502
}
501503

502504
TYPED_TEST(ConnectionTest, TestSQLAllocFreeDesc) {
503505
SQLHDESC descriptor;
504506

505507
// Allocate a descriptor using alloc handle
506-
ASSERT_EQ(SQL_SUCCESS, SQLAllocHandle(SQL_HANDLE_DESC, conn, &descriptor));
508+
ASSERT_EQ(SQL_SUCCESS, SQLAllocHandle(SQL_HANDLE_DESC, this->conn, &descriptor));
507509

508510
// Free descriptor handle
509511
ASSERT_EQ(SQL_SUCCESS, SQLFreeHandle(SQL_HANDLE_DESC, descriptor));
@@ -513,37 +515,37 @@ TYPED_TEST(ConnectionTest, TestSQLSetStmtAttrDescriptor) {
513515
SQLHDESC apd_descriptor, ard_descriptor;
514516

515517
// Allocate an APD descriptor using alloc handle
516-
ASSERT_EQ(SQL_SUCCESS, SQLAllocHandle(SQL_HANDLE_DESC, conn, &apd_descriptor));
518+
ASSERT_EQ(SQL_SUCCESS, SQLAllocHandle(SQL_HANDLE_DESC, this->conn, &apd_descriptor));
517519

518520
// Allocate an ARD descriptor using alloc handle
519-
ASSERT_EQ(SQL_SUCCESS, SQLAllocHandle(SQL_HANDLE_DESC, conn, &ard_descriptor));
521+
ASSERT_EQ(SQL_SUCCESS, SQLAllocHandle(SQL_HANDLE_DESC, this->conn, &ard_descriptor));
520522

521523
// Save implicitly allocated internal APD and ARD descriptor pointers
522524
SQLPOINTER internal_apd, internal_ard = nullptr;
523525

524-
EXPECT_EQ(SQL_SUCCESS, SQLGetStmtAttr(stmt, SQL_ATTR_APP_PARAM_DESC, &internal_apd,
525-
sizeof(internal_apd), 0));
526+
EXPECT_EQ(SQL_SUCCESS, SQLGetStmtAttr(this->stmt, SQL_ATTR_APP_PARAM_DESC,
527+
&internal_apd, sizeof(internal_apd), 0));
526528

527-
EXPECT_EQ(SQL_SUCCESS, SQLGetStmtAttr(stmt, SQL_ATTR_APP_ROW_DESC, &internal_ard,
529+
EXPECT_EQ(SQL_SUCCESS, SQLGetStmtAttr(this->stmt, SQL_ATTR_APP_ROW_DESC, &internal_ard,
528530
sizeof(internal_ard), 0));
529531

530532
// Set APD descriptor to explicitly allocated handle
531-
EXPECT_EQ(SQL_SUCCESS, SQLSetStmtAttr(stmt, SQL_ATTR_APP_PARAM_DESC,
533+
EXPECT_EQ(SQL_SUCCESS, SQLSetStmtAttr(this->stmt, SQL_ATTR_APP_PARAM_DESC,
532534
reinterpret_cast<SQLPOINTER>(apd_descriptor), 0));
533535

534536
// Set ARD descriptor to explicitly allocated handle
535-
EXPECT_EQ(SQL_SUCCESS, SQLSetStmtAttr(stmt, SQL_ATTR_APP_ROW_DESC,
537+
EXPECT_EQ(SQL_SUCCESS, SQLSetStmtAttr(this->stmt, SQL_ATTR_APP_ROW_DESC,
536538
reinterpret_cast<SQLPOINTER>(ard_descriptor), 0));
537539

538540
// Verify APD and ARD descriptors are set to explicitly allocated pointers
539541
SQLPOINTER value = nullptr;
540-
EXPECT_EQ(SQL_SUCCESS,
541-
SQLGetStmtAttr(stmt, SQL_ATTR_APP_PARAM_DESC, &value, sizeof(value), 0));
542+
EXPECT_EQ(SQL_SUCCESS, SQLGetStmtAttr(this->stmt, SQL_ATTR_APP_PARAM_DESC, &value,
543+
sizeof(value), 0));
542544

543545
EXPECT_EQ(apd_descriptor, value);
544546

545547
EXPECT_EQ(SQL_SUCCESS,
546-
SQLGetStmtAttr(stmt, SQL_ATTR_APP_ROW_DESC, &value, sizeof(value), 0));
548+
SQLGetStmtAttr(this->stmt, SQL_ATTR_APP_ROW_DESC, &value, sizeof(value), 0));
547549

548550
EXPECT_EQ(ard_descriptor, value);
549551

@@ -555,13 +557,13 @@ TYPED_TEST(ConnectionTest, TestSQLSetStmtAttrDescriptor) {
555557
// Verify APD and ARD descriptors has been reverted to implicit descriptors
556558
value = nullptr;
557559

558-
EXPECT_EQ(SQL_SUCCESS,
559-
SQLGetStmtAttr(stmt, SQL_ATTR_APP_PARAM_DESC, &value, sizeof(value), 0));
560+
EXPECT_EQ(SQL_SUCCESS, SQLGetStmtAttr(this->stmt, SQL_ATTR_APP_PARAM_DESC, &value,
561+
sizeof(value), 0));
560562

561563
EXPECT_EQ(internal_apd, value);
562564

563565
EXPECT_EQ(SQL_SUCCESS,
564-
SQLGetStmtAttr(stmt, SQL_ATTR_APP_ROW_DESC, &value, sizeof(value), 0));
566+
SQLGetStmtAttr(this->stmt, SQL_ATTR_APP_ROW_DESC, &value, sizeof(value), 0));
565567

566568
EXPECT_EQ(internal_ard, value);
567569
}

0 commit comments

Comments
 (0)