diff options
Diffstat (limited to 'jstests/aggregation/sources/densify')
9 files changed, 71 insertions, 116 deletions
diff --git a/jstests/aggregation/sources/densify/decimal.js b/jstests/aggregation/sources/densify/decimal.js index 4c8b423f38b..415cd3117b3 100644 --- a/jstests/aggregation/sources/densify/decimal.js +++ b/jstests/aggregation/sources/densify/decimal.js @@ -10,14 +10,6 @@ load("jstests/aggregation/extras/utils.js"); // For arrayEq. -const featureEnabled = - assert.commandWorked(db.adminCommand({getParameter: 1, featureFlagDensify: 1})) - .featureFlagDensify.value; -if (!featureEnabled) { - jsTestLog("Skipping test because the densify feature flag is disabled"); - return; -} - function buildErrorString(found, expected) { return "Expected:\n" + tojson(expected) + "\nGot:\n" + tojson(found); } @@ -94,6 +86,7 @@ expectedResult = [ {val: .7}, {val: .7999999999999999}, {val: .8999999999999999}, + {val: .9999999999999999}, {val: NumberDecimal(1)}, ]; result = coll.aggregate(pipeline).toArray(); diff --git a/jstests/aggregation/sources/densify/desugar.js b/jstests/aggregation/sources/densify/desugar.js index b1f7c11154d..0d89abd3feb 100644 --- a/jstests/aggregation/sources/densify/desugar.js +++ b/jstests/aggregation/sources/densify/desugar.js @@ -11,14 +11,6 @@ (function() { "use strict"; -const featureEnabled = - assert.commandWorked(db.adminCommand({getParameter: 1, featureFlagDensify: 1})) - .featureFlagDensify.value; -if (!featureEnabled) { - jsTestLog("Skipping test because the densify feature flag is disabled"); - return; -} - load("jstests/libs/fixture_helpers.js"); const coll = db[jsTestName()]; @@ -114,27 +106,29 @@ assert.eq( ]); // PartitionByFields are prepended to the sortKey if date bounds are specified. -assert.eq( - desugar({ - $densify: { - field: "a", - partitionByFields: ["b", "c"], - range: - {step: 1.0, bounds: [new Date("2020-01-03"), new Date("2020-01-04")], unit: "day"} - } - }), - [ - {$sort: {sortKey: {b: 1, c: 1, a: 1}}}, - { - $_internalDensify: { - field: "a", - partitionByFields: ["b", "c"], - range: { - step: 1.0, - bounds: [new Date("2020-01-03"), new Date("2020-01-04")], - unit: "day" - } - } - }, - ]); +assert.eq(desugar({ + $densify: { + field: "a", + partitionByFields: ["b", "c"], + range: { + step: 1.0, + bounds: [new ISODate("2020-01-03"), new ISODate("2020-01-04")], + unit: "day" + } + } + }), + [ + {$sort: {sortKey: {b: 1, c: 1, a: 1}}}, + { + $_internalDensify: { + field: "a", + partitionByFields: ["b", "c"], + range: { + step: 1.0, + bounds: [new ISODate("2020-01-03"), new ISODate("2020-01-04")], + unit: "day" + } + } + }, + ]); })(); diff --git a/jstests/aggregation/sources/densify/explicit_range.js b/jstests/aggregation/sources/densify/explicit_range.js index 6f7e2d3d3cd..842ae79d5bf 100644 --- a/jstests/aggregation/sources/densify/explicit_range.js +++ b/jstests/aggregation/sources/densify/explicit_range.js @@ -10,13 +10,6 @@ load("jstests/aggregation/sources/densify/libs/densify_in_js.js"); (function() { "use strict"; -const featureEnabled = - assert.commandWorked(db.adminCommand({getParameter: 1, featureFlagDensify: 1})) - .featureFlagDensify.value; -if (!featureEnabled) { - jsTestLog("Skipping test because the densify feature flag is disabled"); - return; -} const collName = jsTestName(); const coll = db.getCollection(collName); coll.drop(); @@ -25,7 +18,7 @@ coll.drop(); for (let i = 0; i < densifyUnits.length; i++) { const unit = densifyUnits[i]; coll.drop(); - const base = unit ? new Date(2021, 0, 1) : 0; + const base = unit ? new ISODate("2021-01-01") : 0; const {add} = getArithmeticFunctionsForUnit(unit); const runDensifyRangeTest = ({step, bounds}, msg) => testDensifyStage({ diff --git a/jstests/aggregation/sources/densify/full_range.js b/jstests/aggregation/sources/densify/full_range.js index 0fc8d247288..66f13540019 100644 --- a/jstests/aggregation/sources/densify/full_range.js +++ b/jstests/aggregation/sources/densify/full_range.js @@ -10,13 +10,6 @@ load("jstests/aggregation/sources/densify/libs/densify_in_js.js"); (function() { "use strict"; -const featureEnabled = - assert.commandWorked(db.adminCommand({getParameter: 1, featureFlagDensify: 1})) - .featureFlagDensify.value; -if (!featureEnabled) { - jsTestLog("Skipping test because the densify feature flag is disabled"); - return; -} const collName = jsTestName(); const coll = db.getCollection(collName); coll.drop(); @@ -25,7 +18,7 @@ coll.drop(); for (let i = 0; i < densifyUnits.length; i++) { const unit = densifyUnits[i]; coll.drop(); - const base = unit ? new Date(2021, 0, 1) : 0; + const base = unit ? new ISODate("2021-01-01") : 0; const {add} = getArithmeticFunctionsForUnit(unit); // Run all tests for different step values. diff --git a/jstests/aggregation/sources/densify/generated_limit.js b/jstests/aggregation/sources/densify/generated_limit.js index 704de96dac2..45acd24e404 100644 --- a/jstests/aggregation/sources/densify/generated_limit.js +++ b/jstests/aggregation/sources/densify/generated_limit.js @@ -12,13 +12,6 @@ load("jstests/noPassthrough/libs/server_parameter_helpers.js"); // For setParameterOnAllHosts. load("jstests/libs/discover_topology.js"); // For findNonConfigNodes. -const featureEnabled = - assert.commandWorked(db.adminCommand({getParameter: 1, featureFlagDensify: 1})) - .featureFlagDensify.value; -if (!featureEnabled) { - jsTestLog("Skipping test because the densify feature flag is disabled"); - return; -} const paramName = "internalQueryMaxAllowedDensifyDocs"; const origParamValue = assert.commandWorked( db.adminCommand({getParameter: 1, internalQueryMaxAllowedDensifyDocs: 1}))[paramName]; diff --git a/jstests/aggregation/sources/densify/libs/densify_in_js.js b/jstests/aggregation/sources/densify/libs/densify_in_js.js index 48b63298499..4c92bd572bc 100644 --- a/jstests/aggregation/sources/densify/libs/densify_in_js.js +++ b/jstests/aggregation/sources/densify/libs/densify_in_js.js @@ -13,18 +13,18 @@ load("jstests/aggregation/extras/utils.js"); // arrayEq */ const makeArithmeticHelpers = (unitName, factor) => { const getter = date => { - const newDate = new Date(date); + const newDate = new ISODate(date.toISOString()); // Calling the proper function on the passed in date object. If the unitName was "Seconds" // would be equivalent to `newDate.getSeconds()`. - return newDate["get" + unitName](); + return newDate["getUTC" + unitName](); }; // Return a new date with the proper unit adjusted with the second parameter. // Dates and the setter helpers are generally mutable, but this function will make sure // the arithmetic helpers won't mutate their inputs. const setter = (date, newComponent) => { - const newDate = new Date(date); - newDate["set" + unitName](newComponent); + const newDate = new ISODate(date.toISOString()); + newDate["setUTC" + unitName](newComponent); return newDate; }; diff --git a/jstests/aggregation/sources/densify/libs/parse_util.js b/jstests/aggregation/sources/densify/libs/parse_util.js index 355e3aef436..7ccedefd81d 100644 --- a/jstests/aggregation/sources/densify/libs/parse_util.js +++ b/jstests/aggregation/sources/densify/libs/parse_util.js @@ -9,14 +9,6 @@ let parseUtil = (function(db, coll, stageName, options = {}) { } function runTest(stageName) { - const featureEnabled = - assert.commandWorked(db.adminCommand({getParameter: 1, featureFlagDensify: 1})) - .featureFlagDensify.value; - if (!featureEnabled) { - jsTestLog("Skipping test because the densify feature flag is disabled"); - return; - } - // Required fields. const kIDLRequiredFieldErrorCode = 40414; assert.commandFailedWithCode( @@ -53,7 +45,7 @@ let parseUtil = (function(db, coll, stageName, options = {}) { field: "a", range: { step: 1.0, - bounds: [new Date("2020-01-01"), new Date("2020-01-02")], + bounds: [new ISODate("2020-01-01"), new ISODate("2020-01-02")], unit: 1000 } } @@ -67,7 +59,7 @@ let parseUtil = (function(db, coll, stageName, options = {}) { run({ [stageName]: { field: "a", - range: {step: 1.0, bounds: [new Date("2020-01-01")], unit: "second"} + range: {step: 1.0, bounds: [new ISODate("2020-01-01")], unit: "second"} } }), 5733403, @@ -118,7 +110,7 @@ let parseUtil = (function(db, coll, stageName, options = {}) { field: "a", range: { step: 1.0, - bounds: [new Date("2020-01-01"), new Date("2019-01-01")], + bounds: [new ISODate("2020-01-01"), new ISODate("2019-01-01")], unit: "second" } } @@ -133,7 +125,8 @@ let parseUtil = (function(db, coll, stageName, options = {}) { // Mixed numeric and date bounds assert.commandFailedWithCode( run({ - [stageName]: {field: "a", range: {step: 1.0, bounds: [1, new Date("2020-01-01")]}} + [stageName]: + {field: "a", range: {step: 1.0, bounds: [1, new ISODate("2020-01-01")]}} }), 5733406, "a bounding array must contain either both dates or both numeric types"); @@ -141,7 +134,7 @@ let parseUtil = (function(db, coll, stageName, options = {}) { run({ [stageName]: { field: "a", - range: {step: 1.0, bounds: [new Date("2020-01-01"), 1], unit: "second"} + range: {step: 1.0, bounds: [new ISODate("2020-01-01"), 1], unit: "second"} } }), 5733402, @@ -154,7 +147,7 @@ let parseUtil = (function(db, coll, stageName, options = {}) { field: "a", range: { step: 1.0, - bounds: [new Date("2020-01-01"), new Date("2021-01-01")], + bounds: [new ISODate("2020-01-01"), new ISODate("2021-01-01")], unit: "day" } } @@ -165,7 +158,7 @@ let parseUtil = (function(db, coll, stageName, options = {}) { partitionByFields: ["b", "c"], range: { step: 1.0, - bounds: [new Date("2020-01-01"), new Date("2021-01-01")], + bounds: [new ISODate("2020-01-01"), new ISODate("2021-01-01")], unit: "week" } } diff --git a/jstests/aggregation/sources/densify/memory_limit.js b/jstests/aggregation/sources/densify/memory_limit.js index 91f793d5985..06f5026f032 100644 --- a/jstests/aggregation/sources/densify/memory_limit.js +++ b/jstests/aggregation/sources/densify/memory_limit.js @@ -13,13 +13,6 @@ load("jstests/aggregation/extras/utils.js"); // For arrayEq. load("jstests/noPassthrough/libs/server_parameter_helpers.js"); // For setParameterOnAllHosts. load("jstests/libs/discover_topology.js"); // For findNonConfigNodes. -const featureEnabled = - assert.commandWorked(db.adminCommand({getParameter: 1, featureFlagDensify: 1})) - .featureFlagDensify.value; -if (!featureEnabled) { - jsTestLog("Skipping test because the densify feature flag is disabled"); - return; -} const origParamValue = assert.commandWorked(db.adminCommand({ getParameter: 1, internalDocumentSourceDensifyMaxMemoryBytes: 1 diff --git a/jstests/aggregation/sources/densify/partitions.js b/jstests/aggregation/sources/densify/partitions.js index 4517e753c5a..fc0339d3a17 100644 --- a/jstests/aggregation/sources/densify/partitions.js +++ b/jstests/aggregation/sources/densify/partitions.js @@ -11,14 +11,6 @@ load("jstests/aggregation/extras/utils.js"); // arrayEq -const featureEnabled = - assert.commandWorked(db.adminCommand({getParameter: 1, featureFlagDensify: 1})) - .featureFlagDensify.value; -if (!featureEnabled) { - jsTestLog("Skipping test because the densify feature flag is disabled"); - return; -} - const coll = db[jsTestName()]; function buildErrorString(found, expected) { @@ -57,10 +49,10 @@ function testOneDates() { coll.drop(); const testDocs = [ - {val: new Date(2021, 0, 1), partition: 0}, - {val: new Date(2021, 0, 3), partition: 0}, - {val: new Date(2021, 0, 1), partition: 1}, - {val: new Date(2021, 0, 3), partition: 1} + {val: new ISODate("2021-01-01"), partition: 0}, + {val: new ISODate("2021-01-03"), partition: 0}, + {val: new ISODate("2021-01-01"), partition: 1}, + {val: new ISODate("2021-01-03"), partition: 1} ]; assert.commandWorked(coll.insert(testDocs)); @@ -75,8 +67,10 @@ function testOneDates() { } ]); const resultArray = result.toArray(); - const testExpected = testDocs.concat( - [{val: new Date(2021, 0, 2), partition: 0}, {val: new Date(2021, 0, 2), partition: 1}]); + const testExpected = testDocs.concat([ + {val: new ISODate("2021-01-02"), partition: 0}, + {val: new ISODate("2021-01-02"), partition: 1} + ]); assert(arrayEq(resultArray, testExpected), buildErrorString(resultArray, testExpected)); coll.drop(); } @@ -297,13 +291,16 @@ function fullTestTwoDates(stepVal = 2) { let testDocs = []; let testExpected = []; // Add an initial document. - testDocs.push({val: new Date(2021, 0, 1), part: 0}); - testDocs.push({val: new Date(2021, 0, 1), part: 1}); - testDocs.push({val: new Date(2031, 0, 1), part: 2}); - testDocs.push({val: new Date(2025, 0, 1), part: 3}); + testDocs.push({val: new ISODate("2021-01-01"), part: 0}); + testDocs.push({val: new ISODate("2021-01-01"), part: 1}); + testDocs.push({val: new ISODate("2031-01-01"), part: 2}); + testDocs.push({val: new ISODate("2025-01-01"), part: 3}); for (let densifyVal = 0; densifyVal < 11; densifyVal += stepVal) { for (let partitionVal = 0; partitionVal <= 3; partitionVal++) { - testExpected.push({val: new Date(2021 + densifyVal, 0, 1), part: partitionVal}); + testExpected.push({ + val: new ISODate((2021 + densifyVal).toString().padStart(2, '0') + "-01-01"), + part: partitionVal + }); } } assert.commandWorked(coll.insert(testDocs)); @@ -442,15 +439,18 @@ function rangeTestTwoDates() { coll.drop(); let testDocs = []; let testExpected = []; - testDocs.push({val: new Date(2021, 0, 1), part: 0}); - testExpected.push({val: new Date(2021, 0, 1), part: 0}); - testDocs.push({val: new Date(2021, 5, 1), part: 1}); - testExpected.push({val: new Date(2021, 5, 1), part: 1}); - testDocs.push({val: new Date(2021, 10, 1), part: 2}); - testExpected.push({val: new Date(2021, 10, 1), part: 2}); + testDocs.push({val: new ISODate("2021-01-01"), part: 0}); + testExpected.push({val: new ISODate("2021-01-01"), part: 0}); + testDocs.push({val: new ISODate("2021-06-01"), part: 1}); + testExpected.push({val: new ISODate("2021-06-01"), part: 1}); + testDocs.push({val: new ISODate("2021-11-01"), part: 2}); + testExpected.push({val: new ISODate("2021-11-01"), part: 2}); for (let densifyVal = 4; densifyVal < 8; densifyVal += 2) { for (let partitionVal = 0; partitionVal <= 2; partitionVal++) { - testExpected.push({val: new Date(2021, densifyVal, 1), part: partitionVal}); + testExpected.push({ + val: new ISODate("2021-" + densifyVal.toString().padStart(2, '0') + "-01"), + part: partitionVal + }); } } assert.commandWorked(coll.insert(testDocs)); @@ -459,8 +459,11 @@ function rangeTestTwoDates() { { $densify: { field: "val", - range: - {step: 2, unit: "month", bounds: [new Date(2021, 4, 1), new Date(2021, 8, 1)]}, + range: { + step: 2, + unit: "month", + bounds: [new ISODate("2021-05-01"), new ISODate("2021-09-01")] + }, partitionByFields: ["part"] } }, |