diff options
-rw-r--r-- | jstests/basicb.js | 7 | ||||
-rw-r--r-- | jstests/core/all.js (renamed from jstests/all.js) | 0 | ||||
-rw-r--r-- | jstests/core/all2.js (renamed from jstests/all2.js) | 0 | ||||
-rw-r--r-- | jstests/core/all3.js (renamed from jstests/all3.js) | 0 | ||||
-rw-r--r-- | jstests/core/all4.js (renamed from jstests/all4.js) | 2 | ||||
-rw-r--r-- | jstests/core/all5.js (renamed from jstests/all5.js) | 0 | ||||
-rw-r--r-- | jstests/core/and.js (renamed from jstests/and.js) | 0 | ||||
-rw-r--r-- | jstests/core/and2.js (renamed from jstests/and2.js) | 0 | ||||
-rw-r--r-- | jstests/core/and3.js (renamed from jstests/and3.js) | 0 | ||||
-rw-r--r-- | jstests/core/andor.js (renamed from jstests/andor.js) | 0 | ||||
-rw-r--r-- | jstests/core/apitest_db.js (renamed from jstests/apitest_db.js) | 0 | ||||
-rw-r--r-- | jstests/core/apitest_dbcollection.js (renamed from jstests/apitest_dbcollection.js) | 0 | ||||
-rw-r--r-- | jstests/core/apply_ops1.js (renamed from jstests/apply_ops1.js) | 0 | ||||
-rw-r--r-- | jstests/core/apply_ops2.js (renamed from jstests/apply_ops2.js) | 0 | ||||
-rw-r--r-- | jstests/core/array1.js (renamed from jstests/array1.js) | 0 | ||||
-rw-r--r-- | jstests/core/array3.js (renamed from jstests/array3.js) | 0 | ||||
-rw-r--r-- | jstests/core/array4.js (renamed from jstests/array4.js) | 0 | ||||
-rw-r--r-- | jstests/core/array_match1.js (renamed from jstests/array_match1.js) | 0 | ||||
-rw-r--r-- | jstests/core/array_match2.js (renamed from jstests/array_match2.js) | 0 | ||||
-rw-r--r-- | jstests/core/array_match3.js (renamed from jstests/array_match3.js) | 0 | ||||
-rw-r--r-- | jstests/core/array_match4.js (renamed from jstests/array_match4.js) | 0 | ||||
-rw-r--r-- | jstests/core/arrayfind1.js (renamed from jstests/arrayfind1.js) | 0 | ||||
-rw-r--r-- | jstests/core/arrayfind2.js (renamed from jstests/arrayfind2.js) | 0 | ||||
-rw-r--r-- | jstests/core/arrayfind3.js (renamed from jstests/arrayfind3.js) | 0 | ||||
-rw-r--r-- | jstests/core/arrayfind4.js (renamed from jstests/arrayfind4.js) | 0 | ||||
-rw-r--r-- | jstests/core/arrayfind5.js (renamed from jstests/arrayfind5.js) | 0 | ||||
-rw-r--r-- | jstests/core/arrayfind6.js (renamed from jstests/arrayfind6.js) | 0 | ||||
-rw-r--r-- | jstests/core/arrayfind7.js (renamed from jstests/arrayfind7.js) | 0 | ||||
-rw-r--r-- | jstests/core/arrayfind8.js (renamed from jstests/arrayfind8.js) | 0 | ||||
-rw-r--r-- | jstests/core/arrayfind9.js (renamed from jstests/arrayfind9.js) | 0 | ||||
-rw-r--r-- | jstests/core/arrayfinda.js (renamed from jstests/arrayfinda.js) | 0 | ||||
-rw-r--r-- | jstests/core/auth1.js (renamed from jstests/auth1.js) | 0 | ||||
-rw-r--r-- | jstests/core/auth2.js (renamed from jstests/auth2.js) | 0 | ||||
-rw-r--r-- | jstests/core/auth_copydb.js (renamed from jstests/auth_copydb.js) | 0 | ||||
-rw-r--r-- | jstests/core/autoid.js (renamed from jstests/autoid.js) | 0 | ||||
-rw-r--r-- | jstests/core/bad_index_plugin.js (renamed from jstests/bad_index_plugin.js) | 8 | ||||
-rw-r--r-- | jstests/core/basic1.js (renamed from jstests/basic1.js) | 0 | ||||
-rw-r--r-- | jstests/core/basic2.js (renamed from jstests/basic2.js) | 0 | ||||
-rw-r--r-- | jstests/core/basic3.js (renamed from jstests/basic3.js) | 8 | ||||
-rw-r--r-- | jstests/core/basic4.js (renamed from jstests/basic4.js) | 0 | ||||
-rw-r--r-- | jstests/core/basic5.js (renamed from jstests/basic5.js) | 0 | ||||
-rw-r--r-- | jstests/core/basic6.js (renamed from jstests/basic6.js) | 0 | ||||
-rw-r--r-- | jstests/core/basic7.js (renamed from jstests/basic7.js) | 0 | ||||
-rw-r--r-- | jstests/core/basic8.js (renamed from jstests/basic8.js) | 0 | ||||
-rw-r--r-- | jstests/core/basic9.js (renamed from jstests/basic9.js) | 4 | ||||
-rw-r--r-- | jstests/core/basica.js (renamed from jstests/basica.js) | 0 | ||||
-rw-r--r-- | jstests/core/basicb.js | 6 | ||||
-rw-r--r-- | jstests/core/basicc.js (renamed from jstests/basicc.js) | 6 | ||||
-rw-r--r-- | jstests/core/batch_size.js (renamed from jstests/batch_size.js) | 0 | ||||
-rw-r--r-- | jstests/core/bench_test1.js (renamed from jstests/bench_test1.js) | 0 | ||||
-rw-r--r-- | jstests/core/bench_test2.js (renamed from jstests/bench_test2.js) | 1 | ||||
-rw-r--r-- | jstests/core/bench_test3.js (renamed from jstests/bench_test3.js) | 0 | ||||
-rw-r--r-- | jstests/core/big_object1.js (renamed from jstests/big_object1.js) | 5 | ||||
-rw-r--r-- | jstests/core/binData.js (renamed from jstests/binData.js) | 0 | ||||
-rw-r--r-- | jstests/core/block_check_supported.js (renamed from jstests/block_check_supported.js) | 0 | ||||
-rw-r--r-- | jstests/core/bulk_insert.js (renamed from jstests/bulk_insert.js) | 0 | ||||
-rw-r--r-- | jstests/core/capped.js (renamed from jstests/capped.js) | 0 | ||||
-rw-r--r-- | jstests/core/capped1.js (renamed from jstests/capped1.js) | 0 | ||||
-rw-r--r-- | jstests/core/capped2.js (renamed from jstests/capped2.js) | 0 | ||||
-rw-r--r-- | jstests/core/capped3.js (renamed from jstests/capped3.js) | 0 | ||||
-rw-r--r-- | jstests/core/capped5.js (renamed from jstests/capped5.js) | 0 | ||||
-rw-r--r-- | jstests/core/capped6.js (renamed from jstests/capped6.js) | 0 | ||||
-rw-r--r-- | jstests/core/capped7.js (renamed from jstests/capped7.js) | 0 | ||||
-rw-r--r-- | jstests/core/capped8.js (renamed from jstests/capped8.js) | 0 | ||||
-rw-r--r-- | jstests/core/capped9.js (renamed from jstests/capped9.js) | 3 | ||||
-rw-r--r-- | jstests/core/capped_empty.js (renamed from jstests/capped_empty.js) | 0 | ||||
-rw-r--r-- | jstests/core/capped_max.js (renamed from jstests/capped_max.js) | 0 | ||||
-rw-r--r-- | jstests/core/capped_server2639.js (renamed from jstests/capped_server2639.js) | 6 | ||||
-rw-r--r-- | jstests/core/capped_server7543.js (renamed from jstests/capped_server7543.js) | 0 | ||||
-rw-r--r-- | jstests/core/cappeda.js (renamed from jstests/cappeda.js) | 7 | ||||
-rw-r--r-- | jstests/core/check_shard_index.js (renamed from jstests/check_shard_index.js) | 0 | ||||
-rw-r--r-- | jstests/core/collmod.js (renamed from jstests/collmod.js) | 0 | ||||
-rw-r--r-- | jstests/core/compact.js (renamed from jstests/compact.js) | 0 | ||||
-rw-r--r-- | jstests/core/compact2.js (renamed from jstests/compact2.js) | 0 | ||||
-rw-r--r-- | jstests/core/compactPreservePadding.js (renamed from jstests/compactPreservePadding.js) | 0 | ||||
-rw-r--r-- | jstests/core/connection_status.js (renamed from jstests/connection_status.js) | 0 | ||||
-rw-r--r-- | jstests/core/connection_string_validation.js (renamed from jstests/connection_string_validation.js) | 0 | ||||
-rw-r--r-- | jstests/core/constructors.js (renamed from jstests/constructors.js) | 3 | ||||
-rw-r--r-- | jstests/core/copydb.js (renamed from jstests/copydb.js) | 0 | ||||
-rw-r--r-- | jstests/core/count.js (renamed from jstests/count.js) | 0 | ||||
-rw-r--r-- | jstests/core/count10.js (renamed from jstests/count10.js) | 2 | ||||
-rw-r--r-- | jstests/core/count2.js (renamed from jstests/count2.js) | 0 | ||||
-rw-r--r-- | jstests/core/count3.js (renamed from jstests/count3.js) | 0 | ||||
-rw-r--r-- | jstests/core/count4.js (renamed from jstests/count4.js) | 0 | ||||
-rw-r--r-- | jstests/core/count5.js (renamed from jstests/count5.js) | 0 | ||||
-rw-r--r-- | jstests/core/count6.js (renamed from jstests/count6.js) | 0 | ||||
-rw-r--r-- | jstests/core/count7.js (renamed from jstests/count7.js) | 0 | ||||
-rw-r--r-- | jstests/core/count9.js (renamed from jstests/count9.js) | 0 | ||||
-rw-r--r-- | jstests/core/count_hint.js (renamed from jstests/count_hint.js) | 0 | ||||
-rw-r--r-- | jstests/core/counta.js (renamed from jstests/counta.js) | 0 | ||||
-rw-r--r-- | jstests/core/countb.js (renamed from jstests/countb.js) | 0 | ||||
-rw-r--r-- | jstests/core/countc.js (renamed from jstests/countc.js) | 0 | ||||
-rw-r--r-- | jstests/core/coveredIndex1.js (renamed from jstests/coveredIndex1.js) | 0 | ||||
-rw-r--r-- | jstests/core/coveredIndex2.js (renamed from jstests/coveredIndex2.js) | 0 | ||||
-rw-r--r-- | jstests/core/coveredIndex3.js (renamed from jstests/coveredIndex3.js) | 0 | ||||
-rw-r--r-- | jstests/core/coveredIndex4.js (renamed from jstests/coveredIndex4.js) | 0 | ||||
-rw-r--r-- | jstests/core/coveredIndex5.js (renamed from jstests/coveredIndex5.js) | 0 | ||||
-rw-r--r-- | jstests/core/covered_index_compound_1.js (renamed from jstests/covered_index_compound_1.js) | 0 | ||||
-rw-r--r-- | jstests/core/covered_index_geo_1.js (renamed from jstests/covered_index_geo_1.js) | 0 | ||||
-rw-r--r-- | jstests/core/covered_index_geo_2.js (renamed from jstests/covered_index_geo_2.js) | 0 | ||||
-rw-r--r-- | jstests/core/covered_index_negative_1.js (renamed from jstests/covered_index_negative_1.js) | 0 | ||||
-rw-r--r-- | jstests/core/covered_index_simple_1.js (renamed from jstests/covered_index_simple_1.js) | 0 | ||||
-rw-r--r-- | jstests/core/covered_index_simple_2.js (renamed from jstests/covered_index_simple_2.js) | 0 | ||||
-rw-r--r-- | jstests/core/covered_index_simple_3.js (renamed from jstests/covered_index_simple_3.js) | 0 | ||||
-rw-r--r-- | jstests/core/covered_index_simple_id.js (renamed from jstests/covered_index_simple_id.js) | 0 | ||||
-rw-r--r-- | jstests/core/covered_index_sort_1.js (renamed from jstests/covered_index_sort_1.js) | 0 | ||||
-rw-r--r-- | jstests/core/covered_index_sort_2.js (renamed from jstests/covered_index_sort_2.js) | 0 | ||||
-rw-r--r-- | jstests/core/covered_index_sort_3.js (renamed from jstests/covered_index_sort_3.js) | 0 | ||||
-rw-r--r-- | jstests/core/create_indexes.js (renamed from jstests/create_indexes.js) | 37 | ||||
-rw-r--r-- | jstests/core/currentop.js (renamed from jstests/currentop.js) | 5 | ||||
-rw-r--r-- | jstests/core/cursor1.js (renamed from jstests/cursor1.js) | 0 | ||||
-rw-r--r-- | jstests/core/cursor2.js (renamed from jstests/cursor2.js) | 0 | ||||
-rw-r--r-- | jstests/core/cursor3.js (renamed from jstests/cursor3.js) | 0 | ||||
-rw-r--r-- | jstests/core/cursor4.js (renamed from jstests/cursor4.js) | 0 | ||||
-rw-r--r-- | jstests/core/cursor5.js (renamed from jstests/cursor5.js) | 0 | ||||
-rw-r--r-- | jstests/core/cursor6.js (renamed from jstests/cursor6.js) | 0 | ||||
-rw-r--r-- | jstests/core/cursor7.js (renamed from jstests/cursor7.js) | 0 | ||||
-rw-r--r-- | jstests/core/cursora.js (renamed from jstests/cursora.js) | 10 | ||||
-rw-r--r-- | jstests/core/cursorb.js (renamed from jstests/cursorb.js) | 0 | ||||
-rw-r--r-- | jstests/core/datasize.js (renamed from jstests/datasize.js) | 0 | ||||
-rw-r--r-- | jstests/core/datasize2.js (renamed from jstests/datasize2.js) | 0 | ||||
-rw-r--r-- | jstests/core/datasize3.js (renamed from jstests/datasize3.js) | 0 | ||||
-rw-r--r-- | jstests/core/date1.js (renamed from jstests/date1.js) | 0 | ||||
-rw-r--r-- | jstests/core/date2.js (renamed from jstests/date2.js) | 0 | ||||
-rw-r--r-- | jstests/core/date3.js (renamed from jstests/date3.js) | 0 | ||||
-rw-r--r-- | jstests/core/db.js (renamed from jstests/db.js) | 0 | ||||
-rw-r--r-- | jstests/core/dbadmin.js (renamed from jstests/dbadmin.js) | 0 | ||||
-rw-r--r-- | jstests/core/dbcase.js (renamed from jstests/dbcase.js) | 10 | ||||
-rw-r--r-- | jstests/core/dbcase2.js (renamed from jstests/dbcase2.js) | 0 | ||||
-rw-r--r-- | jstests/core/dbhash.js (renamed from jstests/dbhash.js) | 0 | ||||
-rw-r--r-- | jstests/core/dbhash2.js (renamed from jstests/dbhash2.js) | 0 | ||||
-rw-r--r-- | jstests/core/dbref1.js (renamed from jstests/dbref1.js) | 0 | ||||
-rw-r--r-- | jstests/core/dbref2.js (renamed from jstests/dbref2.js) | 0 | ||||
-rw-r--r-- | jstests/core/dbref3.js (renamed from jstests/dbref3.js) | 0 | ||||
-rw-r--r-- | jstests/core/delx.js (renamed from jstests/delx.js) | 2 | ||||
-rw-r--r-- | jstests/core/depth_limit.js (renamed from jstests/depth_limit.js) | 0 | ||||
-rw-r--r-- | jstests/core/distinct1.js (renamed from jstests/distinct1.js) | 0 | ||||
-rw-r--r-- | jstests/core/distinct2.js (renamed from jstests/distinct2.js) | 0 | ||||
-rw-r--r-- | jstests/core/distinct3.js (renamed from jstests/distinct3.js) | 24 | ||||
-rw-r--r-- | jstests/core/distinct_array1.js (renamed from jstests/distinct_array1.js) | 0 | ||||
-rw-r--r-- | jstests/core/distinct_index1.js (renamed from jstests/distinct_index1.js) | 0 | ||||
-rw-r--r-- | jstests/core/distinct_index2.js (renamed from jstests/distinct_index2.js) | 0 | ||||
-rw-r--r-- | jstests/core/distinct_speed1.js (renamed from jstests/distinct_speed1.js) | 0 | ||||
-rw-r--r-- | jstests/core/drop.js (renamed from jstests/drop.js) | 0 | ||||
-rw-r--r-- | jstests/core/drop2.js (renamed from jstests/drop2.js) | 1 | ||||
-rw-r--r-- | jstests/core/drop3.js (renamed from jstests/drop3.js) | 4 | ||||
-rw-r--r-- | jstests/core/drop_index.js (renamed from jstests/drop_index.js) | 0 | ||||
-rw-r--r-- | jstests/core/dropdb.js (renamed from jstests/dropdb.js) | 1 | ||||
-rw-r--r-- | jstests/core/dropdb_race.js (renamed from jstests/dropdb_race.js) | 7 | ||||
-rw-r--r-- | jstests/core/elemMatchProjection.js (renamed from jstests/elemMatchProjection.js) | 0 | ||||
-rw-r--r-- | jstests/core/error2.js (renamed from jstests/error2.js) | 0 | ||||
-rw-r--r-- | jstests/core/error5.js (renamed from jstests/error5.js) | 0 | ||||
-rw-r--r-- | jstests/core/eval0.js (renamed from jstests/eval0.js) | 0 | ||||
-rw-r--r-- | jstests/core/eval1.js (renamed from jstests/eval1.js) | 0 | ||||
-rw-r--r-- | jstests/core/eval2.js (renamed from jstests/eval2.js) | 0 | ||||
-rw-r--r-- | jstests/core/eval3.js (renamed from jstests/eval3.js) | 0 | ||||
-rw-r--r-- | jstests/core/eval4.js (renamed from jstests/eval4.js) | 0 | ||||
-rw-r--r-- | jstests/core/eval5.js (renamed from jstests/eval5.js) | 0 | ||||
-rw-r--r-- | jstests/core/eval6.js (renamed from jstests/eval6.js) | 0 | ||||
-rw-r--r-- | jstests/core/eval7.js (renamed from jstests/eval7.js) | 0 | ||||
-rw-r--r-- | jstests/core/eval8.js (renamed from jstests/eval8.js) | 0 | ||||
-rw-r--r-- | jstests/core/eval9.js (renamed from jstests/eval9.js) | 0 | ||||
-rw-r--r-- | jstests/core/eval_nolock.js (renamed from jstests/eval_nolock.js) | 0 | ||||
-rw-r--r-- | jstests/core/evala.js (renamed from jstests/evala.js) | 0 | ||||
-rw-r--r-- | jstests/core/evalb.js (renamed from jstests/evalb.js) | 0 | ||||
-rw-r--r-- | jstests/core/evalc.js (renamed from jstests/evalc.js) | 0 | ||||
-rw-r--r-- | jstests/core/evald.js (renamed from jstests/evald.js) | 1 | ||||
-rw-r--r-- | jstests/core/evale.js (renamed from jstests/evale.js) | 0 | ||||
-rw-r--r-- | jstests/core/evalf.js (renamed from jstests/evalf.js) | 0 | ||||
-rw-r--r-- | jstests/core/exists.js (renamed from jstests/exists.js) | 0 | ||||
-rw-r--r-- | jstests/core/exists2.js (renamed from jstests/exists2.js) | 0 | ||||
-rw-r--r-- | jstests/core/exists3.js (renamed from jstests/exists3.js) | 0 | ||||
-rw-r--r-- | jstests/core/exists4.js (renamed from jstests/exists4.js) | 0 | ||||
-rw-r--r-- | jstests/core/exists5.js (renamed from jstests/exists5.js) | 0 | ||||
-rw-r--r-- | jstests/core/exists6.js (renamed from jstests/exists6.js) | 0 | ||||
-rw-r--r-- | jstests/core/exists7.js (renamed from jstests/exists7.js) | 0 | ||||
-rw-r--r-- | jstests/core/exists8.js (renamed from jstests/exists8.js) | 0 | ||||
-rw-r--r-- | jstests/core/exists9.js (renamed from jstests/exists9.js) | 0 | ||||
-rw-r--r-- | jstests/core/existsa.js (renamed from jstests/existsa.js) | 0 | ||||
-rw-r--r-- | jstests/core/existsb.js (renamed from jstests/existsb.js) | 0 | ||||
-rw-r--r-- | jstests/core/explain1.js (renamed from jstests/explain1.js) | 0 | ||||
-rw-r--r-- | jstests/core/explain2.js (renamed from jstests/explain2.js) | 0 | ||||
-rw-r--r-- | jstests/core/explain3.js (renamed from jstests/explain3.js) | 3 | ||||
-rw-r--r-- | jstests/core/explain4.js (renamed from jstests/explain4.js) | 0 | ||||
-rw-r--r-- | jstests/core/explain5.js (renamed from jstests/explain5.js) | 0 | ||||
-rw-r--r-- | jstests/core/explain6.js (renamed from jstests/explain6.js) | 0 | ||||
-rw-r--r-- | jstests/core/explain7.js (renamed from jstests/explain7.js) | 0 | ||||
-rw-r--r-- | jstests/core/explain8.js (renamed from jstests/explain8.js) | 0 | ||||
-rw-r--r-- | jstests/core/explain9.js (renamed from jstests/explain9.js) | 0 | ||||
-rw-r--r-- | jstests/core/explain_batch_size.js (renamed from jstests/explain_batch_size.js) | 0 | ||||
-rw-r--r-- | jstests/core/explaina.js (renamed from jstests/explaina.js) | 0 | ||||
-rw-r--r-- | jstests/core/explainb.js (renamed from jstests/explainb.js) | 0 | ||||
-rw-r--r-- | jstests/core/extent.js (renamed from jstests/extent.js) | 0 | ||||
-rw-r--r-- | jstests/core/extent2.js (renamed from jstests/extent2.js) | 0 | ||||
-rw-r--r-- | jstests/core/filemd5.js (renamed from jstests/filemd5.js) | 0 | ||||
-rw-r--r-- | jstests/core/find1.js (renamed from jstests/find1.js) | 0 | ||||
-rw-r--r-- | jstests/core/find2.js (renamed from jstests/find2.js) | 0 | ||||
-rw-r--r-- | jstests/core/find3.js (renamed from jstests/find3.js) | 0 | ||||
-rw-r--r-- | jstests/core/find4.js (renamed from jstests/find4.js) | 0 | ||||
-rw-r--r-- | jstests/core/find5.js (renamed from jstests/find5.js) | 0 | ||||
-rw-r--r-- | jstests/core/find6.js (renamed from jstests/find6.js) | 0 | ||||
-rw-r--r-- | jstests/core/find7.js (renamed from jstests/find7.js) | 0 | ||||
-rw-r--r-- | jstests/core/find8.js (renamed from jstests/find8.js) | 0 | ||||
-rw-r--r-- | jstests/core/find9.js (renamed from jstests/find9.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify.js (renamed from jstests/find_and_modify.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify2.js (renamed from jstests/find_and_modify2.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify3.js (renamed from jstests/find_and_modify3.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify4.js (renamed from jstests/find_and_modify4.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify_server6226.js (renamed from jstests/find_and_modify_server6226.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify_server6254.js (renamed from jstests/find_and_modify_server6254.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify_server6582.js (renamed from jstests/find_and_modify_server6582.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify_server6588.js (renamed from jstests/find_and_modify_server6588.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify_server6659.js (renamed from jstests/find_and_modify_server6659.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify_server6909.js (renamed from jstests/find_and_modify_server6909.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify_server6993.js (renamed from jstests/find_and_modify_server6993.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify_server7660.js (renamed from jstests/find_and_modify_server7660.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_and_modify_where.js (renamed from jstests/find_and_modify_where.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_dedup.js (renamed from jstests/find_dedup.js) | 0 | ||||
-rw-r--r-- | jstests/core/find_size.js (renamed from jstests/find_size.js) | 0 | ||||
-rw-r--r-- | jstests/core/finda.js (renamed from jstests/finda.js) | 0 | ||||
-rw-r--r-- | jstests/core/fm1.js (renamed from jstests/fm1.js) | 0 | ||||
-rw-r--r-- | jstests/core/fm2.js (renamed from jstests/fm2.js) | 0 | ||||
-rw-r--r-- | jstests/core/fm3.js (renamed from jstests/fm3.js) | 0 | ||||
-rw-r--r-- | jstests/core/fm4.js (renamed from jstests/fm4.js) | 0 | ||||
-rw-r--r-- | jstests/core/fsync.js (renamed from jstests/fsync.js) | 1 | ||||
-rw-r--r-- | jstests/core/fts1.js (renamed from jstests/fts1.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts2.js (renamed from jstests/fts2.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts3.js (renamed from jstests/fts3.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts4.js (renamed from jstests/fts4.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts5.js (renamed from jstests/fts5.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_blog.js (renamed from jstests/fts_blog.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_blogwild.js (renamed from jstests/fts_blogwild.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_enabled.js (renamed from jstests/fts_enabled.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_explain.js (renamed from jstests/fts_explain.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_index.js (renamed from jstests/fts_index.js) | 82 | ||||
-rw-r--r-- | jstests/core/fts_mix.js (renamed from jstests/fts_mix.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_partition1.js (renamed from jstests/fts_partition1.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_partition_no_multikey.js | 13 | ||||
-rw-r--r-- | jstests/core/fts_phrase.js (renamed from jstests/fts_phrase.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_proj.js (renamed from jstests/fts_proj.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_projection.js (renamed from jstests/fts_projection.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_querylang.js (renamed from jstests/fts_querylang.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_score_sort.js (renamed from jstests/fts_score_sort.js) | 0 | ||||
-rw-r--r-- | jstests/core/fts_spanish.js (renamed from jstests/fts_spanish.js) | 7 | ||||
-rw-r--r-- | jstests/core/geo1.js (renamed from jstests/geo1.js) | 10 | ||||
-rw-r--r-- | jstests/core/geo10.js | 15 | ||||
-rw-r--r-- | jstests/core/geo2.js (renamed from jstests/geo2.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo3.js (renamed from jstests/geo3.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo4.js | 11 | ||||
-rw-r--r-- | jstests/core/geo5.js (renamed from jstests/geo5.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo6.js (renamed from jstests/geo6.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo7.js (renamed from jstests/geo7.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo8.js (renamed from jstests/geo8.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo9.js (renamed from jstests/geo9.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_2d_explain.js (renamed from jstests/geo_2d_explain.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_2d_with_geojson_point.js (renamed from jstests/geo_2d_with_geojson_point.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_allowedcomparisons.js (renamed from jstests/geo_allowedcomparisons.js) | 36 | ||||
-rw-r--r-- | jstests/core/geo_array0.js (renamed from jstests/geo_array0.js) | 11 | ||||
-rw-r--r-- | jstests/core/geo_array1.js (renamed from jstests/geo_array1.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_array2.js (renamed from jstests/geo_array2.js) | 4 | ||||
-rw-r--r-- | jstests/core/geo_borders.js (renamed from jstests/geo_borders.js) | 22 | ||||
-rw-r--r-- | jstests/core/geo_box1.js (renamed from jstests/geo_box1.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_box1_noindex.js (renamed from jstests/geo_box1_noindex.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_box2.js (renamed from jstests/geo_box2.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_box3.js (renamed from jstests/geo_box3.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_center_sphere1.js (renamed from jstests/geo_center_sphere1.js) | 6 | ||||
-rw-r--r-- | jstests/core/geo_center_sphere2.js | 160 | ||||
-rw-r--r-- | jstests/core/geo_circle1.js (renamed from jstests/geo_circle1.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_circle1_noindex.js (renamed from jstests/geo_circle1_noindex.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_circle2.js (renamed from jstests/geo_circle2.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_circle2a.js (renamed from jstests/geo_circle2a.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_circle3.js (renamed from jstests/geo_circle3.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_circle4.js (renamed from jstests/geo_circle4.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_circle5.js (renamed from jstests/geo_circle5.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_distinct.js (renamed from jstests/geo_distinct.js) | 6 | ||||
-rw-r--r-- | jstests/core/geo_exactfetch.js (renamed from jstests/geo_exactfetch.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_fiddly_box.js (renamed from jstests/geo_fiddly_box.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_fiddly_box2.js (renamed from jstests/geo_fiddly_box2.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_group.js (renamed from jstests/geo_group.js) | 4 | ||||
-rw-r--r-- | jstests/core/geo_haystack1.js (renamed from jstests/geo_haystack1.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_haystack2.js (renamed from jstests/geo_haystack2.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_haystack3.js (renamed from jstests/geo_haystack3.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_invalid_polygon.js (renamed from jstests/geo_invalid_polygon.js) | 10 | ||||
-rw-r--r-- | jstests/core/geo_mapreduce.js (renamed from jstests/geo_mapreduce.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_mapreduce2.js (renamed from jstests/geo_mapreduce2.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_max.js (renamed from jstests/geo_max.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_mindistance.js (renamed from jstests/geo_mindistance.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_mindistance_boundaries.js (renamed from jstests/geo_mindistance_boundaries.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_multikey0.js (renamed from jstests/geo_multikey0.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_multikey1.js (renamed from jstests/geo_multikey1.js) | 7 | ||||
-rw-r--r-- | jstests/core/geo_multinest0.js (renamed from jstests/geo_multinest0.js) | 29 | ||||
-rw-r--r-- | jstests/core/geo_multinest1.js (renamed from jstests/geo_multinest1.js) | 15 | ||||
-rw-r--r-- | jstests/core/geo_near_random1.js (renamed from jstests/geo_near_random1.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_near_random2.js (renamed from jstests/geo_near_random2.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_nearwithin.js (renamed from jstests/geo_nearwithin.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_or.js (renamed from jstests/geo_or.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_poly_edge.js (renamed from jstests/geo_poly_edge.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_poly_line.js (renamed from jstests/geo_poly_line.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_polygon1.js (renamed from jstests/geo_polygon1.js) | 3 | ||||
-rw-r--r-- | jstests/core/geo_polygon1_noindex.js (renamed from jstests/geo_polygon1_noindex.js) | 3 | ||||
-rw-r--r-- | jstests/core/geo_polygon2.js | 263 | ||||
-rw-r--r-- | jstests/core/geo_polygon3.js (renamed from jstests/geo_polygon3.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_queryoptimizer.js (renamed from jstests/geo_queryoptimizer.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_regex0.js (renamed from jstests/geo_regex0.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2cursorlimitskip.js (renamed from jstests/geo_s2cursorlimitskip.js) | 3 | ||||
-rw-r--r-- | jstests/core/geo_s2dedupnear.js (renamed from jstests/geo_s2dedupnear.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2descindex.js (renamed from jstests/geo_s2descindex.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2disjoint_holes.js (renamed from jstests/geo_s2disjoint_holes.js) | 29 | ||||
-rw-r--r-- | jstests/core/geo_s2dupe_points.js (renamed from jstests/geo_s2dupe_points.js) | 3 | ||||
-rwxr-xr-x | jstests/core/geo_s2edgecases.js (renamed from jstests/geo_s2edgecases.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2exact.js (renamed from jstests/geo_s2exact.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2holesameasshell.js (renamed from jstests/geo_s2holesameasshell.js) | 6 | ||||
-rwxr-xr-x | jstests/core/geo_s2index.js (renamed from jstests/geo_s2index.js) | 43 | ||||
-rwxr-xr-x | jstests/core/geo_s2indexoldformat.js (renamed from jstests/geo_s2indexoldformat.js) | 12 | ||||
-rw-r--r-- | jstests/core/geo_s2indexversion1.js (renamed from jstests/geo_s2indexversion1.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2intersection.js (renamed from jstests/geo_s2intersection.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2largewithin.js (renamed from jstests/geo_s2largewithin.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2meridian.js (renamed from jstests/geo_s2meridian.js) | 3 | ||||
-rw-r--r-- | jstests/core/geo_s2multi.js (renamed from jstests/geo_s2multi.js) | 12 | ||||
-rw-r--r-- | jstests/core/geo_s2near.js (renamed from jstests/geo_s2near.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2nearComplex.js (renamed from jstests/geo_s2nearComplex.js) | 9 | ||||
-rw-r--r-- | jstests/core/geo_s2near_equator_opposite.js (renamed from jstests/geo_s2near_equator_opposite.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2nearcorrect.js (renamed from jstests/geo_s2nearcorrect.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2nearwithin.js (renamed from jstests/geo_s2nearwithin.js) | 5 | ||||
-rw-r--r-- | jstests/core/geo_s2nongeoarray.js (renamed from jstests/geo_s2nongeoarray.js) | 6 | ||||
-rwxr-xr-x | jstests/core/geo_s2nonstring.js (renamed from jstests/geo_s2nonstring.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2nopoints.js (renamed from jstests/geo_s2nopoints.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2oddshapes.js (renamed from jstests/geo_s2oddshapes.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2ordering.js (renamed from jstests/geo_s2ordering.js) | 11 | ||||
-rw-r--r-- | jstests/core/geo_s2overlappingpolys.js (renamed from jstests/geo_s2overlappingpolys.js) | 0 | ||||
-rwxr-xr-x | jstests/core/geo_s2polywithholes.js (renamed from jstests/geo_s2polywithholes.js) | 6 | ||||
-rw-r--r-- | jstests/core/geo_s2selfintersectingpoly.js (renamed from jstests/geo_s2selfintersectingpoly.js) | 3 | ||||
-rw-r--r-- | jstests/core/geo_s2sparse.js (renamed from jstests/geo_s2sparse.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_s2twofields.js (renamed from jstests/geo_s2twofields.js) | 5 | ||||
-rw-r--r-- | jstests/core/geo_s2validindex.js (renamed from jstests/geo_s2validindex.js) | 8 | ||||
-rw-r--r-- | jstests/core/geo_s2within.js (renamed from jstests/geo_s2within.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_small_large.js | 158 | ||||
-rw-r--r-- | jstests/core/geo_sort1.js (renamed from jstests/geo_sort1.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_uniqueDocs.js (renamed from jstests/geo_uniqueDocs.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_uniqueDocs2.js (renamed from jstests/geo_uniqueDocs2.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_update.js (renamed from jstests/geo_update.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_update1.js (renamed from jstests/geo_update1.js) | 12 | ||||
-rw-r--r-- | jstests/core/geo_update2.js (renamed from jstests/geo_update2.js) | 11 | ||||
-rw-r--r-- | jstests/core/geo_update_btree.js (renamed from jstests/geo_update_btree.js) | 19 | ||||
-rw-r--r-- | jstests/core/geo_update_btree2.js (renamed from jstests/geo_update_btree2.js) | 0 | ||||
-rw-r--r-- | jstests/core/geo_update_dedup.js (renamed from jstests/geo_update_dedup.js) | 24 | ||||
-rw-r--r-- | jstests/core/geo_withinquery.js (renamed from jstests/geo_withinquery.js) | 0 | ||||
-rw-r--r-- | jstests/core/geoa.js (renamed from jstests/geoa.js) | 0 | ||||
-rw-r--r-- | jstests/core/geob.js (renamed from jstests/geob.js) | 0 | ||||
-rw-r--r-- | jstests/core/geoc.js (renamed from jstests/geoc.js) | 0 | ||||
-rw-r--r-- | jstests/core/geod.js (renamed from jstests/geod.js) | 0 | ||||
-rw-r--r-- | jstests/core/geoe.js (renamed from jstests/geoe.js) | 0 | ||||
-rw-r--r-- | jstests/core/geof.js (renamed from jstests/geof.js) | 0 | ||||
-rw-r--r-- | jstests/core/geonear_cmd_input_validation.js (renamed from jstests/geonear_cmd_input_validation.js) | 0 | ||||
-rw-r--r-- | jstests/core/geonear_validate.js (renamed from jstests/geonear_validate.js) | 0 | ||||
-rw-r--r-- | jstests/core/getlog1.js (renamed from jstests/getlog1.js) | 0 | ||||
-rw-r--r-- | jstests/core/getlog2.js (renamed from jstests/getlog2.js) | 3 | ||||
-rw-r--r-- | jstests/core/group1.js (renamed from jstests/group1.js) | 0 | ||||
-rw-r--r-- | jstests/core/group2.js (renamed from jstests/group2.js) | 0 | ||||
-rw-r--r-- | jstests/core/group3.js (renamed from jstests/group3.js) | 0 | ||||
-rw-r--r-- | jstests/core/group4.js (renamed from jstests/group4.js) | 0 | ||||
-rw-r--r-- | jstests/core/group5.js (renamed from jstests/group5.js) | 0 | ||||
-rw-r--r-- | jstests/core/group6.js (renamed from jstests/group6.js) | 0 | ||||
-rw-r--r-- | jstests/core/group7.js (renamed from jstests/group7.js) | 10 | ||||
-rw-r--r-- | jstests/core/group_empty.js (renamed from jstests/group_empty.js) | 0 | ||||
-rw-r--r-- | jstests/core/grow_hash_table.js (renamed from jstests/grow_hash_table.js) | 5 | ||||
-rw-r--r-- | jstests/core/hashindex1.js (renamed from jstests/hashindex1.js) | 0 | ||||
-rw-r--r-- | jstests/core/hashtest1.js (renamed from jstests/hashtest1.js) | 0 | ||||
-rw-r--r-- | jstests/core/hint1.js (renamed from jstests/hint1.js) | 0 | ||||
-rw-r--r-- | jstests/core/hostinfo.js (renamed from jstests/hostinfo.js) | 0 | ||||
-rw-r--r-- | jstests/core/id1.js (renamed from jstests/id1.js) | 0 | ||||
-rw-r--r-- | jstests/core/idhack.js (renamed from jstests/idhack.js) | 0 | ||||
-rw-r--r-- | jstests/core/in.js (renamed from jstests/in.js) | 0 | ||||
-rw-r--r-- | jstests/core/in2.js (renamed from jstests/in2.js) | 0 | ||||
-rw-r--r-- | jstests/core/in3.js (renamed from jstests/in3.js) | 0 | ||||
-rw-r--r-- | jstests/core/in4.js (renamed from jstests/in4.js) | 0 | ||||
-rw-r--r-- | jstests/core/in5.js (renamed from jstests/in5.js) | 0 | ||||
-rw-r--r-- | jstests/core/in6.js (renamed from jstests/in6.js) | 0 | ||||
-rw-r--r-- | jstests/core/in8.js (renamed from jstests/in8.js) | 0 | ||||
-rw-r--r-- | jstests/core/in9.js (renamed from jstests/in9.js) | 0 | ||||
-rw-r--r-- | jstests/core/ina.js (renamed from jstests/ina.js) | 0 | ||||
-rw-r--r-- | jstests/core/inb.js (renamed from jstests/inb.js) | 0 | ||||
-rw-r--r-- | jstests/core/inc-SERVER-7446.js (renamed from jstests/inc-SERVER-7446.js) | 20 | ||||
-rw-r--r-- | jstests/core/inc1.js (renamed from jstests/inc1.js) | 0 | ||||
-rw-r--r-- | jstests/core/inc2.js (renamed from jstests/inc2.js) | 0 | ||||
-rw-r--r-- | jstests/core/inc3.js (renamed from jstests/inc3.js) | 0 | ||||
-rw-r--r-- | jstests/core/index1.js (renamed from jstests/index1.js) | 0 | ||||
-rw-r--r-- | jstests/core/index10.js (renamed from jstests/index10.js) | 8 | ||||
-rw-r--r-- | jstests/core/index13.js (renamed from jstests/index13.js) | 0 | ||||
-rw-r--r-- | jstests/core/index2.js (renamed from jstests/index2.js) | 0 | ||||
-rw-r--r-- | jstests/core/index3.js (renamed from jstests/index3.js) | 0 | ||||
-rw-r--r-- | jstests/core/index4.js (renamed from jstests/index4.js) | 0 | ||||
-rw-r--r-- | jstests/core/index5.js (renamed from jstests/index5.js) | 0 | ||||
-rw-r--r-- | jstests/core/index6.js (renamed from jstests/index6.js) | 0 | ||||
-rw-r--r-- | jstests/core/index7.js (renamed from jstests/index7.js) | 0 | ||||
-rw-r--r-- | jstests/core/index8.js (renamed from jstests/index8.js) | 0 | ||||
-rw-r--r-- | jstests/core/index9.js (renamed from jstests/index9.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexOtherNamespace.js (renamed from jstests/indexOtherNamespace.js) | 20 | ||||
-rw-r--r-- | jstests/core/indexStatsCommand.js (renamed from jstests/indexStatsCommand.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_arr1.js (renamed from jstests/index_arr1.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_arr2.js (renamed from jstests/index_arr2.js) | 4 | ||||
-rw-r--r-- | jstests/core/index_big1.js (renamed from jstests/index_big1.js) | 4 | ||||
-rwxr-xr-x | jstests/core/index_bigkeys.js (renamed from jstests/index_bigkeys.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_bigkeys_update.js (renamed from jstests/index_bigkeys_update.js) | 4 | ||||
-rw-r--r-- | jstests/core/index_bounds_number_edge_cases.js (renamed from jstests/index_bounds_number_edge_cases.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_check1.js (renamed from jstests/index_check1.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_check2.js (renamed from jstests/index_check2.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_check3.js (renamed from jstests/index_check3.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_check5.js (renamed from jstests/index_check5.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_check6.js (renamed from jstests/index_check6.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_check7.js (renamed from jstests/index_check7.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_check8.js (renamed from jstests/index_check8.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_diag.js (renamed from jstests/index_diag.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_elemmatch1.js (renamed from jstests/index_elemmatch1.js) | 4 | ||||
-rw-r--r-- | jstests/core/index_filter_commands.js (renamed from jstests/index_filter_commands.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_many.js (renamed from jstests/index_many.js) | 6 | ||||
-rw-r--r-- | jstests/core/index_many2.js (renamed from jstests/index_many2.js) | 0 | ||||
-rw-r--r-- | jstests/core/index_sparse1.js (renamed from jstests/index_sparse1.js) | 3 | ||||
-rw-r--r-- | jstests/core/index_sparse2.js (renamed from jstests/index_sparse2.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexa.js (renamed from jstests/indexa.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexapi.js (renamed from jstests/indexapi.js) | 12 | ||||
-rw-r--r-- | jstests/core/indexb.js (renamed from jstests/indexb.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexc.js (renamed from jstests/indexc.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexd.js (renamed from jstests/indexd.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexe.js (renamed from jstests/indexe.js) | 2 | ||||
-rw-r--r-- | jstests/core/indexes_on_indexes.js (renamed from jstests/indexes_on_indexes.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexf.js (renamed from jstests/indexf.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexg.js (renamed from jstests/indexg.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexh.js (renamed from jstests/indexh.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexi.js | 34 | ||||
-rw-r--r-- | jstests/core/indexj.js (renamed from jstests/indexj.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexl.js (renamed from jstests/indexl.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexm.js (renamed from jstests/indexm.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexn.js (renamed from jstests/indexn.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexo.js (renamed from jstests/indexo.js) | 6 | ||||
-rw-r--r-- | jstests/core/indexp.js | 23 | ||||
-rw-r--r-- | jstests/core/indexq.js (renamed from jstests/indexq.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexr.js (renamed from jstests/indexr.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexs.js (renamed from jstests/indexs.js) | 0 | ||||
-rw-r--r-- | jstests/core/indext.js (renamed from jstests/indext.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexu.js (renamed from jstests/indexu.js) | 87 | ||||
-rw-r--r-- | jstests/core/indexv.js (renamed from jstests/indexv.js) | 0 | ||||
-rw-r--r-- | jstests/core/indexw.js (renamed from jstests/indexw.js) | 0 | ||||
-rw-r--r-- | jstests/core/insert1.js | 34 | ||||
-rw-r--r-- | jstests/core/insert2.js | 13 | ||||
-rw-r--r-- | jstests/core/insert_id_undefined.js (renamed from jstests/insert_id_undefined.js) | 1 | ||||
-rw-r--r-- | jstests/core/insert_illegal_doc.js (renamed from jstests/insert_illegal_doc.js) | 0 | ||||
-rw-r--r-- | jstests/core/insert_long_index_key.js (renamed from jstests/insert_long_index_key.js) | 0 | ||||
-rw-r--r-- | jstests/core/ismaster.js (renamed from jstests/ismaster.js) | 0 | ||||
-rw-r--r-- | jstests/fts_partition_no_multikey.js | 17 | ||||
-rw-r--r-- | jstests/geo10.js | 21 | ||||
-rw-r--r-- | jstests/geo4.js | 10 | ||||
-rw-r--r-- | jstests/geo_center_sphere2.js | 164 | ||||
-rw-r--r-- | jstests/geo_oob_sphere.js | 42 | ||||
-rw-r--r-- | jstests/geo_polygon2.js | 266 | ||||
-rw-r--r-- | jstests/geo_small_large.js | 151 | ||||
-rwxr-xr-x | jstests/indexbindata.js | 0 | ||||
-rw-r--r-- | jstests/indexi.js | 43 | ||||
-rw-r--r-- | jstests/indexp.js | 54 | ||||
-rw-r--r-- | jstests/insert1.js | 44 | ||||
-rw-r--r-- | jstests/insert2.js | 8 | ||||
-rw-r--r-- | jstests/slowNightly/sharding_jscore_passthrough.js | 3 | ||||
-rw-r--r-- | src/mongo/shell/assert.js | 6 | ||||
-rw-r--r-- | src/mongo/shell/collection.js | 2 |
464 files changed, 1116 insertions, 1297 deletions
diff --git a/jstests/basicb.js b/jstests/basicb.js deleted file mode 100644 index 0070f70068f..00000000000 --- a/jstests/basicb.js +++ /dev/null @@ -1,7 +0,0 @@ - -t = db.basicb; -t.drop(); - -assert.throws( "t.insert( { '$a' : 5 } );" ); -t.insert( { '$a' : 5 } , 0, true ); - diff --git a/jstests/all.js b/jstests/core/all.js index 50087882ad1..50087882ad1 100644 --- a/jstests/all.js +++ b/jstests/core/all.js diff --git a/jstests/all2.js b/jstests/core/all2.js index 64372ca5e97..64372ca5e97 100644 --- a/jstests/all2.js +++ b/jstests/core/all2.js diff --git a/jstests/all3.js b/jstests/core/all3.js index b7a05321bbf..b7a05321bbf 100644 --- a/jstests/all3.js +++ b/jstests/core/all3.js diff --git a/jstests/all4.js b/jstests/core/all4.js index 18acbf4f46a..109795754bc 100644 --- a/jstests/all4.js +++ b/jstests/core/all4.js @@ -5,9 +5,7 @@ t.drop(); function checkQuery( query, val ) { assert.eq( val, t.count(query) ); - assert( !db.getLastError() ); assert.eq( val, t.find(query).itcount() ); - assert( !db.getLastError() ); } checkQuery( {a:{$all:[]}}, 0 ); diff --git a/jstests/all5.js b/jstests/core/all5.js index a5d9e312292..a5d9e312292 100644 --- a/jstests/all5.js +++ b/jstests/core/all5.js diff --git a/jstests/and.js b/jstests/core/and.js index 4d8c2cd7d49..4d8c2cd7d49 100644 --- a/jstests/and.js +++ b/jstests/core/and.js diff --git a/jstests/and2.js b/jstests/core/and2.js index 0bd13eb7a1d..0bd13eb7a1d 100644 --- a/jstests/and2.js +++ b/jstests/core/and2.js diff --git a/jstests/and3.js b/jstests/core/and3.js index 036c63c02f0..036c63c02f0 100644 --- a/jstests/and3.js +++ b/jstests/core/and3.js diff --git a/jstests/andor.js b/jstests/core/andor.js index f433ade8228..f433ade8228 100644 --- a/jstests/andor.js +++ b/jstests/core/andor.js diff --git a/jstests/apitest_db.js b/jstests/core/apitest_db.js index c734d67bba7..c734d67bba7 100644 --- a/jstests/apitest_db.js +++ b/jstests/core/apitest_db.js diff --git a/jstests/apitest_dbcollection.js b/jstests/core/apitest_dbcollection.js index 0983b065477..0983b065477 100644 --- a/jstests/apitest_dbcollection.js +++ b/jstests/core/apitest_dbcollection.js diff --git a/jstests/apply_ops1.js b/jstests/core/apply_ops1.js index 9e6cb39f7c7..9e6cb39f7c7 100644 --- a/jstests/apply_ops1.js +++ b/jstests/core/apply_ops1.js diff --git a/jstests/apply_ops2.js b/jstests/core/apply_ops2.js index 1a5923c3465..1a5923c3465 100644 --- a/jstests/apply_ops2.js +++ b/jstests/core/apply_ops2.js diff --git a/jstests/array1.js b/jstests/core/array1.js index 4409b7bb4d3..4409b7bb4d3 100644 --- a/jstests/array1.js +++ b/jstests/core/array1.js diff --git a/jstests/array3.js b/jstests/core/array3.js index 3d053f99417..3d053f99417 100644 --- a/jstests/array3.js +++ b/jstests/core/array3.js diff --git a/jstests/array4.js b/jstests/core/array4.js index 1053e160f11..1053e160f11 100644 --- a/jstests/array4.js +++ b/jstests/core/array4.js diff --git a/jstests/array_match1.js b/jstests/core/array_match1.js index f764fb913b1..f764fb913b1 100644 --- a/jstests/array_match1.js +++ b/jstests/core/array_match1.js diff --git a/jstests/array_match2.js b/jstests/core/array_match2.js index d254b0a3fdd..d254b0a3fdd 100644 --- a/jstests/array_match2.js +++ b/jstests/core/array_match2.js diff --git a/jstests/array_match3.js b/jstests/core/array_match3.js index c8653430770..c8653430770 100644 --- a/jstests/array_match3.js +++ b/jstests/core/array_match3.js diff --git a/jstests/array_match4.js b/jstests/core/array_match4.js index b4cdec5143a..b4cdec5143a 100644 --- a/jstests/array_match4.js +++ b/jstests/core/array_match4.js diff --git a/jstests/arrayfind1.js b/jstests/core/arrayfind1.js index 539fa6193a1..539fa6193a1 100644 --- a/jstests/arrayfind1.js +++ b/jstests/core/arrayfind1.js diff --git a/jstests/arrayfind2.js b/jstests/core/arrayfind2.js index c6a78042c3d..c6a78042c3d 100644 --- a/jstests/arrayfind2.js +++ b/jstests/core/arrayfind2.js diff --git a/jstests/arrayfind3.js b/jstests/core/arrayfind3.js index de038c84264..de038c84264 100644 --- a/jstests/arrayfind3.js +++ b/jstests/core/arrayfind3.js diff --git a/jstests/arrayfind4.js b/jstests/core/arrayfind4.js index 17b02c8886b..17b02c8886b 100644 --- a/jstests/arrayfind4.js +++ b/jstests/core/arrayfind4.js diff --git a/jstests/arrayfind5.js b/jstests/core/arrayfind5.js index 9ff6e2b8a5f..9ff6e2b8a5f 100644 --- a/jstests/arrayfind5.js +++ b/jstests/core/arrayfind5.js diff --git a/jstests/arrayfind6.js b/jstests/core/arrayfind6.js index f4531cea96a..f4531cea96a 100644 --- a/jstests/arrayfind6.js +++ b/jstests/core/arrayfind6.js diff --git a/jstests/arrayfind7.js b/jstests/core/arrayfind7.js index 7c44de1dc1d..7c44de1dc1d 100644 --- a/jstests/arrayfind7.js +++ b/jstests/core/arrayfind7.js diff --git a/jstests/arrayfind8.js b/jstests/core/arrayfind8.js index 07d44ace26e..07d44ace26e 100644 --- a/jstests/arrayfind8.js +++ b/jstests/core/arrayfind8.js diff --git a/jstests/arrayfind9.js b/jstests/core/arrayfind9.js index 4ee14c56580..4ee14c56580 100644 --- a/jstests/arrayfind9.js +++ b/jstests/core/arrayfind9.js diff --git a/jstests/arrayfinda.js b/jstests/core/arrayfinda.js index 179d3985580..179d3985580 100644 --- a/jstests/arrayfinda.js +++ b/jstests/core/arrayfinda.js diff --git a/jstests/auth1.js b/jstests/core/auth1.js index 4ab26e8d2e5..4ab26e8d2e5 100644 --- a/jstests/auth1.js +++ b/jstests/core/auth1.js diff --git a/jstests/auth2.js b/jstests/core/auth2.js index 9c2b38f682d..9c2b38f682d 100644 --- a/jstests/auth2.js +++ b/jstests/core/auth2.js diff --git a/jstests/auth_copydb.js b/jstests/core/auth_copydb.js index f04cd0b0d29..f04cd0b0d29 100644 --- a/jstests/auth_copydb.js +++ b/jstests/core/auth_copydb.js diff --git a/jstests/autoid.js b/jstests/core/autoid.js index 6c8062fd093..6c8062fd093 100644 --- a/jstests/autoid.js +++ b/jstests/core/autoid.js diff --git a/jstests/bad_index_plugin.js b/jstests/core/bad_index_plugin.js index 370eca4c4d7..98ebdb9bb28 100644 --- a/jstests/bad_index_plugin.js +++ b/jstests/core/bad_index_plugin.js @@ -1,11 +1,11 @@ // SERVER-5826 ensure you can't build an index with a non-existent plugin t = db.bad_index_plugin; -assert.eq(t.ensureIndex({good: 1}), undefined); +assert.writeOK(t.ensureIndex({good: 1})); assert.eq(t.getIndexes().length, 2); // good + _id -err = t.ensureIndex({bad: 'bad'}); -assert.neq(err, undefined); -assert(err.code >= 0); +var err = t.ensureIndex({bad: 'bad'}); +assert.writeError(err); +assert(err.getWriteError().code >= 0); assert.eq(t.getIndexes().length, 2); // good + _id (no bad) diff --git a/jstests/basic1.js b/jstests/core/basic1.js index e5fa577f0b2..e5fa577f0b2 100644 --- a/jstests/basic1.js +++ b/jstests/core/basic1.js diff --git a/jstests/basic2.js b/jstests/core/basic2.js index aaa3de4366e..aaa3de4366e 100644 --- a/jstests/basic2.js +++ b/jstests/core/basic2.js diff --git a/jstests/basic3.js b/jstests/core/basic3.js index d778974f64a..5fb5581a252 100644 --- a/jstests/basic3.js +++ b/jstests/core/basic3.js @@ -5,17 +5,17 @@ t.drop() //more diagnostics on bad save, if exception fails doBadSave = function(param) { print("doing save with " + tojson(param)) - t.save(param); + var res = t.save(param); // Should not get here. - printjson(db.getLastErrorObj()); + printjson(res); } //more diagnostics on bad save, if exception fails doBadUpdate = function(query, update) { print("doing update with " + tojson(query) + " " + tojson(update)) - t.update(query, update); + var res = t.update(query, update); // Should not get here. - printjson(db.getLastErrorObj()); + printjson(res); } assert.throws(doBadSave, [{"a.b":5}], ". in names aren't allowed doesn't work"); diff --git a/jstests/basic4.js b/jstests/core/basic4.js index 0cf7a261e63..0cf7a261e63 100644 --- a/jstests/basic4.js +++ b/jstests/core/basic4.js diff --git a/jstests/basic5.js b/jstests/core/basic5.js index bfa40fb8f5e..bfa40fb8f5e 100644 --- a/jstests/basic5.js +++ b/jstests/core/basic5.js diff --git a/jstests/basic6.js b/jstests/core/basic6.js index e0cd6f1586e..e0cd6f1586e 100644 --- a/jstests/basic6.js +++ b/jstests/core/basic6.js diff --git a/jstests/basic7.js b/jstests/core/basic7.js index 7bb0d470e82..7bb0d470e82 100644 --- a/jstests/basic7.js +++ b/jstests/core/basic7.js diff --git a/jstests/basic8.js b/jstests/core/basic8.js index 513da0d15d1..513da0d15d1 100644 --- a/jstests/basic8.js +++ b/jstests/core/basic8.js diff --git a/jstests/basic9.js b/jstests/core/basic9.js index b8308fba7d0..814b72b2ae7 100644 --- a/jstests/basic9.js +++ b/jstests/core/basic9.js @@ -5,9 +5,9 @@ t.drop() // more diagnostics on bad save, if exception fails doBadSave = function(param) { print("doing save with " + tojson(param)) - t.save(param); + var res = t.save(param); // Should not get here. - printjson(db.getLastErrorObj()); + print('Should have errored out: ' + tojson(res)); } t.save({foo$foo:5}); diff --git a/jstests/basica.js b/jstests/core/basica.js index 0cc364beb42..0cc364beb42 100644 --- a/jstests/basica.js +++ b/jstests/core/basica.js diff --git a/jstests/core/basicb.js b/jstests/core/basicb.js new file mode 100644 index 00000000000..95eb60151af --- /dev/null +++ b/jstests/core/basicb.js @@ -0,0 +1,6 @@ + +t = db.basicb; +t.drop(); + +assert.throws( function() { t.insert( { '$a' : 5 } ); }); + diff --git a/jstests/basicc.js b/jstests/core/basicc.js index 0cd71ad32a0..8da8c68a8b0 100644 --- a/jstests/basicc.js +++ b/jstests/core/basicc.js @@ -10,12 +10,12 @@ js = "while( 1 ) { db.jstests.basicc1.save( {} ); }"; pid = startMongoProgramNoConnect( "mongo" , "--eval" , js , db.getMongo().host ); for( var i = 0; i < 1000; ++i ) { - t2.save( {} ); + assert.writeOK(t2.save( {} )); } -assert.automsg( "!db.getLastError()" ); + stopMongoProgramByPid( pid ); // put things back the way we found it t1.drop(); t2.drop(); db.dropDatabase(); -db = db.getSisterDB("test");
\ No newline at end of file +db = db.getSisterDB("test"); diff --git a/jstests/batch_size.js b/jstests/core/batch_size.js index 2bc144cd554..2bc144cd554 100644 --- a/jstests/batch_size.js +++ b/jstests/core/batch_size.js diff --git a/jstests/bench_test1.js b/jstests/core/bench_test1.js index bb1423ee8b8..bb1423ee8b8 100644 --- a/jstests/bench_test1.js +++ b/jstests/core/bench_test1.js diff --git a/jstests/bench_test2.js b/jstests/core/bench_test2.js index e2057ac693e..871b24ca051 100644 --- a/jstests/bench_test2.js +++ b/jstests/core/bench_test2.js @@ -4,7 +4,6 @@ t.drop(); for ( i=0; i<100; i++ ) t.insert( { _id : i , x : 0 } ); -db.getLastError(); benchArgs = { ops : [ { ns : t.getFullName() , op : "update" , diff --git a/jstests/bench_test3.js b/jstests/core/bench_test3.js index 4bc21ed2505..4bc21ed2505 100644 --- a/jstests/bench_test3.js +++ b/jstests/core/bench_test3.js diff --git a/jstests/big_object1.js b/jstests/core/big_object1.js index 07c4150fb53..be61dbd3041 100644 --- a/jstests/big_object1.js +++ b/jstests/core/big_object1.js @@ -11,18 +11,19 @@ if ( db.adminCommand( "buildinfo" ).bits == 64 ){ } x = 0; while ( true ){ + var result; n = { _id : x , a : [] } for ( i=0; i<14+x; i++ ) n.a.push( s ) try { - t.insert( n ) + result = t.insert( n ) o = n } catch ( e ){ break; } - if ( db.getLastError() != null ) + if ( result.hasWriteErrors() ) break; x++; } diff --git a/jstests/binData.js b/jstests/core/binData.js index 3f037650e05..3f037650e05 100644 --- a/jstests/binData.js +++ b/jstests/core/binData.js diff --git a/jstests/block_check_supported.js b/jstests/core/block_check_supported.js index 21d04ca93c7..21d04ca93c7 100644 --- a/jstests/block_check_supported.js +++ b/jstests/core/block_check_supported.js diff --git a/jstests/bulk_insert.js b/jstests/core/bulk_insert.js index e26b323c6d9..e26b323c6d9 100644 --- a/jstests/bulk_insert.js +++ b/jstests/core/bulk_insert.js diff --git a/jstests/capped.js b/jstests/core/capped.js index 421132b6f75..421132b6f75 100644 --- a/jstests/capped.js +++ b/jstests/core/capped.js diff --git a/jstests/capped1.js b/jstests/core/capped1.js index 0bbeaa40894..0bbeaa40894 100644 --- a/jstests/capped1.js +++ b/jstests/core/capped1.js diff --git a/jstests/capped2.js b/jstests/core/capped2.js index 65bb82f4c07..65bb82f4c07 100644 --- a/jstests/capped2.js +++ b/jstests/core/capped2.js diff --git a/jstests/capped3.js b/jstests/core/capped3.js index 2e5e6790cb7..2e5e6790cb7 100644 --- a/jstests/capped3.js +++ b/jstests/core/capped3.js diff --git a/jstests/capped5.js b/jstests/core/capped5.js index 37b776ee1ca..37b776ee1ca 100644 --- a/jstests/capped5.js +++ b/jstests/core/capped5.js diff --git a/jstests/capped6.js b/jstests/core/capped6.js index 5db12b2fcf9..5db12b2fcf9 100644 --- a/jstests/capped6.js +++ b/jstests/core/capped6.js diff --git a/jstests/capped7.js b/jstests/core/capped7.js index 693828da85f..693828da85f 100644 --- a/jstests/capped7.js +++ b/jstests/core/capped7.js diff --git a/jstests/capped8.js b/jstests/core/capped8.js index 0f30e37aebf..0f30e37aebf 100644 --- a/jstests/capped8.js +++ b/jstests/core/capped8.js diff --git a/jstests/capped9.js b/jstests/core/capped9.js index 9ea506ce795..2e0c2c74640 100644 --- a/jstests/capped9.js +++ b/jstests/core/capped9.js @@ -18,8 +18,7 @@ t.ensureIndex( { _id : 1 } ) assert.eq( 1 , t.find( { _id : 1 } ).itcount() , "D1" ) -t.update( { _id : 1 } , { $set : { y : 4 } } ) -assert( null == db.getLastError() , "D1: " + tojson( db.getLastError() ) ) +assert.writeOK( t.update( { _id: 1 }, { $set: { y: 4 } } )); assert.eq( 4 , t.findOne().y , "D2" ) diff --git a/jstests/capped_empty.js b/jstests/core/capped_empty.js index 5b0fb6b8f8e..5b0fb6b8f8e 100644 --- a/jstests/capped_empty.js +++ b/jstests/core/capped_empty.js diff --git a/jstests/capped_max.js b/jstests/core/capped_max.js index 1d7cbc3ef23..1d7cbc3ef23 100644 --- a/jstests/capped_max.js +++ b/jstests/core/capped_max.js diff --git a/jstests/capped_server2639.js b/jstests/core/capped_server2639.js index 465fd4ae874..adc6f994163 100644 --- a/jstests/capped_server2639.js +++ b/jstests/core/capped_server2639.js @@ -15,9 +15,9 @@ while ( bigString.length < size ) t.insert( { x : 1 } ); -t.insert( { x : 2 , bigString : bigString } ); -gle = db.getLastErrorObj(); -assert.eq( 16328 , gle.code , tojson( gle ) ) +var res = t.insert( { x : 2 , bigString : bigString } ); +assert.writeError( res ); +assert.eq( 16328, res.getWriteError().code, res.getWriteError().toString() ); assert.eq( 1 , t.count() ); // make sure small doc didn't get deleted assert.eq( 1 , t.findOne().x ); diff --git a/jstests/capped_server7543.js b/jstests/core/capped_server7543.js index 514cd7964b2..514cd7964b2 100644 --- a/jstests/capped_server7543.js +++ b/jstests/core/capped_server7543.js diff --git a/jstests/cappeda.js b/jstests/core/cappeda.js index 4a4b14a64e5..3244ffae84f 100644 --- a/jstests/cappeda.js +++ b/jstests/core/cappeda.js @@ -13,10 +13,9 @@ function q() { } function u() { - t.update( { _id : 5 } , { $set : { x : 2 } } ); - var gle = db.getLastError(); - if ( gle ) - throw gle; + var res = t.update( { _id : 5 } , { $set : { x : 2 } } ); + if ( res.hasWriteErrors() ) + throw res; } diff --git a/jstests/check_shard_index.js b/jstests/core/check_shard_index.js index f85071124fb..f85071124fb 100644 --- a/jstests/check_shard_index.js +++ b/jstests/core/check_shard_index.js diff --git a/jstests/collmod.js b/jstests/core/collmod.js index 2dc5555f3ec..2dc5555f3ec 100644 --- a/jstests/collmod.js +++ b/jstests/core/collmod.js diff --git a/jstests/compact.js b/jstests/core/compact.js index 2121debc17e..2121debc17e 100644 --- a/jstests/compact.js +++ b/jstests/core/compact.js diff --git a/jstests/compact2.js b/jstests/core/compact2.js index 0a7c343a3f9..0a7c343a3f9 100644 --- a/jstests/compact2.js +++ b/jstests/core/compact2.js diff --git a/jstests/compactPreservePadding.js b/jstests/core/compactPreservePadding.js index 4748afb9a82..4748afb9a82 100644 --- a/jstests/compactPreservePadding.js +++ b/jstests/core/compactPreservePadding.js diff --git a/jstests/connection_status.js b/jstests/core/connection_status.js index 08d05cbf28d..08d05cbf28d 100644 --- a/jstests/connection_status.js +++ b/jstests/core/connection_status.js diff --git a/jstests/connection_string_validation.js b/jstests/core/connection_string_validation.js index 4ecd1f926ee..4ecd1f926ee 100644 --- a/jstests/connection_string_validation.js +++ b/jstests/core/connection_string_validation.js diff --git a/jstests/constructors.js b/jstests/core/constructors.js index 5d4dd177425..ac8ae08d7c0 100644 --- a/jstests/constructors.js +++ b/jstests/core/constructors.js @@ -89,8 +89,7 @@ function whereConstructorTest (constructorList) { constructorList = addConstructorsWithNew(constructorList); t = db.where_constructors; t.drop(); - t.insert({ x : 1 }); - assert(!db.getLastError()); + assert.writeOK( t.insert({ x : 1 })); constructorList.valid.forEach(function (constructor) { try { diff --git a/jstests/copydb.js b/jstests/core/copydb.js index 7c7c02542a4..7c7c02542a4 100644 --- a/jstests/copydb.js +++ b/jstests/core/copydb.js diff --git a/jstests/count.js b/jstests/core/count.js index 5502d7176c1..5502d7176c1 100644 --- a/jstests/count.js +++ b/jstests/core/count.js diff --git a/jstests/count10.js b/jstests/core/count10.js index ed966ffe3fe..21243b3151d 100644 --- a/jstests/count10.js +++ b/jstests/core/count10.js @@ -6,8 +6,6 @@ t.drop(); for ( i=0; i<100; i++ ){ t.save( { x : i } ); } -// Make sure data is written. -db.getLastError(); // Start a parallel shell which repeatedly checks for a count // query using db.currentOp(). As soon as the op is found, diff --git a/jstests/count2.js b/jstests/core/count2.js index 4d060aaac20..4d060aaac20 100644 --- a/jstests/count2.js +++ b/jstests/core/count2.js diff --git a/jstests/count3.js b/jstests/core/count3.js index a8c3ef5faad..a8c3ef5faad 100644 --- a/jstests/count3.js +++ b/jstests/core/count3.js diff --git a/jstests/count4.js b/jstests/core/count4.js index 7be74362603..7be74362603 100644 --- a/jstests/count4.js +++ b/jstests/core/count4.js diff --git a/jstests/count5.js b/jstests/core/count5.js index b6bbc543352..b6bbc543352 100644 --- a/jstests/count5.js +++ b/jstests/core/count5.js diff --git a/jstests/count6.js b/jstests/core/count6.js index 44c5fa33bc7..44c5fa33bc7 100644 --- a/jstests/count6.js +++ b/jstests/core/count6.js diff --git a/jstests/count7.js b/jstests/core/count7.js index c2c1260d49b..c2c1260d49b 100644 --- a/jstests/count7.js +++ b/jstests/core/count7.js diff --git a/jstests/count9.js b/jstests/core/count9.js index 888ffe3b544..888ffe3b544 100644 --- a/jstests/count9.js +++ b/jstests/core/count9.js diff --git a/jstests/count_hint.js b/jstests/core/count_hint.js index 93322d282db..93322d282db 100644 --- a/jstests/count_hint.js +++ b/jstests/core/count_hint.js diff --git a/jstests/counta.js b/jstests/core/counta.js index f0834d455dd..f0834d455dd 100644 --- a/jstests/counta.js +++ b/jstests/core/counta.js diff --git a/jstests/countb.js b/jstests/core/countb.js index 8f7131a5a6c..8f7131a5a6c 100644 --- a/jstests/countb.js +++ b/jstests/core/countb.js diff --git a/jstests/countc.js b/jstests/core/countc.js index 260dbb1f264..260dbb1f264 100644 --- a/jstests/countc.js +++ b/jstests/core/countc.js diff --git a/jstests/coveredIndex1.js b/jstests/core/coveredIndex1.js index ce11f89ceed..ce11f89ceed 100644 --- a/jstests/coveredIndex1.js +++ b/jstests/core/coveredIndex1.js diff --git a/jstests/coveredIndex2.js b/jstests/core/coveredIndex2.js index 56a23f43211..56a23f43211 100644 --- a/jstests/coveredIndex2.js +++ b/jstests/core/coveredIndex2.js diff --git a/jstests/coveredIndex3.js b/jstests/core/coveredIndex3.js index 66180342605..66180342605 100644 --- a/jstests/coveredIndex3.js +++ b/jstests/core/coveredIndex3.js diff --git a/jstests/coveredIndex4.js b/jstests/core/coveredIndex4.js index 136eba603cf..136eba603cf 100644 --- a/jstests/coveredIndex4.js +++ b/jstests/core/coveredIndex4.js diff --git a/jstests/coveredIndex5.js b/jstests/core/coveredIndex5.js index ee383cd93e2..ee383cd93e2 100644 --- a/jstests/coveredIndex5.js +++ b/jstests/core/coveredIndex5.js diff --git a/jstests/covered_index_compound_1.js b/jstests/core/covered_index_compound_1.js index 7e529785d12..7e529785d12 100644 --- a/jstests/covered_index_compound_1.js +++ b/jstests/core/covered_index_compound_1.js diff --git a/jstests/covered_index_geo_1.js b/jstests/core/covered_index_geo_1.js index 1d647dfa94c..1d647dfa94c 100644 --- a/jstests/covered_index_geo_1.js +++ b/jstests/core/covered_index_geo_1.js diff --git a/jstests/covered_index_geo_2.js b/jstests/core/covered_index_geo_2.js index 52f610b7e64..52f610b7e64 100644 --- a/jstests/covered_index_geo_2.js +++ b/jstests/core/covered_index_geo_2.js diff --git a/jstests/covered_index_negative_1.js b/jstests/core/covered_index_negative_1.js index ab03e7566f6..ab03e7566f6 100644 --- a/jstests/covered_index_negative_1.js +++ b/jstests/core/covered_index_negative_1.js diff --git a/jstests/covered_index_simple_1.js b/jstests/core/covered_index_simple_1.js index 44e3c00a9f8..44e3c00a9f8 100644 --- a/jstests/covered_index_simple_1.js +++ b/jstests/core/covered_index_simple_1.js diff --git a/jstests/covered_index_simple_2.js b/jstests/core/covered_index_simple_2.js index 313cca439d8..313cca439d8 100644 --- a/jstests/covered_index_simple_2.js +++ b/jstests/core/covered_index_simple_2.js diff --git a/jstests/covered_index_simple_3.js b/jstests/core/covered_index_simple_3.js index ee586540ea4..ee586540ea4 100644 --- a/jstests/covered_index_simple_3.js +++ b/jstests/core/covered_index_simple_3.js diff --git a/jstests/covered_index_simple_id.js b/jstests/core/covered_index_simple_id.js index c7f6811a33c..c7f6811a33c 100644 --- a/jstests/covered_index_simple_id.js +++ b/jstests/core/covered_index_simple_id.js diff --git a/jstests/covered_index_sort_1.js b/jstests/core/covered_index_sort_1.js index adfcb5c6cb6..adfcb5c6cb6 100644 --- a/jstests/covered_index_sort_1.js +++ b/jstests/core/covered_index_sort_1.js diff --git a/jstests/covered_index_sort_2.js b/jstests/core/covered_index_sort_2.js index e5dd48b47af..e5dd48b47af 100644 --- a/jstests/covered_index_sort_2.js +++ b/jstests/core/covered_index_sort_2.js diff --git a/jstests/covered_index_sort_3.js b/jstests/core/covered_index_sort_3.js index 8f5986c4d76..8f5986c4d76 100644 --- a/jstests/covered_index_sort_3.js +++ b/jstests/core/covered_index_sort_3.js diff --git a/jstests/create_indexes.js b/jstests/core/create_indexes.js index e83799a57ab..6c54c4de0cb 100644 --- a/jstests/create_indexes.js +++ b/jstests/core/create_indexes.js @@ -1,30 +1,65 @@ - t = db.create_indexes; t.drop(); +// TODO: revisit this after createIndexes api stabilizes. +var isMongos = ("isdbgrid" == db.runCommand("ismaster").msg); +var extractResult = function(obj) { + if (!isMongos) return obj; + + // Sample mongos format: + // { + // raw: { + // "localhost:30000": { + // createdCollectionAutomatically: false, + // numIndexesBefore: 3, + // numIndexesAfter: 5, + // ok: 1 + // } + // }, + // ok: 1 + // } + + var numFields = 0; + var result = null; + for (var field in obj.raw) { + result = obj.raw[field]; + numFields++; + } + + assert.neq(null, result); + assert.eq(1, numFields); + return result; +}; + + res = t.runCommand( "createIndexes", { indexes : [ { key : { "x" : 1 }, name : "x_1" } ] } ); +res = extractResult( res ); assert( res.createdCollectionAutomatically ); assert.eq( 1, res.numIndexesBefore ); assert.eq( 2, res.numIndexesAfter ); res = t.runCommand( "createIndexes", { indexes : [ { key : { "x" : 1 }, name : "x_1" } ] } ); +res = extractResult( res ); assert.eq( 2, res.numIndexesBefore ); assert( res.noChangesMade ); res = t.runCommand( "createIndexes", { indexes : [ { key : { "x" : 1 }, name : "x_1" }, { key : { "y" : 1 }, name : "y_1" } ] } ); +res = extractResult( res ); assert( !res.createdCollectionAutomatically ); assert.eq( 2, res.numIndexesBefore ); assert.eq( 3, res.numIndexesAfter ); res = t.runCommand( "createIndexes", { indexes : [ { key : { "a" : 1 }, name : "a_1" }, { key : { "b" : 1 }, name : "b_1" } ] } ); +res = extractResult( res ); assert( !res.createdCollectionAutomatically ); assert.eq( 3, res.numIndexesBefore ); assert.eq( 5, res.numIndexesAfter ); res = t.runCommand( "createIndexes", { indexes : [ { key : { "a" : 1 }, name : "a_1" }, { key : { "b" : 1 }, name : "b_1" } ] } ); +res = extractResult( res ); assert.eq( 5, res.numIndexesBefore ); assert( res.noChangesMade ); diff --git a/jstests/currentop.js b/jstests/core/currentop.js index be822bf88f2..e1d2e73cc7a 100644 --- a/jstests/currentop.js +++ b/jstests/core/currentop.js @@ -7,8 +7,6 @@ t.drop(); for(i=0;i<100;i++) { t.save({ "num": i }); } -// Make sure data is written before we start reading it in parallel shells. -db.getLastError(); print("count:" + t.count()); @@ -41,7 +39,8 @@ assert.soon( function(){ }, "have_some_ops"); print("ok"); -s2 = startParallelShell( "db.jstests_currentop.update( { '$where': function() { sleep(150); } }, { 'num': 1 }, false, true ); db.getLastError()" ); +s2 = startParallelShell( "db.jstests_currentop.update({ '$where': function() { sleep(150); } }," + + " { 'num': 1 }, false, true );" ); o = []; diff --git a/jstests/cursor1.js b/jstests/core/cursor1.js index 8448752bb0c..8448752bb0c 100644 --- a/jstests/cursor1.js +++ b/jstests/core/cursor1.js diff --git a/jstests/cursor2.js b/jstests/core/cursor2.js index 2389a6a5d74..2389a6a5d74 100644 --- a/jstests/cursor2.js +++ b/jstests/core/cursor2.js diff --git a/jstests/cursor3.js b/jstests/core/cursor3.js index d23264c94ba..d23264c94ba 100644 --- a/jstests/cursor3.js +++ b/jstests/core/cursor3.js diff --git a/jstests/cursor4.js b/jstests/core/cursor4.js index b08a72f62e5..b08a72f62e5 100644 --- a/jstests/cursor4.js +++ b/jstests/core/cursor4.js diff --git a/jstests/cursor5.js b/jstests/core/cursor5.js index 6434d2b3887..6434d2b3887 100644 --- a/jstests/cursor5.js +++ b/jstests/core/cursor5.js diff --git a/jstests/cursor6.js b/jstests/core/cursor6.js index 33944eafd3a..33944eafd3a 100644 --- a/jstests/cursor6.js +++ b/jstests/core/cursor6.js diff --git a/jstests/cursor7.js b/jstests/core/cursor7.js index 97cfbb738b3..97cfbb738b3 100644 --- a/jstests/cursor7.js +++ b/jstests/core/cursor7.js diff --git a/jstests/cursora.js b/jstests/core/cursora.js index a46688a7147..6710c1e9dc6 100644 --- a/jstests/cursora.js +++ b/jstests/core/cursora.js @@ -7,13 +7,15 @@ function run( n , atomic ){ assert(isNumber(n), "cursora.js isNumber"); } t.drop() - + + var bulk = t.initializeUnorderedBulkOp(); for ( i=0; i<n; i++ ) - t.insert( { _id : i } ) - db.getLastError() + bulk.insert( { _id : i } ); + assert.writeOK(bulk.execute()); print("cursora.js startParallelShell n:"+n+" atomic:"+atomic) - join = startParallelShell( "sleep(50); db.cursora.remove( {" + ( atomic ? "$atomic:true" : "" ) + "} ); db.getLastError();" ); + join = startParallelShell( "sleep(50);" + + "db.cursora.remove({" + ( atomic ? "$atomic:true" : "" ) + "});" ); var start = null; var ex = null; diff --git a/jstests/cursorb.js b/jstests/core/cursorb.js index 65e356e89cb..65e356e89cb 100644 --- a/jstests/cursorb.js +++ b/jstests/core/cursorb.js diff --git a/jstests/datasize.js b/jstests/core/datasize.js index 13e9f11bf0c..13e9f11bf0c 100644 --- a/jstests/datasize.js +++ b/jstests/core/datasize.js diff --git a/jstests/datasize2.js b/jstests/core/datasize2.js index 103cb2096ee..103cb2096ee 100644 --- a/jstests/datasize2.js +++ b/jstests/core/datasize2.js diff --git a/jstests/datasize3.js b/jstests/core/datasize3.js index df79e6d9b04..df79e6d9b04 100644 --- a/jstests/datasize3.js +++ b/jstests/core/datasize3.js diff --git a/jstests/date1.js b/jstests/core/date1.js index e6fc147f9f4..e6fc147f9f4 100644 --- a/jstests/date1.js +++ b/jstests/core/date1.js diff --git a/jstests/date2.js b/jstests/core/date2.js index ec13865a862..ec13865a862 100644 --- a/jstests/date2.js +++ b/jstests/core/date2.js diff --git a/jstests/date3.js b/jstests/core/date3.js index e7ddf717c73..e7ddf717c73 100644 --- a/jstests/date3.js +++ b/jstests/core/date3.js diff --git a/jstests/db.js b/jstests/core/db.js index 66a0bd73ede..66a0bd73ede 100644 --- a/jstests/db.js +++ b/jstests/core/db.js diff --git a/jstests/dbadmin.js b/jstests/core/dbadmin.js index bab348d5700..bab348d5700 100644 --- a/jstests/dbadmin.js +++ b/jstests/core/dbadmin.js diff --git a/jstests/dbcase.js b/jstests/core/dbcase.js index 25c0bcab37a..c3aa466ba17 100644 --- a/jstests/dbcase.js +++ b/jstests/core/dbcase.js @@ -6,13 +6,11 @@ b = db.getSisterDB( "dbcasetest_dbnameA" ) a.dropDatabase(); b.dropDatabase(); -a.foo.save( { x : 1 } ) -z = db.getLastErrorObj(); -assert.eq( 0 , z.code || 0 , "A : " + tojson(z) ) +assert.writeOK( a.foo.save( { x : 1 } )); -b.foo.save( { x : 1 } ) -z = db.getLastErrorObj(); -assert.eq( 13297 , z.code || 0 , "B : " + tojson(z) ) +res = b.foo.save( { x : 1 } ); +assert.writeError( res ); +assert.eq( 13297, res.getWriteError().code, res.toString() ); assert.neq( -1, db.getMongo().getDBNames().indexOf( a.getName() ) ); assert.eq( -1, db.getMongo().getDBNames().indexOf( b.getName() ) ); diff --git a/jstests/dbcase2.js b/jstests/core/dbcase2.js index f9973d98837..f9973d98837 100644 --- a/jstests/dbcase2.js +++ b/jstests/core/dbcase2.js diff --git a/jstests/dbhash.js b/jstests/core/dbhash.js index 7fea4b4d50c..7fea4b4d50c 100644 --- a/jstests/dbhash.js +++ b/jstests/core/dbhash.js diff --git a/jstests/dbhash2.js b/jstests/core/dbhash2.js index ac491291c2b..ac491291c2b 100644 --- a/jstests/dbhash2.js +++ b/jstests/core/dbhash2.js diff --git a/jstests/dbref1.js b/jstests/core/dbref1.js index 4a827662c1a..4a827662c1a 100644 --- a/jstests/dbref1.js +++ b/jstests/core/dbref1.js diff --git a/jstests/dbref2.js b/jstests/core/dbref2.js index d1b4870322d..d1b4870322d 100644 --- a/jstests/dbref2.js +++ b/jstests/core/dbref2.js diff --git a/jstests/dbref3.js b/jstests/core/dbref3.js index 2f3ab8fa79c..2f3ab8fa79c 100644 --- a/jstests/dbref3.js +++ b/jstests/core/dbref3.js diff --git a/jstests/delx.js b/jstests/core/delx.js index aa858e92cbd..d28b2063898 100644 --- a/jstests/delx.js +++ b/jstests/core/delx.js @@ -7,7 +7,6 @@ function setup( mydb ){ for ( i=0; i<100; i++ ){ mydb.foo.insert( { _id : i } ); } - mydb.getLastError(); } setup( a ); @@ -23,7 +22,6 @@ x.next(); y.next(); a.foo.remove( { _id : { $gt : 50 } } ); -db.getLastError(); assert.eq( 51 , a.foo.find().itcount() , "B1" ) assert.eq( 100 , b.foo.find().itcount() , "B2" ) diff --git a/jstests/depth_limit.js b/jstests/core/depth_limit.js index 7523a1fc9fe..7523a1fc9fe 100644 --- a/jstests/depth_limit.js +++ b/jstests/core/depth_limit.js diff --git a/jstests/distinct1.js b/jstests/core/distinct1.js index 03e425af761..03e425af761 100644 --- a/jstests/distinct1.js +++ b/jstests/core/distinct1.js diff --git a/jstests/distinct2.js b/jstests/core/distinct2.js index 41ee78c5117..41ee78c5117 100644 --- a/jstests/distinct2.js +++ b/jstests/core/distinct2.js diff --git a/jstests/distinct3.js b/jstests/core/distinct3.js index 336663d3b0d..0add7aeb95e 100644 --- a/jstests/distinct3.js +++ b/jstests/core/distinct3.js @@ -6,28 +6,30 @@ t.drop(); t.ensureIndex({a:1}); t.ensureIndex({b:1}); +var bulk = t.initializeUnorderedBulkOp(); for( i = 0; i < 50; ++i ) { - for( j = 0; j < 20; ++j ) { - t.save({a:i,c:i,d:j}); + for( j = 0; j < 2; ++j ) { + bulk.insert({a:i,c:i,d:j}); } } -for( i = 0; i < 1000; ++i ) { - t.save({b:i,c:i+50}); +for( i = 0; i < 100; ++i ) { + bulk.insert({b:i,c:i+50}); } -db.getLastError(); +assert.writeOK(bulk.execute()); // Attempt to remove the last match for the {a:1} index scan while distinct is yielding. -p = startParallelShell( 'for( i = 0; i < 2500; ++i ) { ' + - ' db.jstests_distinct3.remove( { a:49 } ); ' + +p = startParallelShell( 'var bulk = db.jstests_distinct3.initializeUnorderedBulkOp();' + + 'for( i = 0; i < 100; ++i ) { ' + + ' bulk.remove( { a:49 } ); ' + ' for( j = 0; j < 20; ++j ) { ' + - ' db.jstests_distinct3.save( { a:49, c:49, d:j } ); ' + + ' bulk.insert( { a:49, c:49, d:j } ); ' + ' } ' + - '} ' + - 'db.getLastError(); ' ); + ' bulk.execute(); ' + + '} ' ); for( i = 0; i < 100; ++i ) { count = t.distinct( 'c', {$or:[{a:{$gte:0},d:0},{b:{$gte:0}}]} ).length; - assert.gt( count, 1000 ); + assert.gt( count, 100 ); } p(); diff --git a/jstests/distinct_array1.js b/jstests/core/distinct_array1.js index 2f289ad2e79..2f289ad2e79 100644 --- a/jstests/distinct_array1.js +++ b/jstests/core/distinct_array1.js diff --git a/jstests/distinct_index1.js b/jstests/core/distinct_index1.js index 6de1a7927e4..6de1a7927e4 100644 --- a/jstests/distinct_index1.js +++ b/jstests/core/distinct_index1.js diff --git a/jstests/distinct_index2.js b/jstests/core/distinct_index2.js index 67d28b8b95e..67d28b8b95e 100644 --- a/jstests/distinct_index2.js +++ b/jstests/core/distinct_index2.js diff --git a/jstests/distinct_speed1.js b/jstests/core/distinct_speed1.js index 4cae5b0ae06..4cae5b0ae06 100644 --- a/jstests/distinct_speed1.js +++ b/jstests/core/distinct_speed1.js diff --git a/jstests/drop.js b/jstests/core/drop.js index 154c35d1db3..154c35d1db3 100644 --- a/jstests/drop.js +++ b/jstests/core/drop.js diff --git a/jstests/drop2.js b/jstests/core/drop2.js index 9eb3aef93cd..5eef20adc61 100644 --- a/jstests/drop2.js +++ b/jstests/core/drop2.js @@ -6,7 +6,6 @@ function debug( x ) { } coll.save( {} ); -db.getLastError(); function getOpId( drop ) { var inProg = db.currentOp().inprog; diff --git a/jstests/drop3.js b/jstests/core/drop3.js index b2ca94a1550..d97b40989b8 100644 --- a/jstests/drop3.js +++ b/jstests/core/drop3.js @@ -19,11 +19,7 @@ assert.eq( cursor.objsLeftInBatch(), 1 ); assert.eq( subcursor.objsLeftInBatch(), 1 ); t.drop(); // should invalidate cursor, but not subcursor -db.getLastError(); assert.throws( function(){ cursor.itcount() } ); // throws "cursor doesn't exist on server" error on getMore assert.eq( subcursor.itcount(), 9 ); //one already seen - - - diff --git a/jstests/drop_index.js b/jstests/core/drop_index.js index 8e2278d00c5..8e2278d00c5 100644 --- a/jstests/drop_index.js +++ b/jstests/core/drop_index.js diff --git a/jstests/dropdb.js b/jstests/core/dropdb.js index 58e3dd9fdaa..0c080ffb286 100644 --- a/jstests/dropdb.js +++ b/jstests/core/dropdb.js @@ -16,7 +16,6 @@ function check(shouldExist) { } ddb.c.save( {} ); -ddb.getLastError(); check(true); ddb.dropDatabase(); diff --git a/jstests/dropdb_race.js b/jstests/core/dropdb_race.js index bff7980011a..61fa0887ef5 100644 --- a/jstests/dropdb_race.js +++ b/jstests/core/dropdb_race.js @@ -14,11 +14,8 @@ var start = new Date(); for (var pass = 0; pass < 100; pass++) { if (pass % 2 == 0) { // sometimes wait for create db first, to vary the timing of things - t.insert({}); - if( pass % 4 == 0 ) - d.runCommand({getLastError:1,j:1}); - else - d.getLastError(); + var options = ( pass % 4 == 0 )? { writeConcern: { j: true }} : undefined; + t.insert({}, options); } t.insert({ x: 1 }); t.insert({ x: 3 }); diff --git a/jstests/elemMatchProjection.js b/jstests/core/elemMatchProjection.js index 73088fab699..73088fab699 100644 --- a/jstests/elemMatchProjection.js +++ b/jstests/core/elemMatchProjection.js diff --git a/jstests/error2.js b/jstests/core/error2.js index 8c27d6250e1..8c27d6250e1 100644 --- a/jstests/error2.js +++ b/jstests/core/error2.js diff --git a/jstests/error5.js b/jstests/core/error5.js index 5884d20d8c1..5884d20d8c1 100644 --- a/jstests/error5.js +++ b/jstests/core/error5.js diff --git a/jstests/eval0.js b/jstests/core/eval0.js index 4375cace839..4375cace839 100644 --- a/jstests/eval0.js +++ b/jstests/core/eval0.js diff --git a/jstests/eval1.js b/jstests/core/eval1.js index 4a5ca75f09b..4a5ca75f09b 100644 --- a/jstests/eval1.js +++ b/jstests/core/eval1.js diff --git a/jstests/eval2.js b/jstests/core/eval2.js index 6e39bb4a7bd..6e39bb4a7bd 100644 --- a/jstests/eval2.js +++ b/jstests/core/eval2.js diff --git a/jstests/eval3.js b/jstests/core/eval3.js index 404d4d863b7..404d4d863b7 100644 --- a/jstests/eval3.js +++ b/jstests/core/eval3.js diff --git a/jstests/eval4.js b/jstests/core/eval4.js index 31d6ef0c2a8..31d6ef0c2a8 100644 --- a/jstests/eval4.js +++ b/jstests/core/eval4.js diff --git a/jstests/eval5.js b/jstests/core/eval5.js index a9223a555a6..a9223a555a6 100644 --- a/jstests/eval5.js +++ b/jstests/core/eval5.js diff --git a/jstests/eval6.js b/jstests/core/eval6.js index 5fe096974c6..5fe096974c6 100644 --- a/jstests/eval6.js +++ b/jstests/core/eval6.js diff --git a/jstests/eval7.js b/jstests/core/eval7.js index 45e06af276c..45e06af276c 100644 --- a/jstests/eval7.js +++ b/jstests/core/eval7.js diff --git a/jstests/eval8.js b/jstests/core/eval8.js index 072a890e80a..072a890e80a 100644 --- a/jstests/eval8.js +++ b/jstests/core/eval8.js diff --git a/jstests/eval9.js b/jstests/core/eval9.js index 9c6642901e4..9c6642901e4 100644 --- a/jstests/eval9.js +++ b/jstests/core/eval9.js diff --git a/jstests/eval_nolock.js b/jstests/core/eval_nolock.js index 2ab96a302a5..2ab96a302a5 100644 --- a/jstests/eval_nolock.js +++ b/jstests/core/eval_nolock.js diff --git a/jstests/evala.js b/jstests/core/evala.js index ed72582fbb6..ed72582fbb6 100644 --- a/jstests/evala.js +++ b/jstests/core/evala.js diff --git a/jstests/evalb.js b/jstests/core/evalb.js index 0caae39498b..0caae39498b 100644 --- a/jstests/evalb.js +++ b/jstests/core/evalb.js diff --git a/jstests/evalc.js b/jstests/core/evalc.js index 0320ecd5133..0320ecd5133 100644 --- a/jstests/evalc.js +++ b/jstests/core/evalc.js diff --git a/jstests/evald.js b/jstests/core/evald.js index 77b1f42d52b..7bb0eb825b1 100644 --- a/jstests/evald.js +++ b/jstests/core/evald.js @@ -8,7 +8,6 @@ function debug( x ) { for( i = 0; i < 10; ++i ) { t.save( {i:i} ); } -db.getLastError(); function op( ev, where ) { p = db.currentOp().inprog; diff --git a/jstests/evale.js b/jstests/core/evale.js index af5a303f167..af5a303f167 100644 --- a/jstests/evale.js +++ b/jstests/core/evale.js diff --git a/jstests/evalf.js b/jstests/core/evalf.js index 01b7907ba93..01b7907ba93 100644 --- a/jstests/evalf.js +++ b/jstests/core/evalf.js diff --git a/jstests/exists.js b/jstests/core/exists.js index 3f1e904e52f..3f1e904e52f 100644 --- a/jstests/exists.js +++ b/jstests/core/exists.js diff --git a/jstests/exists2.js b/jstests/core/exists2.js index e925c168f50..e925c168f50 100644 --- a/jstests/exists2.js +++ b/jstests/core/exists2.js diff --git a/jstests/exists3.js b/jstests/core/exists3.js index 53a69d6c3bb..53a69d6c3bb 100644 --- a/jstests/exists3.js +++ b/jstests/core/exists3.js diff --git a/jstests/exists4.js b/jstests/core/exists4.js index fb801ed62e9..fb801ed62e9 100644 --- a/jstests/exists4.js +++ b/jstests/core/exists4.js diff --git a/jstests/exists5.js b/jstests/core/exists5.js index a90a94f908f..a90a94f908f 100644 --- a/jstests/exists5.js +++ b/jstests/core/exists5.js diff --git a/jstests/exists6.js b/jstests/core/exists6.js index 2fa4ba85d49..2fa4ba85d49 100644 --- a/jstests/exists6.js +++ b/jstests/core/exists6.js diff --git a/jstests/exists7.js b/jstests/core/exists7.js index 91fd589f30d..91fd589f30d 100644 --- a/jstests/exists7.js +++ b/jstests/core/exists7.js diff --git a/jstests/exists8.js b/jstests/core/exists8.js index ca62ebeb9ab..ca62ebeb9ab 100644 --- a/jstests/exists8.js +++ b/jstests/core/exists8.js diff --git a/jstests/exists9.js b/jstests/core/exists9.js index 66378d1b424..66378d1b424 100644 --- a/jstests/exists9.js +++ b/jstests/core/exists9.js diff --git a/jstests/existsa.js b/jstests/core/existsa.js index 9ef7e9f374c..9ef7e9f374c 100644 --- a/jstests/existsa.js +++ b/jstests/core/existsa.js diff --git a/jstests/existsb.js b/jstests/core/existsb.js index a212be145c0..a212be145c0 100644 --- a/jstests/existsb.js +++ b/jstests/core/existsb.js diff --git a/jstests/explain1.js b/jstests/core/explain1.js index 4c92b102e38..4c92b102e38 100644 --- a/jstests/explain1.js +++ b/jstests/core/explain1.js diff --git a/jstests/explain2.js b/jstests/core/explain2.js index b70ffdc0b1e..b70ffdc0b1e 100644 --- a/jstests/explain2.js +++ b/jstests/core/explain2.js diff --git a/jstests/explain3.js b/jstests/core/explain3.js index 69dcac531b9..c205e57252c 100644 --- a/jstests/explain3.js +++ b/jstests/core/explain3.js @@ -7,7 +7,6 @@ t.ensureIndex( {i:1} ); for( var i = 0; i < 10000; ++i ) { t.save( {i:i,j:0} ); } -db.getLastError(); s = startParallelShell( "sleep( 20 ); db.jstests_explain3.dropIndex( {i:1} );" ); @@ -21,4 +20,4 @@ try { s(); // Sanity check to make sure mongod didn't seg fault. -assert.eq( 10000, t.count() );
\ No newline at end of file +assert.eq( 10000, t.count() ); diff --git a/jstests/explain4.js b/jstests/core/explain4.js index d6d3d818a72..d6d3d818a72 100644 --- a/jstests/explain4.js +++ b/jstests/core/explain4.js diff --git a/jstests/explain5.js b/jstests/core/explain5.js index a90f0726317..a90f0726317 100644 --- a/jstests/explain5.js +++ b/jstests/core/explain5.js diff --git a/jstests/explain6.js b/jstests/core/explain6.js index 47d8d2fd731..47d8d2fd731 100644 --- a/jstests/explain6.js +++ b/jstests/core/explain6.js diff --git a/jstests/explain7.js b/jstests/core/explain7.js index df277aaf211..df277aaf211 100644 --- a/jstests/explain7.js +++ b/jstests/core/explain7.js diff --git a/jstests/explain8.js b/jstests/core/explain8.js index fde6adbd8f4..fde6adbd8f4 100644 --- a/jstests/explain8.js +++ b/jstests/core/explain8.js diff --git a/jstests/explain9.js b/jstests/core/explain9.js index 80cab856aa7..80cab856aa7 100644 --- a/jstests/explain9.js +++ b/jstests/core/explain9.js diff --git a/jstests/explain_batch_size.js b/jstests/core/explain_batch_size.js index 65bc1df40d7..65bc1df40d7 100644 --- a/jstests/explain_batch_size.js +++ b/jstests/core/explain_batch_size.js diff --git a/jstests/explaina.js b/jstests/core/explaina.js index 18c237b84c0..18c237b84c0 100644 --- a/jstests/explaina.js +++ b/jstests/core/explaina.js diff --git a/jstests/explainb.js b/jstests/core/explainb.js index ab49a38ca72..ab49a38ca72 100644 --- a/jstests/explainb.js +++ b/jstests/core/explainb.js diff --git a/jstests/extent.js b/jstests/core/extent.js index 47ae868606a..47ae868606a 100644 --- a/jstests/extent.js +++ b/jstests/core/extent.js diff --git a/jstests/extent2.js b/jstests/core/extent2.js index 75bf0d0b1b8..75bf0d0b1b8 100644 --- a/jstests/extent2.js +++ b/jstests/core/extent2.js diff --git a/jstests/filemd5.js b/jstests/core/filemd5.js index 41d03a1bb30..41d03a1bb30 100644 --- a/jstests/filemd5.js +++ b/jstests/core/filemd5.js diff --git a/jstests/find1.js b/jstests/core/find1.js index ed79c3dd2c7..ed79c3dd2c7 100644 --- a/jstests/find1.js +++ b/jstests/core/find1.js diff --git a/jstests/find2.js b/jstests/core/find2.js index f72203419bc..f72203419bc 100644 --- a/jstests/find2.js +++ b/jstests/core/find2.js diff --git a/jstests/find3.js b/jstests/core/find3.js index a5e4b7a4d66..a5e4b7a4d66 100644 --- a/jstests/find3.js +++ b/jstests/core/find3.js diff --git a/jstests/find4.js b/jstests/core/find4.js index 17639d3a684..17639d3a684 100644 --- a/jstests/find4.js +++ b/jstests/core/find4.js diff --git a/jstests/find5.js b/jstests/core/find5.js index b4a2c0f8865..b4a2c0f8865 100644 --- a/jstests/find5.js +++ b/jstests/core/find5.js diff --git a/jstests/find6.js b/jstests/core/find6.js index c4efd3b88d3..c4efd3b88d3 100644 --- a/jstests/find6.js +++ b/jstests/core/find6.js diff --git a/jstests/find7.js b/jstests/core/find7.js index ca4c7d449bf..ca4c7d449bf 100644 --- a/jstests/find7.js +++ b/jstests/core/find7.js diff --git a/jstests/find8.js b/jstests/core/find8.js index 60f66a500e3..60f66a500e3 100644 --- a/jstests/find8.js +++ b/jstests/core/find8.js diff --git a/jstests/find9.js b/jstests/core/find9.js index 85adf93cc98..85adf93cc98 100644 --- a/jstests/find9.js +++ b/jstests/core/find9.js diff --git a/jstests/find_and_modify.js b/jstests/core/find_and_modify.js index a80859ab60c..a80859ab60c 100644 --- a/jstests/find_and_modify.js +++ b/jstests/core/find_and_modify.js diff --git a/jstests/find_and_modify2.js b/jstests/core/find_and_modify2.js index 2c8ab5b3bb6..2c8ab5b3bb6 100644 --- a/jstests/find_and_modify2.js +++ b/jstests/core/find_and_modify2.js diff --git a/jstests/find_and_modify3.js b/jstests/core/find_and_modify3.js index 4214dfbcd0a..4214dfbcd0a 100644 --- a/jstests/find_and_modify3.js +++ b/jstests/core/find_and_modify3.js diff --git a/jstests/find_and_modify4.js b/jstests/core/find_and_modify4.js index 04abc2f1ce7..04abc2f1ce7 100644 --- a/jstests/find_and_modify4.js +++ b/jstests/core/find_and_modify4.js diff --git a/jstests/find_and_modify_server6226.js b/jstests/core/find_and_modify_server6226.js index a44cb59cb05..a44cb59cb05 100644 --- a/jstests/find_and_modify_server6226.js +++ b/jstests/core/find_and_modify_server6226.js diff --git a/jstests/find_and_modify_server6254.js b/jstests/core/find_and_modify_server6254.js index 7c7c340b7ed..7c7c340b7ed 100644 --- a/jstests/find_and_modify_server6254.js +++ b/jstests/core/find_and_modify_server6254.js diff --git a/jstests/find_and_modify_server6582.js b/jstests/core/find_and_modify_server6582.js index 88ce5a7c4f4..88ce5a7c4f4 100644 --- a/jstests/find_and_modify_server6582.js +++ b/jstests/core/find_and_modify_server6582.js diff --git a/jstests/find_and_modify_server6588.js b/jstests/core/find_and_modify_server6588.js index a21855f5c38..a21855f5c38 100644 --- a/jstests/find_and_modify_server6588.js +++ b/jstests/core/find_and_modify_server6588.js diff --git a/jstests/find_and_modify_server6659.js b/jstests/core/find_and_modify_server6659.js index 7a0419cc72b..7a0419cc72b 100644 --- a/jstests/find_and_modify_server6659.js +++ b/jstests/core/find_and_modify_server6659.js diff --git a/jstests/find_and_modify_server6909.js b/jstests/core/find_and_modify_server6909.js index 2f688459698..2f688459698 100644 --- a/jstests/find_and_modify_server6909.js +++ b/jstests/core/find_and_modify_server6909.js diff --git a/jstests/find_and_modify_server6993.js b/jstests/core/find_and_modify_server6993.js index b8a31915372..b8a31915372 100644 --- a/jstests/find_and_modify_server6993.js +++ b/jstests/core/find_and_modify_server6993.js diff --git a/jstests/find_and_modify_server7660.js b/jstests/core/find_and_modify_server7660.js index cae50d17dcc..cae50d17dcc 100644 --- a/jstests/find_and_modify_server7660.js +++ b/jstests/core/find_and_modify_server7660.js diff --git a/jstests/find_and_modify_where.js b/jstests/core/find_and_modify_where.js index 2092dc5566f..2092dc5566f 100644 --- a/jstests/find_and_modify_where.js +++ b/jstests/core/find_and_modify_where.js diff --git a/jstests/find_dedup.js b/jstests/core/find_dedup.js index 401384ceb7a..401384ceb7a 100644 --- a/jstests/find_dedup.js +++ b/jstests/core/find_dedup.js diff --git a/jstests/find_size.js b/jstests/core/find_size.js index d5a93d59cd2..d5a93d59cd2 100644 --- a/jstests/find_size.js +++ b/jstests/core/find_size.js diff --git a/jstests/finda.js b/jstests/core/finda.js index cf717d5b929..cf717d5b929 100644 --- a/jstests/finda.js +++ b/jstests/core/finda.js diff --git a/jstests/fm1.js b/jstests/core/fm1.js index bc60a3d8911..bc60a3d8911 100644 --- a/jstests/fm1.js +++ b/jstests/core/fm1.js diff --git a/jstests/fm2.js b/jstests/core/fm2.js index 00ccdf4afee..00ccdf4afee 100644 --- a/jstests/fm2.js +++ b/jstests/core/fm2.js diff --git a/jstests/fm3.js b/jstests/core/fm3.js index 8ccde6d5ab3..8ccde6d5ab3 100644 --- a/jstests/fm3.js +++ b/jstests/core/fm3.js diff --git a/jstests/fm4.js b/jstests/core/fm4.js index 1ce947ad5e7..1ce947ad5e7 100644 --- a/jstests/fm4.js +++ b/jstests/core/fm4.js diff --git a/jstests/fsync.js b/jstests/core/fsync.js index 0cfece75c10..9238c992466 100644 --- a/jstests/fsync.js +++ b/jstests/core/fsync.js @@ -15,7 +15,6 @@ assert( db.currentOp().fsyncLock == null, "A2" ); // make sure the db is unlocked db.jstests_fsync.insert({x:1}); -db.getLastError(); assert( db.currentOp().fsyncLock == null, "A" ); diff --git a/jstests/fts1.js b/jstests/core/fts1.js index 6bd138d6c25..6bd138d6c25 100644 --- a/jstests/fts1.js +++ b/jstests/core/fts1.js diff --git a/jstests/fts2.js b/jstests/core/fts2.js index e0e7469fa5e..e0e7469fa5e 100644 --- a/jstests/fts2.js +++ b/jstests/core/fts2.js diff --git a/jstests/fts3.js b/jstests/core/fts3.js index f5f72c4df0a..f5f72c4df0a 100644 --- a/jstests/fts3.js +++ b/jstests/core/fts3.js diff --git a/jstests/fts4.js b/jstests/core/fts4.js index 8598457b033..8598457b033 100644 --- a/jstests/fts4.js +++ b/jstests/core/fts4.js diff --git a/jstests/fts5.js b/jstests/core/fts5.js index a3097b47a4a..a3097b47a4a 100644 --- a/jstests/fts5.js +++ b/jstests/core/fts5.js diff --git a/jstests/fts_blog.js b/jstests/core/fts_blog.js index 38cbb826eff..38cbb826eff 100644 --- a/jstests/fts_blog.js +++ b/jstests/core/fts_blog.js diff --git a/jstests/fts_blogwild.js b/jstests/core/fts_blogwild.js index ecad0ce0b19..ecad0ce0b19 100644 --- a/jstests/fts_blogwild.js +++ b/jstests/core/fts_blogwild.js diff --git a/jstests/fts_enabled.js b/jstests/core/fts_enabled.js index 8617caff59f..8617caff59f 100644 --- a/jstests/fts_enabled.js +++ b/jstests/core/fts_enabled.js diff --git a/jstests/fts_explain.js b/jstests/core/fts_explain.js index 0d9c1fd7a9d..0d9c1fd7a9d 100644 --- a/jstests/fts_explain.js +++ b/jstests/core/fts_explain.js diff --git a/jstests/fts_index.js b/jstests/core/fts_index.js index 480bfb05fa2..ab1971816bd 100644 --- a/jstests/fts_index.js +++ b/jstests/core/fts_index.js @@ -14,26 +14,22 @@ coll.getDB().createCollection(coll.getName()); // // Spec passes text-specific index validation. -coll.ensureIndex({a: "text"}, {name: indexName, default_language: "spanish"}); -assert(!db.getLastError()); +assert.writeOK(coll.ensureIndex({a: "text"}, {name: indexName, default_language: "spanish"})); assert.eq(1, coll.getDB().system.indexes.count({ns: coll.getFullName(), name: indexName})); coll.dropIndexes(); // Spec fails text-specific index validation ("spanglish" unrecognized). -coll.ensureIndex({a: "text"}, {name: indexName, default_language: "spanglish"}); -assert(db.getLastError()); +assert.writeError(coll.ensureIndex({a: "text"}, {name: indexName, default_language: "spanglish"})); assert.eq(0, coll.system.indexes.count({ns: coll.getFullName(), name: indexName})); coll.dropIndexes(); // Spec passes general index validation. -coll.ensureIndex({"$**": "text"}, {name: indexName}); -assert(!db.getLastError()); +assert.writeOK(coll.ensureIndex({"$**": "text"}, {name: indexName})); assert.eq(1, coll.getDB().system.indexes.count({ns: coll.getFullName(), name: indexName})); coll.dropIndexes(); // Spec fails general index validation ("a.$**" invalid field name for key). -coll.ensureIndex({"a.$**": "text"}, {name: indexName}); -assert(db.getLastError()); +assert.writeError(coll.ensureIndex({"a.$**": "text"}, {name: indexName})); assert.eq(0, coll.getDB().system.indexes.count({ns: coll.getFullName(), name: indexName})); coll.dropIndexes(); @@ -44,77 +40,54 @@ coll.dropIndexes(); // Can create a text index on a collection where no documents have invalid language_override. coll.insert({a: ""}); coll.insert({a: "", language: "spanish"}); -coll.ensureIndex({a: "text"}); -assert(!db.getLastError()); +assert.writeOK(coll.ensureIndex({a: "text"})); coll.drop(); // Can't create a text index on a collection containing document with an invalid language_override. coll.insert({a: "", language: "spanglish"}); -coll.ensureIndex({a: "text"}); -assert(db.getLastError()); +assert.writeError(coll.ensureIndex({a: "text"})); coll.drop(); // Can insert documents with valid language_override into text-indexed collection. -coll.ensureIndex({a: "text"}); -assert(!db.getLastError()); +assert.writeOK(coll.ensureIndex({a: "text"})); coll.insert({a: ""}); -coll.insert({a: "", language: "spanish"}); -assert(!db.getLastError()); +assert.writeOK( coll.insert({a: "", language: "spanish"})); coll.drop(); // Can't insert documents with invalid language_override into text-indexed collection. -coll.ensureIndex({a: "text"}); -assert(!db.getLastError()); -coll.insert({a: "", language: "spanglish"}); -assert(db.getLastError()); +assert.writeOK(coll.ensureIndex({a: "text"})); +assert.writeError( coll.insert({a: "", language: "spanglish"})); coll.drop(); // // 3. Collections may have at most one text index. // - -coll.ensureIndex({a: 1, b: "text", c: 1}); -assert(!db.getLastError()); +assert.writeOK(coll.ensureIndex({a: 1, b: "text", c: 1})); assert.eq(2, coll.getIndexes().length); // ensureIndex() becomes a no-op on an equivalent index spec. -coll.ensureIndex({a: 1, b: "text", c: 1}); -assert(!db.getLastError()); +assert.writeOK(coll.ensureIndex({a: 1, b: "text", c: 1})); assert.eq(2, coll.getIndexes().length); -coll.ensureIndex({a: 1, _fts: "text", _ftsx: 1, c: 1}, {weights: {b: 1}}); -assert(!db.getLastError()); +assert.writeOK(coll.ensureIndex({a: 1, _fts: "text", _ftsx: 1, c: 1}, {weights: {b: 1}})); assert.eq(2, coll.getIndexes().length); -coll.ensureIndex({a: 1, b: "text", c: 1}, {default_language: "english"}); -assert(!db.getLastError()); +assert.writeOK(coll.ensureIndex({a: 1, b: "text", c: 1}, {default_language: "english"})); assert.eq(2, coll.getIndexes().length); -coll.ensureIndex({a: 1, b: "text", c: 1}, {textIndexVersion: 2}); -assert(!db.getLastError()); +assert.writeOK(coll.ensureIndex({a: 1, b: "text", c: 1}, {textIndexVersion: 2})); assert.eq(2, coll.getIndexes().length); -coll.ensureIndex({a: 1, b: "text", c: 1}, {language_override: "language"}); -assert(!db.getLastError()); +assert.writeOK(coll.ensureIndex({a: 1, b: "text", c: 1}, {language_override: "language"})); assert.eq(2, coll.getIndexes().length); // ensureIndex() fails if a second text index would be built. -coll.ensureIndex({a: 1, _fts: "text", _ftsx: 1, c: 1}, {weights: {d: 1}}); -assert(db.getLastError()); -coll.ensureIndex({a: 1, b: "text", c: 1}, {default_language: "none"}); -assert(db.getLastError()); -coll.ensureIndex({a: 1, b: "text", c: 1}, {textIndexVersion: 1}); -assert(db.getLastError()); -coll.ensureIndex({a: 1, b: "text", c: 1}, {language_override: "idioma"}); -assert(db.getLastError()); -coll.ensureIndex({a: 1, b: "text", c: 1}, {weights: {d: 1}}); -assert(db.getLastError()); -coll.ensureIndex({a: 1, b: "text", d: 1}); -assert(db.getLastError()); -coll.ensureIndex({a: 1, d: "text", c: 1}); -assert(db.getLastError()); -coll.ensureIndex({b: "text"}); -assert(db.getLastError()); -coll.ensureIndex({b: "text", c: 1}); -assert(db.getLastError()); -coll.ensureIndex({a: 1, b: "text"}); -assert(db.getLastError()); +assert.writeError(coll.ensureIndex({a: 1, _fts: "text", _ftsx: 1, c: 1}, {weights: {d: 1}})); +assert.writeError(coll.ensureIndex({a: 1, b: "text", c: 1}, {default_language: "none"})); +assert.writeError(coll.ensureIndex({a: 1, b: "text", c: 1}, {textIndexVersion: 1})); +assert.writeError(coll.ensureIndex({a: 1, b: "text", c: 1}, {language_override: "idioma"})); +assert.writeError(coll.ensureIndex({a: 1, b: "text", c: 1}, {weights: {d: 1}})); +assert.writeError(coll.ensureIndex({a: 1, b: "text", d: 1})); +assert.writeError(coll.ensureIndex({a: 1, d: "text", c: 1})); +assert.writeError(coll.ensureIndex({b: "text"})); +assert.writeError(coll.ensureIndex({b: "text", c: 1})); +assert.writeError(coll.ensureIndex({a: 1, b: "text"})); coll.dropIndexes(); @@ -122,8 +95,7 @@ coll.dropIndexes(); // 4. Text indexes properly handle large keys. // -coll.ensureIndex({a: "text"}); -assert(!db.getLastError()); +assert.writeOK(coll.ensureIndex({a: "text"})); var longstring = ""; var longstring2 = ""; diff --git a/jstests/fts_mix.js b/jstests/core/fts_mix.js index 56da123cdc3..56da123cdc3 100644 --- a/jstests/fts_mix.js +++ b/jstests/core/fts_mix.js diff --git a/jstests/fts_partition1.js b/jstests/core/fts_partition1.js index f1b4c437c3c..f1b4c437c3c 100644 --- a/jstests/fts_partition1.js +++ b/jstests/core/fts_partition1.js diff --git a/jstests/core/fts_partition_no_multikey.js b/jstests/core/fts_partition_no_multikey.js new file mode 100644 index 00000000000..29b9c371612 --- /dev/null +++ b/jstests/core/fts_partition_no_multikey.js @@ -0,0 +1,13 @@ + +t = db.fts_partition_no_multikey; +t.drop(); + +t.ensureIndex( { x : 1, y : "text" } ) + +assert.writeOK( t.insert( { x : 5 , y : "this is fun" } )); + +assert.writeError( t.insert( { x : [] , y : "this is fun" } )); + +assert.writeError( t.insert( { x : [1] , y : "this is fun" } )); + +assert.writeError( t.insert( { x : [1,2] , y : "this is fun" } )); diff --git a/jstests/fts_phrase.js b/jstests/core/fts_phrase.js index 0b58bef817e..0b58bef817e 100644 --- a/jstests/fts_phrase.js +++ b/jstests/core/fts_phrase.js diff --git a/jstests/fts_proj.js b/jstests/core/fts_proj.js index 1ecc6688d1b..1ecc6688d1b 100644 --- a/jstests/fts_proj.js +++ b/jstests/core/fts_proj.js diff --git a/jstests/fts_projection.js b/jstests/core/fts_projection.js index 9bdb9dbca8a..9bdb9dbca8a 100644 --- a/jstests/fts_projection.js +++ b/jstests/core/fts_projection.js diff --git a/jstests/fts_querylang.js b/jstests/core/fts_querylang.js index 2a139f5b766..2a139f5b766 100644 --- a/jstests/fts_querylang.js +++ b/jstests/core/fts_querylang.js diff --git a/jstests/fts_score_sort.js b/jstests/core/fts_score_sort.js index 59fb852a774..59fb852a774 100644 --- a/jstests/fts_score_sort.js +++ b/jstests/core/fts_score_sort.js diff --git a/jstests/fts_spanish.js b/jstests/core/fts_spanish.js index cdf73343b5f..b322c369f3f 100644 --- a/jstests/fts_spanish.js +++ b/jstests/core/fts_spanish.js @@ -23,9 +23,8 @@ assert.eq( [4], queryIDS( t, "stemmed", null, { language : "en" } ) ); assert.eq( [1,2], queryIDS( t, "prueba" ) ); -t.save( { _id: 5, language: "spanglish", title: "", text: "" } ); -assert( db.getLastError() ); +assert.writeError( t.save( { _id: 5, language: "spanglish", title: "", text: "" } )); t.dropIndexes(); -t.ensureIndex( { "title": "text", text: "text" }, { default_language: "spanglish" } ); -assert( db.getLastError() ); +res = t.ensureIndex( { "title": "text", text: "text" }, { default_language: "spanglish" } ); +assert.neq(null, res); diff --git a/jstests/geo1.js b/jstests/core/geo1.js index 338d96eb23c..5e28713d581 100644 --- a/jstests/geo1.js +++ b/jstests/core/geo1.js @@ -6,8 +6,7 @@ idx = { loc : "2d" , zip : 1 } t.insert( { zip : "06525" , loc : [ 41.352964 , 73.01212 ] } ) t.insert( { zip : "10024" , loc : [ 40.786387 , 73.97709 ] } ) -t.insert( { zip : "94061" , loc : [ 37.463911 , 122.23396 ] } ) -assert.isnull( db.getLastError() ) +assert.writeOK( t.insert( { zip : "94061" , loc : [ 37.463911 , 122.23396 ] } )); // test "2d" has to be first assert.eq( 1 , t.getIndexKeys().length , "S1" ); @@ -18,8 +17,7 @@ t.ensureIndex( idx ); assert.eq( 2 , t.getIndexKeys().length , "S3" ); assert.eq( 3 , t.count() , "B1" ); -t.insert( { loc : [ 200 , 200 ] } ) -assert( db.getLastError() , "B2" ) +assert.writeError( t.insert( { loc : [ 200 , 200 ] } )); assert.eq( 3 , t.count() , "B3" ); // test normal access @@ -36,6 +34,4 @@ assert.eq( "06525" , t.find( { loc : wb.loc } )[0].zip , "C3" ) t.drop(); t.ensureIndex( { loc : "2d" } , { min : -500 , max : 500 , bits : 4 } ); -t.insert( { loc : [ 200 , 200 ] } ) -assert.isnull( db.getLastError() , "D1" ) - +assert.writeOK( t.insert( { loc : [ 200 , 200 ] } )); diff --git a/jstests/core/geo10.js b/jstests/core/geo10.js new file mode 100644 index 00000000000..b122da99f2a --- /dev/null +++ b/jstests/core/geo10.js @@ -0,0 +1,15 @@ +// Test for SERVER-2746 + +coll = db.geo10 +coll.drop(); + +assert.writeOK( db.geo10.ensureIndex( { c : '2d', t : 1 }, { min : 0, max : Math.pow( 2, 40 ) } )); +assert( db.system.indexes.count({ ns : "test.geo10" }) == 2, "A3" ) + +printjson( db.system.indexes.find().toArray() ) + +assert.writeOK( db.geo10.insert( { c : [ 1, 1 ], t : 1 } )); +assert.writeOK( db.geo10.insert( { c : [ 3600, 3600 ], t : 1 } )); +assert.writeOK( db.geo10.insert( { c : [ 0.001, 0.001 ], t : 1 } )); + +printjson( db.geo10.find({ c : { $within : { $box : [[0.001, 0.001], [Math.pow(2, 40) - 0.001, Math.pow(2, 40) - 0.001]] } }, t : 1 }).toArray() ) diff --git a/jstests/geo2.js b/jstests/core/geo2.js index f9632ebd16d..f9632ebd16d 100644 --- a/jstests/geo2.js +++ b/jstests/core/geo2.js diff --git a/jstests/geo3.js b/jstests/core/geo3.js index 47637783f5b..47637783f5b 100644 --- a/jstests/geo3.js +++ b/jstests/core/geo3.js diff --git a/jstests/core/geo4.js b/jstests/core/geo4.js new file mode 100644 index 00000000000..c1be468bb52 --- /dev/null +++ b/jstests/core/geo4.js @@ -0,0 +1,11 @@ +var t = db.geo4; +t.drop(); + +t.insert( { zip : "06525" , loc : [ 41.352964 , 73.01212 ] } ); + +var err = t.ensureIndex( { loc : "2d" }, { bits : 33 } ); +assert.writeError(err); +assert( err.getWriteError().errmsg.indexOf("bits in geo index must be between 1 and 32") >= 0, + tojson( err )); + +assert.writeOK(t.ensureIndex( { loc : "2d" }, { bits : 32 } )); diff --git a/jstests/geo5.js b/jstests/core/geo5.js index 67b00f85b44..67b00f85b44 100644 --- a/jstests/geo5.js +++ b/jstests/core/geo5.js diff --git a/jstests/geo6.js b/jstests/core/geo6.js index 185795c57ba..185795c57ba 100644 --- a/jstests/geo6.js +++ b/jstests/core/geo6.js diff --git a/jstests/geo7.js b/jstests/core/geo7.js index c220da54249..c220da54249 100644 --- a/jstests/geo7.js +++ b/jstests/core/geo7.js diff --git a/jstests/geo8.js b/jstests/core/geo8.js index 301f3bcc0d1..301f3bcc0d1 100644 --- a/jstests/geo8.js +++ b/jstests/core/geo8.js diff --git a/jstests/geo9.js b/jstests/core/geo9.js index 8b6510f03b5..8b6510f03b5 100644 --- a/jstests/geo9.js +++ b/jstests/core/geo9.js diff --git a/jstests/geo_2d_explain.js b/jstests/core/geo_2d_explain.js index 8195642aabc..8195642aabc 100644 --- a/jstests/geo_2d_explain.js +++ b/jstests/core/geo_2d_explain.js diff --git a/jstests/geo_2d_with_geojson_point.js b/jstests/core/geo_2d_with_geojson_point.js index b5afc8b77b8..b5afc8b77b8 100644 --- a/jstests/geo_2d_with_geojson_point.js +++ b/jstests/core/geo_2d_with_geojson_point.js diff --git a/jstests/geo_allowedcomparisons.js b/jstests/core/geo_allowedcomparisons.js index 171178d0c7b..61eb3f43e52 100644 --- a/jstests/geo_allowedcomparisons.js +++ b/jstests/core/geo_allowedcomparisons.js @@ -24,21 +24,15 @@ oldCenter = [[0, 0], 1]; t.drop(); t.ensureIndex({geo: "2d"}); // 2d doesn't know what to do w/this -t.insert({geo: geojsonPoint}); -assert(db.getLastError()); +assert.writeError(t.insert({geo: geojsonPoint})); // Old points are OK. -t.insert({geo: oldPoint}) -assert(!db.getLastError()); +assert.writeOK(t.insert({geo: oldPoint})); // Lines not OK in 2d -t.insert({geo: geojsonLine}) -assert(db.getLastError()) +assert.writeError(t.insert({geo: geojsonLine})); // Shapes are not OK to insert in 2d -t.insert({geo: geojsonPoly}) -assert(db.getLastError()); -t.insert({geo: oldCenterSphere}) -assert(db.getLastError()); -t.insert({geo: oldCenter}) -assert(db.getLastError()); +assert.writeError(t.insert({geo: geojsonPoly})); +assert.writeError(t.insert({geo: oldCenterSphere})); +assert.writeError(t.insert({geo: oldCenter})); // If we try to insert a polygon, it thinks it's an array of points. Let's not // do that. Ditto for the box. @@ -89,19 +83,13 @@ t.dropIndex({geo: "2d"}) runTests(); // 2dsphere index now. -t.ensureIndex({geo: "2dsphere"}) -assert(!db.getLastError()) +assert.writeOK( t.ensureIndex({geo: "2dsphere"}) ); // 2dsphere does not support arrays of points. -t.insert({geo: [geojsonPoint2, geojsonPoint]}) -assert(db.getLastError()) +assert.writeError(t.insert({geo: [geojsonPoint2, geojsonPoint]})); runTests(); // Old stuff is not GeoJSON (or old-style point). All should fail. -t.insert({geo: oldBox}) -assert(db.getLastError()) -t.insert({geo: oldPolygon}) -assert(db.getLastError()) -t.insert({geo: oldCenter}) -assert(db.getLastError()) -t.insert({geo: oldCenterSphere}) -assert(db.getLastError()) +assert.writeError(t.insert({geo: oldBox})); +assert.writeError(t.insert({geo: oldPolygon})); +assert.writeError(t.insert({geo: oldCenter})); +assert.writeError(t.insert({geo: oldCenterSphere})); diff --git a/jstests/geo_array0.js b/jstests/core/geo_array0.js index 5fe46781d1d..39c7b10c083 100644 --- a/jstests/geo_array0.js +++ b/jstests/core/geo_array0.js @@ -5,17 +5,16 @@ function test(index) { t.drop(); t.insert( { zip : "10001", loc : { home : [ 10, 10 ], work : [ 50, 50 ] } } ) t.insert( { zip : "10002", loc : { home : [ 20, 20 ], work : [ 50, 50 ] } } ) - t.insert( { zip : "10003", loc : { home : [ 30, 30 ], work : [ 50, 50 ] } } ) - assert.isnull( db.getLastError() ) + var res = t.insert( { zip : "10003", loc : { home : [ 30, 30 ], work : [ 50, 50 ] } } ); + assert.writeOK( res ); if (index) { - t.ensureIndex( { loc : "2d", zip : 1 } ); - assert.isnull( db.getLastError() ) + assert.writeOK(t.ensureIndex( { loc : "2d", zip : 1 } )); assert.eq( 2, t.getIndexKeys().length ) } - t.insert( { zip : "10004", loc : { home : [ 40, 40 ], work : [ 50, 50 ] } } ) - assert.isnull( db.getLastError() ) + res = t.insert( { zip : "10004", loc : { home : [ 40, 40 ], work : [ 50, 50 ] } } ); + assert.writeOK( res ); // test normal access printjson( t.find( { loc : { $within : { $box : [ [ 0, 0 ], [ 45, 45 ] ] } } } ).toArray() ) diff --git a/jstests/geo_array1.js b/jstests/core/geo_array1.js index ca61050c888..ca61050c888 100644 --- a/jstests/geo_array1.js +++ b/jstests/core/geo_array1.js diff --git a/jstests/geo_array2.js b/jstests/core/geo_array2.js index 0e8d57dd855..acfc6a15abf 100644 --- a/jstests/geo_array2.js +++ b/jstests/core/geo_array2.js @@ -26,9 +26,7 @@ for( var i = -1; i < 2; i++ ){ } } -t.ensureIndex({ loc : "2d" , type : 1 }) - -assert.isnull( db.getLastError() ) +assert.writeOK(t.ensureIndex({ loc : "2d" , type : 1 })); print( "Starting testing phase... ") diff --git a/jstests/geo_borders.js b/jstests/core/geo_borders.js index 953850ad7f3..20781409b1e 100644 --- a/jstests/geo_borders.js +++ b/jstests/core/geo_borders.js @@ -20,12 +20,14 @@ overallMin = -1 overallMax = 1 // Create a point index slightly smaller than the points we have -t.ensureIndex( { loc : "2d" }, { max : overallMax - epsilon / 2, min : overallMin + epsilon / 2 } ) -assert( db.getLastError() ) +var res = t.ensureIndex({ loc: "2d" }, + { max: overallMax - epsilon / 2, + min: overallMin + epsilon / 2 }); +assert.neq(null, res); // Create a point index only slightly bigger than the points we have -t.ensureIndex( { loc : "2d" }, { max : overallMax + epsilon, min : overallMin - epsilon } ) -assert.isnull( db.getLastError() ) +res = t.ensureIndex( { loc : "2d" }, { max : overallMax + epsilon, min : overallMin - epsilon } ); +assert.writeOK(res); // ************ // Box Tests @@ -150,18 +152,10 @@ assert.eq( overallMax, db.runCommand( { geoNear : "borders", near : offCenter } assert.eq( overallMin, db.runCommand( { geoNear : "borders", near : onBoundsNeg } ).results[0].obj.loc.y ); // Make sure we can't get all nearby points to point over boundary -try { - db.runCommand( { geoNear : "borders", near : offBounds } ).results.length - assert( false ) -} catch (e) { -} +assert.commandFailed( db.runCommand( { geoNear : "borders", near : offBounds } )); // Make sure we can't get all nearby points to point on max boundary -try { - db.runCommand( { geoNear : "borders", near : onBounds } ).results.length - assert( false ) -} catch (e) { -} +assert.commandWorked( db.runCommand( { geoNear : "borders", near : onBounds } )); // Make sure we can get all nearby points within one step (4 points in top // corner) diff --git a/jstests/geo_box1.js b/jstests/core/geo_box1.js index 5ef335158e1..5ef335158e1 100644 --- a/jstests/geo_box1.js +++ b/jstests/core/geo_box1.js diff --git a/jstests/geo_box1_noindex.js b/jstests/core/geo_box1_noindex.js index 8c1ae87e08e..8c1ae87e08e 100644 --- a/jstests/geo_box1_noindex.js +++ b/jstests/core/geo_box1_noindex.js diff --git a/jstests/geo_box2.js b/jstests/core/geo_box2.js index 4905a6cda8d..4905a6cda8d 100644 --- a/jstests/geo_box2.js +++ b/jstests/core/geo_box2.js diff --git a/jstests/geo_box3.js b/jstests/core/geo_box3.js index 8941f637518..8941f637518 100644 --- a/jstests/geo_box3.js +++ b/jstests/core/geo_box3.js diff --git a/jstests/geo_center_sphere1.js b/jstests/core/geo_center_sphere1.js index 9f5eaec8764..4e4a658f058 100644 --- a/jstests/geo_center_sphere1.js +++ b/jstests/core/geo_center_sphere1.js @@ -2,7 +2,7 @@ t = db.geo_center_sphere1; function test(index) { t.drop(); - skip = 3 // lower for more rigor, higher for more speed (tested with .5, .678, 1, 2, 3, and 4) + skip = 8 // lower for more rigor, higher for more speed (tested with .5, .678, 1, 2, 3, and 4) searches = [ // x , y rad @@ -22,10 +22,11 @@ function test(index) { num = 0; + var bulk = t.initializeUnorderedBulkOp(); for ( x=-179; x<=179; x += skip ){ for ( y=-89; y<=89; y += skip ){ o = { _id : num++ , loc : [ x , y ] } - t.save( o ) + bulk.insert( o ); for ( i=0; i<searches.length; i++ ){ if ( Geo.sphereDistance( [ x , y ] , searches[i][0] ) <= searches[i][1]) correct[i].push( o ); @@ -33,6 +34,7 @@ function test(index) { } gc(); // needed with low skip values } + assert.writeOK(bulk.execute()); if (index) { t.ensureIndex( { loc : index } ); diff --git a/jstests/core/geo_center_sphere2.js b/jstests/core/geo_center_sphere2.js new file mode 100644 index 00000000000..8cb77a44c09 --- /dev/null +++ b/jstests/core/geo_center_sphere2.js @@ -0,0 +1,160 @@ +// +// Tests the error handling of spherical queries +// along with multi-location documents. +// This is necessary since the error handling must manage +// multiple documents, and so requires simultaneous testing. +// + +function deg2rad(arg) { return arg * Math.PI / 180.0; } +function rad2deg(arg) { return arg * 180.0 / Math.PI; } + +function computexscandist(y, maxDistDegrees) { + return maxDistDegrees / Math.min(Math.cos(deg2rad(Math.min(89.0, y + maxDistDegrees))), + Math.cos(deg2rad(Math.max(-89.0, y - maxDistDegrees)))); +} + +function pointIsOK(startPoint, radius) { + yscandist = rad2deg(radius) + 0.01; + xscandist = computexscandist(startPoint[1], yscandist); + return (startPoint[0] + xscandist < 180) + && (startPoint[0] - xscandist > -180) + && (startPoint[1] + yscandist < 90) + && (startPoint[1] - yscandist > -90); +} + +var numTests = 30; + +for ( var test = 0; test < numTests; test++ ) { + Random.srand( 1337 + test ); + + var radius = 5000 * Random.rand(); // km + radius = radius / 6371; // radians; + var numDocs = Math.floor( 400 * Random.rand() ); + // TODO: Wrapping uses the error value to figure out what would overlap... + var bits = Math.floor( 5 + Random.rand() * 28 ); + var maxPointsPerDoc = 50; + + var t = db.sphere; + + var randomPoint = function() { + return [ Random.rand() * 360 - 180, Random.rand() * 180 - 90 ]; + }; + + // Get a start point that doesn't require wrapping + // TODO: Are we a bit too aggressive with wrapping issues? + var startPoint; + var ex = null; + do { + t.drop(); + startPoint = randomPoint(); + t.ensureIndex( { loc : "2d" }, { bits : bits } ); + } while (!pointIsOK(startPoint, radius)) + + var pointsIn = 0; + var pointsOut = 0; + var docsIn = 0; + var docsOut = 0; + var totalPoints = 0; + + var bulk = t.initializeUnorderedBulkOp(); + for ( var i = 0; i < numDocs; i++ ) { + + var numPoints = Math.floor( Random.rand() * maxPointsPerDoc + 1 ); + var docIn = false; + var multiPoint = []; + + totalPoints += numPoints; + + for ( var p = 0; p < numPoints; p++ ) { + var point = randomPoint(); + multiPoint.push( point ); + + if ( Geo.sphereDistance( startPoint, point ) <= radius ) { + pointsIn++; + docIn = true; + } else { + pointsOut++; + } + } + + bulk.insert( { loc : multiPoint } ); + + if ( docIn ) + docsIn++; + else + docsOut++; + + } + + printjson( { test: test, radius : radius, bits : bits, numDocs : numDocs, + pointsIn : pointsIn, docsIn : docsIn, pointsOut : pointsOut, + docsOut : docsOut } ); + + assert.writeOK(bulk.execute()); + assert.eq( docsIn + docsOut, numDocs ); + assert.eq( pointsIn + pointsOut, totalPoints ); + + // $centerSphere + assert.eq( docsIn, t.find({ loc: { $within: + { $centerSphere: [ startPoint, radius ]}}} ).count() ); + + // $nearSphere + var cursor = t.find({ loc: { $nearSphere: startPoint, $maxDistance: radius }}); + var results = cursor.limit( 2 * pointsIn ).toArray(); + + assert.eq( docsIn, results.length ); + + var distance = 0; + for ( var i = 0; i < results.length; i++ ) { + var minNewDistance = radius + 1; + for( var j = 0; j < results[i].loc.length; j++ ){ + var newDistance = Geo.sphereDistance( startPoint, results[i].loc[j] ); + if( newDistance < minNewDistance && newDistance >= distance ) { + minNewDistance = newDistance; + } + } + + //print( "Dist from : " + results[i].loc[j] + " to " + startPoint + " is " + // + minNewDistance + " vs " + radius ) + + assert.lte( minNewDistance, radius ); + assert.gte( minNewDistance, distance ); + distance = minNewDistance; + } + + // geoNear + results = db.runCommand({ geoNear: "sphere", near: startPoint, maxDistance: radius, + num : 2 * pointsIn, spherical : true } ).results; + + /* + printjson( results ); + + for ( var j = 0; j < results[0].obj.loc.length; j++ ) { + var newDistance = Geo.sphereDistance( startPoint, results[0].obj.loc[j] ) + if( newDistance <= radius ) print( results[0].obj.loc[j] + " : " + newDistance ) + } + */ + + assert.eq( docsIn, results.length ); + + var distance = 0; + for ( var i = 0; i < results.length; i++ ) { + var retDistance = results[i].dis + + // print( "Dist from : " + results[i].loc + " to " + startPoint + " is " + // + retDistance + " vs " + radius ) + + var distInObj = false; + for ( var j = 0; j < results[i].obj.loc.length && distInObj == false; j++ ) { + var newDistance = Geo.sphereDistance( startPoint, results[i].obj.loc[j] ); + distInObj = ( newDistance >= retDistance - 0.0001 && + newDistance <= retDistance + 0.0001 ); + } + + assert( distInObj ); + assert.lte( retDistance, radius ); + assert.gte( retDistance, distance ); + distance = retDistance; + } +} + diff --git a/jstests/geo_circle1.js b/jstests/core/geo_circle1.js index 852b60d186b..852b60d186b 100644 --- a/jstests/geo_circle1.js +++ b/jstests/core/geo_circle1.js diff --git a/jstests/geo_circle1_noindex.js b/jstests/core/geo_circle1_noindex.js index 1569174a679..1569174a679 100644 --- a/jstests/geo_circle1_noindex.js +++ b/jstests/core/geo_circle1_noindex.js diff --git a/jstests/geo_circle2.js b/jstests/core/geo_circle2.js index ef76884609c..ef76884609c 100644 --- a/jstests/geo_circle2.js +++ b/jstests/core/geo_circle2.js diff --git a/jstests/geo_circle2a.js b/jstests/core/geo_circle2a.js index 67a6ba17243..67a6ba17243 100644 --- a/jstests/geo_circle2a.js +++ b/jstests/core/geo_circle2a.js diff --git a/jstests/geo_circle3.js b/jstests/core/geo_circle3.js index 2882b47378e..2882b47378e 100644 --- a/jstests/geo_circle3.js +++ b/jstests/core/geo_circle3.js diff --git a/jstests/geo_circle4.js b/jstests/core/geo_circle4.js index dc3c564389e..dc3c564389e 100644 --- a/jstests/geo_circle4.js +++ b/jstests/core/geo_circle4.js diff --git a/jstests/geo_circle5.js b/jstests/core/geo_circle5.js index fea9c56fd02..fea9c56fd02 100644 --- a/jstests/geo_circle5.js +++ b/jstests/core/geo_circle5.js diff --git a/jstests/geo_distinct.js b/jstests/core/geo_distinct.js index 60e0d15d22d..db6806fe747 100644 --- a/jstests/geo_distinct.js +++ b/jstests/core/geo_distinct.js @@ -5,12 +5,10 @@ t.drop() t.save( { _id : ObjectId( "4ce63ec2f360622431000013" ), loc : [ 55.59664, 13.00156 ], author : "FredrikL" } ) -printjson( db.runCommand( { distinct : 'commits', key : 'loc' } ) ) -assert.isnull( db.getLastError() ) +assert.commandWorked( db.runCommand( { distinct : 'commits', key : 'loc' } ) ); t.ensureIndex( { loc : '2d' } ) printjson( t.getIndexes() ) -printjson( db.runCommand( { distinct : 'commits', key : 'loc' } ) ) -assert.isnull( db.getLastError() )
\ No newline at end of file +assert.commandWorked( db.runCommand( { distinct : 'commits', key : 'loc' } ) ); diff --git a/jstests/geo_exactfetch.js b/jstests/core/geo_exactfetch.js index c0a0e714eae..c0a0e714eae 100644 --- a/jstests/geo_exactfetch.js +++ b/jstests/core/geo_exactfetch.js diff --git a/jstests/geo_fiddly_box.js b/jstests/core/geo_fiddly_box.js index 95f33a32987..95f33a32987 100644 --- a/jstests/geo_fiddly_box.js +++ b/jstests/core/geo_fiddly_box.js diff --git a/jstests/geo_fiddly_box2.js b/jstests/core/geo_fiddly_box2.js index 0588abfa1de..0588abfa1de 100644 --- a/jstests/geo_fiddly_box2.js +++ b/jstests/core/geo_fiddly_box2.js diff --git a/jstests/geo_group.js b/jstests/core/geo_group.js index 4e038f94b03..32e06890568 100644 --- a/jstests/geo_group.js +++ b/jstests/core/geo_group.js @@ -2,11 +2,13 @@ t = db.geo_group; t.drop(); n = 1; +var bulk = t.initializeUnorderedBulkOp(); for ( var x=-100; x<100; x+=2 ){ for ( var y=-100; y<100; y+=2 ){ - t.insert( { _id : n++ , loc : [ x , y ] } ) + bulk.insert( { _id : n++ , loc : [ x , y ] } ); } } +assert.writeOK(bulk.execute()); t.ensureIndex( { loc : "2d" } ); diff --git a/jstests/geo_haystack1.js b/jstests/core/geo_haystack1.js index f4035ecbcf2..f4035ecbcf2 100644 --- a/jstests/geo_haystack1.js +++ b/jstests/core/geo_haystack1.js diff --git a/jstests/geo_haystack2.js b/jstests/core/geo_haystack2.js index 2e0eb5710fb..2e0eb5710fb 100644 --- a/jstests/geo_haystack2.js +++ b/jstests/core/geo_haystack2.js diff --git a/jstests/geo_haystack3.js b/jstests/core/geo_haystack3.js index f5a2ab7becb..f5a2ab7becb 100644 --- a/jstests/geo_haystack3.js +++ b/jstests/core/geo_haystack3.js diff --git a/jstests/geo_invalid_polygon.js b/jstests/core/geo_invalid_polygon.js index af5545b7819..9ccf619dae5 100644 --- a/jstests/geo_invalid_polygon.js +++ b/jstests/core/geo_invalid_polygon.js @@ -19,15 +19,11 @@ var geometry = { }; t.insert({_id: 42, geometry: geometry}); -t.createIndex({geometry: '2dsphere'}); -var gleResult = db.getLastErrorCmd(1); - -// Verify that we triggered the error we're trying to test. -assert.eq(16755, gleResult.code); +var err = assert.writeError(t.createIndex({geometry: '2dsphere'})); // Document's _id should be in error message. assert( - -1 != gleResult.err.indexOf('42'), - "Error message didn't contain document _id.\nMessage: \"" + gleResult.err + -1 != err.getWriteError().errmsg.indexOf('42'), + "Error message didn't contain document _id.\nMessage: \"" + err.errmsg + '"\n' ); diff --git a/jstests/geo_mapreduce.js b/jstests/core/geo_mapreduce.js index a6ecf763ae1..a6ecf763ae1 100644 --- a/jstests/geo_mapreduce.js +++ b/jstests/core/geo_mapreduce.js diff --git a/jstests/geo_mapreduce2.js b/jstests/core/geo_mapreduce2.js index 9c393457c7b..9c393457c7b 100644 --- a/jstests/geo_mapreduce2.js +++ b/jstests/core/geo_mapreduce2.js diff --git a/jstests/geo_max.js b/jstests/core/geo_max.js index 03932004b75..03932004b75 100644 --- a/jstests/geo_max.js +++ b/jstests/core/geo_max.js diff --git a/jstests/geo_mindistance.js b/jstests/core/geo_mindistance.js index b429eacb708..b429eacb708 100644 --- a/jstests/geo_mindistance.js +++ b/jstests/core/geo_mindistance.js diff --git a/jstests/geo_mindistance_boundaries.js b/jstests/core/geo_mindistance_boundaries.js index 80e933827b6..80e933827b6 100644 --- a/jstests/geo_mindistance_boundaries.js +++ b/jstests/core/geo_mindistance_boundaries.js diff --git a/jstests/geo_multikey0.js b/jstests/core/geo_multikey0.js index 7d0ea57e329..7d0ea57e329 100644 --- a/jstests/geo_multikey0.js +++ b/jstests/core/geo_multikey0.js diff --git a/jstests/geo_multikey1.js b/jstests/core/geo_multikey1.js index 5c949a8599a..ce55609db25 100644 --- a/jstests/geo_multikey1.js +++ b/jstests/core/geo_multikey1.js @@ -12,9 +12,8 @@ for( i = 0; i < 10; ++i ) { t.save( {loc:locArr,a:arr,b:arr,c:arr} ); // Parallel arrays are allowed for geo indexes. -t.ensureIndex( {loc:'2d',a:1,b:1,c:1} ); -assert( !db.getLastError() ); +assert.writeOK(t.ensureIndex( {loc:'2d',a:1,b:1,c:1} )); // Parallel arrays are not allowed for normal indexes. -t.ensureIndex( {loc:1,a:1,b:1,c:1} ); -assert( db.getLastError() ); +assert.writeError(t.ensureIndex( {loc:1,a:1,b:1,c:1} )); + diff --git a/jstests/geo_multinest0.js b/jstests/core/geo_multinest0.js index 68e609550d7..c15eb7d60d7 100644 --- a/jstests/geo_multinest0.js +++ b/jstests/core/geo_multinest0.js @@ -7,17 +7,16 @@ t.insert( { zip : "10001", data : [ { loc : [ 10, 10 ], type : "home" }, { loc : [ 50, 50 ], type : "work" } ] } ) t.insert( { zip : "10002", data : [ { loc : [ 20, 20 ], type : "home" }, { loc : [ 50, 50 ], type : "work" } ] } ) -t.insert( { zip : "10003", data : [ { loc : [ 30, 30 ], type : "home" }, - { loc : [ 50, 50 ], type : "work" } ] } ) -assert.isnull( db.getLastError() ) +var res = t.insert( { zip : "10003", data : [ { loc : [ 30, 30 ], type : "home" }, + { loc : [ 50, 50 ], type : "work" } ] } ); +assert.writeOK( res ); -t.ensureIndex( { "data.loc" : "2d", zip : 1 } ); -assert.isnull( db.getLastError() ) +assert.writeOK(t.ensureIndex( { "data.loc" : "2d", zip : 1 } )); assert.eq( 2, t.getIndexKeys().length ) -t.insert( { zip : "10004", data : [ { loc : [ 40, 40 ], type : "home" }, - { loc : [ 50, 50 ], type : "work" } ] } ) -assert.isnull( db.getLastError() ) +res = t.insert( { zip : "10004", data : [ { loc : [ 40, 40 ], type : "home" }, + { loc : [ 50, 50 ], type : "work" } ] } ); +assert.writeOK( res ); // test normal access @@ -39,18 +38,16 @@ t.drop(); t.insert( { zip : "10001", data : [ { loc : [ [ 10, 10 ], { lat : 50, long : 50 } ], type : "home" } ] } ) t.insert( { zip : "10002", data : [ { loc : [ 20, 20 ], type : "home" }, { loc : [ 50, 50 ], type : "work" } ] } ) -t.insert( { zip : "10003", data : [ { loc : [ { x : 30, y : 30 }, [ 50, 50 ] ], type : "home" } ] } ) -assert.isnull( db.getLastError() ) +res = t.insert({ zip: "10003", data: [{ loc: [{ x: 30, y: 30 }, [ 50, 50 ]], type: "home" }]}); +assert( !res.hasWriteErrors() ); -t.ensureIndex( { "data.loc" : "2d", zip : 1 } ); -assert.isnull( db.getLastError() ) +assert.writeOK(t.ensureIndex( { "data.loc" : "2d", zip : 1 } )); assert.eq( 2, t.getIndexKeys().length ) -t.insert( { zip : "10004", data : [ { loc : [ 40, 40 ], type : "home" }, - { loc : [ 50, 50 ], type : "work" } ] } ) +res = t.insert( { zip : "10004", data : [ { loc : [ 40, 40 ], type : "home" }, + { loc : [ 50, 50 ], type : "work" } ] } ); - -assert.isnull( db.getLastError() ) +assert.writeOK( res ); // test normal access printjson( t.find( { "data.loc" : { $within : { $box : [ [ 0, 0 ], [ 45, 45 ] ] } } } ).toArray() ) diff --git a/jstests/geo_multinest1.js b/jstests/core/geo_multinest1.js index 703283607d4..478e2ab83e4 100644 --- a/jstests/geo_multinest1.js +++ b/jstests/core/geo_multinest1.js @@ -7,17 +7,16 @@ t.insert( { zip : "10001", data : [ { loc : [ 10, 10 ], type : "home" }, { loc : [ 29, 29 ], type : "work" } ] } ) t.insert( { zip : "10002", data : [ { loc : [ 20, 20 ], type : "home" }, { loc : [ 39, 39 ], type : "work" } ] } ) -t.insert( { zip : "10003", data : [ { loc : [ 30, 30 ], type : "home" }, - { loc : [ 49, 49 ], type : "work" } ] } ) -assert.isnull( db.getLastError() ) +var res = t.insert( { zip : "10003", data : [ { loc : [ 30, 30 ], type : "home" }, + { loc : [ 49, 49 ], type : "work" } ] } ); +assert.writeOK( res ); -t.ensureIndex( { "data.loc" : "2d", zip : 1 } ); -assert.isnull( db.getLastError() ) +assert.writeOK(t.ensureIndex( { "data.loc" : "2d", zip : 1 } )); assert.eq( 2, t.getIndexKeys().length ) -t.insert( { zip : "10004", data : [ { loc : [ 40, 40 ], type : "home" }, - { loc : [ 59, 59 ], type : "work" } ] } ) -assert.isnull( db.getLastError() ) +res = t.insert( { zip : "10004", data : [ { loc : [ 40, 40 ], type : "home" }, + { loc : [ 59, 59 ], type : "work" } ] } ); +assert.writeOK( res ); // test normal access diff --git a/jstests/geo_near_random1.js b/jstests/core/geo_near_random1.js index 50539f3ea5d..50539f3ea5d 100644 --- a/jstests/geo_near_random1.js +++ b/jstests/core/geo_near_random1.js diff --git a/jstests/geo_near_random2.js b/jstests/core/geo_near_random2.js index 1673abb88e7..1673abb88e7 100644 --- a/jstests/geo_near_random2.js +++ b/jstests/core/geo_near_random2.js diff --git a/jstests/geo_nearwithin.js b/jstests/core/geo_nearwithin.js index 6f38f5dd7d9..6f38f5dd7d9 100644 --- a/jstests/geo_nearwithin.js +++ b/jstests/core/geo_nearwithin.js diff --git a/jstests/geo_or.js b/jstests/core/geo_or.js index fd9b7234a21..fd9b7234a21 100644 --- a/jstests/geo_or.js +++ b/jstests/core/geo_or.js diff --git a/jstests/geo_poly_edge.js b/jstests/core/geo_poly_edge.js index 31a0849e67d..31a0849e67d 100644 --- a/jstests/geo_poly_edge.js +++ b/jstests/core/geo_poly_edge.js diff --git a/jstests/geo_poly_line.js b/jstests/core/geo_poly_line.js index aca77b6ab0a..aca77b6ab0a 100644 --- a/jstests/geo_poly_line.js +++ b/jstests/core/geo_poly_line.js diff --git a/jstests/geo_polygon1.js b/jstests/core/geo_polygon1.js index 4b7427a4da2..11f17910306 100644 --- a/jstests/geo_polygon1.js +++ b/jstests/core/geo_polygon1.js @@ -40,8 +40,7 @@ pacman = [ ]; t.save({loc: [1,3] }); // Add a point that's in -t.ensureIndex( { loc : "2d" } ); -assert.isnull( db.getLastError() ) +assert.writeOK(t.ensureIndex( { loc : "2d" } )); assert.eq( 1 , t.find({loc : { $within : { $polygon : pacman }}} ).count() , "Pacman single point" ); diff --git a/jstests/geo_polygon1_noindex.js b/jstests/core/geo_polygon1_noindex.js index 2a94bbbfd09..4fc7135c2f9 100644 --- a/jstests/geo_polygon1_noindex.js +++ b/jstests/core/geo_polygon1_noindex.js @@ -35,8 +35,7 @@ pacman = [ [4,0], [2,0] // Bottom ]; -t.save({loc: [1,3] }); // Add a point that's in -assert.isnull( db.getLastError() ) +assert.writeOK(t.save({loc: [1,3] })); // Add a point that's in assert.eq( 1 , t.find({loc : { $within : { $polygon : pacman }}} ).count() , "Pacman single point" ); diff --git a/jstests/core/geo_polygon2.js b/jstests/core/geo_polygon2.js new file mode 100644 index 00000000000..c626064f153 --- /dev/null +++ b/jstests/core/geo_polygon2.js @@ -0,0 +1,263 @@ +// +// More tests for N-dimensional polygon querying +// + +// Create a polygon of some shape (no holes) +// using turtle graphics. Basically, will look like a very contorted octopus (quad-pus?) shape. +// There are no holes, but some edges will probably touch. + +var numTests = 4; + +for ( var test = 0; test < numTests; test++ ) { + + Random.srand( 1337 + test ); + + var numTurtles = 4; + var gridSize = [ 20, 20 ]; + var turtleSteps = 500; + var bounds = [ Random.rand() * -1000000 + 0.00001, Random.rand() * 1000000 + 0.00001 ]; + var rotation = Math.PI * Random.rand(); + var bits = Math.floor( Random.rand() * 32 ); + + printjson( { test : test, rotation : rotation, bits : bits }); + + var rotatePoint = function( x, y ) { + + if( y == undefined ){ + y = x[1]; + x = x[0]; + } + + xp = x * Math.cos( rotation ) - y * Math.sin( rotation ); + yp = y * Math.cos( rotation ) + x * Math.sin( rotation ); + + var scaleX = (bounds[1] - bounds[0]) / 360; + var scaleY = (bounds[1] - bounds[0]) / 360; + + x *= scaleX; + y *= scaleY; + + return [xp, yp]; + }; + + var grid = []; + for ( var i = 0; i < gridSize[0]; i++ ) { + grid.push( new Array( gridSize[1] ) ); + } + + grid.toString = function() { + + var gridStr = ""; + for ( var j = grid[0].length - 1; j >= -1; j-- ) { + for ( var i = 0; i < grid.length; i++ ) { + if ( i == 0 ) + gridStr += ( j == -1 ? " " : ( j % 10) ) + ": "; + if ( j != -1 ) + gridStr += "[" + ( grid[i][j] != undefined ? grid[i][j] : " " ) + "]"; + else + gridStr += " " + ( i % 10 ) + " "; + } + gridStr += "\n"; + } + + return gridStr; + }; + + var turtles = []; + for ( var i = 0; i < numTurtles; i++ ) { + + var up = ( i % 2 == 0 ) ? i - 1 : 0; + var left = ( i % 2 == 1 ) ? ( i - 1 ) - 1 : 0; + + turtles[i] = [ + [ Math.floor( gridSize[0] / 2 ), Math.floor( gridSize[1] / 2 ) ], + [ Math.floor( gridSize[0] / 2 ) + left, Math.floor( gridSize[1] / 2 ) + up ] ]; + + grid[turtles[i][1][0]][turtles[i][1][1]] = i; + + } + + grid[Math.floor( gridSize[0] / 2 )][Math.floor( gridSize[1] / 2 )] = "S"; + + // print( grid.toString() ) + + var pickDirections = function() { + + var up = Math.floor( Random.rand() * 3 ); + if ( up == 2 ) + up = -1; + + if ( up == 0 ) { + var left = Math.floor( Random.rand() * 3 ); + if ( left == 2 ) + left = -1; + } else + left = 0; + + if ( Random.rand() < 0.5 ) { + var swap = left; + left = up; + up = swap; + } + + return [ left, up ]; + }; + + for ( var s = 0; s < turtleSteps; s++ ) { + + for ( var t = 0; t < numTurtles; t++ ) { + + var dirs = pickDirections(); + var up = dirs[0]; + var left = dirs[1]; + + var lastTurtle = turtles[t][turtles[t].length - 1]; + var nextTurtle = [ lastTurtle[0] + left, lastTurtle[1] + up ]; + + if ( nextTurtle[0] >= gridSize[0] || + nextTurtle[1] >= gridSize[1] || + nextTurtle[0] < 0 || + nextTurtle[1] < 0 ) + continue; + + if ( grid[nextTurtle[0]][nextTurtle[1]] == undefined ) { + turtles[t].push( nextTurtle ); + grid[nextTurtle[0]][nextTurtle[1]] = t; + } + + } + } + + turtlePaths = []; + for ( var t = 0; t < numTurtles; t++ ) { + + turtlePath = []; + + var nextSeg = function(currTurtle, prevTurtle) { + + var pathX = currTurtle[0] + + if ( currTurtle[1] < prevTurtle[1] ) { + pathX = currTurtle[0] + 1; + pathY = prevTurtle[1] + } else if ( currTurtle[1] > prevTurtle[1] ) { + pathX = currTurtle[0]; + pathY = currTurtle[1]; + } else if ( currTurtle[0] < prevTurtle[0] ) { + pathX = prevTurtle[0]; + pathY = currTurtle[1]; + } else if ( currTurtle[0] > prevTurtle[0] ) { + pathX = currTurtle[0]; + pathY = currTurtle[1] + 1; + } + + // print( " Prev : " + prevTurtle + " Curr : " + currTurtle + " path + // : " + // + [pathX, pathY]); + + return [ pathX, pathY ] + }; + + for ( var s = 1; s < turtles[t].length; s++ ) { + + currTurtle = turtles[t][s]; + prevTurtle = turtles[t][s - 1]; + + turtlePath.push( nextSeg( currTurtle, prevTurtle ) ); + + } + + for ( var s = turtles[t].length - 2; s >= 0; s-- ) { + + currTurtle = turtles[t][s]; + prevTurtle = turtles[t][s + 1]; + + turtlePath.push( nextSeg( currTurtle, prevTurtle ) ); + + } + + // printjson( turtlePath ) + + // End of the line is not inside our polygon. + var lastTurtle = turtles[t][turtles[t].length - 1]; + grid[lastTurtle[0]][lastTurtle[1]] = undefined; + + fixedTurtlePath = []; + for ( var s = 1; s < turtlePath.length; s++ ) { + + if ( turtlePath[s - 1][0] == turtlePath[s][0] && + turtlePath[s - 1][1] == turtlePath[s][1] ) { + continue; + } + + var up = turtlePath[s][1] - turtlePath[s - 1][1]; + var right = turtlePath[s][0] - turtlePath[s - 1][0]; + var addPoint = ( up != 0 && right != 0 ); + + if ( addPoint && up != right ) { + fixedTurtlePath.push( [ turtlePath[s][0], turtlePath[s - 1][1] ] ); + } else if ( addPoint ) { + fixedTurtlePath.push( [ turtlePath[s - 1][0], turtlePath[s][1] ] ); + } + + fixedTurtlePath.push( turtlePath[s] ); + } + + // printjson( fixedTurtlePath ) + + turtlePaths.push( fixedTurtlePath ); + } + + // Uncomment to print polygon shape + // print( grid.toString() ) + + var polygon = []; + for ( var t = 0; t < turtlePaths.length; t++ ) { + for ( var s = 0; s < turtlePaths[t].length; s++ ) { + polygon.push( rotatePoint( turtlePaths[t][s] ) ); + } + } + + // Uncomment to print out polygon + // printjson( polygon ) + + t = db.polytest2; + t.drop(); + + // Test single and multi-location documents + var pointsIn = 0; + var pointsOut = 0; + var allPointsIn = []; + var allPointsOut = []; + + for ( var j = grid[0].length - 1; j >= 0; j-- ) { + for ( var i = 0; i < grid.length; i++ ) { + var point = rotatePoint( [ i + 0.5, j + 0.5 ] ); + + t.insert( { loc : point } ); + if ( grid[i][j] != undefined ){ + allPointsIn.push( point ); + pointsIn++; + } + else{ + allPointsOut.push( point ); + pointsOut++; + } + } + } + + var res = t.ensureIndex({ loc: "2d" }, { bits: 1 + bits, max: bounds[1], min: bounds[0] }); + assert.writeOK( res ); + + t.insert( { loc : allPointsIn } ); + t.insert( { loc : allPointsOut } ); + allPoints = allPointsIn.concat( allPointsOut ); + t.insert( { loc : allPoints } ); + + print( "Points : " ); + printjson( { pointsIn : pointsIn, pointsOut : pointsOut } ); + //print( t.find( { loc : { "$within" : { "$polygon" : polygon } } } ).count() ) + + assert.eq( gridSize[0] * gridSize[1] + 3, t.find().count() ); + assert.eq( 2 + pointsIn, t.find( { loc : { "$within" : { "$polygon" : polygon } } } ).count() ); +} diff --git a/jstests/geo_polygon3.js b/jstests/core/geo_polygon3.js index b144bfbc589..b144bfbc589 100644 --- a/jstests/geo_polygon3.js +++ b/jstests/core/geo_polygon3.js diff --git a/jstests/geo_queryoptimizer.js b/jstests/core/geo_queryoptimizer.js index 7a438bce8fb..7a438bce8fb 100644 --- a/jstests/geo_queryoptimizer.js +++ b/jstests/core/geo_queryoptimizer.js diff --git a/jstests/geo_regex0.js b/jstests/core/geo_regex0.js index 79042b9074e..79042b9074e 100644 --- a/jstests/geo_regex0.js +++ b/jstests/core/geo_regex0.js diff --git a/jstests/geo_s2cursorlimitskip.js b/jstests/core/geo_s2cursorlimitskip.js index a4eaf74afbc..2417d41f24c 100644 --- a/jstests/geo_s2cursorlimitskip.js +++ b/jstests/core/geo_s2cursorlimitskip.js @@ -20,8 +20,7 @@ function insertRandomPoints(num, minDist, maxDist){ var lat = sign() * (minDist + random() * (maxDist - minDist)); var lng = sign() * (minDist + random() * (maxDist - minDist)); var point = { geo: { type: "Point", coordinates: [lng, lat] } }; - t.insert(point); - assert(!db.getLastError()); + assert.writeOK(t.insert(point)); } } diff --git a/jstests/geo_s2dedupnear.js b/jstests/core/geo_s2dedupnear.js index ac31e082891..ac31e082891 100644 --- a/jstests/geo_s2dedupnear.js +++ b/jstests/core/geo_s2dedupnear.js diff --git a/jstests/geo_s2descindex.js b/jstests/core/geo_s2descindex.js index 39d153a6e55..39d153a6e55 100644 --- a/jstests/geo_s2descindex.js +++ b/jstests/core/geo_s2descindex.js diff --git a/jstests/geo_s2disjoint_holes.js b/jstests/core/geo_s2disjoint_holes.js index cd8f3f4d58f..26d94d9343a 100644 --- a/jstests/geo_s2disjoint_holes.js +++ b/jstests/core/geo_s2disjoint_holes.js @@ -50,15 +50,8 @@ print(assert.throws( // Can't insert a bad polygon or a bad multi-polygon with a 2dsphere index. // t.createIndex({p: '2dsphere'}); -t.insert({p: poly}); -var error = t.getDB().getLastError(); -printjson(error); -assert(error); - -t.insert({p: multiPoly}); -error = t.getDB().getLastError(); -printjson(error); -assert(error); +assert.writeError(t.insert({p: poly})); +assert.writeError(t.insert({p: multiPoly})); // // Can't create a 2dsphere index when the collection contains a bad polygon or @@ -66,28 +59,22 @@ assert(error); // t.drop(); t.insert({p: poly}); -t.createIndex({p: '2dsphere'}); -error = t.getDB().getLastError(); -printjson(error); -assert(error); +res = t.createIndex({p: '2dsphere'}); +assert(!res.ok, tojson(res)); assert.eq(1, t.getIndexes().length); t.drop(); t.insert({p: multiPoly}); -t.createIndex({p: '2dsphere'}); -error = t.getDB().getLastError(); -printjson(error); -assert(error); +res = t.createIndex({p: '2dsphere'}); +assert(!res.ok, tojson(res)); assert.eq(1, t.getIndexes().length); // // But with no index we can insert bad polygons and bad multi-polygons. // t.drop(); -t.insert({p: poly}); -assert.eq(null, t.getDB().getLastError()); -t.insert({p: multiPoly}); -assert.eq(null, t.getDB().getLastError()); +assert.writeOK(t.insert({p: poly})); +assert.writeOK(t.insert({p: multiPoly})); t.drop(); diff --git a/jstests/geo_s2dupe_points.js b/jstests/core/geo_s2dupe_points.js index 74eb09fa63a..8dd6e804c78 100644 --- a/jstests/geo_s2dupe_points.js +++ b/jstests/core/geo_s2dupe_points.js @@ -8,8 +8,7 @@ t.ensureIndex({geo: "2dsphere"}) function testDuplicates(shapeName, shapeWithDupes, shapeWithoutDupes) { // insert a doc with dupes - t.insert(shapeWithDupes) - assert(!db.getLastError(), db.getLastError()); + assert.writeOK(t.insert(shapeWithDupes)); // duplicates are preserved when the document is fetched by _id assert.eq(shapeWithDupes, t.findOne({_id: shapeName})); diff --git a/jstests/geo_s2edgecases.js b/jstests/core/geo_s2edgecases.js index bf46baba744..bf46baba744 100755 --- a/jstests/geo_s2edgecases.js +++ b/jstests/core/geo_s2edgecases.js diff --git a/jstests/geo_s2exact.js b/jstests/core/geo_s2exact.js index a7cf9627765..a7cf9627765 100644 --- a/jstests/geo_s2exact.js +++ b/jstests/core/geo_s2exact.js diff --git a/jstests/geo_s2holesameasshell.js b/jstests/core/geo_s2holesameasshell.js index c3a127305ff..89ba5ef571b 100644 --- a/jstests/geo_s2holesameasshell.js +++ b/jstests/core/geo_s2holesameasshell.js @@ -21,8 +21,7 @@ var polygonWithFullHole = { "type" : "Polygon", "coordinates": [ }; // No keys for insert should error. -t.insert({geo: polygonWithFullHole}) -assert(db.getLastError()) +assert.writeError(t.insert({geo: polygonWithFullHole})); // No covering to search over should give an empty result set. assert.throws(function() { @@ -38,8 +37,7 @@ var polygonWithTwoHolesCoveringWholeArea = {"type" : "Polygon", "coordinates": [ }; // No keys for insert should error. -t.insert({geo: polygonWithTwoHolesCoveringWholeArea}); -assert(db.getLastError()); +assert.writeError(t.insert({geo: polygonWithTwoHolesCoveringWholeArea})); // No covering to search over should give an empty result set. assert.throws(function() { diff --git a/jstests/geo_s2index.js b/jstests/core/geo_s2index.js index cabcea72d19..974e4578dce 100755 --- a/jstests/geo_s2index.js +++ b/jstests/core/geo_s2index.js @@ -33,9 +33,9 @@ somepoly = { "type" : "Polygon", "coordinates" : [ [ [40,5], [40,6], [41,6], [41,5], [40,5]]]} t.insert( {geo : somepoly, nonGeo: "somepoly" }) -t.ensureIndex( { geo : "2dsphere", nonGeo: 1 } ) +var res = t.ensureIndex( { geo : "2dsphere", nonGeo: 1 } ); // We have a point without any geo data. Don't error. -assert(!db.getLastError()) +assert.writeOK(res); res = t.find({ "geo" : { "$geoIntersects" : { "$geometry" : pointA} } }); assert.eq(res.itcount(), 3); @@ -74,34 +74,41 @@ assert.throws(function() { return t.find({ "nonGeo": "pointA", // If we specify a datum, it has to be valid (WGS84). t.drop() t.ensureIndex({loc: "2dsphere"}) -t.insert({loc: {type:'Point', coordinates: [40, 5], crs:{ type: 'name', properties:{name:'EPSG:2000'}}}}) -assert(db.getLastError()); +res = t.insert({ loc: { type: 'Point', + coordinates: [40, 5], + crs: { type: 'name', properties: { name: 'EPSG:2000' }}}}); +assert.writeError(res); assert.eq(0, t.find().itcount()) -t.insert({loc: {type:'Point', coordinates: [40, 5]}}) -assert(!db.getLastError()); -t.insert({loc: {type:'Point', coordinates: [40, 5], crs:{ type: 'name', properties:{name:'EPSG:4326'}}}}) -assert(!db.getLastError()); -t.insert({loc: {type:'Point', coordinates: [40, 5], crs:{ type: 'name', properties:{name:'urn:ogc:def:crs:OGC:1.3:CRS84'}}}}) -assert(!db.getLastError()); +res = t.insert({ loc: { type: 'Point', coordinates: [40, 5] }}); +assert.writeOK(res); +res = t.insert({ loc: { type: 'Point', + coordinates: [40, 5], + crs: { type: 'name', properties: {name :'EPSG:4326' }}}}); +assert.writeOK(res); +res = t.insert({ loc: { type:'Point', + coordinates: [40, 5], + crs: { type: 'name', + properties: { name: 'urn:ogc:def:crs:OGC:1.3:CRS84'}}}}); +assert.writeOK(res); // We can pass level parameters and we verify that they're valid. // 0 <= coarsestIndexedLevel <= finestIndexedLevel <= 30. t.drop(); t.save({loc: [0,0]}) -t.ensureIndex({loc: "2dsphere"}, {finestIndexedLevel: 17, coarsestIndexedLevel: 5}) -assert(!db.getLastError()); +res = t.ensureIndex({ loc: "2dsphere" }, { finestIndexedLevel: 17, coarsestIndexedLevel: 5 }); +assert.writeOK(res); t.drop(); t.save({loc: [0,0]}) -t.ensureIndex({loc: "2dsphere"}, {finestIndexedLevel: 31, coarsestIndexedLevel: 5}) -assert(db.getLastError()); +res = t.ensureIndex({ loc: "2dsphere" }, { finestIndexedLevel: 31, coarsestIndexedLevel: 5 }); +assert.writeError(res); t.drop(); t.save({loc: [0,0]}) -t.ensureIndex({loc: "2dsphere"}, {finestIndexedLevel: 30, coarsestIndexedLevel: 0}) -assert(!db.getLastError()); +res = t.ensureIndex({ loc: "2dsphere" }, { finestIndexedLevel: 30, coarsestIndexedLevel: 0 }); +assert.writeOK(res); t.drop(); t.save({loc: [0,0]}) -t.ensureIndex({loc: "2dsphere"}, {finestIndexedLevel: 30, coarsestIndexedLevel: -1}) -assert(db.getLastError()); +res = t.ensureIndex({ loc: "2dsphere" }, { finestIndexedLevel: 30, coarsestIndexedLevel: -1 }); +assert.writeError(res); diff --git a/jstests/geo_s2indexoldformat.js b/jstests/core/geo_s2indexoldformat.js index 6af593a817c..e2cc1f353ee 100755 --- a/jstests/geo_s2indexoldformat.js +++ b/jstests/core/geo_s2indexoldformat.js @@ -18,11 +18,11 @@ res = t.find({ "geo" : { "$geoIntersects" : {"$geometry": [41,6]}}}) assert.eq(res.count(), 2); // We don't support legacy polygons in 2dsphere. -t.insert( {geo : [[40,5],[40,6],[41,6],[41,5]], nonGeo: ["somepoly"] }) -assert(db.getLastError()); +assert.writeError(t.insert( {geo : [[40,5],[40,6],[41,6],[41,5]], nonGeo: ["somepoly"] })); +assert.writeError(t.insert( {geo : {a:{x:40,y:5},b:{x:40,y:6},c:{x:41,y:6},d:{x:41,y:5}}})); -t.insert( {geo : {a:{x:40,y:5},b:{x:40,y:6},c:{x:41,y:6},d:{x:41,y:5}}}) -assert(db.getLastError()); +// Test "Can't canonicalize query: BadValue bad geo query" error. +assert.throws(function() { + t.findOne({ "geo" : { "$geoIntersects" : {"$geometry": [[40,5],[40,6],[41,6],[41,5]]}}}); +}); -res = t.find({ "geo" : { "$geoIntersects" : {"$geometry": [[40,5],[40,6],[41,6],[41,5]]}}}) -assert(db.getLastError()); diff --git a/jstests/geo_s2indexversion1.js b/jstests/core/geo_s2indexversion1.js index 8524faeddbd..8524faeddbd 100644 --- a/jstests/geo_s2indexversion1.js +++ b/jstests/core/geo_s2indexversion1.js diff --git a/jstests/geo_s2intersection.js b/jstests/core/geo_s2intersection.js index 42abacca98d..42abacca98d 100644 --- a/jstests/geo_s2intersection.js +++ b/jstests/core/geo_s2intersection.js diff --git a/jstests/geo_s2largewithin.js b/jstests/core/geo_s2largewithin.js index 2327f1fb02d..2327f1fb02d 100644 --- a/jstests/geo_s2largewithin.js +++ b/jstests/core/geo_s2largewithin.js diff --git a/jstests/geo_s2meridian.js b/jstests/core/geo_s2meridian.js index 0d5b4b20e6d..6bc7dc735f2 100644 --- a/jstests/geo_s2meridian.js +++ b/jstests/core/geo_s2meridian.js @@ -17,8 +17,7 @@ meridianCrossingLine = { } }; -t.insert(meridianCrossingLine); -assert(! db.getLastError()); +assert.writeOK(t.insert(meridianCrossingLine)); lineAlongMeridian = { type: "LineString", diff --git a/jstests/geo_s2multi.js b/jstests/core/geo_s2multi.js index b40eef5543e..56e3ef77068 100644 --- a/jstests/geo_s2multi.js +++ b/jstests/core/geo_s2multi.js @@ -5,20 +5,17 @@ t.ensureIndex({geo: "2dsphere"}) // Let's try the examples in the GeoJSON spec. multiPointA = { "type": "MultiPoint", "coordinates": [ [100.0, 0.0], [101.0, 1.0] ] } -t.insert({geo: multiPointA}); -assert(!db.getLastError()); +assert.writeOK(t.insert({geo: multiPointA})); multiLineStringA = { "type": "MultiLineString", "coordinates": [ [ [100.0, 0.0], [101.0, 1.0] ], [ [102.0, 2.0], [103.0, 3.0] ]]} -t.insert({geo: multiLineStringA}); -assert(!db.getLastError()); +assert.writeOK(t.insert({geo: multiLineStringA})); multiPolygonA = { "type": "MultiPolygon", "coordinates": [ [[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]]], [[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]], [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]]]} -t.insert({geo: multiPolygonA}) -assert(!db.getLastError()); +assert.writeOK(t.insert({geo: multiPolygonA})) assert.eq(3, t.find({geo: {$geoIntersects: {$geometry: {"type": "Point", "coordinates": [100,0]}}}}).itcount()); @@ -39,8 +36,7 @@ assert.eq(2, t.find({geo: {$geoWithin: {$geometry: multiPolygonA}}}).itcount()); partialPolygonA = { "type": "Polygon", "coordinates": [ [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]] ] }; -t.insert({geo: partialPolygonA}); -assert(!db.getLastError()); +assert.writeOK(t.insert({geo: partialPolygonA})); // Polygon contains itself, the partial poly, and the multipoint assert.eq(3, t.find({geo: {$geoWithin: {$geometry: multiPolygonA}}}).itcount()); diff --git a/jstests/geo_s2near.js b/jstests/core/geo_s2near.js index 136e821b4b8..136e821b4b8 100644 --- a/jstests/geo_s2near.js +++ b/jstests/core/geo_s2near.js diff --git a/jstests/geo_s2nearComplex.js b/jstests/core/geo_s2nearComplex.js index 16a24d6db24..835dfe88481 100644 --- a/jstests/geo_s2nearComplex.js +++ b/jstests/core/geo_s2nearComplex.js @@ -82,7 +82,6 @@ function uniformPoints(origin, count, minDist, maxDist){ } for(i=0; i < points.length; i++){ t.insert(points[i]); - assert(!db.getLastError()); } return points; } @@ -159,8 +158,8 @@ function validateOrdering(query){ var query = {geo: {$geoNear: {$geometry: originGeo}}}; -// Test a uniform distribution of 10000 points. -uniformPoints(origin, 10000, 0.5, 1.5); +// Test a uniform distribution of 1000 points. +uniformPoints(origin, 1000, 0.5, 1.5); validateOrdering({geo: {$geoNear: {$geometry: originGeo}}}) @@ -172,7 +171,7 @@ print(t.find(query).itcount()); t.drop() t.ensureIndex({geo: "2dsphere"}) // Test a uniform distribution with 5 gaps each with 10 points missing. -uniformPointsWithGaps(origin, 10000, 1, 10.0, 5, 10); +uniformPointsWithGaps(origin, 1000, 1, 10.0, 5, 10); validateOrdering({geo: {$geoNear: {$geometry: originGeo}}}) @@ -185,7 +184,7 @@ t.drop() t.ensureIndex({geo: "2dsphere"}) // Test a uniform distribution with 5 clusters each with between 10 and 100 points. -uniformPointsWithClusters(origin, 10000, 1, 10.0, 5, 10, 100); +uniformPointsWithClusters(origin, 1000, 1, 10.0, 5, 10, 100); validateOrdering({geo: {$geoNear: {$geometry: originGeo}}}) diff --git a/jstests/geo_s2near_equator_opposite.js b/jstests/core/geo_s2near_equator_opposite.js index 8ee5d486d5e..8ee5d486d5e 100644 --- a/jstests/geo_s2near_equator_opposite.js +++ b/jstests/core/geo_s2near_equator_opposite.js diff --git a/jstests/geo_s2nearcorrect.js b/jstests/core/geo_s2nearcorrect.js index cdb5404a08d..cdb5404a08d 100644 --- a/jstests/geo_s2nearcorrect.js +++ b/jstests/core/geo_s2nearcorrect.js diff --git a/jstests/geo_s2nearwithin.js b/jstests/core/geo_s2nearwithin.js index 99ac12df803..5df27581e5f 100644 --- a/jstests/geo_s2nearwithin.js +++ b/jstests/core/geo_s2nearwithin.js @@ -14,9 +14,8 @@ origin = { "type" : "Point", "coordinates": [ 0, 0] } t.ensureIndex({ geo : "2dsphere" }) // Near requires an index, and 2dsphere is an index. Spherical isn't // specified so this doesn't work. -resNear = db.runCommand({geoNear : t.getName(), near: [0, 0], - query: {geo: {$within: {$center: [[0, 0], 1]}}}}) -assert(db.getLastError()); +assert.commandFailed( db.runCommand({ geoNear: t.getName(), near: [0, 0], + query: { geo: { $within: { $center: [[0, 0], 1] }}}})); // Spherical is specified so this does work. Old style points are weird // because you can use them with both $center and $centerSphere. Points are diff --git a/jstests/geo_s2nongeoarray.js b/jstests/core/geo_s2nongeoarray.js index a1d51929563..02f307fbab1 100644 --- a/jstests/geo_s2nongeoarray.js +++ b/jstests/core/geo_s2nongeoarray.js @@ -7,10 +7,8 @@ oldPoint = [40,5] var data = {geo: oldPoint, nonGeo: [123,456], otherNonGeo: [{b:[1,2]},{b:[3,4]}]}; t.drop(); -t.insert(data); -assert(!db.getLastError()); -t.ensureIndex({otherNonGeo: 1}); -assert(!db.getLastError()); +assert.writeOK(t.insert(data)); +assert.writeOK(t.ensureIndex({otherNonGeo: 1})); assert.eq(1, t.find({otherNonGeo: {b:[1,2]}}).itcount()); assert.eq(0, t.find({otherNonGeo: 1}).itcount()); assert.eq(1, t.find({'otherNonGeo.b': 1}).itcount()); diff --git a/jstests/geo_s2nonstring.js b/jstests/core/geo_s2nonstring.js index 11fc8f4f4c4..11fc8f4f4c4 100755 --- a/jstests/geo_s2nonstring.js +++ b/jstests/core/geo_s2nonstring.js diff --git a/jstests/geo_s2nopoints.js b/jstests/core/geo_s2nopoints.js index c897f39f815..c897f39f815 100644 --- a/jstests/geo_s2nopoints.js +++ b/jstests/core/geo_s2nopoints.js diff --git a/jstests/geo_s2oddshapes.js b/jstests/core/geo_s2oddshapes.js index 24a318d5b98..24a318d5b98 100644 --- a/jstests/geo_s2oddshapes.js +++ b/jstests/core/geo_s2oddshapes.js diff --git a/jstests/geo_s2ordering.js b/jstests/core/geo_s2ordering.js index 531f22a6254..13847b08745 100644 --- a/jstests/geo_s2ordering.js +++ b/jstests/core/geo_s2ordering.js @@ -11,14 +11,19 @@ needle = "hari" function makepoints(needle) { lat = 0 lng = 0 - points = 200.0 + points = 50.0 + var bulk = t.initializeUnorderedBulkOp(); for (var x = -points; x < points; x += 1) { for (var y = -points; y < points; y += 1) { tag = x.toString() + "," + y.toString(); - t.insert({nongeo: tag, geo : { "type" : "Point", "coordinates" : [lng + x/points, lat + y/points]}}) + bulk.insert({ nongeo: tag, + geo: { + type: "Point", + coordinates: [lng + x/points, lat + y/points]}}); } } - t.insert({nongeo: needle, geo : { "type" : "Point", "coordinates" : [0,0]}}) + bulk.insert({ nongeo: needle, geo: { type: "Point", coordinates: [0,0] }}); + assert.writeOK(bulk.execute()); } function runTest(index) { diff --git a/jstests/geo_s2overlappingpolys.js b/jstests/core/geo_s2overlappingpolys.js index 0d96222206c..0d96222206c 100644 --- a/jstests/geo_s2overlappingpolys.js +++ b/jstests/core/geo_s2overlappingpolys.js diff --git a/jstests/geo_s2polywithholes.js b/jstests/core/geo_s2polywithholes.js index beb9932739f..f396f6b9a4f 100755 --- a/jstests/geo_s2polywithholes.js +++ b/jstests/core/geo_s2polywithholes.js @@ -27,8 +27,7 @@ var polygonWithProtrudingHole = {"type" : "Polygon", "coordinates": [ }; // Bad shell, should error. -t.insert({geo: polygonWithProtrudingHole}); -assert(db.getLastError()); +assert.writeError(t.insert({geo: polygonWithProtrudingHole})); // Can't search with bogus poly. assert.throws(function() { @@ -44,5 +43,4 @@ var polyWithOverlappingHoles = {"type" : "Polygon", "coordinates": [ ] }; -t.insert({geo: polyWithOverlappingHoles}); -assert(db.getLastError()); +assert.writeError(t.insert({geo: polyWithOverlappingHoles})); diff --git a/jstests/geo_s2selfintersectingpoly.js b/jstests/core/geo_s2selfintersectingpoly.js index 4b7e0d4eff3..f34ea3a5ff1 100644 --- a/jstests/geo_s2selfintersectingpoly.js +++ b/jstests/core/geo_s2selfintersectingpoly.js @@ -8,5 +8,4 @@ var intersectingPolygon = {"type": "Polygon", "coordinates": [ /* * Self intersecting polygons should cause a parse exception. */ -t.insert({geo : intersectingPolygon}); -assert(db.getLastError()); +assert.writeError(t.insert({geo : intersectingPolygon})); diff --git a/jstests/geo_s2sparse.js b/jstests/core/geo_s2sparse.js index 3fbc01188a3..3fbc01188a3 100644 --- a/jstests/geo_s2sparse.js +++ b/jstests/core/geo_s2sparse.js diff --git a/jstests/geo_s2twofields.js b/jstests/core/geo_s2twofields.js index 6beac190fb0..2292e8936e8 100644 --- a/jstests/geo_s2twofields.js +++ b/jstests/core/geo_s2twofields.js @@ -21,8 +21,9 @@ var degrees = 5; for (var i = 0; i < maxPoints; ++i) { var fromCoord = randomCoord(nyc.coordinates, 0, degrees); var toCoord = randomCoord(miami.coordinates, 0, degrees); - t.insert({from: {type: "Point", coordinates: fromCoord}, to: { type: "Point", coordinates: toCoord}}) - assert(!db.getLastError()); + var res = t.insert({ from: { type: "Point", coordinates: fromCoord }, + to: { type: "Point", coordinates: toCoord}}); + assert.writeOK(res); } function semiRigorousTime(func) { diff --git a/jstests/geo_s2validindex.js b/jstests/core/geo_s2validindex.js index fee00d8d208..bc8a569e559 100644 --- a/jstests/geo_s2validindex.js +++ b/jstests/core/geo_s2validindex.js @@ -6,19 +6,19 @@ var coll = db.getCollection("twodspherevalid"); // Valid index coll.drop(); -assert.eq(undefined, coll.ensureIndex({geo : "2dsphere", other : 1})); +assert.writeOK(coll.ensureIndex({geo : "2dsphere", other : 1})); // Valid index coll.drop(); -assert.eq(undefined, coll.ensureIndex({geo : "2dsphere", other : 1, geo2 : "2dsphere"})); +assert.writeOK(coll.ensureIndex({geo : "2dsphere", other : 1, geo2 : "2dsphere"})); // Invalid index, using hash with 2dsphere coll.drop(); -assert.neq(undefined, coll.ensureIndex({geo : "2dsphere", other : "hash"}).err); +assert.writeError(coll.ensureIndex({geo : "2dsphere", other : "hash"})); // Invalid index, using 2d with 2dsphere coll.drop(); -assert.neq(undefined, coll.ensureIndex({geo : "2dsphere", other : "2d"}).err); +assert.writeError(coll.ensureIndex({geo : "2dsphere", other : "2d"})); jsTest.log("Success!"); diff --git a/jstests/geo_s2within.js b/jstests/core/geo_s2within.js index 87fd32a7676..87fd32a7676 100644 --- a/jstests/geo_s2within.js +++ b/jstests/core/geo_s2within.js diff --git a/jstests/core/geo_small_large.js b/jstests/core/geo_small_large.js new file mode 100644 index 00000000000..e927e8d5402 --- /dev/null +++ b/jstests/core/geo_small_large.js @@ -0,0 +1,158 @@ +// SERVER-2386, general geo-indexing using very large and very small bounds + +load( "jstests/libs/geo_near_random.js" ); + +// Do some random tests (for near queries) with very large and small ranges + +var test = new GeoNearRandomTest( "geo_small_large" ); + +bounds = { min : -Math.pow( 2, 34 ), max : Math.pow( 2, 34 ) }; + +test.insertPts( 50, bounds ); + +printjson( db["geo_small_large"].find().limit( 10 ).toArray() ); + +test.testPt( [ 0, 0 ] ); +test.testPt( test.mkPt( undefined, bounds ) ); +test.testPt( test.mkPt( undefined, bounds ) ); +test.testPt( test.mkPt( undefined, bounds ) ); +test.testPt( test.mkPt( undefined, bounds ) ); + +test = new GeoNearRandomTest( "geo_small_large" ); + +bounds = { min : -Math.pow( 2, -34 ), max : Math.pow( 2, -34 ) }; + +test.insertPts( 50, bounds ); + +printjson( db["geo_small_large"].find().limit( 10 ).toArray() ); + +test.testPt( [ 0, 0 ] ); +test.testPt( test.mkPt( undefined, bounds ) ); +test.testPt( test.mkPt( undefined, bounds ) ); +test.testPt( test.mkPt( undefined, bounds ) ); +test.testPt( test.mkPt( undefined, bounds ) ); + + +// Check that our box and circle queries also work +var scales = [ + Math.pow( 2, 40 ), + Math.pow( 2, -40 ), + Math.pow(2, 2), + Math.pow(3, -15), + Math.pow(3, 15) +]; + +for ( var i = 0; i < scales.length; i++ ) { + + var scale = scales[i]; + + var eps = Math.pow( 2, -7 ) * scale; + var radius = 5 * scale; + var max = 10 * scale; + var min = -max; + var range = max - min; + var bits = 2 + Math.random() * 30; + + var t = db["geo_small_large"]; + t.drop(); + t.ensureIndex( { p : "2d" }, { min : min, max : max, bits : bits }); + + var outPoints = 0; + var inPoints = 0; + + printjson({ eps : eps, radius : radius, max : max, min : min, range : range, bits : bits }); + + // Put a point slightly inside and outside our range + for ( var j = 0; j < 2; j++ ) { + var currRad = ( j % 2 == 0 ? radius + eps : radius - eps ); + var res = t.insert( { p : { x : currRad, y : 0 } } ); + print( res.toString() ); + } + + printjson( t.find().toArray() ); + + assert.eq( t.count( { p : { $within : { $center : [[0, 0], radius ] } } } ), 1, + "Incorrect center points found!" ); + assert.eq( t.count( { p : { $within : { $box : [ [ -radius, -radius ], [ radius, radius ] ] } } } ), 1, + "Incorrect box points found!" ); + + var shouldFind = []; + var randoms = []; + + for ( var j = 0; j < 2; j++ ) { + + var randX = Math.random(); // randoms[j].randX + var randY = Math.random(); // randoms[j].randY + + randoms.push({ randX : randX, randY : randY }); + + var x = randX * ( range - eps ) + eps + min; + var y = randY * ( range - eps ) + eps + min; + + t.insert( { p : [ x, y ] } ); + + if ( x * x + y * y > radius * radius ){ + // print( "out point "); + // printjson({ x : x, y : y }) + outPoints++; + } + else{ + // print( "in point "); + // printjson({ x : x, y : y }) + inPoints++; + shouldFind.push({ x : x, y : y, radius : Math.sqrt( x * x + y * y ) }); + } + } + + /* + function printDiff( didFind, shouldFind ){ + + for( var i = 0; i < shouldFind.length; i++ ){ + var beenFound = false; + for( var j = 0; j < didFind.length && !beenFound ; j++ ){ + beenFound = shouldFind[i].x == didFind[j].x && + shouldFind[i].y == didFind[j].y + } + + if( !beenFound ){ + print( "Could not find: " ) + shouldFind[i].inRadius = ( radius - shouldFind[i].radius >= 0 ) + printjson( shouldFind[i] ) + } + } + } + + print( "Finding random pts... ") + var found = t.find( { p : { $within : { $center : [[0, 0], radius ] } } } ).toArray() + var didFind = [] + for( var f = 0; f < found.length; f++ ){ + //printjson( found[f] ) + var x = found[f].p.x != undefined ? found[f].p.x : found[f].p[0] + var y = found[f].p.y != undefined ? found[f].p.y : found[f].p[1] + didFind.push({ x : x, y : y, radius : Math.sqrt( x * x + y * y ) }) + } + + print( "Did not find but should: ") + printDiff( didFind, shouldFind ) + print( "Found but should not have: ") + printDiff( shouldFind, didFind ) + */ + + assert.eq( t.count( { p : { $within : { $center : [[0, 0], radius ] } } } ), 1 + inPoints, + "Incorrect random center points found!\n" + tojson( randoms ) ); + + print("Found " + inPoints + " points in and " + outPoints + " points out."); + + var found = t.find( { p : { $near : [0, 0], $maxDistance : radius } } ).toArray(); + var dist = 0; + for( var f = 0; f < found.length; f++ ){ + var x = found[f].p.x != undefined ? found[f].p.x : found[f].p[0]; + var y = found[f].p.y != undefined ? found[f].p.y : found[f].p[1]; + print( "Dist: x : " + x + " y : " + y + " dist : " + + Math.sqrt( x * x + y * y) + " radius : " + radius ); + } + + assert.eq( t.count( { p : { $near : [0, 0], $maxDistance : radius } } ), 1 + inPoints, + "Incorrect random center points found near!\n" + tojson( randoms ) ); +} + diff --git a/jstests/geo_sort1.js b/jstests/core/geo_sort1.js index 67de80e65c7..67de80e65c7 100644 --- a/jstests/geo_sort1.js +++ b/jstests/core/geo_sort1.js diff --git a/jstests/geo_uniqueDocs.js b/jstests/core/geo_uniqueDocs.js index 61f1a40522d..61f1a40522d 100644 --- a/jstests/geo_uniqueDocs.js +++ b/jstests/core/geo_uniqueDocs.js diff --git a/jstests/geo_uniqueDocs2.js b/jstests/core/geo_uniqueDocs2.js index f9b95113f78..f9b95113f78 100644 --- a/jstests/geo_uniqueDocs2.js +++ b/jstests/core/geo_uniqueDocs2.js diff --git a/jstests/geo_update.js b/jstests/core/geo_update.js index dd4b28c8374..dd4b28c8374 100644 --- a/jstests/geo_update.js +++ b/jstests/core/geo_update.js diff --git a/jstests/geo_update1.js b/jstests/core/geo_update1.js index 68a8de668b3..6352ef0aa19 100644 --- a/jstests/geo_update1.js +++ b/jstests/core/geo_update1.js @@ -24,15 +24,13 @@ function p(){ p() -t.update({"loc" : {"$within" : {"$center" : [[5,5], 2]}}}, {'$inc' : { 'z' : 1}}, false, true); -assert.isnull( db.getLastError() , "B1" ) +var res = t.update({ loc: { $within: { $center: [[ 5, 5 ], 2 ]}}}, { $inc: { z: 1 }}, false, true); +assert.writeOK( res ); p() -t.update({}, {'$inc' : { 'z' : 1}}, false, true); -assert.isnull( db.getLastError() , "B2" ) +assert.writeOK(t.update({}, {'$inc' : { 'z' : 1}}, false, true)); p() - -t.update({"loc" : {"$within" : {"$center" : [[5,5], 2]}}}, {'$inc' : { 'z' : 1}}, false, true); -assert.isnull( db.getLastError() , "B3" ) +res = t.update({ loc: { $within: { $center: [[ 5, 5 ], 2 ]}}}, { $inc: { z: 1 }}, false, true); +assert.writeOK( res ); p() diff --git a/jstests/geo_update2.js b/jstests/core/geo_update2.js index 2308b2c7899..6a42619ac98 100644 --- a/jstests/geo_update2.js +++ b/jstests/core/geo_update2.js @@ -25,16 +25,15 @@ function p(){ p() -t.update({"loc" : {"$within" : {"$center" : [[5,5], 2]}}}, {'$inc' : { 'z' : 1}}, false, true); -assert.isnull( db.getLastError() , "B1" ) +assert.writeOK(t.update({"loc" : {"$within" : {"$center" : [[5,5], 2]}}}, + {'$inc' : { 'z' : 1}}, false, true)); p() -t.update({}, {'$inc' : { 'z' : 1}}, false, true); -assert.isnull( db.getLastError() , "B2" ) +assert.writeOK(t.update({}, {'$inc' : { 'z' : 1}}, false, true)); p() -t.update({"loc" : {"$within" : {"$center" : [[5,5], 2]}}}, {'$inc' : { 'z' : 1}}, false, true); -assert.isnull( db.getLastError() , "B3" ) +assert.writeOK(t.update({"loc" : {"$within" : {"$center" : [[5,5], 2]}}}, + {'$inc' : { 'z' : 1}}, false, true)); p() diff --git a/jstests/geo_update_btree.js b/jstests/core/geo_update_btree.js index 38d9692faeb..225a6635903 100644 --- a/jstests/geo_update_btree.js +++ b/jstests/core/geo_update_btree.js @@ -5,21 +5,24 @@ coll.drop() coll.ensureIndex( { loc : '2d' } ) -for ( i = 0; i < 10000; i++ ) { - coll.insert( { loc : [ Random.rand() * 180, Random.rand() * 180 ], v : '' } ); +var big = new Array( 3000 ).toString() + +if (testingReplication) { + coll.setWriteConcern({ w: 2 }); } -var big = new Array( 3000 ).toString() +var parallelInsert = startParallelShell( + "for ( var i = 0; i < 1000; i++ ) {" + + " var doc = { loc: [ Random.rand() * 180, Random.rand() * 180 ], v: '' }" + + " db.jstests_geo_update_btree.insert(doc);" + + "}"); for ( i = 0; i < 1000; i++ ) { coll.update( { loc : { $within : { $center : [ [ Random.rand() * 180, Random.rand() * 180 ], Random.rand() * 50 ] } } }, { $set : { v : big } }, false, true ) - if (testingReplication) - db.getLastError(2); - else - db.getLastError(); - if( i % 10 == 0 ) print( i ); } + +parallelInsert(); diff --git a/jstests/geo_update_btree2.js b/jstests/core/geo_update_btree2.js index d99970c73e0..d99970c73e0 100644 --- a/jstests/geo_update_btree2.js +++ b/jstests/core/geo_update_btree2.js diff --git a/jstests/geo_update_dedup.js b/jstests/core/geo_update_dedup.js index 8ec08b82ea0..def93a839e4 100644 --- a/jstests/geo_update_dedup.js +++ b/jstests/core/geo_update_dedup.js @@ -12,15 +12,15 @@ t.save({locs: [[49.999,49.999], [50.0,50.0], [50.001,50.001]]}); var q = {locs: {$near: [50.0, 50.0]}}; assert.eq(1, t.find(q).itcount(), 'duplicates returned from query'); -t.update({locs: {$near: [50.0, 50.0]}}, {$inc: {touchCount: 1}}, false, true); -assert.eq(1, db.getLastErrorObj().n); +var res = t.update({locs: {$near: [50.0, 50.0]}}, {$inc: {touchCount: 1}}, false, true); +assert.eq(1, res.nMatched); assert.eq(1, t.findOne().touchCount); t.drop(); t.ensureIndex({locs: "2d"}); t.save({locs: [{x:49.999,y:49.999}, {x:50.0,y:50.0}, {x:50.001,y:50.001}]}); -t.update({locs: {$near: {x:50.0, y:50.0}}}, {$inc: {touchCount: 1}}); -assert.eq(1, db.getLastErrorObj().n); +res = t.update({locs: {$near: {x:50.0, y:50.0}}}, {$inc: {touchCount: 1}}); +assert.eq(1, res.nMatched); assert.eq(1, t.findOne().touchCount); // 2d index with $within @@ -28,8 +28,8 @@ t.drop(); t.ensureIndex({loc: "2d"}); t.save({loc: [[0, 0], [1, 1]]}); -t.update({loc: {$within: {$center: [[0, 0], 2]}}}, {$inc: {touchCount: 1}}, false, true); -assert.eq(1, db.getLastErrorObj().n); +res = t.update({loc: {$within: {$center: [[0, 0], 2]}}}, {$inc: {touchCount: 1}}, false, true); +assert.eq(1, res.nMatched); assert.eq(1, t.findOne().touchCount); // 2dsphere index with $geoNear @@ -39,9 +39,9 @@ var x = { "type" : "Polygon", "coordinates" : [[[49.999,49.999], [50.0,50.0], [50.001,50.001], [49.999,49.999]]]} t.save({geo: x}) -t.update({geo: {$geoNear: {"type" : "Point", "coordinates" : [50.0, 50.0]}}}, - {$inc: {touchCount: 1}}, false, true); -assert.eq(1, db.getLastErrorObj().n); +res = t.update({geo: {$geoNear: {"type" : "Point", "coordinates" : [50.0, 50.0]}}}, + {$inc: {touchCount: 1}}, false, true); +assert.eq(1, res.nMatched); assert.eq(1, t.findOne().touchCount); t.drop(); @@ -53,8 +53,8 @@ var locdata = [ t.save({locdata: locdata, count: 0}) t.ensureIndex({"locdata.geo": "2dsphere"}); -t.update({"locdata.geo": {$geoNear: {"type" : "Point", "coordinates" : [50.0, 50.0]}}}, - {$inc: {touchCount: 1}}, false, true); -assert.eq(1, db.getLastErrorObj().n); +res = t.update({"locdata.geo": {$geoNear: {"type" : "Point", "coordinates" : [50.0, 50.0]}}}, + {$inc: {touchCount: 1}}, false, true); +assert.eq(1, res.nMatched); assert.eq(1, t.findOne().touchCount); diff --git a/jstests/geo_withinquery.js b/jstests/core/geo_withinquery.js index 11701d34c62..11701d34c62 100644 --- a/jstests/geo_withinquery.js +++ b/jstests/core/geo_withinquery.js diff --git a/jstests/geoa.js b/jstests/core/geoa.js index 3081f6c5c2e..3081f6c5c2e 100644 --- a/jstests/geoa.js +++ b/jstests/core/geoa.js diff --git a/jstests/geob.js b/jstests/core/geob.js index 0dcc2658ba2..0dcc2658ba2 100644 --- a/jstests/geob.js +++ b/jstests/core/geob.js diff --git a/jstests/geoc.js b/jstests/core/geoc.js index 8b0178095e8..8b0178095e8 100644 --- a/jstests/geoc.js +++ b/jstests/core/geoc.js diff --git a/jstests/geod.js b/jstests/core/geod.js index 6e458454a71..6e458454a71 100644 --- a/jstests/geod.js +++ b/jstests/core/geod.js diff --git a/jstests/geoe.js b/jstests/core/geoe.js index 22feb83ab1e..22feb83ab1e 100644 --- a/jstests/geoe.js +++ b/jstests/core/geoe.js diff --git a/jstests/geof.js b/jstests/core/geof.js index 786ead6a94a..786ead6a94a 100644 --- a/jstests/geof.js +++ b/jstests/core/geof.js diff --git a/jstests/geonear_cmd_input_validation.js b/jstests/core/geonear_cmd_input_validation.js index 2a44391183b..2a44391183b 100644 --- a/jstests/geonear_cmd_input_validation.js +++ b/jstests/core/geonear_cmd_input_validation.js diff --git a/jstests/geonear_validate.js b/jstests/core/geonear_validate.js index 49d4c1ade15..49d4c1ade15 100644 --- a/jstests/geonear_validate.js +++ b/jstests/core/geonear_validate.js diff --git a/jstests/getlog1.js b/jstests/core/getlog1.js index 75fbeabddf2..75fbeabddf2 100644 --- a/jstests/getlog1.js +++ b/jstests/core/getlog1.js diff --git a/jstests/getlog2.js b/jstests/core/getlog2.js index 2712f96fc3e..846f0548309 100644 --- a/jstests/getlog2.js +++ b/jstests/core/getlog2.js @@ -38,8 +38,7 @@ if(db.isMaster().msg != "isdbgrid") { // same, but for update assert( contains(resp.log, function(v) { - print(v); - return v.indexOf(" update ") != -1 && v.indexOf("query:") != -1 && + return v.indexOf(" update ") != -1 && v.indexOf("query") != -1 && v.indexOf("nscanned:") != -1 && v.indexOf("nscannedObjects:") != -1 && v.indexOf("SENTINEL") != -1; diff --git a/jstests/group1.js b/jstests/core/group1.js index c4147c0d89a..c4147c0d89a 100644 --- a/jstests/group1.js +++ b/jstests/core/group1.js diff --git a/jstests/group2.js b/jstests/core/group2.js index a8e6653470a..a8e6653470a 100644 --- a/jstests/group2.js +++ b/jstests/core/group2.js diff --git a/jstests/group3.js b/jstests/core/group3.js index d113b9d570f..d113b9d570f 100644 --- a/jstests/group3.js +++ b/jstests/core/group3.js diff --git a/jstests/group4.js b/jstests/core/group4.js index e75c0d1ae2c..e75c0d1ae2c 100644 --- a/jstests/group4.js +++ b/jstests/core/group4.js diff --git a/jstests/group5.js b/jstests/core/group5.js index 3534fe5f030..3534fe5f030 100644 --- a/jstests/group5.js +++ b/jstests/core/group5.js diff --git a/jstests/group6.js b/jstests/core/group6.js index b77a37a5d11..b77a37a5d11 100644 --- a/jstests/group6.js +++ b/jstests/core/group6.js diff --git a/jstests/group7.js b/jstests/core/group7.js index f18a84055f4..1413000079c 100644 --- a/jstests/group7.js +++ b/jstests/core/group7.js @@ -7,12 +7,14 @@ function checkForYield( docs, updates ) { t.drop(); a = 0; for( var i = 0; i < docs; ++i ) { - t.save( {a:a} ); + t.save( {a:a} ); } - db.getLastError(); // Iteratively update all a values atomically. - p = startParallelShell( 'for( a = 0; a < ' + updates + '; ++a ) { db.jstests_group7.update( {$atomic:true}, {$set:{a:a}}, false, true ); db.getLastError(); }' ); + p = startParallelShell( + 'for( a = 0; a < ' + updates + '; ++a ) {' + + 'db.jstests_group7.update({ $atomic: true }, { $set: { a: a }}, false, true);' + + '}' ); for( var i = 0; i < updates; ++i ) { print("running group " + i + " of " + updates); @@ -36,7 +38,7 @@ for( var j = 1; j <= 6; ++j ) { print("Iteration " + j + " docs = " + docs + " updates = " + updates); if ( checkForYield( docs, updates ) ) { yielded = true; - break; + break; } // Increase docs and updates to encourage yielding. docs *= 2; diff --git a/jstests/group_empty.js b/jstests/core/group_empty.js index 62a734ed0f8..62a734ed0f8 100644 --- a/jstests/group_empty.js +++ b/jstests/core/group_empty.js diff --git a/jstests/grow_hash_table.js b/jstests/core/grow_hash_table.js index 3e148b7240f..1f96820d61f 100644 --- a/jstests/grow_hash_table.js +++ b/jstests/core/grow_hash_table.js @@ -23,10 +23,7 @@ var doTest = function(count) { } // Store the document - testDB.collection.insert(doc); - var errorObj = testDB.getLastErrorObj(); - assert(errorObj.err == null, - 'Failed to insert document, getLastErrorObj = ' + tojsononeline(errorObj)); + assert.writeOK(testDB.collection.insert(doc)); // Try to read the document using a large projection try { diff --git a/jstests/hashindex1.js b/jstests/core/hashindex1.js index 34bd6dc0725..34bd6dc0725 100644 --- a/jstests/hashindex1.js +++ b/jstests/core/hashindex1.js diff --git a/jstests/hashtest1.js b/jstests/core/hashtest1.js index 981a0c36877..981a0c36877 100644 --- a/jstests/hashtest1.js +++ b/jstests/core/hashtest1.js diff --git a/jstests/hint1.js b/jstests/core/hint1.js index b5a580f2b93..b5a580f2b93 100644 --- a/jstests/hint1.js +++ b/jstests/core/hint1.js diff --git a/jstests/hostinfo.js b/jstests/core/hostinfo.js index 16c3810b2c4..16c3810b2c4 100644 --- a/jstests/hostinfo.js +++ b/jstests/core/hostinfo.js diff --git a/jstests/id1.js b/jstests/core/id1.js index 9236340e4ec..9236340e4ec 100644 --- a/jstests/id1.js +++ b/jstests/core/id1.js diff --git a/jstests/idhack.js b/jstests/core/idhack.js index 21409645489..21409645489 100644 --- a/jstests/idhack.js +++ b/jstests/core/idhack.js diff --git a/jstests/in.js b/jstests/core/in.js index da1313692e1..da1313692e1 100644 --- a/jstests/in.js +++ b/jstests/core/in.js diff --git a/jstests/in2.js b/jstests/core/in2.js index 66b90daa25a..66b90daa25a 100644 --- a/jstests/in2.js +++ b/jstests/core/in2.js diff --git a/jstests/in3.js b/jstests/core/in3.js index b0a8bb7b81f..b0a8bb7b81f 100644 --- a/jstests/in3.js +++ b/jstests/core/in3.js diff --git a/jstests/in4.js b/jstests/core/in4.js index 3e3dca29528..3e3dca29528 100644 --- a/jstests/in4.js +++ b/jstests/core/in4.js diff --git a/jstests/in5.js b/jstests/core/in5.js index 435c8864004..435c8864004 100644 --- a/jstests/in5.js +++ b/jstests/core/in5.js diff --git a/jstests/in6.js b/jstests/core/in6.js index f114d93442a..f114d93442a 100644 --- a/jstests/in6.js +++ b/jstests/core/in6.js diff --git a/jstests/in8.js b/jstests/core/in8.js index 5e7e587629f..5e7e587629f 100644 --- a/jstests/in8.js +++ b/jstests/core/in8.js diff --git a/jstests/in9.js b/jstests/core/in9.js index cbe28e2e2df..cbe28e2e2df 100644 --- a/jstests/in9.js +++ b/jstests/core/in9.js diff --git a/jstests/ina.js b/jstests/core/ina.js index cf614ab994d..cf614ab994d 100644 --- a/jstests/ina.js +++ b/jstests/core/ina.js diff --git a/jstests/inb.js b/jstests/core/inb.js index 34ec843d36c..34ec843d36c 100644 --- a/jstests/inb.js +++ b/jstests/core/inb.js diff --git a/jstests/inc-SERVER-7446.js b/jstests/core/inc-SERVER-7446.js index 73cdef3dbd5..c8066a8e491 100644 --- a/jstests/inc-SERVER-7446.js +++ b/jstests/core/inc-SERVER-7446.js @@ -3,9 +3,8 @@ var c = db.incSERVER7446 // A 32 bit overflow spills to 64 bits c.drop(); c.save( { a: NumberInt( "2147483647" ) } ); -c.update( {}, { $inc:{ a:NumberInt( 1 ) } } ); -var gle = db.getLastErrorObj(); -assert.eq(1, gle.n, "Object not inserted"); +var updateResult = c.update( {}, { $inc:{ a:NumberInt( 1 ) } } ); +assert.eq(1, updateResult.nMatched, "Object not modified"); var res = c.findOne(); assert.eq(NumberLong, res.a.constructor, "NumberInt incremented beyond std::numeric_limits<in32_t>::max() not NumberLong"); @@ -15,9 +14,8 @@ assert.eq(NumberLong("2147483648"), res.a, // A 32 bit underflow spills to 64 bits c.drop(); c.save( { a: NumberInt( "-2147483648" ) } ); -c.update( {}, { $inc:{ a:NumberInt( -1 ) } } ); -gle = db.getLastErrorObj(); -assert.eq(1, gle.n, "Object not inserted"); +updateResult = c.update( {}, { $inc:{ a:NumberInt( -1 ) } } ); +assert.eq(1, updateResult.nMatched, "Object not modified"); res = c.findOne(); assert.eq(NumberLong, res.a.constructor, "NumberInt decremented beyond std::numeric_limits<in32_t>::min() not NumberLong"); @@ -27,17 +25,15 @@ assert.eq(NumberLong("-2147483649"), res.a, // A 64 bit overflow is an error c.drop(); c.save( { a: NumberLong( "9223372036854775807" ) } ); -c.update( {}, { $inc:{ a:NumberInt( 1 ) } } ); -gle = db.getLastErrorObj(); -assert.eq(0, gle.n, +updateResult = c.update( {}, { $inc:{ a:NumberInt( 1 ) } } ); +assert.eq(0, updateResult.nMatched, "Did not fail to increment a NumberLong past std::numeric_limits<int64_t>::max()"); // A 64 bit underflow is an error c.drop(); c.save( { a: NumberLong( "-9223372036854775808" ) } ); -c.update( {}, { $inc:{ a:NumberInt( -1 ) } } ); -gle = db.getLastErrorObj(); -assert.eq(0, gle.n, +updateResult = c.update( {}, { $inc:{ a:NumberInt( -1 ) } } ); +assert.eq(0, updateResult.nMatched, "Did not fail to decrement a NumberLong past std::numeric_limits<int64_t>::min()"); c.drop() diff --git a/jstests/inc1.js b/jstests/core/inc1.js index 027f307a476..027f307a476 100644 --- a/jstests/inc1.js +++ b/jstests/core/inc1.js diff --git a/jstests/inc2.js b/jstests/core/inc2.js index 75a8e65a384..75a8e65a384 100644 --- a/jstests/inc2.js +++ b/jstests/core/inc2.js diff --git a/jstests/inc3.js b/jstests/core/inc3.js index baeeb198cf4..baeeb198cf4 100644 --- a/jstests/inc3.js +++ b/jstests/core/inc3.js diff --git a/jstests/index1.js b/jstests/core/index1.js index 64bbfa8732b..64bbfa8732b 100644 --- a/jstests/index1.js +++ b/jstests/core/index1.js diff --git a/jstests/index10.js b/jstests/core/index10.js index 92f5927097d..d86402e41af 100644 --- a/jstests/index10.js +++ b/jstests/core/index10.js @@ -12,10 +12,10 @@ t.save( {i:1} ); t.ensureIndex( {i:1} ); assert.eq( 5, t.count() ); t.dropIndexes(); -t.ensureIndex( {i:1}, true ); -err = db.getLastErrorObj(); -assert( err.err , "err.err" ); -assert.eq( 11000, err.code ); +var err = t.ensureIndex( {i:1}, true ); +assert.writeError(err) +assert.eq( 11000, err.getWriteError().code ); + assert( 1 == db.system.indexes.count( {ns:"test.jstests_index10" } ), "only id index" ); // t.dropIndexes(); diff --git a/jstests/index13.js b/jstests/core/index13.js index 7e317d90d94..7e317d90d94 100644 --- a/jstests/index13.js +++ b/jstests/core/index13.js diff --git a/jstests/index2.js b/jstests/core/index2.js index b54abcaa792..b54abcaa792 100644 --- a/jstests/index2.js +++ b/jstests/core/index2.js diff --git a/jstests/index3.js b/jstests/core/index3.js index 80139460cb4..80139460cb4 100644 --- a/jstests/index3.js +++ b/jstests/core/index3.js diff --git a/jstests/index4.js b/jstests/core/index4.js index 9dd731c83ee..9dd731c83ee 100644 --- a/jstests/index4.js +++ b/jstests/core/index4.js diff --git a/jstests/index5.js b/jstests/core/index5.js index 841ac12ed45..841ac12ed45 100644 --- a/jstests/index5.js +++ b/jstests/core/index5.js diff --git a/jstests/index6.js b/jstests/core/index6.js index 8dbd8f74fcf..8dbd8f74fcf 100644 --- a/jstests/index6.js +++ b/jstests/core/index6.js diff --git a/jstests/index7.js b/jstests/core/index7.js index 9e3a6c66d11..9e3a6c66d11 100644 --- a/jstests/index7.js +++ b/jstests/core/index7.js diff --git a/jstests/index8.js b/jstests/core/index8.js index 719ad2dd2cb..719ad2dd2cb 100644 --- a/jstests/index8.js +++ b/jstests/core/index8.js diff --git a/jstests/index9.js b/jstests/core/index9.js index 04b900949ec..04b900949ec 100644 --- a/jstests/index9.js +++ b/jstests/core/index9.js diff --git a/jstests/indexOtherNamespace.js b/jstests/core/indexOtherNamespace.js index 5bb7355ddb6..7df55188606 100644 --- a/jstests/indexOtherNamespace.js +++ b/jstests/core/indexOtherNamespace.js @@ -1,10 +1,5 @@ // SERVER-8814: Test that only the system.indexes namespace can be used to build indexes. -function assertGLENotOK(status) { - assert(status.ok && status.err !== null, - "Expected not-OK status object; found " + tojson(status)); -} - var otherDB = db.getSiblingDB("indexOtherNS"); otherDB.dropDatabase(); @@ -12,8 +7,19 @@ otherDB.foo.insert({a:1}) assert.eq(1, otherDB.system.indexes.count()); assert.eq("BasicCursor", otherDB.foo.find({a:1}).explain().cursor); -otherDB.randomNS.system.indexes.insert({ns:"indexOtherNS.foo", key:{a:1}, name:"a_1"}); -assertGLENotOK(otherDB.getLastErrorObj()); +if (db.getMongo().writeMode() == 'commands') { + assert.throws(function() { + otherDB.randomNS.system.indexes.insert({ ns: "indexOtherNS.foo", + key: { a: 1}, name: "a_1" }); + }); +} +else { + assert.writeError(otherDB.randomNS.system.indexes.insert({ ns: "indexOtherNS.foo", + key: { a: 1 }, name: "a_1"})); +} + + + // Assert that index didn't actually get built assert.eq(1, otherDB.system.indexes.count()); assert.eq(null, otherDB.system.namespaces.findOne({name : "indexOtherNS.foo.$a_1"})); diff --git a/jstests/indexStatsCommand.js b/jstests/core/indexStatsCommand.js index 9c055e37e26..9c055e37e26 100644 --- a/jstests/indexStatsCommand.js +++ b/jstests/core/indexStatsCommand.js diff --git a/jstests/index_arr1.js b/jstests/core/index_arr1.js index d35cb80a83f..d35cb80a83f 100644 --- a/jstests/index_arr1.js +++ b/jstests/core/index_arr1.js diff --git a/jstests/index_arr2.js b/jstests/core/index_arr2.js index 321bed8ad03..101655f2ce9 100644 --- a/jstests/index_arr2.js +++ b/jstests/core/index_arr2.js @@ -34,8 +34,8 @@ function test( withIndex ){ t.ensureIndex( { 'a.b.c' : 1 } , { name : "x" } ) } - t.update(query, { '$set' : { "a.0.b.c" : 0 } } , false , true ) - assert.eq( Z , db.getLastErrorObj().n , "num updated withIndex:" + withIndex ); + var res = t.update(query, { '$set' : { "a.0.b.c" : 0 } } , false , true ); + assert.eq( Z, res.nMatched, "num updated withIndex:" + withIndex ); // now see how many were actually updated. query['a.b.c'] = 0; diff --git a/jstests/index_big1.js b/jstests/core/index_big1.js index 3e53692a2f6..6fbffa4415e 100644 --- a/jstests/index_big1.js +++ b/jstests/core/index_big1.js @@ -9,10 +9,12 @@ var s = ""; t.ensureIndex( { a : 1 , x : 1 } ) +var bulk = t.initializeUnorderedBulkOp(); for ( i=0; i<N; i++ ) { - t.insert( { a : i + .5 , x : s } ) + bulk.insert( { a : i + .5 , x : s } ); s += "x"; } +assert.writeError(bulk.execute()); assert.eq( 2 , t.getIndexes().length ); diff --git a/jstests/index_bigkeys.js b/jstests/core/index_bigkeys.js index b0ea66d65f8..b0ea66d65f8 100755 --- a/jstests/index_bigkeys.js +++ b/jstests/core/index_bigkeys.js diff --git a/jstests/index_bigkeys_update.js b/jstests/core/index_bigkeys_update.js index dd428b5fd4b..6bdaf033542 100644 --- a/jstests/index_bigkeys_update.js +++ b/jstests/core/index_bigkeys_update.js @@ -11,9 +11,7 @@ t.ensureIndex( { x : 1 } ); assert.eq( 1, t.count() ); -t.update( {} , { $set : { x : bigString } } ); -err = db.getLastErrorObj(); -assert( err.err, err ); +assert.writeError(t.update( {} , { $set : { x : bigString } } )); assert.eq( 1, t.count() ); assert.eq( "asd", t.findOne().x ); // make sure doc is the old version diff --git a/jstests/index_bounds_number_edge_cases.js b/jstests/core/index_bounds_number_edge_cases.js index 0ab482028ed..0ab482028ed 100644 --- a/jstests/index_bounds_number_edge_cases.js +++ b/jstests/core/index_bounds_number_edge_cases.js diff --git a/jstests/index_check1.js b/jstests/core/index_check1.js index 7113dff0877..7113dff0877 100644 --- a/jstests/index_check1.js +++ b/jstests/core/index_check1.js diff --git a/jstests/index_check2.js b/jstests/core/index_check2.js index eed3b8e42b7..eed3b8e42b7 100644 --- a/jstests/index_check2.js +++ b/jstests/core/index_check2.js diff --git a/jstests/index_check3.js b/jstests/core/index_check3.js index 55515aff3f5..55515aff3f5 100644 --- a/jstests/index_check3.js +++ b/jstests/core/index_check3.js diff --git a/jstests/index_check5.js b/jstests/core/index_check5.js index eabb929749f..eabb929749f 100644 --- a/jstests/index_check5.js +++ b/jstests/core/index_check5.js diff --git a/jstests/index_check6.js b/jstests/core/index_check6.js index be395fb3d2e..be395fb3d2e 100644 --- a/jstests/index_check6.js +++ b/jstests/core/index_check6.js diff --git a/jstests/index_check7.js b/jstests/core/index_check7.js index 1d0aaebba35..1d0aaebba35 100644 --- a/jstests/index_check7.js +++ b/jstests/core/index_check7.js diff --git a/jstests/index_check8.js b/jstests/core/index_check8.js index 1964ecbe7fc..1964ecbe7fc 100644 --- a/jstests/index_check8.js +++ b/jstests/core/index_check8.js diff --git a/jstests/index_diag.js b/jstests/core/index_diag.js index 21840682e7f..21840682e7f 100644 --- a/jstests/index_diag.js +++ b/jstests/core/index_diag.js diff --git a/jstests/index_elemmatch1.js b/jstests/core/index_elemmatch1.js index 9170ce66018..263eb252364 100644 --- a/jstests/index_elemmatch1.js +++ b/jstests/core/index_elemmatch1.js @@ -4,11 +4,13 @@ t.drop() x = 0 y = 0 +var bulk = t.initializeUnorderedBulkOp(); for ( a=0; a<100; a++ ){ for ( b=0; b<100; b++ ){ - t.insert( { a : a , b : b % 10 , arr : [ { x : x++ % 10 , y : y++ % 10 } ] } ) + bulk.insert( { a : a , b : b % 10 , arr : [ { x : x++ % 10 , y : y++ % 10 } ] } ); } } +assert.writeOK(bulk.execute()); t.ensureIndex( { a : 1 , b : 1 } ) t.ensureIndex( { "arr.x" : 1 , a : 1 } ) diff --git a/jstests/index_filter_commands.js b/jstests/core/index_filter_commands.js index cec2437fff0..cec2437fff0 100644 --- a/jstests/index_filter_commands.js +++ b/jstests/core/index_filter_commands.js diff --git a/jstests/index_many.js b/jstests/core/index_many.js index 46705a20470..f14f3c3e0fc 100644 --- a/jstests/index_many.js +++ b/jstests/core/index_many.js @@ -11,6 +11,7 @@ function f() { t.save({ x: 19, y : 99 }); x = 2; + var lastErr = null; while (x < 70) { patt = {}; patt[x] = 1; @@ -18,12 +19,11 @@ function f() { patt = { x: 1 }; if (x == 64) patt = { y: 1 }; - t.ensureIndex(patt); + lastErr = t.ensureIndex(patt); x++; } - // print( tojson(db.getLastErrorObj()) ); - assert(db.getLastError(), "should have got an error 'too many indexes'"); + assert.writeError(lastErr, "should have got an error 'too many indexes'"); // 40 is the limit currently lim = t.getIndexes().length; diff --git a/jstests/index_many2.js b/jstests/core/index_many2.js index f113b8b87ed..f113b8b87ed 100644 --- a/jstests/index_many2.js +++ b/jstests/core/index_many2.js diff --git a/jstests/index_sparse1.js b/jstests/core/index_sparse1.js index eab3c7fec95..fbcc20a9217 100644 --- a/jstests/index_sparse1.js +++ b/jstests/core/index_sparse1.js @@ -28,8 +28,7 @@ assert.eq( 1 , t.getIndexes().length , "C3" ) t.remove( { _id : 2 } ) // test that we can't create a unique index without sparse -t.ensureIndex( { x : 1 } , { unique : 1 } ) -assert( db.getLastError() , "D1" ) +assert.writeError( t.ensureIndex( { x : 1 } , { unique : 1 } )); assert.eq( 1 , t.getIndexes().length , "D2" ) diff --git a/jstests/index_sparse2.js b/jstests/core/index_sparse2.js index 56a59db3711..56a59db3711 100644 --- a/jstests/index_sparse2.js +++ b/jstests/core/index_sparse2.js diff --git a/jstests/indexa.js b/jstests/core/indexa.js index 7602183adb2..7602183adb2 100644 --- a/jstests/indexa.js +++ b/jstests/core/indexa.js diff --git a/jstests/indexapi.js b/jstests/core/indexapi.js index 7bc5d45acd3..3e0b70ff15f 100644 --- a/jstests/indexapi.js +++ b/jstests/core/indexapi.js @@ -36,5 +36,13 @@ assert.eq( key , idx[1].key , "M2" ); assert( idx[1].unique , "M3" ); //printjson( idx ); -db.system.indexes.insert( { ns : "test" , key : { x : 1 } , name : "x" } ); -assert( db.getLastError() != null , "Z1" ); +// Test that attempting to create index in an invalid namespace fails. +if (db.getMongo().writeMode() == 'commands') { + assert.throws(function() { + db.system.indexes.insert( { ns : "test" , key : { x : 1 } , name : "x" } ); + }); +} +else { + assert.writeError(db.system.indexes.insert( { ns : "test" , key : { x : 1 } , name : "x" } )); +} + diff --git a/jstests/indexb.js b/jstests/core/indexb.js index d7d2e8c9f05..d7d2e8c9f05 100644 --- a/jstests/indexb.js +++ b/jstests/core/indexb.js diff --git a/jstests/indexc.js b/jstests/core/indexc.js index b099e2d2823..b099e2d2823 100644 --- a/jstests/indexc.js +++ b/jstests/core/indexc.js diff --git a/jstests/indexd.js b/jstests/core/indexd.js index 33246ad9812..33246ad9812 100644 --- a/jstests/indexd.js +++ b/jstests/core/indexd.js diff --git a/jstests/indexe.js b/jstests/core/indexe.js index 213f7c74cf0..e84322c6510 100644 --- a/jstests/indexe.js +++ b/jstests/core/indexe.js @@ -2,7 +2,7 @@ t = db.indexe; t.drop(); -num = 100000; +var num = 1000; for ( i=0; i<num; i++){ t.insert( { a : "b" } ); diff --git a/jstests/indexes_on_indexes.js b/jstests/core/indexes_on_indexes.js index 807c1e25bfd..807c1e25bfd 100644 --- a/jstests/indexes_on_indexes.js +++ b/jstests/core/indexes_on_indexes.js diff --git a/jstests/indexf.js b/jstests/core/indexf.js index d65e7b1c898..d65e7b1c898 100644 --- a/jstests/indexf.js +++ b/jstests/core/indexf.js diff --git a/jstests/indexg.js b/jstests/core/indexg.js index a0709fd6568..a0709fd6568 100644 --- a/jstests/indexg.js +++ b/jstests/core/indexg.js diff --git a/jstests/indexh.js b/jstests/core/indexh.js index ac2a93ec62b..ac2a93ec62b 100644 --- a/jstests/indexh.js +++ b/jstests/core/indexh.js diff --git a/jstests/core/indexi.js b/jstests/core/indexi.js new file mode 100644 index 00000000000..bfd9d13e15c --- /dev/null +++ b/jstests/core/indexi.js @@ -0,0 +1,34 @@ +// Test that client cannot access index namespaces SERVER-4276. + +t = db.jstests_indexi; +t.drop(); + +idx = db.jstests_indexi.$_id_; + +var expectWriteError = function(func) { + if (db.getMongo().writeMode() == 'commands') { + assert.throws(func); + } + else { + assert.writeError(func()); + } +}; + +// Test that accessing the index namespace fails. +function checkFailingOperations() { + assert.throws(function() { idx.find().itcount(); }); + expectWriteError(function() { return idx.insert({ x: 1 }); }); + expectWriteError(function() { return idx.update({ x: 1 }, { x: 2 }); }); + expectWriteError(function() { return idx.remove({ x: 1 }); }); + assert.commandFailed( idx.runCommand( 'compact' ) ); + assert.writeError(idx.ensureIndex({ x: 1 })); +} + +// Check with base collection not present. +// TODO: SERVER-4276 +//checkFailingOperations(); +t.save({}); + +// Check with base collection present. +checkFailingOperations(); + diff --git a/jstests/indexj.js b/jstests/core/indexj.js index 6d8ac85c972..6d8ac85c972 100644 --- a/jstests/indexj.js +++ b/jstests/core/indexj.js diff --git a/jstests/indexl.js b/jstests/core/indexl.js index 666586db7a7..666586db7a7 100644 --- a/jstests/indexl.js +++ b/jstests/core/indexl.js diff --git a/jstests/indexm.js b/jstests/core/indexm.js index 6b31ea628cd..6b31ea628cd 100644 --- a/jstests/indexm.js +++ b/jstests/core/indexm.js diff --git a/jstests/indexn.js b/jstests/core/indexn.js index 9abb001eed9..9abb001eed9 100644 --- a/jstests/indexn.js +++ b/jstests/core/indexn.js diff --git a/jstests/indexo.js b/jstests/core/indexo.js index 250b14bbb0e..c9c9424b4ef 100644 --- a/jstests/indexo.js +++ b/jstests/core/indexo.js @@ -5,13 +5,11 @@ var coll = db.jstests_indexo; coll.drop(); // Can create a dropDups index on non-capped collection. -var response = coll.ensureIndex({x: 1}, {dropDups: true}); -assert(response == null); +assert.writeOK(coll.ensureIndex({x: 1}, {dropDups: true})); coll.drop(); // Cannot create a dropDups index on non-capped collection. db.createCollection("jstests_indexy", {capped: true, size: 1024}); coll = db.jstests_indexy; -response = coll.ensureIndex({x: 1}, {dropDups: true}); -assert(response != null); +assert.writeError(coll.ensureIndex({x: 1}, {dropDups: true})); coll.drop(); diff --git a/jstests/core/indexp.js b/jstests/core/indexp.js new file mode 100644 index 00000000000..cd72eeeebf5 --- /dev/null +++ b/jstests/core/indexp.js @@ -0,0 +1,23 @@ +// Tests that SERVER-11374 is fixed: specifically, that indexes cannot +// be created on fields that begin with '$' but are not part of DBRefs +// and that indexes cannot be created on field paths that contain empty +// fields. + +var coll = db.jstests_indexp; + +// Empty field checks. +assert.writeError(coll.ensureIndex({ 'a..b': 1 })); +assert.writeError(coll.ensureIndex({ '.a': 1 })); +assert.writeError(coll.ensureIndex({ 'a.': 1 })); +assert.writeError(coll.ensureIndex({ '.': 1 })); +assert.writeError(coll.ensureIndex({ '': 1 })); +assert.writeOK(coll.ensureIndex({ 'a.b': 1 })); + +// '$'-prefixed field checks. +assert.writeError(coll.ensureIndex({ '$a': 1 })); +assert.writeError(coll.ensureIndex({ 'a.$b': 1 })); +assert.writeError(coll.ensureIndex({ '$db': 1 })); +assert.writeOK(coll.ensureIndex({ 'a$ap': 1 })); // $ in middle is ok +assert.writeOK(coll.ensureIndex({ 'a.$id': 1 })); // $id/$db/$ref are execptions + +coll.dropIndexes(); diff --git a/jstests/indexq.js b/jstests/core/indexq.js index 38cd27b8798..38cd27b8798 100644 --- a/jstests/indexq.js +++ b/jstests/core/indexq.js diff --git a/jstests/indexr.js b/jstests/core/indexr.js index c3eecd045c8..c3eecd045c8 100644 --- a/jstests/indexr.js +++ b/jstests/core/indexr.js diff --git a/jstests/indexs.js b/jstests/core/indexs.js index 609f912affe..609f912affe 100644 --- a/jstests/indexs.js +++ b/jstests/core/indexs.js diff --git a/jstests/indext.js b/jstests/core/indext.js index e418dc2e959..e418dc2e959 100644 --- a/jstests/indext.js +++ b/jstests/core/indext.js diff --git a/jstests/indexu.js b/jstests/core/indexu.js index de0d9831dab..9031d827bf4 100644 --- a/jstests/indexu.js +++ b/jstests/core/indexu.js @@ -9,69 +9,53 @@ var dupDoc2 = {a:[{'1':1},'c']}; var noDupDoc = {a:[{'1':1}]}; // Test that we can't index dupDoc. -t.save( dupDoc ); -assert( !db.getLastError() ); -t.ensureIndex( {'a.0':1} ); -assert( db.getLastError() ); +assert.writeOK( t.save( dupDoc )); +assert.writeError(t.ensureIndex( {'a.0':1} )); t.remove({}); -t.ensureIndex( {'a.0':1} ); -assert( !db.getLastError() ); -t.save( dupDoc ); -assert( db.getLastError() ); +assert.writeOK(t.ensureIndex( {'a.0':1} )); +assert.writeError( t.save( dupDoc )); // Test that we can't index dupDoc2. t.drop(); -t.save( dupDoc2 ); -assert( !db.getLastError() ); -t.ensureIndex( {'a.1':1} ); -assert( db.getLastError() ); +assert.writeOK(t.save( dupDoc2 )); +assert.writeError(t.ensureIndex( {'a.1':1} )); t.remove({}); -t.ensureIndex( {'a.1':1} ); -assert( !db.getLastError() ); -t.save( dupDoc2 ); -assert( db.getLastError() ); +assert.writeOK(t.ensureIndex( {'a.1':1} )); +assert.writeError(t.save( dupDoc2 )); // Test that we can index dupDoc with a different index. t.drop(); t.ensureIndex( {'a.b':1} ); -t.save( dupDoc ); -assert( !db.getLastError() ); +assert.writeOK(t.save( dupDoc )); // Test number field starting with hyphen. t.drop(); t.ensureIndex( {'a.-1':1} ); -t.save( {a:[{'-1':1}]} ); -assert( !db.getLastError() ); +assert.writeOK(t.save( {a:[{'-1':1}]} )); // Test number field starting with zero. t.drop(); t.ensureIndex( {'a.00':1} ); -t.save( {a:[{'00':1}]} ); -assert( !db.getLastError() ); +assert.writeOK( t.save( {a:[{'00':1}]} )); // Test multiple array indexes t.drop(); t.ensureIndex( {'a.0':1,'a.1':1} ); -t.save( {a:[{'1':1}]} ); -assert( !db.getLastError() ); -t.save( {a:[{'1':1},4]} ); -assert( db.getLastError() ); +assert.writeOK( t.save( {a:[{'1':1}]} )); +assert.writeError( t.save( {a:[{'1':1},4]} )); // Test that we can index noDupDoc. t.drop(); t.save( noDupDoc ); -t.ensureIndex( {'a.0':1} ); -assert( !db.getLastError() ); -t.ensureIndex( {'a.1':1} ); -assert( !db.getLastError() ); +assert.writeOK(t.ensureIndex( {'a.0':1} )); +assert.writeOK(t.ensureIndex( {'a.1':1} )); t.drop(); t.ensureIndex( {'a.0':1} ); t.ensureIndex( {'a.1':1} ); -t.save( noDupDoc ); -assert( !db.getLastError() ); +assert.writeOK(t.save( noDupDoc )); // Test that we can query noDupDoc. assert.eq( 1, t.find( {'a.1':1} ).hint( {'a.1':1} ).itcount() ); @@ -82,53 +66,40 @@ assert.eq( 1, t.find( {'a.0':{'1':1}} ).hint( {$natural:1} ).itcount() ); // Check multiple nested array fields. t.drop(); t.save( {a:[[1]]} ); -t.ensureIndex( {'a.0.0':1} ); -assert( !db.getLastError() ); +assert.writeOK(t.ensureIndex( {'a.0.0':1} )); assert.eq( 1, t.find( {'a.0.0':1} ).hint( {$natural:1} ).itcount() ); assert.eq( 1, t.find( {'a.0.0':1} ).hint( {'a.0.0':1} ).itcount() ); // Check where there is a duplicate for a partially addressed field but not for a fully addressed field. t.drop(); t.save( {a:[[1],{'0':1}]} ); -t.ensureIndex( {'a.0.0':1} ); -assert( db.getLastError() ); +assert.writeError(t.ensureIndex( {'a.0.0':1} )); // Check where there is a duplicate for a fully addressed field. t.drop(); -t.save( {a:[[1],{'0':[1]}]} ); -assert( !db.getLastError() ); -t.ensureIndex( {'a.0.0':1} ); -assert( db.getLastError() ); +assert.writeOK( t.save( {a:[[1],{'0':[1]}]} )); +assert.writeError(t.ensureIndex( {'a.0.0':1} )); // Two ways of addressing parse to an array. t.drop(); t.save( {a:[{'0':1}]} ); -t.ensureIndex( {'a.0.0':1} ); -assert( db.getLastError() ); +assert.writeError(t.ensureIndex( {'a.0.0':1} )); // Test several key depths - with same arrays being found. t.drop(); t.save( {a:[{'0':[{'0':1}]}]} ); -t.ensureIndex( {'a.0.0.0.0.0.0':1} ); -assert( db.getLastError() ); -t.ensureIndex( {'a.0.0.0.0.0':1} ); -assert( db.getLastError() ); -t.ensureIndex( {'a.0.0.0.0':1} ); -assert( db.getLastError() ); -t.ensureIndex( {'a.0.0.0':1} ); -assert( db.getLastError() ); -t.ensureIndex( {'a.0.0':1} ); -assert( db.getLastError() ); -t.ensureIndex( {'a.0':1} ); -assert( db.getLastError() ); -t.ensureIndex( {'a':1} ); -assert( !db.getLastError() ); +assert.writeError(t.ensureIndex( {'a.0.0.0.0.0.0':1} )); +assert.writeError(t.ensureIndex( {'a.0.0.0.0.0':1} )); +assert.writeError(t.ensureIndex( {'a.0.0.0.0':1} )); +assert.writeError(t.ensureIndex( {'a.0.0.0':1} )); +assert.writeError(t.ensureIndex( {'a.0.0':1} )); +assert.writeError(t.ensureIndex( {'a.0':1} )); +assert.writeOK(t.ensureIndex( {'a':1} )); // Two prefixes extract docs, but one terminates extraction before array. t.drop(); t.save( {a:[{'0':{'c':[]}}]} ); -t.ensureIndex( {'a.0.c':1} ); -assert( db.getLastError() ); +assert.writeError(t.ensureIndex( {'a.0.c':1} )); t.drop(); t.save( {a:[[{'b':1}]]} ); diff --git a/jstests/indexv.js b/jstests/core/indexv.js index 334ec432d74..334ec432d74 100644 --- a/jstests/indexv.js +++ b/jstests/core/indexv.js diff --git a/jstests/indexw.js b/jstests/core/indexw.js index bd7c75b8b08..bd7c75b8b08 100644 --- a/jstests/indexw.js +++ b/jstests/core/indexw.js diff --git a/jstests/core/insert1.js b/jstests/core/insert1.js new file mode 100644 index 00000000000..e4ce6a4e10e --- /dev/null +++ b/jstests/core/insert1.js @@ -0,0 +1,34 @@ +t = db.insert1; +t.drop(); + +var o = {a:1}; +t.insert(o); +var doc = t.findOne(); +assert.eq(1, doc.a); +assert(doc._id != null, tojson(doc)); + +t.drop(); +o = {a:2, _id:new ObjectId()}; +var id = o._id; +t.insert(o); +doc = t.findOne(); +assert.eq(2, doc.a); +assert.eq(id, doc._id); + +t.drop(); +o = {a:3, _id:"asdf"}; +id = o._id; +t.insert(o); +doc = t.findOne(); +assert.eq(3, doc.a); +assert.eq(id, doc._id); + +t.drop(); +o = {a:4, _id:null}; +t.insert(o); +doc = t.findOne(); +assert.eq(4, doc.a); +assert.eq(null, doc._id, tojson(doc)); + +var stats = db.runCommand({ collstats: "insert1" }); +assert(stats.paddingFactor == 1.0); diff --git a/jstests/core/insert2.js b/jstests/core/insert2.js new file mode 100644 index 00000000000..8ce4b25c25f --- /dev/null +++ b/jstests/core/insert2.js @@ -0,0 +1,13 @@ +// Create a new connection object so it won't affect the global connection when we modify +// it's settings. +var conn = new Mongo(db.getMongo().host); +conn._skipValidation = true; +conn.forceWriteMode(db.getMongo().writeMode()); + +t = conn.getDB(db.getName()).insert2; +t.drop(); + +assert.isnull( t.findOne() , "A" ) +assert.writeError(t.insert( { z : 1 , $inc : { x : 1 } } , 0, true )); +assert.isnull( t.findOne() , "B" ) + diff --git a/jstests/insert_id_undefined.js b/jstests/core/insert_id_undefined.js index 945640a815b..77d7d983549 100644 --- a/jstests/insert_id_undefined.js +++ b/jstests/core/insert_id_undefined.js @@ -2,5 +2,4 @@ t = db.insert_id_undefined; t.drop(); t.insert({_id:undefined}); -db.getLastError(); assert.eq(t.count(), 0); diff --git a/jstests/insert_illegal_doc.js b/jstests/core/insert_illegal_doc.js index 2b4d326e9ce..2b4d326e9ce 100644 --- a/jstests/insert_illegal_doc.js +++ b/jstests/core/insert_illegal_doc.js diff --git a/jstests/insert_long_index_key.js b/jstests/core/insert_long_index_key.js index 6379c36fb4a..6379c36fb4a 100644 --- a/jstests/insert_long_index_key.js +++ b/jstests/core/insert_long_index_key.js diff --git a/jstests/ismaster.js b/jstests/core/ismaster.js index 0c385b02d7c..0c385b02d7c 100644 --- a/jstests/ismaster.js +++ b/jstests/core/ismaster.js diff --git a/jstests/fts_partition_no_multikey.js b/jstests/fts_partition_no_multikey.js deleted file mode 100644 index a6320cc4a9e..00000000000 --- a/jstests/fts_partition_no_multikey.js +++ /dev/null @@ -1,17 +0,0 @@ - -t = db.fts_partition_no_multikey; -t.drop(); - -t.ensureIndex( { x : 1, y : "text" } ) - -t.insert( { x : 5 , y : "this is fun" } ); -assert.isnull( db.getLastError() ); - -t.insert( { x : [] , y : "this is fun" } ); -assert( db.getLastError() ); - -t.insert( { x : [1] , y : "this is fun" } ); -assert( db.getLastError() ); - -t.insert( { x : [1,2] , y : "this is fun" } ); -assert( db.getLastError() ); diff --git a/jstests/geo10.js b/jstests/geo10.js deleted file mode 100644 index 39da09fb9ef..00000000000 --- a/jstests/geo10.js +++ /dev/null @@ -1,21 +0,0 @@ -// Test for SERVER-2746 - -coll = db.geo10 -coll.drop(); - -db.geo10.ensureIndex( { c : '2d', t : 1 }, { min : 0, max : Math.pow( 2, 40 ) } ) -assert( db.getLastError() == null, "B" ) -assert( db.system.indexes.count({ ns : "test.geo10" }) == 2, "A3" ) - -printjson( db.system.indexes.find().toArray() ) - -db.geo10.insert( { c : [ 1, 1 ], t : 1 } ) -assert.eq( db.getLastError(), null, "C" ) - -db.geo10.insert( { c : [ 3600, 3600 ], t : 1 } ) -assert( db.getLastError() == null, "D" ) - -db.geo10.insert( { c : [ 0.001, 0.001 ], t : 1 } ) -assert( db.getLastError() == null, "E" ) - -printjson( db.geo10.find({ c : { $within : { $box : [[0.001, 0.001], [Math.pow(2, 40) - 0.001, Math.pow(2, 40) - 0.001]] } }, t : 1 }).toArray() ) diff --git a/jstests/geo4.js b/jstests/geo4.js deleted file mode 100644 index 78404ab720c..00000000000 --- a/jstests/geo4.js +++ /dev/null @@ -1,10 +0,0 @@ -var t = db.geo4; -t.drop(); - -t.insert( { zip : "06525" , loc : [ 41.352964 , 73.01212 ] } ); - -t.ensureIndex( { loc : "2d" }, { bits : 33 } ); -assert.eq( db.getLastError() , "bits in geo index must be between 1 and 32" , "a" ); - -t.ensureIndex( { loc : "2d" }, { bits : 32 } ); -assert( !db.getLastError(), "b" ); diff --git a/jstests/geo_center_sphere2.js b/jstests/geo_center_sphere2.js deleted file mode 100644 index 5e17790e668..00000000000 --- a/jstests/geo_center_sphere2.js +++ /dev/null @@ -1,164 +0,0 @@ -// -// Tests the error handling of spherical queries -// along with multi-location documents. -// This is necessary since the error handling must manage -// multiple documents, and so requires simultaneous testing. -// - -function deg2rad(arg) { return arg * Math.PI / 180.0; } -function rad2deg(arg) { return arg * 180.0 / Math.PI; } - -function computexscandist(y, maxDistDegrees) { - return maxDistDegrees / Math.min(Math.cos(deg2rad(Math.min(89.0, y + maxDistDegrees))), - Math.cos(deg2rad(Math.max(-89.0, y - maxDistDegrees)))); -} - -function pointIsOK(startPoint, radius) { - yscandist = rad2deg(radius) + 0.01; - xscandist = computexscandist(startPoint[1], yscandist); - return (startPoint[0] + xscandist < 180) - && (startPoint[0] - xscandist > -180) - && (startPoint[1] + yscandist < 90) - && (startPoint[1] - yscandist > -90); -} - -var numTests = 30 - -for ( var test = 0; test < numTests; test++ ) { - - //var fixedTest = 6017 - //if( fixedTest ) test = fixedTest - - Random.srand( 1337 + test ); - - var radius = 5000 * Random.rand() // km - radius = radius / 6371 // radians - var numDocs = Math.floor( 400 * Random.rand() ) - // TODO: Wrapping uses the error value to figure out what would overlap... - var bits = Math.floor( 5 + Random.rand() * 28 ) - var maxPointsPerDoc = 50 - - t = db.sphere - - var randomPoint = function() { - return [ Random.rand() * 360 - 180, Random.rand() * 180 - 90 ]; - } - - // Get a start point that doesn't require wrapping - // TODO: Are we a bit too aggressive with wrapping issues? - var startPoint - var ex = null - do { - t.drop() - startPoint = randomPoint() - t.ensureIndex( { loc : "2d" }, { bits : bits } ) - } while (!pointIsOK(startPoint, radius)) - - var pointsIn = 0 - var pointsOut = 0 - var docsIn = 0 - var docsOut = 0 - var totalPoints = 0 - - for ( var i = 0; i < numDocs; i++ ) { - - var numPoints = Math.floor( Random.rand() * maxPointsPerDoc + 1 ) - var docIn = false - var multiPoint = [] - - totalPoints += numPoints - - for ( var p = 0; p < numPoints; p++ ) { - var point = randomPoint() - multiPoint.push( point ) - - if ( Geo.sphereDistance( startPoint, point ) <= radius ) { - pointsIn++ - docIn = true - } else { - pointsOut++ - } - } - - t.insert( { loc : multiPoint } ) - - if ( docIn ) - docsIn++ - else - docsOut++ - - } - - printjson( { test: test, - radius : radius, bits : bits, numDocs : numDocs, pointsIn : pointsIn, docsIn : docsIn, pointsOut : pointsOut, - docsOut : docsOut } ) - - assert.isnull( db.getLastError() ) - assert.eq( docsIn + docsOut, numDocs ) - assert.eq( pointsIn + pointsOut, totalPoints ) - - // $centerSphere - assert.eq( docsIn, t.find( { loc : { $within : { $centerSphere : [ startPoint, radius ] } } } ).count() ) - - // $nearSphere - var results = t.find( { loc : { $nearSphere : startPoint, $maxDistance : radius } } ).limit( 2 * pointsIn ) - .toArray() - - assert.eq( docsIn, results.length ) - - var distance = 0; - for ( var i = 0; i < results.length; i++ ) { - - var minNewDistance = radius + 1 - for( var j = 0; j < results[i].loc.length; j++ ){ - var newDistance = Geo.sphereDistance( startPoint, results[i].loc[j] ) - if( newDistance < minNewDistance && newDistance >= distance ) minNewDistance = newDistance - } - - //print( "Dist from : " + results[i].loc[j] + " to " + startPoint + " is " - // + minNewDistance + " vs " + radius ) - - assert.lte( minNewDistance, radius ) - assert.gte( minNewDistance, distance ) - distance = minNewDistance - - } - - // geoNear - var results = db.runCommand( { - geoNear : "sphere", near : startPoint, maxDistance : radius, num : 2 * pointsIn, spherical : true } ).results - - /* - printjson( results ); - - for ( var j = 0; j < results[0].obj.loc.length; j++ ) { - var newDistance = Geo.sphereDistance( startPoint, results[0].obj.loc[j] ) - if( newDistance <= radius ) print( results[0].obj.loc[j] + " : " + newDistance ) - } - */ - - assert.eq( docsIn, results.length ) - - var distance = 0; - for ( var i = 0; i < results.length; i++ ) { - var retDistance = results[i].dis - - // print( "Dist from : " + results[i].loc + " to " + startPoint + " is " - // + retDistance + " vs " + radius ) - - var distInObj = false - for ( var j = 0; j < results[i].obj.loc.length && distInObj == false; j++ ) { - var newDistance = Geo.sphereDistance( startPoint, results[i].obj.loc[j] ) - distInObj = ( newDistance >= retDistance - 0.0001 && newDistance <= retDistance + 0.0001 ) - } - - assert( distInObj ) - assert.lte( retDistance, radius ) - assert.gte( retDistance, distance ) - distance = retDistance - } - - //break; -} - - diff --git a/jstests/geo_oob_sphere.js b/jstests/geo_oob_sphere.js deleted file mode 100644 index f2c76457af9..00000000000 --- a/jstests/geo_oob_sphere.js +++ /dev/null @@ -1,42 +0,0 @@ -// -// Ensures spherical queries report invalid latitude values in points and center positions -// - -t = db.geooobsphere -t.drop(); - -t.insert({ loc : { x : 30, y : 89 } }) -t.insert({ loc : { x : 30, y : 89 } }) -t.insert({ loc : { x : 30, y : 89 } }) -t.insert({ loc : { x : 30, y : 89 } }) -t.insert({ loc : { x : 30, y : 89 } }) -t.insert({ loc : { x : 30, y : 89 } }) -t.insert({ loc : { x : 30, y : 91 } }) - -t.ensureIndex({ loc : "2d" }) -assert.isnull( db.getLastError() ) - -assert.throws( function() { t.find({ loc : { $nearSphere : [ 30, 91 ], $maxDistance : 0.25 } }).count() } ); -var err = db.getLastError() -assert( err != null ) -printjson( err ) - -assert.throws( function() { t.find({ loc : { $nearSphere : [ 30, 89 ], $maxDistance : 0.25 } }).count() } ); -var err = db.getLastError() -assert( err != null ) -printjson( err ) - -assert.throws( function() { t.find({ loc : { $within : { $centerSphere : [[ -180, -91 ], 0.25] } } }).count() } ); -var err = db.getLastError() -assert( err != null ) -printjson( err ) - -db.runCommand({ geoNear : "geooobsphere", near : [179, -91], maxDistance : 0.25, spherical : true }) -var err = db.getLastError() -assert( err != null ) -printjson( err ) - -db.runCommand({ geoNear : "geooobsphere", near : [30, 89], maxDistance : 0.25, spherical : true }) -var err = db.getLastError() -assert( err != null ) -printjson( err )
\ No newline at end of file diff --git a/jstests/geo_polygon2.js b/jstests/geo_polygon2.js deleted file mode 100644 index 617801bfc7b..00000000000 --- a/jstests/geo_polygon2.js +++ /dev/null @@ -1,266 +0,0 @@ -// -// More tests for N-dimensional polygon querying -// - -// Create a polygon of some shape (no holes) -// using turtle graphics. Basically, will look like a very contorted octopus (quad-pus?) shape. -// There are no holes, but some edges will probably touch. - -var numTests = 10 - -for ( var test = 0; test < numTests; test++ ) { - - Random.srand( 1337 + test ); - - var numTurtles = 4; - var gridSize = [ 40, 40 ]; - var turtleSteps = 500; - var bounds = [ Random.rand() * -1000000 + 0.00001, Random.rand() * 1000000 + 0.00001 ] - var rotation = Math.PI * Random.rand(); - var bits = Math.floor( Random.rand() * 32 ); - - printjson( { test : test, rotation : rotation, bits : bits }) - - var rotatePoint = function( x, y ) { - - if( y == undefined ){ - y = x[1] - x = x[0] - } - - xp = x * Math.cos( rotation ) - y * Math.sin( rotation ) - yp = y * Math.cos( rotation ) + x * Math.sin( rotation ) - - var scaleX = (bounds[1] - bounds[0]) / 360 - var scaleY = (bounds[1] - bounds[0]) / 360 - - x *= scaleX - y *= scaleY - - return [xp, yp] - - } - - - var grid = [] - for ( var i = 0; i < gridSize[0]; i++ ) { - grid.push( new Array( gridSize[1] ) ) - } - - grid.toString = function() { - - var gridStr = ""; - for ( var j = grid[0].length - 1; j >= -1; j-- ) { - for ( var i = 0; i < grid.length; i++ ) { - if ( i == 0 ) - gridStr += ( j == -1 ? " " : ( j % 10) ) + ": " - if ( j != -1 ) - gridStr += "[" + ( grid[i][j] != undefined ? grid[i][j] : " " ) + "]" - else - gridStr += " " + ( i % 10 ) + " " - } - gridStr += "\n" - } - - return gridStr; - } - - var turtles = [] - for ( var i = 0; i < numTurtles; i++ ) { - - var up = ( i % 2 == 0 ) ? i - 1 : 0; - var left = ( i % 2 == 1 ) ? ( i - 1 ) - 1 : 0; - - turtles[i] = [ - [ Math.floor( gridSize[0] / 2 ), Math.floor( gridSize[1] / 2 ) ], - [ Math.floor( gridSize[0] / 2 ) + left, Math.floor( gridSize[1] / 2 ) + up ] ]; - - grid[turtles[i][1][0]][turtles[i][1][1]] = i - - } - - grid[Math.floor( gridSize[0] / 2 )][Math.floor( gridSize[1] / 2 )] = "S" - - // print( grid.toString() ) - - var pickDirections = function() { - - var up = Math.floor( Random.rand() * 3 ) - if ( up == 2 ) - up = -1 - - if ( up == 0 ) { - var left = Math.floor( Random.rand() * 3 ) - if ( left == 2 ) - left = -1 - } else - left = 0 - - if ( Random.rand() < 0.5 ) { - var swap = left - left = up - up = swap - } - - return [ left, up ] - } - - for ( var s = 0; s < turtleSteps; s++ ) { - - for ( var t = 0; t < numTurtles; t++ ) { - - var dirs = pickDirections() - var up = dirs[0] - var left = dirs[1] - - var lastTurtle = turtles[t][turtles[t].length - 1] - var nextTurtle = [ lastTurtle[0] + left, lastTurtle[1] + up ] - - if ( nextTurtle[0] >= gridSize[0] || nextTurtle[1] >= gridSize[1] || nextTurtle[0] < 0 || nextTurtle[1] < 0 ) - continue; - - if ( grid[nextTurtle[0]][nextTurtle[1]] == undefined ) { - turtles[t].push( nextTurtle ) - grid[nextTurtle[0]][nextTurtle[1]] = t; - } - - } - } - - // print( grid.toString() ) - - turtlePaths = [] - for ( var t = 0; t < numTurtles; t++ ) { - - turtlePath = [] - - var nextSeg = function(currTurtle, prevTurtle) { - - var pathX = currTurtle[0] - - if ( currTurtle[1] < prevTurtle[1] ) { - pathX = currTurtle[0] + 1 - pathY = prevTurtle[1] - } else if ( currTurtle[1] > prevTurtle[1] ) { - pathX = currTurtle[0] - pathY = currTurtle[1] - } else if ( currTurtle[0] < prevTurtle[0] ) { - pathX = prevTurtle[0] - pathY = currTurtle[1] - } else if ( currTurtle[0] > prevTurtle[0] ) { - pathX = currTurtle[0] - pathY = currTurtle[1] + 1 - } - - // print( " Prev : " + prevTurtle + " Curr : " + currTurtle + " path - // : " - // + [pathX, pathY]); - - return [ pathX, pathY ] - } - - for ( var s = 1; s < turtles[t].length; s++ ) { - - currTurtle = turtles[t][s] - prevTurtle = turtles[t][s - 1] - - turtlePath.push( nextSeg( currTurtle, prevTurtle ) ) - - } - - for ( var s = turtles[t].length - 2; s >= 0; s-- ) { - - currTurtle = turtles[t][s] - prevTurtle = turtles[t][s + 1] - - turtlePath.push( nextSeg( currTurtle, prevTurtle ) ) - - } - - // printjson( turtlePath ) - - // End of the line is not inside our polygon. - var lastTurtle = turtles[t][turtles[t].length - 1] - grid[lastTurtle[0]][lastTurtle[1]] = undefined - - fixedTurtlePath = [] - for ( var s = 1; s < turtlePath.length; s++ ) { - - if ( turtlePath[s - 1][0] == turtlePath[s][0] && turtlePath[s - 1][1] == turtlePath[s][1] ) - continue; - - var up = turtlePath[s][1] - turtlePath[s - 1][1] - var right = turtlePath[s][0] - turtlePath[s - 1][0] - var addPoint = ( up != 0 && right != 0 ) - - if ( addPoint && up != right ) { - fixedTurtlePath.push( [ turtlePath[s][0], turtlePath[s - 1][1] ] ) - } else if ( addPoint ) { - fixedTurtlePath.push( [ turtlePath[s - 1][0], turtlePath[s][1] ] ) - } - - fixedTurtlePath.push( turtlePath[s] ) - - } - - // printjson( fixedTurtlePath ) - - turtlePaths.push( fixedTurtlePath ) - - } - - // Uncomment to print polygon shape - // print( grid.toString() ) - - var polygon = [] - for ( var t = 0; t < turtlePaths.length; t++ ) { - for ( var s = 0; s < turtlePaths[t].length; s++ ) { - polygon.push( rotatePoint( turtlePaths[t][s] ) ) - } - } - - // Uncomment to print out polygon - // printjson( polygon ) - - t = db.polytest2 - t.drop() - - // Test single and multi-location documents - var pointsIn = 0 - var pointsOut = 0 - var allPointsIn = [] - var allPointsOut = [] - - for ( var j = grid[0].length - 1; j >= 0; j-- ) { - for ( var i = 0; i < grid.length; i++ ) { - - var point = rotatePoint( [ i + 0.5, j + 0.5 ] ) - - t.insert( { loc : point } ) - if ( grid[i][j] != undefined ){ - allPointsIn.push( point ) - pointsIn++ - } - else{ - allPointsOut.push( point ) - pointsOut++ - } - } - } - - t.ensureIndex( { loc : "2d" }, { bits : 1 + bits, max : bounds[1], min : bounds[0] } ) - assert.isnull( db.getLastError() ) - - t.insert( { loc : allPointsIn } ) - t.insert( { loc : allPointsOut } ) - allPoints = allPointsIn.concat( allPointsOut ) - t.insert( { loc : allPoints } ) - - print( "Points : " ) - printjson( { pointsIn : pointsIn, pointsOut : pointsOut } ) - //print( t.find( { loc : { "$within" : { "$polygon" : polygon } } } ).count() ) - - assert.eq( gridSize[0] * gridSize[1] + 3, t.find().count() ) - assert.eq( 2 + pointsIn, t.find( { loc : { "$within" : { "$polygon" : polygon } } } ).count() ); - -} diff --git a/jstests/geo_small_large.js b/jstests/geo_small_large.js deleted file mode 100644 index aff4743fc71..00000000000 --- a/jstests/geo_small_large.js +++ /dev/null @@ -1,151 +0,0 @@ -// SERVER-2386, general geo-indexing using very large and very small bounds - -load( "jstests/libs/geo_near_random.js" ); - -// Do some random tests (for near queries) with very large and small ranges - -var test = new GeoNearRandomTest( "geo_small_large" ); - -bounds = { min : -Math.pow( 2, 34 ), max : Math.pow( 2, 34 ) }; - -test.insertPts( 50, bounds ); - -printjson( db["geo_small_large"].find().limit( 10 ).toArray() ) - -test.testPt( [ 0, 0 ] ); -test.testPt( test.mkPt( undefined, bounds ) ); -test.testPt( test.mkPt( undefined, bounds ) ); -test.testPt( test.mkPt( undefined, bounds ) ); -test.testPt( test.mkPt( undefined, bounds ) ); - -test = new GeoNearRandomTest( "geo_small_large" ); - -bounds = { min : -Math.pow( 2, -34 ), max : Math.pow( 2, -34 ) }; - -test.insertPts( 50, bounds ); - -printjson( db["geo_small_large"].find().limit( 10 ).toArray() ) - -test.testPt( [ 0, 0 ] ); -test.testPt( test.mkPt( undefined, bounds ) ); -test.testPt( test.mkPt( undefined, bounds ) ); -test.testPt( test.mkPt( undefined, bounds ) ); -test.testPt( test.mkPt( undefined, bounds ) ); - - -// Check that our box and circle queries also work -var scales = [ Math.pow( 2, 40 ), Math.pow( 2, -40 ), Math.pow(2, 2), Math.pow(3, -15), Math.pow(3, 15) ] - -for ( var i = 0; i < scales.length; i++ ) { - - scale = scales[i]; - - var eps = Math.pow( 2, -7 ) * scale; - var radius = 5 * scale; - var max = 10 * scale; - var min = -max; - var range = max - min; - var bits = 2 + Math.random() * 30 - - var t = db["geo_small_large"] - t.drop(); - t.ensureIndex( { p : "2d" }, { min : min, max : max, bits : bits }) - - var outPoints = 0; - var inPoints = 0; - - printjson({ eps : eps, radius : radius, max : max, min : min, range : range, bits : bits }) - - // Put a point slightly inside and outside our range - for ( var j = 0; j < 2; j++ ) { - var currRad = ( j % 2 == 0 ? radius + eps : radius - eps ); - t.insert( { p : { x : currRad, y : 0 } } ); - print( db.getLastError() ) - } - - printjson( t.find().toArray() ); - - assert.eq( t.count( { p : { $within : { $center : [[0, 0], radius ] } } } ), 1, "Incorrect center points found!" ) - assert.eq( t.count( { p : { $within : { $box : [ [ -radius, -radius ], [ radius, radius ] ] } } } ), 1, - "Incorrect box points found!" ) - - shouldFind = [] - randoms = [] - - for ( var j = 0; j < 2; j++ ) { - - var randX = Math.random(); // randoms[j].randX - var randY = Math.random(); // randoms[j].randY - - randoms.push({ randX : randX, randY : randY }) - - var x = randX * ( range - eps ) + eps + min; - var y = randY * ( range - eps ) + eps + min; - - t.insert( { p : [ x, y ] } ); - - if ( x * x + y * y > radius * radius ){ - // print( "out point "); - // printjson({ x : x, y : y }) - outPoints++ - } - else{ - // print( "in point "); - // printjson({ x : x, y : y }) - inPoints++ - shouldFind.push({ x : x, y : y, radius : Math.sqrt( x * x + y * y ) }) - } - } - - /* - function printDiff( didFind, shouldFind ){ - - for( var i = 0; i < shouldFind.length; i++ ){ - var beenFound = false; - for( var j = 0; j < didFind.length && !beenFound ; j++ ){ - beenFound = shouldFind[i].x == didFind[j].x && - shouldFind[i].y == didFind[j].y - } - - if( !beenFound ){ - print( "Could not find: " ) - shouldFind[i].inRadius = ( radius - shouldFind[i].radius >= 0 ) - printjson( shouldFind[i] ) - } - } - } - - print( "Finding random pts... ") - var found = t.find( { p : { $within : { $center : [[0, 0], radius ] } } } ).toArray() - var didFind = [] - for( var f = 0; f < found.length; f++ ){ - //printjson( found[f] ) - var x = found[f].p.x != undefined ? found[f].p.x : found[f].p[0] - var y = found[f].p.y != undefined ? found[f].p.y : found[f].p[1] - didFind.push({ x : x, y : y, radius : Math.sqrt( x * x + y * y ) }) - } - - print( "Did not find but should: ") - printDiff( didFind, shouldFind ) - print( "Found but should not have: ") - printDiff( shouldFind, didFind ) - */ - - assert.eq( t.count( { p : { $within : { $center : [[0, 0], radius ] } } } ), 1 + inPoints, - "Incorrect random center points found!\n" + tojson( randoms ) ) - - print("Found " + inPoints + " points in and " + outPoints + " points out."); - - var found = t.find( { p : { $near : [0, 0], $maxDistance : radius } } ).toArray() - var dist = 0; - for( var f = 0; f < found.length; f++ ){ - var x = found[f].p.x != undefined ? found[f].p.x : found[f].p[0] - var y = found[f].p.y != undefined ? found[f].p.y : found[f].p[1] - print( "Dist: x : " + x + " y : " + y + " dist : " + Math.sqrt( x * x + y * y) + " radius : " + radius ) - } - - assert.eq( t.count( { p : { $near : [0, 0], $maxDistance : radius } } ), 1 + inPoints, - "Incorrect random center points found near!\n" + tojson( randoms ) ) - -} - diff --git a/jstests/indexbindata.js b/jstests/indexbindata.js deleted file mode 100755 index e69de29bb2d..00000000000 --- a/jstests/indexbindata.js +++ /dev/null diff --git a/jstests/indexi.js b/jstests/indexi.js deleted file mode 100644 index 446d6a21fc5..00000000000 --- a/jstests/indexi.js +++ /dev/null @@ -1,43 +0,0 @@ -// Test that client cannot access index namespaces SERVER-4276. - -if ( 0 ) { // SERVER-4276 - -t = db.jstests_indexi; -t.drop(); - -debug = true; - -idx = db.jstests_indexi.$_id_; - -function shouldFail( f ) { - e = assert.throws( function() { - f(); - if( db.getLastError() ) { - throw db.getLastError(); - } - } ); - if ( debug ) { - printjson( e ); - } -} - -function checkFailingOperations() { - // Test that accessing the index namespace fails. - shouldFail( function() { idx.count(); } ); - shouldFail( function() { idx.find().itcount(); } ); - shouldFail( function() { idx.insert({}); } ); - shouldFail( function() { idx.remove({}); } ); - shouldFail( function() { idx.update({},{}); } ); - assert.commandFailed( idx.runCommand( 'compact' ) ); - - // No validation here (yet). - //shouldFail( function() { idx.ensureIndex({x:1}) } ); -} - -// Check with base collection not present. -checkFailingOperations(); -t.save({}); -// Check with base collection present. -checkFailingOperations(); - -} diff --git a/jstests/indexp.js b/jstests/indexp.js deleted file mode 100644 index d71de4716a7..00000000000 --- a/jstests/indexp.js +++ /dev/null @@ -1,54 +0,0 @@ -// Tests that SERVER-11374 is fixed: specifically, that indexes cannot -// be created on fields that begin with '$' but are not part of DBRefs -// and that indexes cannot be created on field paths that contain empty -// fields. - -var coll = db.jstests_indexp; - -// Empty field checks. -coll.ensureIndex({ 'a..b': 1 }); -assert( db.getLastError() != null, - "Expected error, but index on 'a..b' was created successfully." ); - -coll.ensureIndex({ '.a': 1 }); -assert( db.getLastError() != null, - "Expected error, but index on '.a' was created successfully." ); - -coll.ensureIndex({ 'a.': 1 }); -assert( db.getLastError() != null, - "Expected error, but index on 'a.' was created successfully." ); - -coll.ensureIndex({ '.': 1 }); -assert( db.getLastError() != null, - "Expected error, but index on '.' was created successfully." ); - -coll.ensureIndex({ '': 1 }); -assert( db.getLastError() != null, - "Expected error, but index on '' was created successfully." ); - -coll.ensureIndex({ 'a.b': 1 }); -assert( db.getLastError() == null, - "Expected no error, but creating index on 'a.b' failed." ); - -// '$'-prefixed field checks. -coll.ensureIndex({ '$a': 1 }); -assert( db.getLastError() != null, - "Expected error, but index on '$a' was created successfully." ); - -coll.ensureIndex({ 'a.$b': 1 }); -assert( db.getLastError() != null, - "Expected error, but index on 'a.$b' was created successfully." ); - -coll.ensureIndex({ 'a$ap': 1 }); -assert( db.getLastError() == null, - "Expected no error, but creating index on 'a$ap' failed." ); - -coll.ensureIndex({ '$db': 1 }); -assert( db.getLastError() != null, - "Expected error, but index on '$db' was created successfully." ); - -coll.ensureIndex({ 'a.$id': 1 }); -assert( db.getLastError() == null, - "Expected no error, but creating index on 'a.$id' failed." ); - -coll.dropIndexes(); diff --git a/jstests/insert1.js b/jstests/insert1.js deleted file mode 100644 index 7e6b73b6566..00000000000 --- a/jstests/insert1.js +++ /dev/null @@ -1,44 +0,0 @@ -t = db.insert1; -t.drop(); - -o = {a:1}; -t.insert(o); -id = t._lastID -assert.eq(o, {a:1}, "input unchanged 1"); -assert.eq(typeof(id), "object", "1"); -assert.eq(id.constructor, ObjectId, "1"); -assert.eq(t.findOne({_id:id}).a, 1, "find by id 1"); -assert.eq(t.findOne({a:1})._id, id , "find by val 1"); - -o = {a:2, _id:new ObjectId()}; -id1 = o._id -t.insert(o); -id2 = t._lastID -assert.eq(id1, id2, "ids match 2"); -assert.eq(o, {a:2, _id:id1}, "input unchanged 2"); -assert.eq(typeof(id2), "object", "2"); -assert.eq(id2.constructor, ObjectId, "2"); -assert.eq(t.findOne({_id:id1}).a, 2, "find by id 2"); -assert.eq(t.findOne({a:2})._id, id1 , "find by val 2"); - -o = {a:3, _id:"asdf"}; -id1 = o._id -t.insert(o); -id2 = t._lastID -assert.eq(id1, id2, "ids match 3"); -assert.eq(o, {a:3, _id:id1}, "input unchanged 3"); -assert.eq(typeof(id2), "string", "3"); -assert.eq(t.findOne({_id:id1}).a, 3, "find by id 3"); -assert.eq(t.findOne({a:3})._id, id1 , "find by val 3"); - -o = {a:4, _id:null}; -id1 = o._id -t.insert(o); -id2 = t._lastID -assert.eq(id1, id2, "ids match 4"); -assert.eq(o, {a:4, _id:id1}, "input unchanged 4"); -assert.eq(t.findOne({_id:id1}).a, 4, "find by id 4"); -assert.eq(t.findOne({a:4})._id, id1 , "find by val 4"); - -var stats = db.runCommand({ collstats: "insert1" }); -assert(stats.paddingFactor == 1.0); diff --git a/jstests/insert2.js b/jstests/insert2.js deleted file mode 100644 index 9480efeac4d..00000000000 --- a/jstests/insert2.js +++ /dev/null @@ -1,8 +0,0 @@ - -t = db.insert2 -t.drop() - -assert.isnull( t.findOne() , "A" ) -t.insert( { z : 1 , $inc : { x : 1 } } , 0, true ); -assert.isnull( t.findOne() , "B" ) - diff --git a/jstests/slowNightly/sharding_jscore_passthrough.js b/jstests/slowNightly/sharding_jscore_passthrough.js index e6f36d74ae2..0d164c6e92c 100644 --- a/jstests/slowNightly/sharding_jscore_passthrough.js +++ b/jstests/slowNightly/sharding_jscore_passthrough.js @@ -1,7 +1,10 @@ var myShardingTest = new ShardingTest("sharding_passthrough", 2, 0, 1); myShardingTest.adminCommand({ enablesharding : "test" }); + var db = myShardingTest.getDB("test"); db.getMongo().forceWriteMode("commands"); +_useWriteCommandsDefault = function() { return true; }; // for tests launching parallel shells. + var res = db.adminCommand({ setParameter: 1, useClusterWriteCommands: true }); var files = listFiles("jstests/core"); diff --git a/src/mongo/shell/assert.js b/src/mongo/shell/assert.js index ac483bc8bb5..25bc108febd 100644 --- a/src/mongo/shell/assert.js +++ b/src/mongo/shell/assert.js @@ -347,10 +347,10 @@ assert.writeOK = function(res, msg) { if (!res) errMsg = "missing first argument, no response to check" - else if (!res.getWriteError) + else if (!res.getWriteConcernError) // not BulkWriteResult/SingleWriteResult. assert.gleOK(res, msg) else { - if (res.getWriteError()) { + if (res.hasWriteErrors()) { errMsg = "write failed with errors: " + tojson(res) } else if (res.getWriteConcernError()) { errMsg = "write concern failed with errors: " + tojson(res) @@ -395,7 +395,7 @@ assert.writeError = function(res, msg) { if (!res.err) errMsg = "no error" + tojson(res); } else { - if (!(res.getWriteError() || res.getWriteConcernError())) + if (!(res.hasWriteErrors() || res.getWriteConcernError())) errMsg = "no write errors : " + tojson(res); } if (errMsg != "" && msg) diff --git a/src/mongo/shell/collection.js b/src/mongo/shell/collection.js index 32ed762a8a8..b1920e33a6e 100644 --- a/src/mongo/shell/collection.js +++ b/src/mongo/shell/collection.js @@ -506,7 +506,7 @@ DBCollection.prototype.createIndex = function( keys , options ){ DBCollection.prototype.ensureIndex = function( keys , options ){ var result = this.createIndex(keys, options); - if ( this._mongo.useWriteCommands() ) { + if ( this.getMongo().writeMode() != "legacy" ) { return result; } |