summaryrefslogtreecommitdiff
path: root/jstests/aggregation/bugs/server6189.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/aggregation/bugs/server6189.js')
-rw-r--r--jstests/aggregation/bugs/server6189.js114
1 files changed, 61 insertions, 53 deletions
diff --git a/jstests/aggregation/bugs/server6189.js b/jstests/aggregation/bugs/server6189.js
index ff888f8725e..72f3e002a5a 100644
--- a/jstests/aggregation/bugs/server6189.js
+++ b/jstests/aggregation/bugs/server6189.js
@@ -5,34 +5,42 @@ function test(date, testSynthetics) {
print("testing " + date);
c.drop();
- c.save( {date: date} );
+ c.save({date: date});
var ISOfmt = (date.getUTCMilliseconds() == 0) ? 'ISODate("%Y-%m-%dT%H:%M:%SZ")'
: 'ISODate("%Y-%m-%dT%H:%M:%S.%LZ")';
// Can't use aggregate helper or assertErrorCode because we need to handle multiple error types
- var res = c.runCommand('aggregate', {pipeline: [
- {$project: { _id: 0
- , year:{ $year: '$date' }
- , month:{ $month: '$date' }
- , dayOfMonth:{ $dayOfMonth: '$date' }
- , hour:{ $hour: '$date' }
- , minute:{ $minute: '$date' }
- , second:{ $second: '$date' }
-
- // server-6666
- , millisecond:{ $millisecond: '$date' }
-
- // server-9289
- , millisecondPlusTen:{ $millisecond: {$add: ['$date', 10]}}
-
- // $substr will call coerceToString
- , string: {$substr: ['$date', 0,1000]}
-
- // server-11118
- , format: {$dateToString: { format: ISOfmt
- , date: '$date'}}
- }}]});
+ var res = c.runCommand('aggregate',
+ {
+ pipeline: [{
+ $project: {
+ _id: 0,
+ year: {$year: '$date'},
+ month: {$month: '$date'},
+ dayOfMonth: {$dayOfMonth: '$date'},
+ hour: {$hour: '$date'},
+ minute: {$minute: '$date'},
+ second: {$second: '$date'}
+
+ // server-6666
+ ,
+ millisecond: {$millisecond: '$date'}
+
+ // server-9289
+ ,
+ millisecondPlusTen: {$millisecond: {$add: ['$date', 10]}}
+
+ // $substr will call coerceToString
+ ,
+ string: {$substr: ['$date', 0, 1000]}
+
+ // server-11118
+ ,
+ format: {$dateToString: {format: ISOfmt, date: '$date'}}
+ }
+ }]
+ });
if (date.valueOf() < 0 && _isWindows() && res.code == 16422) {
// some versions of windows (but not all) fail with dates before 1970
@@ -40,52 +48,52 @@ function test(date, testSynthetics) {
return;
}
- if (date.valueOf()/1000 < -2*1024*1024*1024 && res.code == 16421) {
+ if (date.valueOf() / 1000 < -2 * 1024 * 1024 * 1024 && res.code == 16421) {
// we correctly detected that we are outside of the range of a 32-bit time_t
print("skipping test of " + date.tojson() + " because it is outside of time_t range");
return;
}
assert.commandWorked(res);
- assert.eq(res.result[0], { year: date.getUTCFullYear()
- , month: date.getUTCMonth() + 1 // jan == 1
- , dayOfMonth: date.getUTCDate()
- , hour: date.getUTCHours()
- , minute: date.getUTCMinutes()
- , second: date.getUTCSeconds()
- , millisecond: date.getUTCMilliseconds()
- , millisecondPlusTen: ((date.getUTCMilliseconds() + 10) % 1000)
- , string: date.tojson().slice(9,28)
- , format: date.tojson()
- } );
+ assert.eq(res.result[0],
+ {
+ year: date.getUTCFullYear(),
+ month: date.getUTCMonth() + 1 // jan == 1
+ ,
+ dayOfMonth: date.getUTCDate(),
+ hour: date.getUTCHours(),
+ minute: date.getUTCMinutes(),
+ second: date.getUTCSeconds(),
+ millisecond: date.getUTCMilliseconds(),
+ millisecondPlusTen: ((date.getUTCMilliseconds() + 10) % 1000),
+ string: date.tojson().slice(9, 28),
+ format: date.tojson()
+ });
if (testSynthetics) {
// Tests with this set all have the same value for these fields
- res = c.aggregate( { $project:{ _id: 0
- , week:{ $week: '$date' }
- , dayOfWeek:{ $dayOfWeek: '$date' }
- , dayOfYear:{ $dayOfYear: '$date' }
- , format: { $dateToString: { format: '%U-%w-%j'
- , date: '$date' } }
- } } );
-
- assert.eq(res.toArray()[0], { week: 0
- , dayOfWeek: 7
- , dayOfYear: 2
- , format: '00-7-002'
- } );
+ res = c.aggregate({
+ $project: {
+ _id: 0,
+ week: {$week: '$date'},
+ dayOfWeek: {$dayOfWeek: '$date'},
+ dayOfYear: {$dayOfYear: '$date'},
+ format: {$dateToString: {format: '%U-%w-%j', date: '$date'}}
+ }
+ });
+
+ assert.eq(res.toArray()[0], {week: 0, dayOfWeek: 7, dayOfYear: 2, format: '00-7-002'});
}
}
-
// Basic test
test(ISODate('1960-01-02 03:04:05.006Z'), true);
// Testing special rounding rules for seconds
-test(ISODate('1960-01-02 03:04:04.999Z'), false); // second = 4
-test(ISODate('1960-01-02 03:04:05.000Z'), true); // second = 5
-test(ISODate('1960-01-02 03:04:05.001Z'), true); // second = 5
-test(ISODate('1960-01-02 03:04:05.999Z'), true); // second = 5
+test(ISODate('1960-01-02 03:04:04.999Z'), false); // second = 4
+test(ISODate('1960-01-02 03:04:05.000Z'), true); // second = 5
+test(ISODate('1960-01-02 03:04:05.001Z'), true); // second = 5
+test(ISODate('1960-01-02 03:04:05.999Z'), true); // second = 5
// Test date before 1900 (negative tm_year values from gmtime)
test(ISODate('1860-01-02 03:04:05.006Z'), false);