Repository navigation
TOOLS-4263 Convert the last two qa-test JS tests to Go and remove the qa-tests CI - #1164
Draft
Conversation
This was referenced Aug 25, 2026
Collaborator
Author
This was referenced Aug 25, 2026
autarch
force-pushed
the
08-24-tools-4263_convert_the_last_two_js_tests_to_go_and_remove_the_qa-tests_ci
branch
from
August 25, 2026 20:10
1a4b896 to
c4dfe34
Compare
autarch
force-pushed
the
08-24-tools-4263_convert_the_users_and_roles_js_tests_to_go
branch
from
August 25, 2026 20:10
3832c09 to
83e29c4
Compare
autarch
force-pushed
the
08-24-tools-4263_convert_the_last_two_js_tests_to_go_and_remove_the_qa-tests_ci
branch
from
August 25, 2026 20:18
c4dfe34 to
ed0de3c
Compare
autarch
force-pushed
the
08-24-tools-4263_convert_the_last_two_js_tests_to_go_and_remove_the_qa-tests_ci
branch
from
August 26, 2026 18:18
ed0de3c to
e33d81a
Compare
autarch
force-pushed
the
08-24-tools-4263_convert_the_last_two_js_tests_to_go_and_remove_the_qa-tests_ci
branch
2 times, most recently
from
August 31, 2026 20:49
a12a3a3 to
5a2487a
Compare
autarch
force-pushed
the
08-24-tools-4263_convert_the_users_and_roles_js_tests_to_go
branch
from
August 31, 2026 20:49
3c3b771 to
295c223
Compare
- `test/qa-tests/jstests/files/mongofiles_delete.js` -> `mongofiles/delete_test.go` - `TestDeleteRemovesEveryVersionOfAFilename`. A put does not replace an earlier file of the same name unless asked to, so ten puts of one name leave ten GridFS files; the test then asserts that a single `delete` of that name removes all ten and leaves `fs.chunks` empty. The existing goconvey `delete` case in `mongofiles/mongofiles_test.go` deletes a single file and checks only that its name is gone from `fs.files`, so neither the every-version behavior nor the chunk cleanup was covered. - `test/qa-tests/jstests/restore/no_index_restore.js` -> `integration/dumprestore/index_roundtrip_test.go` - `TestNoIndexRestore`. Two collections are dumped, one with two secondary indexes and one with none, then dropped and restored with `--noIndexRestore`. Each comes back with all of its documents and only its `_id` index, which the server creates with the collection rather than the restore. The pre-existing `--noIndexRestore` coverage in `mongorestore/mongorestore_test.go` is for the time-series `system.buckets` clustered index, read from a checked-in dump, and says nothing about ordinary secondary indexes. Each test asserts the exact set of `_id`s rather than a document count, so it also catches a document that should not be there. Both add a check that the setup they depend on really happened - that the puts wrote chunks, and that the secondary indexes existed before the dump - because without it the post-restore assertion of an empty `fs.chunks`, or of an `_id`-only index list, would hold just as well if the setup had silently done nothing. The JS files themselves are not deleted here. They and the CI that runs them come out in a later commit in this stack, so that this one adds coverage without touching CI and every commit in between is independently green. Coverage notes: `mongofiles_delete.js` ran against a standalone, a replica set, and a sharded cluster, under both plain and auth passthroughs. The Go test runs against whatever one server the integration suite is pointed at. `mongofiles/sharded_gridfs_test.go` is the only sharded test in the package and it never issues a `delete`, so sharded `delete` coverage is not carried over. It is worth having: `deleteAll` removes chunks per file, and chunk distribution is exactly what sharding changes. `no_index_restore.js` used `plain_28.config.js`, a single topology, so the suite conversion loses nothing there. The collection with no secondary indexes only proves that the restore does not invent indexes; the collection with two is what makes the test able to fail. Both are kept because the JS had the same pair.
autarch
force-pushed
the
08-24-tools-4263_convert_the_users_and_roles_js_tests_to_go
branch
from
September 30, 2026 20:50
295c223 to
e81fa4b
Compare
autarch
force-pushed
the
08-24-tools-4263_convert_the_last_two_js_tests_to_go_and_remove_the_qa-tests_ci
branch
from
September 30, 2026 20:50
5a2487a to
3ab57a4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

