fixed inconsistency bugs for tests<1000
This commit is contained in:
		
							parent
							
								
									82e2254302
								
							
						
					
					
						commit
						c95dae3c33
					
				@ -36,7 +36,7 @@ function wait (t) {
 | 
				
			|||||||
  return new Promise(function (resolve) {
 | 
					  return new Promise(function (resolve) {
 | 
				
			||||||
    setTimeout(function () {
 | 
					    setTimeout(function () {
 | 
				
			||||||
      resolve()
 | 
					      resolve()
 | 
				
			||||||
    }, t * 5)
 | 
					    }, t)
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
g.wait = wait
 | 
					g.wait = wait
 | 
				
			||||||
 | 
				
			|||||||
@ -207,7 +207,7 @@ class AbstractTransaction {
 | 
				
			|||||||
      yield* this.setOperation(parent)
 | 
					      yield* this.setOperation(parent)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    yield* this.removeOperation(o.id) // actually remove it from the os
 | 
					    yield* this.removeOperation(o.id) // actually remove it from the os
 | 
				
			||||||
    yield* this.ds.markGarbageCollected(o.id)
 | 
					    this.ds.markGarbageCollected(o.id)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
Y.AbstractTransaction = AbstractTransaction
 | 
					Y.AbstractTransaction = AbstractTransaction
 | 
				
			||||||
 | 
				
			|||||||
@ -4,6 +4,8 @@
 | 
				
			|||||||
class DeleteStore extends Y.utils.RBTree {
 | 
					class DeleteStore extends Y.utils.RBTree {
 | 
				
			||||||
  constructor () {
 | 
					  constructor () {
 | 
				
			||||||
    super()
 | 
					    super()
 | 
				
			||||||
 | 
					    // TODO: debugggg
 | 
				
			||||||
 | 
					    this.mem = []
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  isDeleted (id) {
 | 
					  isDeleted (id) {
 | 
				
			||||||
    var n = this.findNodeWithUpperBound(id)
 | 
					    var n = this.findNodeWithUpperBound(id)
 | 
				
			||||||
@ -14,8 +16,10 @@ class DeleteStore extends Y.utils.RBTree {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    returns the delete node
 | 
					    returns the delete node
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  * markGarbageCollected (id) {
 | 
					  markGarbageCollected (id) {
 | 
				
			||||||
 | 
					    this.mem.push({"gc": id})
 | 
				
			||||||
    var n = this.markDeleted(id)
 | 
					    var n = this.markDeleted(id)
 | 
				
			||||||
 | 
					    this.mem.pop()
 | 
				
			||||||
    if (!n.val.gc) {
 | 
					    if (!n.val.gc) {
 | 
				
			||||||
      if (n.val.id[1] < id[1]) {
 | 
					      if (n.val.id[1] < id[1]) {
 | 
				
			||||||
        // un-extend left
 | 
					        // un-extend left
 | 
				
			||||||
@ -30,16 +34,24 @@ class DeleteStore extends Y.utils.RBTree {
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
      // set gc'd
 | 
					      // set gc'd
 | 
				
			||||||
      n.val.gc = true
 | 
					      n.val.gc = true
 | 
				
			||||||
 | 
					 | 
				
			||||||
      // can extend left?
 | 
					 | 
				
			||||||
      var prev = n.prev()
 | 
					      var prev = n.prev()
 | 
				
			||||||
      if (prev != null && prev.val.gc) {
 | 
					      var next = n.next()
 | 
				
			||||||
 | 
					      // can extend left?
 | 
				
			||||||
 | 
					      if (
 | 
				
			||||||
 | 
					        prev != null &&
 | 
				
			||||||
 | 
					        prev.val.gc &&
 | 
				
			||||||
 | 
					        Y.utils.compareIds([prev.val.id[0], prev.val.id[1] + prev.val.len], n.val.id)
 | 
				
			||||||
 | 
					      ) {
 | 
				
			||||||
        prev.val.len += n.val.len
 | 
					        prev.val.len += n.val.len
 | 
				
			||||||
        super.delete(n.val.id)
 | 
					        super.delete(n.val.id)
 | 
				
			||||||
 | 
					        n = prev
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      // can extend right?
 | 
					      // can extend right?
 | 
				
			||||||
      var next = n.next()
 | 
					      if (
 | 
				
			||||||
      if (next != null && next.val.gc) {
 | 
					        next != null &&
 | 
				
			||||||
 | 
					        next.val.gc &&
 | 
				
			||||||
 | 
					        Y.utils.compareIds([n.val.id[0], n.val.id[1] + n.val.len], next.val.id)
 | 
				
			||||||
 | 
					      ) {
 | 
				
			||||||
        n.val.len += next.val.len
 | 
					        n.val.len += next.val.len
 | 
				
			||||||
        super.delete(next.val.id)
 | 
					        super.delete(next.val.id)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
@ -52,12 +64,13 @@ class DeleteStore extends Y.utils.RBTree {
 | 
				
			|||||||
    returns the delete node
 | 
					    returns the delete node
 | 
				
			||||||
  */
 | 
					  */
 | 
				
			||||||
  markDeleted (id) {
 | 
					  markDeleted (id) {
 | 
				
			||||||
 | 
					    this.mem.push({"del": id})
 | 
				
			||||||
    var n = this.findNodeWithUpperBound(id)
 | 
					    var n = this.findNodeWithUpperBound(id)
 | 
				
			||||||
    if (n != null && n.val.id[0] === id[0]) {
 | 
					    if (n != null && n.val.id[0] === id[0]) {
 | 
				
			||||||
      if (n.val.id[1] <= id[1] && id[1] < n.val.id[1] + n.val.len) {
 | 
					      if (n.val.id[1] <= id[1] && id[1] < n.val.id[1] + n.val.len) {
 | 
				
			||||||
        // already deleted
 | 
					        // already deleted
 | 
				
			||||||
        return n
 | 
					        return n
 | 
				
			||||||
      } else if (n.val.id[1] + n.val.len === id[1]) {
 | 
					      } else if (n.val.id[1] + n.val.len === id[1] && !n.val.gc) {
 | 
				
			||||||
        // can extend existing deletion
 | 
					        // can extend existing deletion
 | 
				
			||||||
        n.val.len++
 | 
					        n.val.len++
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
@ -70,9 +83,10 @@ class DeleteStore extends Y.utils.RBTree {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    // can extend right?
 | 
					    // can extend right?
 | 
				
			||||||
    var next = n.next()
 | 
					    var next = n.next()
 | 
				
			||||||
    if (next !== null &&
 | 
					    if (
 | 
				
			||||||
        Y.utils.compareIds([n.val.id[0], n.val.id[1] + n.val.len], next.val.id) &&
 | 
					      next !== null &&
 | 
				
			||||||
        next.val.gc === false
 | 
					      Y.utils.compareIds([n.val.id[0], n.val.id[1] + n.val.len], next.val.id) &&
 | 
				
			||||||
 | 
					      !next.val.gc
 | 
				
			||||||
    ) {
 | 
					    ) {
 | 
				
			||||||
      n.val.len = n.val.len + next.val.len
 | 
					      n.val.len = n.val.len + next.val.len
 | 
				
			||||||
      super.delete(next.val.id)
 | 
					      super.delete(next.val.id)
 | 
				
			||||||
 | 
				
			|||||||
@ -25,5 +25,61 @@ describe('Memory', function () {
 | 
				
			|||||||
      ds.markDeleted(['0', 2])
 | 
					      ds.markDeleted(['0', 2])
 | 
				
			||||||
      expect(ds.toDeleteSet()).toEqual({'0': [[2, 3, false]]})
 | 
					      expect(ds.toDeleteSet()).toEqual({'0': [[2, 3, false]]})
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
 | 
					    it('Debug #1', function () {
 | 
				
			||||||
 | 
					      ds.markDeleted(['166', 0])
 | 
				
			||||||
 | 
					      ds.markDeleted(['166', 2])
 | 
				
			||||||
 | 
					      ds.markDeleted(['166', 0])
 | 
				
			||||||
 | 
					      ds.markDeleted(['166', 2])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['166', 2])
 | 
				
			||||||
 | 
					      ds.markDeleted(['166', 1])
 | 
				
			||||||
 | 
					      ds.markDeleted(['166', 3])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['166', 3])
 | 
				
			||||||
 | 
					      ds.markDeleted(['166', 0])
 | 
				
			||||||
 | 
					      expect(ds.toDeleteSet()).toEqual({'166': [[0, 2, false], [2, 2, true]]})
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    it('Debug #2', function () {
 | 
				
			||||||
 | 
					      ds.markDeleted(['293', 0])
 | 
				
			||||||
 | 
					      ds.markDeleted(['291', 2])
 | 
				
			||||||
 | 
					      ds.markDeleted(['291', 2])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['293', 0])
 | 
				
			||||||
 | 
					      ds.markDeleted(['293', 1])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['291', 2])
 | 
				
			||||||
 | 
					      expect(ds.toDeleteSet()).toEqual({'291': [[2, 1, true]], '293': [[0, 1, true], [1, 1, false]]})
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    it('Debug #2', function () {
 | 
				
			||||||
 | 
					      ds.markDeleted(['581', 0])
 | 
				
			||||||
 | 
					      ds.markDeleted(['581', 1])
 | 
				
			||||||
 | 
					      ds.markDeleted(['580', 0])
 | 
				
			||||||
 | 
					      ds.markDeleted(['580', 0])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['581', 0])
 | 
				
			||||||
 | 
					      ds.markDeleted(['581', 2])
 | 
				
			||||||
 | 
					      ds.markDeleted(['580', 1])
 | 
				
			||||||
 | 
					      ds.markDeleted(['580', 2])
 | 
				
			||||||
 | 
					      ds.markDeleted(['580', 1])
 | 
				
			||||||
 | 
					      ds.markDeleted(['580', 2])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['581', 2])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['581', 1])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['580', 1])
 | 
				
			||||||
 | 
					      expect(ds.toDeleteSet()).toEqual({'580': [[0, 1, false], [1, 1, true], [2, 1, false]], '581': [[0, 3, true]]})
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    it('Debug #2', function () {
 | 
				
			||||||
 | 
					      ds.markDeleted(['544', 0])
 | 
				
			||||||
 | 
					      ds.markDeleted(['543', 2])
 | 
				
			||||||
 | 
					      ds.markDeleted(['544', 0])
 | 
				
			||||||
 | 
					      ds.markDeleted(['543', 2])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['544', 0])
 | 
				
			||||||
 | 
					      ds.markDeleted(['545', 1])
 | 
				
			||||||
 | 
					      ds.markDeleted(['543', 4])
 | 
				
			||||||
 | 
					      ds.markDeleted(['543', 3])
 | 
				
			||||||
 | 
					      ds.markDeleted(['544', 1])
 | 
				
			||||||
 | 
					      ds.markDeleted(['544', 2])
 | 
				
			||||||
 | 
					      ds.markDeleted(['544', 1])
 | 
				
			||||||
 | 
					      ds.markDeleted(['544', 2])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['543', 2])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['543', 4])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['544', 2])
 | 
				
			||||||
 | 
					      ds.markGarbageCollected(['543', 3])
 | 
				
			||||||
 | 
					      expect(ds.toDeleteSet()).toEqual({'543': [[2, 3, true]], '544': [[0, 1, true], [1, 1, false], [2, 1, true]], '545': [[1, 1, false]]})
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
/* global createUsers, wait, Y, compareAllUsers, getRandomNumber, applyRandomTransactions, async, garbageCollectAllUsers, describeManyTimes */
 | 
					/* global createUsers, wait, Y, compareAllUsers, getRandomNumber, applyRandomTransactions, async, garbageCollectAllUsers, describeManyTimes */
 | 
				
			||||||
/* eslint-env browser,jasmine */
 | 
					/* eslint-env browser,jasmine */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var numberOfYArrayTests = 10
 | 
					var numberOfYArrayTests = 1000
 | 
				
			||||||
var repeatArrayTests = 300
 | 
					var repeatArrayTests = 5
 | 
				
			||||||
 | 
					
 | 
				
			||||||
describe('Array Type', function () {
 | 
					describe('Array Type', function () {
 | 
				
			||||||
  var y1, y2, y3, yconfig1, yconfig2, yconfig3, flushAll
 | 
					  var y1, y2, y3, yconfig1, yconfig2, yconfig3, flushAll
 | 
				
			||||||
 | 
				
			|||||||
@ -1,8 +1,8 @@
 | 
				
			|||||||
/* global createUsers, Y, compareAllUsers, getRandomNumber, applyRandomTransactions, async, describeManyTimes */
 | 
					/* global createUsers, Y, compareAllUsers, getRandomNumber, applyRandomTransactions, async, describeManyTimes */
 | 
				
			||||||
/* eslint-env browser,jasmine */
 | 
					/* eslint-env browser,jasmine */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var numberOfYMapTests = 70
 | 
					var numberOfYMapTests = 100
 | 
				
			||||||
var repeatMapTeasts = 1
 | 
					var repeatMapTeasts = 10
 | 
				
			||||||
 | 
					
 | 
				
			||||||
describe('Map Type', function () {
 | 
					describe('Map Type', function () {
 | 
				
			||||||
  var y1, y2, y3, y4, flushAll
 | 
					  var y1, y2, y3, y4, flushAll
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user