129 lines
4.6 KiB
YAML
129 lines
4.6 KiB
YAML
desc: Tests array limit variations
|
|
table_variable_name: tbl
|
|
tests:
|
|
|
|
# test simplistic array limits
|
|
- cd: r.expr([1,1,1,1]).union([1, 1, 1, 1])
|
|
runopts:
|
|
array_limit: 8
|
|
ot: [1,1,1,1,1,1,1,1]
|
|
- cd: r.expr([1,2,3,4]).union([5, 6, 7, 8])
|
|
runopts:
|
|
array_limit: 4
|
|
ot: err("ReqlResourceLimitError", "Array over size limit `4`.", [0])
|
|
|
|
# test array limits on query creation
|
|
- cd: r.expr([1,2,3,4,5,6,7,8])
|
|
runopts:
|
|
array_limit: 4
|
|
ot: err("ReqlResourceLimitError", "Array over size limit `4`.", [0])
|
|
|
|
# test bizarre array limits
|
|
- cd: r.expr([1,2,3,4,5,6,7,8])
|
|
runopts:
|
|
array_limit: -1
|
|
ot: err("ReqlQueryLogicError", "Illegal array size limit `-1`. (Must be >= 1.)", [])
|
|
|
|
- cd: r.expr([1,2,3,4,5,6,7,8])
|
|
runopts:
|
|
array_limit: 0
|
|
ot: err("ReqlQueryLogicError", "Illegal array size limit `0`. (Must be >= 1.)", [])
|
|
|
|
# make enormous > 100,000 element array
|
|
- def: ten_l = r.expr([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
|
|
- def:
|
|
js: ten_f = function(l) { return ten_l }
|
|
py: ten_f = lambda l:list(range(1,11))
|
|
- def:
|
|
js: huge_l = r.expr(ten_l).concatMap(ten_f).concatMap(ten_f).concatMap(ten_f).concatMap(ten_f)
|
|
py: huge_l = r.expr(ten_l).concat_map(ten_f).concat_map(ten_f).concat_map(ten_f).concat_map(ten_f)
|
|
rb: huge_l = r.expr(ten_l).concat_map {|l| ten_l}.concat_map {|l| ten_l}.concat_map {|l| ten_l}.concat_map {|l| ten_l}
|
|
- cd: huge_l.append(1).count()
|
|
runopts:
|
|
array_limit: 100001
|
|
ot: 100001
|
|
|
|
# attempt to insert enormous array
|
|
- cd: tbl.insert({'id':0, 'array':huge_l.append(1)})
|
|
runopts:
|
|
array_limit: 100001
|
|
ot: partial({'errors':1, 'first_error':"Array too large for disk writes (limit 100,000 elements)."})
|
|
|
|
- cd: tbl.get(0)
|
|
runopts:
|
|
array_limit: 100001
|
|
ot: (null)
|
|
|
|
# attempt to read array that violates limit from disk
|
|
- cd: tbl.insert({'id':1, 'array':ten_l})
|
|
ot: ({'deleted':0,'replaced':0,'unchanged':0,'errors':0,'skipped':0,'inserted':1})
|
|
- cd: tbl.get(1)
|
|
runopts:
|
|
array_limit: 4
|
|
ot: ({'array':[1,2,3,4,5,6,7,8,9,10],'id':1})
|
|
|
|
|
|
# Test that the changefeed queue size actually causes changes to be sent early.
|
|
- cd: tbl.delete().get_field('deleted')
|
|
ot: 1
|
|
|
|
- cd: c = tbl.changes({squash:1000000, changefeed_queue_size:10})
|
|
py: c = tbl.changes(squash=1000000, changefeed_queue_size=10)
|
|
|
|
- cd: tbl.insert([{'id':0}, {'id':1}, {'id':2}, {'id':3}, {'id':4}, {'id':5}, {'id':6}]).get_field('inserted')
|
|
ot: 7
|
|
- py: fetch(c, 7)
|
|
rb: fetch(c, 7)
|
|
ot: bag([{'old_val':null, 'new_val':{'id':0}},
|
|
{'old_val':null, 'new_val':{'id':1}},
|
|
{'old_val':null, 'new_val':{'id':2}},
|
|
{'old_val':null, 'new_val':{'id':3}},
|
|
{'old_val':null, 'new_val':{'id':4}},
|
|
{'old_val':null, 'new_val':{'id':5}},
|
|
{'old_val':null, 'new_val':{'id':6}}])
|
|
|
|
- cd: tbl.insert([{'id':7}, {'id':8}, {'id':9}, {'id':10}, {'id':11}, {'id':12}, {'id':13}]).get_field('inserted')
|
|
ot: 7
|
|
- py: fetch(c, 7)
|
|
rb: fetch(c, 7)
|
|
ot: bag([{'old_val':null, 'new_val':{'id':7}},
|
|
{'old_val':null, 'new_val':{'id':8}},
|
|
{'old_val':null, 'new_val':{'id':9}},
|
|
{'old_val':null, 'new_val':{'id':10}},
|
|
{'old_val':null, 'new_val':{'id':11}},
|
|
{'old_val':null, 'new_val':{'id':12}},
|
|
{'old_val':null, 'new_val':{'id':13}}])
|
|
|
|
- cd: tbl.delete().get_field('deleted')
|
|
ot: 14
|
|
|
|
- cd: c2 = tbl.changes({squash:1000000})
|
|
py: c2 = tbl.changes(squash=1000000)
|
|
runopts:
|
|
changefeed_queue_size: 10
|
|
|
|
|
|
- cd: tbl.insert([{'id':0}, {'id':1}, {'id':2}, {'id':3}, {'id':4}, {'id':5}, {'id':6}]).get_field('inserted')
|
|
ot: 7
|
|
- py: fetch(c2, 7)
|
|
rb: fetch(c2, 7)
|
|
ot: bag([{'old_val':null, 'new_val':{'id':0}},
|
|
{'old_val':null, 'new_val':{'id':1}},
|
|
{'old_val':null, 'new_val':{'id':2}},
|
|
{'old_val':null, 'new_val':{'id':3}},
|
|
{'old_val':null, 'new_val':{'id':4}},
|
|
{'old_val':null, 'new_val':{'id':5}},
|
|
{'old_val':null, 'new_val':{'id':6}}])
|
|
|
|
- cd: tbl.insert([{'id':7}, {'id':8}, {'id':9}, {'id':10}, {'id':11}, {'id':12}, {'id':13}]).get_field('inserted')
|
|
ot: 7
|
|
- py: fetch(c2, 7)
|
|
rb: fetch(c2, 7)
|
|
ot: bag([{'old_val':null, 'new_val':{'id':7}},
|
|
{'old_val':null, 'new_val':{'id':8}},
|
|
{'old_val':null, 'new_val':{'id':9}},
|
|
{'old_val':null, 'new_val':{'id':10}},
|
|
{'old_val':null, 'new_val':{'id':11}},
|
|
{'old_val':null, 'new_val':{'id':12}},
|
|
{'old_val':null, 'new_val':{'id':13}}])
|