test/qa-tests/jstests/files/mongofiles_delete.js->mongofiles/delete_test.go-TestDeleteRemovesEveryVersionOfAFilename. A put does not replace an earlier file of the same name unless asked to, so ten puts of one name leave ten GridFS files; the test then asserts that a singledeleteof that name removes all ten and leavesfs.chunksempty. The existing goconveydeletecase inmongofiles/mongofiles_test.godeletes a single file and checks only that its name is gone fromfs.files, so neither the every-version behavior nor the chunk cleanup was covered.test/qa-tests/jstests/restore/no_index_restore.js->integration/dumprestore/index_roundtrip_test.go-TestNoIndexRestore. Two collections are dumped, one with two secondary indexes and one with none, then dropped and restored with--noIndexRestore. Each comes back with all of its documents and only its_idindex, which the server creates with the collection rather than the restore. The pre-existing--noIndexRestorecoverage inmongorestore/mongorestore_test.gois for the time-seriessystem.bucketsclustered index, read from a checked-in dump, and says nothing about ordinary secondary indexes.Both JS files are deleted. No test JS remains under
test/qa-tests/jstests.Each test asserts the exact set of
_ids rather than a document count, so it alsocatches a document that should not be there. Both add a check that the setup they
depend on really happened - that the puts wrote chunks, and that the secondary
indexes existed before the dump - because without it the post-restore assertion of
an empty
fs.chunks, or of an_id-only index list, would hold just as well ifthe setup had silently done nothing.
Coverage notes:
mongofiles_delete.jsran against a standalone, a replica set, and a shardedcluster, under both plain and auth passthroughs. The Go test runs against whatever
one server the integration suite is pointed at.
mongofiles/sharded_gridfs_test.gois the only sharded test in the package and it never issues a
delete, so shardeddeletecoverage is not carried over. It is worth having:deleteAllremoveschunks per file, and chunk distribution is exactly what sharding changes.
no_index_restore.jsusedplain_28.config.js, a single topology, so the suiteconversion loses nothing there.
The collection with no secondary indexes only proves that the restore does not
invent indexes; the collection with two is what makes the test able to fail. Both
are kept because the JS had the same pair.
Removes the qa-tests CI infrastructure, which now has nothing to run:
test/qa-tests/- deleted. All four resmoke suites selected onlyjstests/{dump,files,import,restore}/*.js, which are now all gone.test/shell_common/libs/is shared withtest/legacy42and stays;scripts/run-legacy-tests.shdrives the mongo shell directly and never touchestest/qa-tests/buildscripts, so the directory was self-contained.scripts/run_qa.shand therun qa-testsfunction incommon.yml- deleted, along with the twelveqa-tests-*andqa-dump-restore-*task definitions and theresmoke_use_tls,resmoke_args, andexcludesexpansions that only fed them. Buildvariants select tasks by tag, so no buildvariant task list changes.scripts/setup-credentials.shand thesetup credentialsfunction - deleted. The script's only job was writingmci.buildloggerand copying it intotest/qa-tests, where resmoke hardcodes its location. Thelegacy-jstests-*tasks also called it, butrun-legacy-tests.shnever reads the file, and withtest/qa-testsgone thecpwould have failed undererrexit.get buildnumbergoes with it:builder_numwas only ever read by that script.attach.resultsforreport.jsoninpost-run_qa.shwas the only thing that produced that file. Thepkill -f buildlogger.pyandpkill -f smoke.pyentries in thekillall_mcidefault are dropped for the same reason.precious.tomlonly ever pointed it attest/qa-tests/jstests/**/*.js, so with those files gone it lints nothing. The command,.eslintrc.yml,.eslintignore, and themise.toml/package.jsonentries all go. The.eslintignoreentry fortest/shell_common/libs/replsettest-*.jswas already dead - the include glob never matched those paths.github_pr_aliasesentry forrhel88dropsqa-dump-restoreandqa-tests. It also picks upnative-cert-ssl, which the generator inevergreen/evergreen.goalready emitted butcommon.ymlhad not been regenerated for.TestGitHubPRAliasBlockIsUpToDatewas failing before this commit because of that drift and passes now.The
mongodump_passthroughresmoke included at the top ofcommon.ymlis adifferent harness with its own functions and its own
builder_num, and isuntouched.