Skip to content

Commit 52a1150

Browse files
authored
CXX-2637 Remove use of collStats and currentOp (#960)
* sync specification tests to commit 6632b7606e74c6e83ee2d80b7571f55485c7ff33 * remove runCommand Example 2 The example removed from DRIVERS-448. * replace currentOp command with $currentOp aggregation stage * remove check for server version 3.5.8 C driver 1.21.0 requires server version 3.6 (minWireVersion=6) C++ driver 3.7.x requirees C driver 1.22.1 or higher.
1 parent 803386f commit 52a1150

File tree

3 files changed

+25
-51
lines changed

3 files changed

+25
-51
lines changed

data/client_side_encryption/legacy/bypassedCommand.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@
7878
]
7979
},
8080
{
81-
"description": "current op is not bypassed",
81+
"description": "kill op is not bypassed",
8282
"clientOptions": {
8383
"autoEncryptOpts": {
8484
"kmsProviders": {
@@ -90,14 +90,15 @@
9090
{
9191
"name": "runCommand",
9292
"object": "database",
93-
"command_name": "currentOp",
93+
"command_name": "killOp",
9494
"arguments": {
9595
"command": {
96-
"currentOp": 1
96+
"killOp": 1,
97+
"op": 1234
9798
}
9899
},
99100
"result": {
100-
"errorContains": "command not supported for auto encryption: currentOp"
101+
"errorContains": "command not supported for auto encryption: killOp"
101102
}
102103
}
103104
]

examples/mongocxx/mongodb.com/runcommand_examples.cpp

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,6 @@ void runcommand_examples(mongocxx::database& db) {
3333
throw std::logic_error("buildInfo command failed in runCommand example 1");
3434
}
3535
}
36-
37-
{
38-
using namespace bsoncxx::builder::basic;
39-
// drop and recreate dummy data so command succeeds
40-
db["restaurants"].drop();
41-
db["restaurants"].insert_one(make_document(kvp("name", "Noodle-Sushi")));
42-
43-
// Start runCommand Example 2
44-
using namespace bsoncxx::builder::basic;
45-
auto buildInfo = db.run_command(make_document(kvp("collStats", "restaurants")));
46-
// End runCommand Example 1
47-
48-
if (buildInfo.view()["ok"].get_double() != double{1}) {
49-
throw std::logic_error("buildInfo command failed in runCommand example 2");
50-
}
51-
}
5236
}
5337

5438
int main() {

src/mongocxx/test/client.cpp

Lines changed: 20 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -377,15 +377,9 @@ TEST_CASE("integration tests for client metadata handshake feature") {
377377

378378
auto run_test = [app_name](const client& client) {
379379
mongocxx::database db = client["admin"];
380-
auto current_op = db.run_command(make_document(kvp("currentOp", 1)));
381-
auto current_op_view = current_op.view();
382-
383-
auto in_prog = current_op_view["inprog"].get_array().value;
380+
auto cursor = db.aggregate(pipeline().current_op(make_document()));
384381
bool found_op = false;
385-
386-
for (auto&& it : in_prog) {
387-
auto op_view = it.get_document().view();
388-
382+
for (auto&& op_view : cursor) {
389383
if (!op_view["appName"] ||
390384
op_view["appName"].get_string().value != stdx::string_view(app_name)) {
391385
continue;
@@ -395,29 +389,24 @@ TEST_CASE("integration tests for client metadata handshake feature") {
395389

396390
std::string server_version = test_util::get_server_version(client);
397391

398-
// clientMetadata not returned until 3.5.8.
399-
if (test_util::compare_versions(server_version, "3.5.8") >= 0) {
400-
REQUIRE(op_view["clientMetadata"]);
401-
auto metadata = op_view["clientMetadata"].get_document();
402-
auto metadata_view = metadata.view();
403-
404-
REQUIRE(metadata_view["application"]);
405-
auto application = metadata_view["application"].get_document();
406-
REQUIRE(application.view()["name"].get_string().value ==
407-
stdx::string_view(app_name));
408-
409-
REQUIRE(metadata_view["driver"]);
410-
auto driver = metadata_view["driver"].get_document();
411-
auto driver_view = driver.view();
412-
REQUIRE(driver_view["name"].get_string().value ==
413-
stdx::string_view{"mongoc / mongocxx"});
414-
auto version =
415-
bsoncxx::string::to_string(driver_view["version"].get_string().value);
416-
REQUIRE(version.find(MONGOCXX_VERSION_STRING) != std::string::npos);
417-
418-
REQUIRE(metadata_view["os"]);
419-
REQUIRE(metadata_view["os"].get_document().view()["type"]);
420-
}
392+
REQUIRE(op_view["clientMetadata"]);
393+
auto metadata = op_view["clientMetadata"].get_document();
394+
auto metadata_view = metadata.view();
395+
396+
REQUIRE(metadata_view["application"]);
397+
auto application = metadata_view["application"].get_document();
398+
REQUIRE(application.view()["name"].get_string().value == stdx::string_view(app_name));
399+
400+
REQUIRE(metadata_view["driver"]);
401+
auto driver = metadata_view["driver"].get_document();
402+
auto driver_view = driver.view();
403+
REQUIRE(driver_view["name"].get_string().value ==
404+
stdx::string_view{"mongoc / mongocxx"});
405+
auto version = bsoncxx::string::to_string(driver_view["version"].get_string().value);
406+
REQUIRE(version.find(MONGOCXX_VERSION_STRING) != std::string::npos);
407+
408+
REQUIRE(metadata_view["os"]);
409+
REQUIRE(metadata_view["os"].get_document().view()["type"]);
421410

422411
break;
423412
}

0 commit comments

Comments
 (0)