Exemple #1
0
test('simple', function (t) {

  var db = sublevel(level('window2', {encoding: 'json'}))

  var i = 0
  var windowDb = Window(db, 'window',
    window(function (data, cb) {
      if(i++ % 5) return
      var sum = 0, count = 0
      return function (end, data) {
        if(end) return
        sum += +data.value
        if(++count >= 20)
          cb(null, {sum:sum, count: count, avg: sum/count})
      }
    }))

  pull.count(100)
    .pipe(pull.map(function (e) {
      return {key: timestamp(), value: Math.random()}
    }))
    .pipe(pl.write(db, function (err) {
      t.notOk(err)

      pl.read(windowDb)
        .pipe(pull.collect(function (err, arr) {
          console.log(arr)
          
          t.equal(arr.length, 14)
          t.end()
        }))
    }))
  })
  tape('load-db', function (t) {

    var start = new Date('2000-01-01'), rolling = +start
    var total = 1000
    var gap = (Date.now() - +start)/(total/2)
    pull(
      pull.count(total),
      pull.map(function (e) {
        return {
          key: '*'+Math.random(),
          value: {
            count: e,
            ts: new Date(rolling += Math.random()*gap).toISOString()
          }
        }
      }),
  /*
      ranges(24*60*60*1000, function (e) { return +new Date(e.value.ts) }),
      reduce(function (err, tree) {
        if(err) throw err
        console.log(tree)
        t.end()
      })
  */
      pl.write(db1, function (err) {
        if(err) throw err
        t.end()
      })
    )
  })
Exemple #3
0
tape('simple', function (t) {

  pull(
    pull.count(100),
    pull.map(random),
    pull.collect(function (err, ary) {
      var buffer = Buffer.concat(ary.map(function (v) {
          return struct.encode(v)
        }))

      var o = ~~(Math.random()*buffer.length)

      pull(
        pull.values([buffer.slice(0, o), buffer.slice(o)]),
        decode(struct),
        pull.through(console.log),
        pull.collect(function (err, _ary) {
          console.log(_ary)
          t.deepEqual(_ary, ary)
          t.end()
        })
      )
    })
  )

})
tape('keys', function (t) {

  var db = sublevel(level()).sublevel('test')

  pull.count(10)
    .pipe(pull.map(function (i) {
      return {key: 'key_'+i, value: 'value_' + i}
    }))
    .pipe(pl.write(db, function (err) {
      if(err) {
        t.notOk(err)
        throw err
      }

      toPull(db.createKeyStream())
        .pipe(pull.collect(function (err, ary) {
          console.log(ary)
          ary.forEach(function (e) {
            t.equal(typeof e, 'string')
            t.ok(/^key_/.test(e))
          })
          toPull(db.createValueStream())
            .pipe(pull.collect(function (err, ary) {
              console.log(ary)
              ary.forEach(function (e) {
                t.equal(typeof e, 'string')
                t.ok(/^value_/.test(e))
                console.log(e)
              })

              t.end()
            }))
        }))
    }))
})
Exemple #5
0
test('tumbling to 100', function (t) {

  pull(
    pull.count(100),
    groupTo100(),
    pull.collect(function (err, ary) {
      t.deepEqual(ary, expected)
      console.log(ary)
      t.end()
    })
  )

})
Exemple #6
0
    read(end, function (end, data) {
      if (end) return cb(end);

      var base = _.clone(data), stream

      if (typeof data === 'function') {
        return cb(end, data)
      } else if (_.isArray(data[unwindBy])) {
        delete base[unwindBy];
        stream = pull.values(data[unwindBy]);
      } else if (parseInt(data[unwindBy])) {
        delete base[unwindBy];
        stream = pull.count(data[unwindBy] - 1);
      } else if (parseInt(unwindBy)) {
        stream = pull.count(unwindBy - 1);
      } else
        return cb(end, pull.values([data]));

      cb(end, pull(
        stream,
        pull.map(function (d) { d = _.isObject(d) ? d : {}; return _.extend({}, base, d)})
      ))
    })
Exemple #7
0
tape('date ranges', function (t) {
  var start = new Date('2000-01-01'), rolling = +start
  var total = 1000, gap = 2* ((Date.now() - +start) / total)
  pull(
    pull.count(total),
    pull.map(function (e) {
      return {
        key: '#' + Math.random(),
        value: {
          count: e,
          date: new Date(rolling += Math.random()*gap)
        }
      }
    }),
//    pull.through(function (e) { console.log(JSON.stringify(e))}),
    pl.write(db, function () {
      console.log('ready')
      var min, max
      var query = ['date', {
          min: min = new Date(+start + gap*total*0.25),
          max: max = new Date(+start + gap*total*0.3)
        }]

      console.log(index.explain(query))

      pull(

        ( true
        ? index.search(query)
        : pl.read(index, index.explain(query))),
        pull.through(function (e) {
          console.log(decode(e) || e)
        }),
        pull.collect(function (err, ary) {
          if(err) throw err
          ary.forEach(function (e) {
            var date = new Date(e.value.date)
            t.ok(date >= min, date + ' >= ' + min)
            t.ok(date >= min, date + ' <  ' + min)
          })
          t.end()
        })
      )
      //t.end()
    })
  )

})
Exemple #8
0
test('sliding', function (t) {

  pull(
    pull.count(19),
    windows.sliding(function (a, b) {
      return (a = a || []).push(b), a
    }, 10),
    pull.collect(function (err, ary) {
      console.log(ary)
      t.notOk(err)
      t.deepEqual(ary, expected)
      t.end()
    })
  )

})
Exemple #9
0
db.open(function (err) {
  if(err) throw err
  console.log('ready')
  pull(
    pull.count(1600),
    pull.asyncMap(function (n, cb) {
      db.put('%' + Math.random(), {count: n, value: Math.random()}, cb)
    }),
    pull.drain(null, function (err) {
      console.log(db.snapshot().map(function (e) {
        return { size: e.size }
      }))
    })
  )

})
Exemple #10
0
tape('simple - with fuzz', function (t) {

  var ary = []

  pull(
    pull.count(100),
    pull.map(random),
    pull.through(function (v) { ary.push(v) }),
    encode(struct),
    readRandomly(0, 64),
    decode(struct),
    pull.collect(function (err, _ary) {
      console.log(_ary)
      t.deepEqual(_ary, ary)
      t.end()
    })
  )

})
Exemple #11
0
test('tumbling count', function (t) {

  var i = 0, last
  var expected = 
  [ { start: 0, data: 78 },
    { start: 13, data: 247 },
    { start: 26, data: 416 },
    { start: 39, data: 585 },
    { start: 52, data: 754 },
    { start: 65, data: 923 },
    { start: 78, data: 1092 },
    { start: 91, data: 1261 },
    { start: 104, data: 1430 } ]

  pull(
    pull.count(127),
    windows(function (data, cb) {
      if(!(i++ % 13)) {
        if(last) last()
        var acc = 0
        last = function () { cb(null, acc) }
        return function (end, data) {
          if(end) return
          acc = acc + data
        }
      }
    }, rememberStart),
    pull.collect(function (err, ary) {
      t.notOk(err)
      console.log(ary)
      t.deepEqual(ary, expected)
      t.end()
    })
  )

})
//getting stack overflows from writing too fast.
//I think it's because there is a recursive loop
//which stacks up there are many write that don't drain.
//try to reproduce it.
var pull = require('pull-stream')
var through = require('through')
var toPull = require('../')

pull(
  pull.count(1000000),
  pull.map(function (e) {
    return e.toString()+'\n'
  }),
  toPull.sink(through())
)