summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jstests/core/and.js4
-rw-r--r--jstests/core/and3.js4
-rw-r--r--jstests/core/apitest_dbcollection.js7
-rw-r--r--jstests/core/apply_ops1.js8
-rw-r--r--jstests/core/apply_ops2.js10
-rw-r--r--jstests/core/apply_ops_dups.js8
-rw-r--r--jstests/core/apply_ops_index_collation.js15
-rw-r--r--jstests/core/apply_ops_without_ns.js7
-rw-r--r--jstests/core/auth1.js2
-rw-r--r--jstests/core/auth2.js1
-rw-r--r--jstests/core/auth_copydb.js2
-rw-r--r--jstests/core/background_index_multikey.js4
-rw-r--r--jstests/core/batch_write_command_insert.js5
-rw-r--r--jstests/core/bulk_insert_capped.js11
-rw-r--r--jstests/core/bulk_legacy_enforce_gle.js5
-rw-r--r--jstests/core/check_shard_index.js2
-rw-r--r--jstests/core/collmod_without_uuid.js10
-rw-r--r--jstests/core/commands_with_uuid.js7
-rw-r--r--jstests/core/compact_keeps_indexes.js4
-rw-r--r--jstests/core/connection_status.js2
-rw-r--r--jstests/core/copydb.js8
-rw-r--r--jstests/core/count10.js3
-rw-r--r--jstests/core/count_plan_summary.js3
-rw-r--r--jstests/core/countb.js4
-rw-r--r--jstests/core/countc.js5
-rw-r--r--jstests/core/currentop.js6
-rw-r--r--jstests/core/cursora.js10
-rw-r--r--jstests/core/dbhash.js4
-rw-r--r--jstests/core/dbhash2.js4
-rw-r--r--jstests/core/depth_limit.js4
-rw-r--r--jstests/core/diagdata.js5
-rw-r--r--jstests/core/eval2.js11
-rw-r--r--jstests/core/explain2.js7
-rw-r--r--jstests/core/explain_missing_collection.js11
-rw-r--r--jstests/core/explain_missing_database.js106
-rw-r--r--jstests/core/explain_multi_plan.js13
-rw-r--r--jstests/core/filemd5.js11
-rw-r--r--jstests/core/find6.js7
-rw-r--r--jstests/core/find_and_modify_concurrent_update.js13
-rw-r--r--jstests/core/find_and_modify_where.js13
-rw-r--r--jstests/core/geo_group.js11
-rw-r--r--jstests/core/geo_haystack1.js4
-rw-r--r--jstests/core/geo_haystack2.js4
-rw-r--r--jstests/core/geo_haystack3.js5
-rw-r--r--jstests/core/group1.js11
-rw-r--r--jstests/core/group2.js12
-rw-r--r--jstests/core/group3.js11
-rw-r--r--jstests/core/group4.js12
-rw-r--r--jstests/core/group5.js11
-rw-r--r--jstests/core/group6.js12
-rw-r--r--jstests/core/group8.js11
-rw-r--r--jstests/core/group9.js11
-rw-r--r--jstests/core/index_partial_create_drop.js11
-rw-r--r--jstests/core/js1.js7
-rw-r--r--jstests/core/js4.js5
-rw-r--r--jstests/core/js5.js4
-rw-r--r--jstests/core/js8.js5
-rw-r--r--jstests/core/killop_drop_collection.js8
-rw-r--r--jstests/core/max_time_ms.js5
-rw-r--r--jstests/core/mod1.js4
-rw-r--r--jstests/core/operation_latency_histogram.js8
-rw-r--r--jstests/core/ora.js5
-rw-r--r--jstests/core/profile2.js5
-rw-r--r--jstests/core/profile3.js5
-rw-r--r--jstests/core/profile_findandmodify.js4
-rw-r--r--jstests/core/read_after_optime.js5
-rw-r--r--jstests/core/removec.js7
-rw-r--r--jstests/core/repair_database.js9
-rw-r--r--jstests/core/repair_database_input_validation.js5
-rw-r--r--jstests/core/repair_server12955.js5
-rw-r--r--jstests/core/restart_catalog.js7
-rw-r--r--jstests/core/role_management_helpers.js5
-rw-r--r--jstests/core/sortk.js10
-rw-r--r--jstests/core/splitvector.js12
-rw-r--r--jstests/core/startup_log.js10
-rw-r--r--jstests/core/top.js8
-rw-r--r--jstests/core/uniqueness.js11
-rw-r--r--jstests/core/user_management_helpers.js2
-rw-r--r--jstests/core/validate_user_documents.js2
-rw-r--r--jstests/core/views/invalid_system_views.js11
-rw-r--r--jstests/core/views/views_stats.js7
-rw-r--r--jstests/core/where1.js4
-rw-r--r--jstests/core/where2.js4
-rw-r--r--jstests/core/where3.js4
-rw-r--r--jstests/core/where4.js8
-rw-r--r--jstests/core/where5.js4
86 files changed, 543 insertions, 154 deletions
diff --git a/jstests/core/and.js b/jstests/core/and.js
index a29d95e84e8..389aaa8d1d1 100644
--- a/jstests/core/and.js
+++ b/jstests/core/and.js
@@ -1,4 +1,8 @@
// Some tests for $and SERVER-1089
+// @tags: [
+// # Uses $where operator
+// requires_scripting
+// ]
t = db.jstests_and;
t.drop();
diff --git a/jstests/core/and3.js b/jstests/core/and3.js
index 4f6d6bd28fd..2c08bd183f9 100644
--- a/jstests/core/and3.js
+++ b/jstests/core/and3.js
@@ -1,4 +1,8 @@
// Check key match with sub matchers - part of SERVER-3192
+// @tags: [
+// # Uses $where operator
+// requires_scripting
+// ]
t = db.jstests_and3;
t.drop();
diff --git a/jstests/core/apitest_dbcollection.js b/jstests/core/apitest_dbcollection.js
index a7c8655edde..86569e58ae7 100644
--- a/jstests/core/apitest_dbcollection.js
+++ b/jstests/core/apitest_dbcollection.js
@@ -1,7 +1,12 @@
/**
* Tests for the db collection
*
- * @tags: [requires_fastcount]
+ * @tags: [
+ * requires_fastcount,
+ *
+ * # indexDetails result is not correct with mobile storage engine
+ * incompatible_with_embedded_todo_investigate,
+ * ]
*/
/*
diff --git a/jstests/core/apply_ops1.js b/jstests/core/apply_ops1.js
index ba6a853782c..e71c33ad9b6 100644
--- a/jstests/core/apply_ops1.js
+++ b/jstests/core/apply_ops1.js
@@ -1,4 +1,10 @@
-// @tags: [requires_non_retryable_commands, requires_fastcount]
+// @tags: [
+// requires_non_retryable_commands,
+// requires_fastcount,
+//
+// # applyOps uses the oplog that require replication support
+// requires_replication,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/apply_ops2.js b/jstests/core/apply_ops2.js
index a7f752d1456..caf30364c48 100644
--- a/jstests/core/apply_ops2.js
+++ b/jstests/core/apply_ops2.js
@@ -1,7 +1,13 @@
-// @tags: [requires_non_retryable_commands, requires_fastcount]
-
// Test applyops upsert flag SERVER-7452
+// @tags: [
+// requires_non_retryable_commands,
+// requires_fastcount,
+//
+// # applyOps uses the oplog that require replication support
+// requires_replication,
+// ]
+
var t = db.apply_ops2;
t.drop();
diff --git a/jstests/core/apply_ops_dups.js b/jstests/core/apply_ops_dups.js
index 292c9ecb648..e18cd01d3f6 100644
--- a/jstests/core/apply_ops_dups.js
+++ b/jstests/core/apply_ops_dups.js
@@ -1,4 +1,10 @@
-// @tags: [requires_non_retryable_commands, requires_fastcount]
+// @tags: [
+// requires_non_retryable_commands,
+// requires_fastcount,
+//
+// # applyOps uses the oplog that require replication support
+// requires_replication,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/apply_ops_index_collation.js b/jstests/core/apply_ops_index_collation.js
index f05080bc819..135cb37483f 100644
--- a/jstests/core/apply_ops_index_collation.js
+++ b/jstests/core/apply_ops_index_collation.js
@@ -1,10 +1,17 @@
-// Cannot implicitly shard accessed collections because of collection existing when none
-// expected.
-// @tags: [assumes_no_implicit_collection_creation_after_drop, requires_non_retryable_commands]
-
// Tests creation of indexes using applyOps for collections with a non-simple default collation.
// Indexes created through applyOps should be built exactly according to their index spec, without
// inheriting the collection default collation, since this is how the oplog entries are replicated.
+
+// @tags: [
+// # Cannot implicitly shard accessed collections because of collection existing when none
+// # expected.
+// assumes_no_implicit_collection_creation_after_drop,
+// requires_non_retryable_commands,
+//
+// # applyOps uses the oplog that require replication support
+// requires_replication,
+// ]
+
(function() {
"use strict";
diff --git a/jstests/core/apply_ops_without_ns.js b/jstests/core/apply_ops_without_ns.js
index a16c54b8f99..3b488078a31 100644
--- a/jstests/core/apply_ops_without_ns.js
+++ b/jstests/core/apply_ops_without_ns.js
@@ -1,4 +1,9 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+//
+// # applyOps uses the oplog that require replication support
+// requires_replication,
+// ]
(function() {
'use strict';
diff --git a/jstests/core/auth1.js b/jstests/core/auth1.js
index d6b7bf152e6..754ffae1c74 100644
--- a/jstests/core/auth1.js
+++ b/jstests/core/auth1.js
@@ -1,4 +1,4 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [requires_non_retryable_commands, requires_auth]
var mydb = db.getSiblingDB('auth1_db');
mydb.dropAllUsers();
diff --git a/jstests/core/auth2.js b/jstests/core/auth2.js
index c9e6d29dac9..12eb19c3298 100644
--- a/jstests/core/auth2.js
+++ b/jstests/core/auth2.js
@@ -1,4 +1,5 @@
// just make sure logout doesn't break anything
+// @tags: [requires_auth]
// SERVER-724
db.runCommand({logout: 1});
diff --git a/jstests/core/auth_copydb.js b/jstests/core/auth_copydb.js
index 17842256d80..daa2f65e012 100644
--- a/jstests/core/auth_copydb.js
+++ b/jstests/core/auth_copydb.js
@@ -1,4 +1,4 @@
-// @tags: [requires_non_retryable_commands, requires_fastcount]
+// @tags: [requires_non_retryable_commands, requires_fastcount, requires_auth]
a = db.getSisterDB("copydb2-test-a");
b = db.getSisterDB("copydb2-test-b");
diff --git a/jstests/core/background_index_multikey.js b/jstests/core/background_index_multikey.js
index 8578e9c63f1..0449beb513b 100644
--- a/jstests/core/background_index_multikey.js
+++ b/jstests/core/background_index_multikey.js
@@ -1,5 +1,9 @@
/**
* Tests that we can create background (and foreground) indexes that are multikey.
+ * @tags: [
+ * # Uses index building in background
+ * requires_background_index,
+ * ]
*/
(function() {
diff --git a/jstests/core/batch_write_command_insert.js b/jstests/core/batch_write_command_insert.js
index 136727d159a..d1e3fc8b600 100644
--- a/jstests/core/batch_write_command_insert.js
+++ b/jstests/core/batch_write_command_insert.js
@@ -5,8 +5,11 @@
// assumes_write_concern_unchanged,
// cannot_create_unique_index_when_using_hashed_shard_key,
// requires_fastcount,
+//
+// # Uses index building in background
+// requires_background_index,
// ]
-
+//
//
// Ensures that mongod respects the batch write protocol for inserts
//
diff --git a/jstests/core/bulk_insert_capped.js b/jstests/core/bulk_insert_capped.js
index a54b94c5022..f46539a910e 100644
--- a/jstests/core/bulk_insert_capped.js
+++ b/jstests/core/bulk_insert_capped.js
@@ -1,6 +1,11 @@
-// Cannot implicitly shard accessed collections because of collection existing when none
-// expected.
-// @tags: [assumes_no_implicit_collection_creation_after_drop]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of collection existing when none
+// # expected.
+// assumes_no_implicit_collection_creation_after_drop,
+//
+// # getLastError command is not available on embedded
+// incompatible_with_embedded,
+// ]
// SERVER-21488 Test that multi inserts into capped collections don't cause corruption.
// Note: this file must have a name that starts with "bulk" so it gets run by bulk_gle_passthrough.
diff --git a/jstests/core/bulk_legacy_enforce_gle.js b/jstests/core/bulk_legacy_enforce_gle.js
index 770734e43bc..cb3cc683200 100644
--- a/jstests/core/bulk_legacy_enforce_gle.js
+++ b/jstests/core/bulk_legacy_enforce_gle.js
@@ -2,7 +2,12 @@
* Tests the resetError logic when the bulk api enforces the write concern for unordered
* writes. The tests indirectly checks whether resetError was called by inspecting the
* response of the getLastError command after executing the bulk ops.
+ *
+ * @tags: [
+ * # getLastError command is not available on embedded
+ * incompatible_with_embedded]
*/
+
(function() {
"use strict";
const coll = db.bulk_legacy_enforce_gle;
diff --git a/jstests/core/check_shard_index.js b/jstests/core/check_shard_index.js
index d3c30d61dfa..91013d75337 100644
--- a/jstests/core/check_shard_index.js
+++ b/jstests/core/check_shard_index.js
@@ -1,4 +1,4 @@
-// @tags: [requires_non_retryable_writes, requires_fastcount]
+// @tags: [requires_non_retryable_writes, requires_fastcount, requires_sharding]
// -------------------------
// CHECKSHARDINGINDEX TEST UTILS
diff --git a/jstests/core/collmod_without_uuid.js b/jstests/core/collmod_without_uuid.js
index 43ecd9852d8..5beb1864ad0 100644
--- a/jstests/core/collmod_without_uuid.js
+++ b/jstests/core/collmod_without_uuid.js
@@ -1,8 +1,14 @@
-// @tags: [requires_non_retryable_commands]
-
/**
* SERVER-32125 Check that applyOps commands with collMod without UUID don't strip it
+ *
+ * @tags: [
+ * requires_non_retryable_commands,
+ *
+ * # applyOps uses the oplog that require replication support
+ * requires_replication
+ * ]
*/
+
(function() {
"use strict";
const collName = "collmod_without_uuid";
diff --git a/jstests/core/commands_with_uuid.js b/jstests/core/commands_with_uuid.js
index 0080e16e478..ce58b68ebe0 100644
--- a/jstests/core/commands_with_uuid.js
+++ b/jstests/core/commands_with_uuid.js
@@ -2,7 +2,12 @@
* Tests that using a UUID as an argument to commands will retrieve results from the correct
* collection.
*
-* @tags: [requires_fastcount]
+* @tags: [
+* requires_fastcount,
+*
+* # parallelCollectionScan is not available on embedded
+* incompatible_with_embedded,
+* ]
*/
(function() {
diff --git a/jstests/core/compact_keeps_indexes.js b/jstests/core/compact_keeps_indexes.js
index 897cfcd87de..71969d2e005 100644
--- a/jstests/core/compact_keeps_indexes.js
+++ b/jstests/core/compact_keeps_indexes.js
@@ -1,6 +1,10 @@
// SERVER-16676 Make sure compact doesn't leave the collection with bad indexes
// SERVER-16967 Make sure compact doesn't crash while collections are being dropped
// in a different database.
+// @tags: [
+// # compact command is not available on embedded
+// incompatible_with_embedded
+// ]
(function() {
'use strict';
diff --git a/jstests/core/connection_status.js b/jstests/core/connection_status.js
index c769aabf284..392c6cd654e 100644
--- a/jstests/core/connection_status.js
+++ b/jstests/core/connection_status.js
@@ -1,4 +1,4 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [requires_non_retryable_commands, requires_auth]
// Tests the connectionStatus command
(function() {
diff --git a/jstests/core/copydb.js b/jstests/core/copydb.js
index e2f49145a74..991734f3f8d 100644
--- a/jstests/core/copydb.js
+++ b/jstests/core/copydb.js
@@ -1,4 +1,10 @@
-// @tags: [requires_non_retryable_commands, requires_fastcount]
+// @tags: [
+// requires_non_retryable_commands,
+// requires_fastcount,
+//
+// # copyDatabase is not available on embedded
+// incompatible_with_embedded
+// ]
// Basic tests for the copydb command. These only test copying from the same server; these do not
// test the ability of copydb to pull a database from another server (with or without auth).
diff --git a/jstests/core/count10.js b/jstests/core/count10.js
index 75838521527..252f1f597d9 100644
--- a/jstests/core/count10.js
+++ b/jstests/core/count10.js
@@ -6,6 +6,9 @@
// # routed to the primary.
// assumes_read_preference_unchanged,
// does_not_support_stepdowns,
+//
+// # killop command is not yet available on embedded
+// incompatible_with_embedded_todo_investigate,
// ]
t = db.count10;
diff --git a/jstests/core/count_plan_summary.js b/jstests/core/count_plan_summary.js
index b928eb287fc..7d170a8ac8a 100644
--- a/jstests/core/count_plan_summary.js
+++ b/jstests/core/count_plan_summary.js
@@ -6,6 +6,9 @@
// # routed to the primary.
// assumes_read_preference_unchanged,
// does_not_support_stepdowns,
+//
+// # killop command is not yet available on embedded
+// incompatible_with_embedded_todo_investigate,
// ]
var t = db.jstests_count_plan_summary;
diff --git a/jstests/core/countb.js b/jstests/core/countb.js
index a36378009c0..bd6f9507fd2 100644
--- a/jstests/core/countb.js
+++ b/jstests/core/countb.js
@@ -1,4 +1,8 @@
// Test fast count mode with single key index unsatisfiable constraints on a multi key index.
+// @tags: [
+// # Uses $where operator
+// requires_scripting,
+// ]
t = db.jstests_countb;
t.drop();
diff --git a/jstests/core/countc.js b/jstests/core/countc.js
index 39a297ec8c4..876129c573f 100644
--- a/jstests/core/countc.js
+++ b/jstests/core/countc.js
@@ -4,6 +4,11 @@
//
// SERVER-1752
+// @tags: [
+// # Uses $where operator
+// requires_scripting
+// ]
+
t = db.jstests_countc;
t.drop();
diff --git a/jstests/core/currentop.js b/jstests/core/currentop.js
index a27fbbd47e2..f929333da35 100644
--- a/jstests/core/currentop.js
+++ b/jstests/core/currentop.js
@@ -1,6 +1,12 @@
/**
* Tests that long-running operations show up in currentOp and report the locks they are holding.
+ *
+ * @tags: [
+ * # fsync command is not available on embedded
+ * incompatible_with_embedded
+ * ]
*/
+
(function() {
"use strict";
const coll = db.jstests_currentop;
diff --git a/jstests/core/cursora.js b/jstests/core/cursora.js
index db92e999eef..153e2929593 100644
--- a/jstests/core/cursora.js
+++ b/jstests/core/cursora.js
@@ -1,4 +1,12 @@
-// @tags: [requires_getmore, requires_non_retryable_writes, requires_fastcount]
+// @tags: [
+// requires_getmore,
+// requires_non_retryable_writes,
+// requires_fastcount,
+//
+// # Uses $where operator
+// requires_scripting,
+// ]
+
(function() {
"use strict";
diff --git a/jstests/core/dbhash.js b/jstests/core/dbhash.js
index cc202656fbe..eeddce74a75 100644
--- a/jstests/core/dbhash.js
+++ b/jstests/core/dbhash.js
@@ -1,3 +1,7 @@
+// @tags: [
+// # dbhash command is not available on embedded
+// incompatible_with_embedded,
+// ]
a = db.dbhasha;
b = db.dbhashb;
diff --git a/jstests/core/dbhash2.js b/jstests/core/dbhash2.js
index 85fd63f6362..689134d2bf0 100644
--- a/jstests/core/dbhash2.js
+++ b/jstests/core/dbhash2.js
@@ -1,3 +1,7 @@
+// @tags: [
+// # dbhash command is not available on embedded
+// incompatible_with_embedded,
+// ]
mydb = db.getSisterDB("config");
diff --git a/jstests/core/depth_limit.js b/jstests/core/depth_limit.js
index 4e40c114369..b25dffa4426 100644
--- a/jstests/core/depth_limit.js
+++ b/jstests/core/depth_limit.js
@@ -1,4 +1,8 @@
// SERVER-11781 Don't crash when converting deeply nested or cyclical JS objects to BSON.
+// @tags: [
+// # Uses $where operator
+// requires_scripting
+// ]
function test() {
function assertTooBig(obj) {
diff --git a/jstests/core/diagdata.js b/jstests/core/diagdata.js
index 6938f8c5102..f002004b5a5 100644
--- a/jstests/core/diagdata.js
+++ b/jstests/core/diagdata.js
@@ -1,4 +1,9 @@
// Test that verifies getDiagnosticData returns FTDC data
+// @tags: [
+// # getDiagnosticData command is not available on embedded
+// incompatible_with_embedded,
+// ]
+
load('jstests/libs/ftdc.js');
(function() {
diff --git a/jstests/core/eval2.js b/jstests/core/eval2.js
index 6c0fc1f58e9..f928a41c0cb 100644
--- a/jstests/core/eval2.js
+++ b/jstests/core/eval2.js
@@ -1,6 +1,11 @@
-// Cannot implicitly shard accessed collections because of unsupported group operator on sharded
-// collection.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of unsupported group operator on
+// # sharded collection.
+// assumes_unsharded_collection,
+//
+// # group uses javascript
+// requires_scripting,
+// ]
t = db.eval2;
t.drop();
diff --git a/jstests/core/explain2.js b/jstests/core/explain2.js
index ec9a79b16c8..930a2ffb037 100644
--- a/jstests/core/explain2.js
+++ b/jstests/core/explain2.js
@@ -1,7 +1,12 @@
// Test calculation of the 'millis' field in explain output.
// This test makes assertions on how long a particular query will sleep. When the collection is
// sharded each shard may sleep for less time than is expected.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// assumes_unsharded_collection,
+//
+// # Uses $where operator
+// requires_scripting,
+// ]
t = db.jstests_explain2;
t.drop();
diff --git a/jstests/core/explain_missing_collection.js b/jstests/core/explain_missing_collection.js
index 458b15c6a80..ed579174e2f 100644
--- a/jstests/core/explain_missing_collection.js
+++ b/jstests/core/explain_missing_collection.js
@@ -1,6 +1,11 @@
-// Cannot implicitly shard accessed collections because of unsupported group operator on sharded
-// collection.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of unsupported group operator on
+// # sharded collection.
+// assumes_unsharded_collection,
+//
+// # group requires javascript
+// requires_scripting,
+// ]
// Test explain of various operations against a non-existent collection
(function() {
diff --git a/jstests/core/explain_missing_database.js b/jstests/core/explain_missing_database.js
index 598cd7a9e11..8bf65129a78 100644
--- a/jstests/core/explain_missing_database.js
+++ b/jstests/core/explain_missing_database.js
@@ -1,51 +1,55 @@
-// Test explain of various operations against a non-existent database
-(function() {
- var explainMissingDb = db.getSiblingDB("explainMissingDb");
-
- var explain;
- var explainColl;
-
- // .find()
- explainMissingDb.dropDatabase();
- explain = explainMissingDb.collection.explain("executionStats").find().finish();
- assert.commandWorked(explain);
- assert("executionStats" in explain);
-
- // .count()
- explainMissingDb.dropDatabase();
- explain = explainMissingDb.collection.explain("executionStats").count();
- assert.commandWorked(explain);
- assert("executionStats" in explain);
-
- // .group()
- explainMissingDb.dropDatabase();
- explainColl = explainMissingDb.collection.explain("executionStats");
- explain = explainColl.group({key: "a", initial: {}, reduce: function() {}});
- assert.commandWorked(explain);
- assert("executionStats" in explain);
-
- // .remove()
- explainMissingDb.dropDatabase();
- explain = explainMissingDb.collection.explain("executionStats").remove({a: 1});
- assert.commandWorked(explain);
- assert("executionStats" in explain);
-
- // .update() with upsert: false
- explainMissingDb.dropDatabase();
- explainColl = explainMissingDb.collection.explain("executionStats");
- explain = explainColl.update({a: 1}, {b: 1});
- assert.commandWorked(explain);
- assert("executionStats" in explain);
-
- // .update() with upsert: true
- explainMissingDb.dropDatabase();
- explainColl = explainMissingDb.collection.explain("executionStats");
- explain = explainColl.update({a: 1}, {b: 1}, {upsert: true});
- assert.commandWorked(explain);
- assert("executionStats" in explain);
-
- // .aggregate()
- explainMissingDb.dropDatabase();
- explain = explainMissingDb.collection.explain("executionStats").aggregate([{$match: {a: 1}}]);
- assert.commandWorked(explain);
-}());
+// Test explain of various operations against a non-existent database
+// @tags: [
+// # group requires javascript
+// requires_scripting,
+//]
+(function() {
+ var explainMissingDb = db.getSiblingDB("explainMissingDb");
+
+ var explain;
+ var explainColl;
+
+ // .find()
+ explainMissingDb.dropDatabase();
+ explain = explainMissingDb.collection.explain("executionStats").find().finish();
+ assert.commandWorked(explain);
+ assert("executionStats" in explain);
+
+ // .count()
+ explainMissingDb.dropDatabase();
+ explain = explainMissingDb.collection.explain("executionStats").count();
+ assert.commandWorked(explain);
+ assert("executionStats" in explain);
+
+ // .group()
+ explainMissingDb.dropDatabase();
+ explainColl = explainMissingDb.collection.explain("executionStats");
+ explain = explainColl.group({key: "a", initial: {}, reduce: function() {}});
+ assert.commandWorked(explain);
+ assert("executionStats" in explain);
+
+ // .remove()
+ explainMissingDb.dropDatabase();
+ explain = explainMissingDb.collection.explain("executionStats").remove({a: 1});
+ assert.commandWorked(explain);
+ assert("executionStats" in explain);
+
+ // .update() with upsert: false
+ explainMissingDb.dropDatabase();
+ explainColl = explainMissingDb.collection.explain("executionStats");
+ explain = explainColl.update({a: 1}, {b: 1});
+ assert.commandWorked(explain);
+ assert("executionStats" in explain);
+
+ // .update() with upsert: true
+ explainMissingDb.dropDatabase();
+ explainColl = explainMissingDb.collection.explain("executionStats");
+ explain = explainColl.update({a: 1}, {b: 1}, {upsert: true});
+ assert.commandWorked(explain);
+ assert("executionStats" in explain);
+
+ // .aggregate()
+ explainMissingDb.dropDatabase();
+ explain = explainMissingDb.collection.explain("executionStats").aggregate([{$match: {a: 1}}]);
+ assert.commandWorked(explain);
+}());
diff --git a/jstests/core/explain_multi_plan.js b/jstests/core/explain_multi_plan.js
index a41a4f0e67b..f1605e3c999 100644
--- a/jstests/core/explain_multi_plan.js
+++ b/jstests/core/explain_multi_plan.js
@@ -1,7 +1,12 @@
-// Cannot implicitly shard accessed collections because of following errmsg: A single
-// update/delete on a sharded collection must contain an exact match on _id or contain the shard
-// key.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of following errmsg: A single
+// # update/delete on a sharded collection must contain an exact match on _id or contain the
+// # shard key.
+// assumes_unsharded_collection,
+//
+// # group requires javascript
+// requires_scripting,
+// ]
/**
* Tests running explain on a variety of explainable commands (find, update, remove, etc.) when
diff --git a/jstests/core/filemd5.js b/jstests/core/filemd5.js
index cbcdfe6b3dc..13f4ed70869 100644
--- a/jstests/core/filemd5.js
+++ b/jstests/core/filemd5.js
@@ -1,6 +1,11 @@
-// Cannot implicitly shard accessed collections because of following error: GridFS fs.chunks
-// collection must be sharded on either {files_id:1} or {files_id:1, n:1}
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of following error: GridFS fs.chunks
+// # collection must be sharded on either {files_id:1} or {files_id:1, n:1}
+// assumes_unsharded_collection,
+//
+// # filemd5 command is not available on embedded
+// incompatible_with_embedded,
+// ]
db.fs.chunks.drop();
db.fs.chunks.insert({files_id: 1, n: 0, data: new BinData(0, "test")});
diff --git a/jstests/core/find6.js b/jstests/core/find6.js
index 35a853652d6..ec683d7f68e 100644
--- a/jstests/core/find6.js
+++ b/jstests/core/find6.js
@@ -1,4 +1,9 @@
-// @tags: [requires_fastcount]
+// @tags: [
+// requires_fastcount,
+//
+// # Uses $where operator
+// requires_scripting,
+// ]
t = db.find6;
t.drop();
diff --git a/jstests/core/find_and_modify_concurrent_update.js b/jstests/core/find_and_modify_concurrent_update.js
index ead81732ecc..52916f4c9b8 100644
--- a/jstests/core/find_and_modify_concurrent_update.js
+++ b/jstests/core/find_and_modify_concurrent_update.js
@@ -1,7 +1,12 @@
-// Cannot implicitly shard accessed collections because of following errmsg: A single
-// update/delete on a sharded collection must contain an exact match on _id or contain the shard
-// key.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of following errmsg: A single
+// # update/delete on a sharded collection must contain an exact match on _id or contain the
+// # shard key.
+// assumes_unsharded_collection,
+//
+// # Uses $where operator
+// requires_scripting,
+// ]
// Ensures that find and modify will not apply an update to a document which, due to a concurrent
// modification, no longer matches the query predicate.
diff --git a/jstests/core/find_and_modify_where.js b/jstests/core/find_and_modify_where.js
index f4977c6565e..62375da7aab 100644
--- a/jstests/core/find_and_modify_where.js
+++ b/jstests/core/find_and_modify_where.js
@@ -1,7 +1,12 @@
-// Cannot implicitly shard accessed collections because of following errmsg: A single
-// update/delete on a sharded collection must contain an exact match on _id or contain the shard
-// key.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of following errmsg: A single
+// # update/delete on a sharded collection must contain an exact match on _id or contain the
+// # shard key.
+// assumes_unsharded_collection,
+//
+// # Uses $where operator
+// requires_scripting,
+// ]
t = db.find_and_modify_where;
t.drop();
diff --git a/jstests/core/geo_group.js b/jstests/core/geo_group.js
index 72d91b7907d..a571131e114 100644
--- a/jstests/core/geo_group.js
+++ b/jstests/core/geo_group.js
@@ -1,7 +1,12 @@
-// Cannot implicitly shard accessed collections because group is not supported on sharded
-// collections.
+// @tags: [
+// # Cannot implicitly shard accessed collections because group is not supported on sharded
+// # collections.
+// assumes_unsharded_collection,
+// requires_fastcount,
//
-// @tags: [assumes_unsharded_collection, requires_fastcount]
+// # reduce uses javascript
+// requires_scripting,
+// ]
t = db.geo_group;
t.drop();
diff --git a/jstests/core/geo_haystack1.js b/jstests/core/geo_haystack1.js
index 97e746ccdfa..eaf9641d3c4 100644
--- a/jstests/core/geo_haystack1.js
+++ b/jstests/core/geo_haystack1.js
@@ -1,3 +1,7 @@
+// @tags: [
+// # Haystack index is not available on embedded
+// incompatible_with_embedded,
+// ]
t = db.geo_haystack1;
t.drop();
diff --git a/jstests/core/geo_haystack2.js b/jstests/core/geo_haystack2.js
index 3420feeed1c..b9946ef3cd8 100644
--- a/jstests/core/geo_haystack2.js
+++ b/jstests/core/geo_haystack2.js
@@ -1,3 +1,7 @@
+// @tags: [
+// # Haystack index is not available on embedded
+// incompatible_with_embedded,
+// ]
t = db.geo_haystack2;
t.drop();
diff --git a/jstests/core/geo_haystack3.js b/jstests/core/geo_haystack3.js
index 1357ccf4f51..3fe0da348b2 100644
--- a/jstests/core/geo_haystack3.js
+++ b/jstests/core/geo_haystack3.js
@@ -1,3 +1,8 @@
+// @tags: [
+// # Haystack index is not available on embedded
+// incompatible_with_embedded,
+// ]
+
t = db.geo_haystack3;
t.drop();
diff --git a/jstests/core/group1.js b/jstests/core/group1.js
index c6fd0fdf16d..5021f8b48dc 100644
--- a/jstests/core/group1.js
+++ b/jstests/core/group1.js
@@ -1,6 +1,11 @@
-// Cannot implicitly shard accessed collections because of unsupported group operator on sharded
-// collection.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of unsupported group operator on
+// # sharded collection.
+// assumes_unsharded_collection,
+//
+// # group requires javascript
+// requires_scripting
+// ]
(function() {
"use strict";
diff --git a/jstests/core/group2.js b/jstests/core/group2.js
index 26f65c3d8f8..65faa657fae 100644
--- a/jstests/core/group2.js
+++ b/jstests/core/group2.js
@@ -1,6 +1,12 @@
-// Cannot implicitly shard accessed collections because of unsupported group operator on sharded
-// collection.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of unsupported group operator on
+// # sharded collection.
+// assumes_unsharded_collection,
+//
+// # group requires javascript
+// requires_scripting
+// ]
+
(function() {
"use strict";
const coll = db.group2;
diff --git a/jstests/core/group3.js b/jstests/core/group3.js
index 3840e8bcbcc..48eec33eaf8 100644
--- a/jstests/core/group3.js
+++ b/jstests/core/group3.js
@@ -1,6 +1,11 @@
-// Cannot implicitly shard accessed collections because of unsupported group operator on sharded
-// collection.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of unsupported group operator on
+// # sharded collection.
+// assumes_unsharded_collection,
+//
+// # group requires javascript
+// requires_scripting
+// ]
t = db.group3;
t.drop();
diff --git a/jstests/core/group4.js b/jstests/core/group4.js
index e2d9e9546fc..bb5b91b1752 100644
--- a/jstests/core/group4.js
+++ b/jstests/core/group4.js
@@ -1,7 +1,11 @@
-// Cannot implicitly shard accessed collections because of unsupported group operator on sharded
-// collection.
-// @tags: [assumes_unsharded_collection]
-
+// @tags: [
+// # Cannot implicitly shard accessed collections because of unsupported group operator on
+// # sharded collection.
+// assumes_unsharded_collection,
+//
+// # group requires javascript
+// requires_scripting
+// ]
t = db.group4;
t.drop();
diff --git a/jstests/core/group5.js b/jstests/core/group5.js
index 2f57e110d50..9a08eb9c98b 100644
--- a/jstests/core/group5.js
+++ b/jstests/core/group5.js
@@ -1,6 +1,11 @@
-// Cannot implicitly shard accessed collections because of unsupported group operator on sharded
-// collection.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of unsupported group operator on
+// # sharded collection.
+// assumes_unsharded_collection,
+//
+// # group requires javascript
+// requires_scripting
+// ]
t = db.group5;
t.drop();
diff --git a/jstests/core/group6.js b/jstests/core/group6.js
index 77ac0355d3e..f22a10710f1 100644
--- a/jstests/core/group6.js
+++ b/jstests/core/group6.js
@@ -1,7 +1,11 @@
-// Cannot implicitly shard accessed collections because of unsupported group operator on sharded
-// collection.
-// @tags: [assumes_unsharded_collection]
-
+// @tags: [
+// # Cannot implicitly shard accessed collections because of unsupported group operator on
+// # sharded collection.
+// assumes_unsharded_collection,
+//
+// # group requires javascript
+// requires_scripting
+// ]
t = db.jstests_group6;
t.drop();
diff --git a/jstests/core/group8.js b/jstests/core/group8.js
index 029d430103f..5590dcba892 100644
--- a/jstests/core/group8.js
+++ b/jstests/core/group8.js
@@ -1,6 +1,11 @@
-// Cannot implicitly shard accessed collections because of unsupported group operator on sharded
-// collection.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of unsupported group operator on
+// # sharded collection.
+// assumes_unsharded_collection,
+//
+// # group requires javascript
+// requires_scripting
+// ]
// Test correctness of the "keys" and and "count" fields in the group command output.
var coll = db.group8;
diff --git a/jstests/core/group9.js b/jstests/core/group9.js
index 17cd3ae94db..d32ae0611f0 100644
--- a/jstests/core/group9.js
+++ b/jstests/core/group9.js
@@ -1,6 +1,11 @@
-// Cannot implicitly shard accessed collections because of unsupported group operator on sharded
-// collection.
-// @tags: [assumes_unsharded_collection]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of unsupported group operator on
+// # sharded collection.
+// assumes_unsharded_collection,
+//
+// # group requires javascript
+// requires_scripting
+// ]
(function() {
'use strict';
diff --git a/jstests/core/index_partial_create_drop.js b/jstests/core/index_partial_create_drop.js
index 106a658c0f6..bf25fa3a6b1 100644
--- a/jstests/core/index_partial_create_drop.js
+++ b/jstests/core/index_partial_create_drop.js
@@ -1,6 +1,11 @@
-// Cannot implicitly shard accessed collections because of extra shard key index in sharded
-// collection.
-// @tags: [assumes_no_implicit_index_creation]
+// @tags: [
+// # Cannot implicitly shard accessed collections because of extra shard key index in sharded
+// # collection.
+// assumes_no_implicit_index_creation,
+//
+// # Builds index in the background
+// requires_background_index,
+// ]
// Test partial index creation and drops.
diff --git a/jstests/core/js1.js b/jstests/core/js1.js
index 5d00cee28f9..7c8c16a8236 100644
--- a/jstests/core/js1.js
+++ b/jstests/core/js1.js
@@ -1,4 +1,9 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+//
+// # Uses $where operator
+// requires_scripting
+// ]
t = db.jstests_js1;
t.remove({});
diff --git a/jstests/core/js4.js b/jstests/core/js4.js
index af9c3f84d3c..6c9f158de6a 100644
--- a/jstests/core/js4.js
+++ b/jstests/core/js4.js
@@ -1,3 +1,8 @@
+// @tags: [
+// # Uses $where operator
+// requires_scripting
+// ]
+
t = db.jstests_js4;
t.drop();
diff --git a/jstests/core/js5.js b/jstests/core/js5.js
index c02b451de42..05071a2b6a6 100644
--- a/jstests/core/js5.js
+++ b/jstests/core/js5.js
@@ -1,3 +1,7 @@
+// @tags: [
+// # Uses $where operator
+// requires_scripting
+// ]
t = db.jstests_js5;
t.drop();
diff --git a/jstests/core/js8.js b/jstests/core/js8.js
index d670abb0587..9504d2a7ac5 100644
--- a/jstests/core/js8.js
+++ b/jstests/core/js8.js
@@ -1,3 +1,8 @@
+// @tags: [
+// # Uses $where operator
+// requires_scripting,
+// ]
+
t = db.jstests_js8;
t.drop();
diff --git a/jstests/core/killop_drop_collection.js b/jstests/core/killop_drop_collection.js
index 53265010bf8..d21b81fe600 100644
--- a/jstests/core/killop_drop_collection.js
+++ b/jstests/core/killop_drop_collection.js
@@ -3,6 +3,14 @@
* to complete. Interrupting a collection drop could leave the database in an inconsistent state.
* This test confirms that killOp won't interrupt a collection drop, and that the drop occurs
* successfully.
+ *
+ * @tags: [
+ * # killop command is not yet available on embedded
+ * incompatible_with_embedded_todo_investigate,
+ *
+ * # Uses index building in background
+ * requires_background_index,
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/max_time_ms.js b/jstests/core/max_time_ms.js
index 57bd184f92e..7597084430d 100644
--- a/jstests/core/max_time_ms.js
+++ b/jstests/core/max_time_ms.js
@@ -6,7 +6,10 @@
// # latter must be routed to the primary.
// assumes_read_preference_unchanged,
// requires_getmore,
-// requires_fastcount
+// requires_fastcount,
+//
+// # Uses $where operator
+// requires_scripting,
// ]
var t = db.max_time_ms;
diff --git a/jstests/core/mod1.js b/jstests/core/mod1.js
index 11be6b1b293..29a7f372809 100644
--- a/jstests/core/mod1.js
+++ b/jstests/core/mod1.js
@@ -1,3 +1,7 @@
+// @tags: [
+// # Uses $where operator
+// requires_scripting,
+// ]
t = db.mod1;
t.drop();
diff --git a/jstests/core/operation_latency_histogram.js b/jstests/core/operation_latency_histogram.js
index 22ec77fa817..c95c8817b51 100644
--- a/jstests/core/operation_latency_histogram.js
+++ b/jstests/core/operation_latency_histogram.js
@@ -4,7 +4,13 @@
// stage. The former operation must be routed to the primary in a replica set, whereas the latter
// may be routed to a secondary.
//
-// @tags: [assumes_read_preference_unchanged, requires_collstats]
+// @tags: [
+// assumes_read_preference_unchanged,
+// requires_collstats,
+//
+// # group uses javascript
+// requires_scripting,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/ora.js b/jstests/core/ora.js
index 2c0f4b6fc70..06d8f39c48f 100644
--- a/jstests/core/ora.js
+++ b/jstests/core/ora.js
@@ -1,3 +1,8 @@
+// @tags: [
+// # Uses $where operator
+// requires_scripting
+// ]
+
var t = db.jstests_ora;
// $where
diff --git a/jstests/core/profile2.js b/jstests/core/profile2.js
index 9c2c385dbaa..7c206638a20 100644
--- a/jstests/core/profile2.js
+++ b/jstests/core/profile2.js
@@ -1,6 +1,11 @@
// Tests that large queries and updates are properly profiled.
// Special db so that it can be run in parallel tests.
+// @tags: [
+// # profile command is not available on embedded
+// incompatible_with_embedded,
+// ]
+
var coll = db.getSisterDB("profile2").profile2;
assert.commandWorked(coll.getDB().runCommand({profile: 0}));
diff --git a/jstests/core/profile3.js b/jstests/core/profile3.js
index 3a22bd1f952..35e37d0917d 100644
--- a/jstests/core/profile3.js
+++ b/jstests/core/profile3.js
@@ -1,4 +1,7 @@
-
+// @tags: [
+// # profile command is not available on embedded
+// incompatible_with_embedded,
+// ]
// special db so that it can be run in parallel tests
var stddb = db;
var db = db.getSisterDB("profile3");
diff --git a/jstests/core/profile_findandmodify.js b/jstests/core/profile_findandmodify.js
index 8b431b50cdc..48ec80511eb 100644
--- a/jstests/core/profile_findandmodify.js
+++ b/jstests/core/profile_findandmodify.js
@@ -1,4 +1,8 @@
// Confirms that profiled findAndModify execution contains all expected metrics with proper values.
+// @tags: [
+// # profile command is not available on embedded
+// incompatible_with_embedded,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/read_after_optime.js b/jstests/core/read_after_optime.js
index e44d3cfb70e..c5af82b5bad 100644
--- a/jstests/core/read_after_optime.js
+++ b/jstests/core/read_after_optime.js
@@ -1,5 +1,10 @@
// Test that attempting to read after optime fails if replication is not enabled.
+// @tags: [
+// # This succeeds instead of failing with the expected error code on embedded
+// incompatible_with_embedded_todo_investigate
+// ]
+
(function() {
"use strict";
diff --git a/jstests/core/removec.js b/jstests/core/removec.js
index 64d486285e9..f665914e2a2 100644
--- a/jstests/core/removec.js
+++ b/jstests/core/removec.js
@@ -1,4 +1,9 @@
-// @tags: [requires_non_retryable_writes]
+// @tags: [
+// requires_non_retryable_writes,
+//
+// # Fails on embedded, needs to investigate
+// incompatible_with_embedded_todo_investigate,
+// ]
// Sanity test for removing documents with adjacent index keys. SERVER-2008
diff --git a/jstests/core/repair_database.js b/jstests/core/repair_database.js
index f0ca8b3892b..ee8b9497cfa 100644
--- a/jstests/core/repair_database.js
+++ b/jstests/core/repair_database.js
@@ -1,5 +1,3 @@
-// @tags: [requires_non_retryable_writes]
-
/**
* This tests checks that repair database works and doesn't leave the database in a bad state
* 1.) Drop "repairDB" database
@@ -7,6 +5,13 @@
* 3.) Ensure repair works with no docs, same collection/index as above
* 4.) Ensure repair works with 2 collections, one doc in each
* 5.) Ensure repair works on the local db (special cases)
+ *
+ * @tags: [
+ * requires_non_retryable_writes,
+ *
+ * # repairDatabase command is not available on embedded
+ * incompatible_with_embedded,
+ * ]
*/
// 1. Drop db
diff --git a/jstests/core/repair_database_input_validation.js b/jstests/core/repair_database_input_validation.js
index f8e75d4d07b..d12b0ced904 100644
--- a/jstests/core/repair_database_input_validation.js
+++ b/jstests/core/repair_database_input_validation.js
@@ -7,6 +7,11 @@
* 3.) Repair "repairdb", expect an input validation error.
* 4.) Repair "nonExistantDb", expect an OK.
* 5.) Using "listDatabases" verify only "repairDB" exists.
+ *
+ * @tags: [
+ * # repairDatabase command is not available on embedded
+ * incompatible_with_embedded,
+ * ]
*/
(function() {
diff --git a/jstests/core/repair_server12955.js b/jstests/core/repair_server12955.js
index 9e586454d10..089454279bc 100644
--- a/jstests/core/repair_server12955.js
+++ b/jstests/core/repair_server12955.js
@@ -1,3 +1,8 @@
+// @tags: [
+// # repairDatabase command is not available on embedded
+// incompatible_with_embedded,
+// ]
+
mydb = db.getSisterDB("repair_server12955");
assert.commandWorked(mydb.dropDatabase());
diff --git a/jstests/core/restart_catalog.js b/jstests/core/restart_catalog.js
index 3d998e74b05..245c30e0469 100644
--- a/jstests/core/restart_catalog.js
+++ b/jstests/core/restart_catalog.js
@@ -1,7 +1,12 @@
/**
* Forces the server to restart the catalog and rebuild its in-memory catalog data structures, then
* asserts that the server works normally.
- * @tags: [assumes_read_concern_unchanged]
+ * @tags: [
+ * assumes_read_concern_unchanged,
+ *
+ * # restartCatalog command is not available on embedded
+ * incompatible_with_embedded
+ * ]
*/
(function() {
"use strict";
diff --git a/jstests/core/role_management_helpers.js b/jstests/core/role_management_helpers.js
index d467e2ac099..3643278e9c8 100644
--- a/jstests/core/role_management_helpers.js
+++ b/jstests/core/role_management_helpers.js
@@ -1,4 +1,7 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [
+// requires_non_retryable_commands,
+// requires_auth,
+// ]
// This test is a basic sanity check of the shell helpers for manipulating role objects
// It is not a comprehensive test of the functionality of the role manipulation commands
diff --git a/jstests/core/sortk.js b/jstests/core/sortk.js
index 55c64cfb6e2..87a92f4cc3f 100644
--- a/jstests/core/sortk.js
+++ b/jstests/core/sortk.js
@@ -1,7 +1,13 @@
-// @tags: [requires_non_retryable_writes]
-
// End-to-end testing for index scan explosion + merge sort.
// SERVER-5063 and SERVER-1205.
+
+// @tags: [
+// requires_non_retryable_writes,
+//
+// # Uses $where operator
+// requires_scripting,
+// ]
+
t = db.jstests_sortk;
t.drop();
diff --git a/jstests/core/splitvector.js b/jstests/core/splitvector.js
index 8766089e89b..5a470b17344 100644
--- a/jstests/core/splitvector.js
+++ b/jstests/core/splitvector.js
@@ -1,7 +1,13 @@
-// Cannot implicitly shard accessed collections because the "splitVector" command cannot be run
-// on a sharded collection
+// @tags: [
+// # Cannot implicitly shard accessed collections because the "splitVector" command cannot be
+// # run on a sharded collection
+// assumes_unsharded_collection,
+// requires_fastcount,
+// requires_collstats,
//
-// @tags: [assumes_unsharded_collection, requires_fastcount, requires_collstats]
+// # Need to investigate why this fails on embedded
+// incompatible_with_embedded_todo_investigate,
+// ]
// -------------------------
// SPLITVECTOR TEST UTILS
diff --git a/jstests/core/startup_log.js b/jstests/core/startup_log.js
index 1bbbddfb222..b8021675d44 100644
--- a/jstests/core/startup_log.js
+++ b/jstests/core/startup_log.js
@@ -3,8 +3,16 @@
* entry matching the server's response from the "getCmdLineOpts" command. The former operation may
* be routed to a secondary in the replica set, whereas the latter must be routed to the primary.
*
- * @tags: [assumes_read_preference_unchanged, requires_collstats]
+ * @tags: [
+ * assumes_read_preference_unchanged,
+ * requires_collstats,
+ *
+ * # mongoe modifies commandline internally so the check for unaltered getCmdLineOpts fails,
+ * # figure out if this can be fixed
+ * incompatible_with_embedded_todo_investigate,
+ * ]
*/
+
load('jstests/aggregation/extras/utils.js');
(function() {
diff --git a/jstests/core/top.js b/jstests/core/top.js
index df7671207f4..b7b9f8f3a02 100644
--- a/jstests/core/top.js
+++ b/jstests/core/top.js
@@ -5,8 +5,14 @@
* former operation may be routed to a secondary in the replica set, whereas the latter must be
* routed to the primary.
*
- * @tags: [assumes_read_preference_unchanged, requires_fastcount]
+ * @tags: [
+ * assumes_read_preference_unchanged,
+ * requires_fastcount,
+ *
+ * # top command is not available on embedded
+ * incompatible_with_embedded]
*/
+
(function() {
load("jstests/libs/stats.js");
diff --git a/jstests/core/uniqueness.js b/jstests/core/uniqueness.js
index a1763061af8..336ac10c130 100644
--- a/jstests/core/uniqueness.js
+++ b/jstests/core/uniqueness.js
@@ -1,7 +1,12 @@
-// Cannot implicitly shard accessed collections because of not being able to create unique index
-// using hashed shard key pattern.
+// @tags: [
+// # Cannot implicitly shard accessed collections because of not being able to create unique
+// # index using hashed shard key pattern.
+// cannot_create_unique_index_when_using_hashed_shard_key,
+// requires_fastcount,
//
-// @tags: [cannot_create_unique_index_when_using_hashed_shard_key, requires_fastcount]
+// # Investigate why this fails on embedded
+// incompatible_with_embedded_todo_investigate,
+// ]
var res;
diff --git a/jstests/core/user_management_helpers.js b/jstests/core/user_management_helpers.js
index f383571d107..91a4cdfae69 100644
--- a/jstests/core/user_management_helpers.js
+++ b/jstests/core/user_management_helpers.js
@@ -1,4 +1,4 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [requires_non_retryable_commands, requires_auth]
// This test is a basic sanity check of the shell helpers for manipulating user objects
// It is not a comprehensive test of the functionality of the user manipulation commands
diff --git a/jstests/core/validate_user_documents.js b/jstests/core/validate_user_documents.js
index 7a523a75183..45d250b3c52 100644
--- a/jstests/core/validate_user_documents.js
+++ b/jstests/core/validate_user_documents.js
@@ -1,4 +1,4 @@
-// @tags: [requires_non_retryable_commands]
+// @tags: [requires_non_retryable_commands, requires_auth]
// Ensure that inserts and updates of the system.users collection validate the schema of inserted
// documents.
diff --git a/jstests/core/views/invalid_system_views.js b/jstests/core/views/invalid_system_views.js
index f1b734e92ea..b2491097ba9 100644
--- a/jstests/core/views/invalid_system_views.js
+++ b/jstests/core/views/invalid_system_views.js
@@ -1,9 +1,16 @@
-// @tags: [requires_non_retryable_commands, requires_non_retryable_writes]
-
/**
* Tests that invalid view definitions in system.views do not impact valid commands on existing
* collections.
+ *
+ * @tags: [
+ * requires_non_retryable_commands,
+ * requires_non_retryable_writes,
+ *
+ * # applyOps uses the oplog that require replication support
+ * requires_replication,
+ * ]
*/
+
(function() {
"use strict";
const isMongos = db.runCommand({isdbgrid: 1}).isdbgrid;
diff --git a/jstests/core/views/views_stats.js b/jstests/core/views/views_stats.js
index 22261e9fa81..6c1b4b976d6 100644
--- a/jstests/core/views/views_stats.js
+++ b/jstests/core/views/views_stats.js
@@ -4,7 +4,12 @@
// stage. The former operation must be routed to the primary in a replica set, whereas the latter
// may be routed to a secondary.
//
-// @tags: [assumes_read_preference_unchanged]
+// @tags: [
+// assumes_read_preference_unchanged,
+//
+// # top command is not available on embedded
+// incompatible_with_embedded,
+// ]
(function() {
"use strict";
diff --git a/jstests/core/where1.js b/jstests/core/where1.js
index 53441580b90..87ad49d16c1 100644
--- a/jstests/core/where1.js
+++ b/jstests/core/where1.js
@@ -1,3 +1,7 @@
+// @tags: [
+// # Uses $where operator
+// requires_scripting
+// ]
t = db.getCollection("where1");
t.drop();
diff --git a/jstests/core/where2.js b/jstests/core/where2.js
index 8b4314beb88..16f378c4b5e 100644
--- a/jstests/core/where2.js
+++ b/jstests/core/where2.js
@@ -1,3 +1,7 @@
+// @tags: [
+// # Uses $where operator
+// requires_scripting
+// ]
t = db.getCollection("where2");
t.drop();
diff --git a/jstests/core/where3.js b/jstests/core/where3.js
index e26b36ffcf4..ffbe690312c 100644
--- a/jstests/core/where3.js
+++ b/jstests/core/where3.js
@@ -1,3 +1,7 @@
+// @tags: [
+// # Uses $where operator
+// requires_scripting
+// ]
t = db.where3;
t.drop();
diff --git a/jstests/core/where4.js b/jstests/core/where4.js
index 974748f8dbc..a4997d07561 100644
--- a/jstests/core/where4.js
+++ b/jstests/core/where4.js
@@ -1,6 +1,12 @@
// This test expects a function stored in the system.js collection to be available for a map/reduce,
// which may not be the case if it is implicitly sharded in a passthrough.
-// @tags: [requires_non_retryable_writes, assumes_unsharded_collection]
+// @tags: [
+// requires_non_retryable_writes,
+// assumes_unsharded_collection,
+//
+// # Uses $where operator
+// requires_scripting,
+// ]
var myDB = db.getSiblingDB("where4");
diff --git a/jstests/core/where5.js b/jstests/core/where5.js
index 1c0ea8d0076..02530dbd71e 100644
--- a/jstests/core/where5.js
+++ b/jstests/core/where5.js
@@ -1,5 +1,9 @@
// Tests toString() in object constructor.
// Verifies that native functions do not expose the _native_function and _native_data properties.
+// @tags: [
+// # Uses $where operator
+// requires_scripting
+// ]
var t = db.where5;