Skip to content

Instantly share code, notes, and snippets.

@aheckmann
Created June 5, 2012 22:43

Revisions

  1. aheckmann created this gist Jun 5, 2012.
    78 changes: 78 additions & 0 deletions 10873199.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,78 @@

    var mongoose = require('./../mongoose');
    var Schema = mongoose.Schema;
    var sleep = 1000;
    var timer;
    var db = mongoose.createConnection();

    db.on('error', function () {
    // error on startup
    console.error('conn error', arguments);

    // limit our retries
    connect.time += sleep;
    if (connect.time > 22000) return console.error('giving up');
    db.db.close();
    timer = setTimeout(connect, sleep);
    });

    db.on('open', function () {
    clearTimeout(timer);
    console.error('opening');
    setTimeout(function(){
    find(true);
    insert();
    }, 1000);
    });

    function connect () {
    db.open('localhost', 'testing_10873199');
    }
    connect.time = 0;
    connect();


    var schema = new Schema({
    name: String
    });
    var A = db.model('A', schema);

    console.error('creating');
    var a = new A({ name: '10873199' });
    A.create({name:'asdf'},{name:'dddd9'}, function(){});
    A.create({name:'asdf2'},{name:'dddd92'}, function(){});

    function find (show) {
    console.error('finding');
    A.find(function (err, docs) {
    console.error('found');
    if (show)
    console.error(err, docs);
    else
    console.error('%d docs', docs.length);
    });
    }

    var time = 0;
    function insert () {
    find(false);
    console.error('inserting');
    var a = new A({ key: 'asdfasdasdf' });
    a.save(function(err){
    console.error('inserted');
    if (err) return console.error('save error', err);
    });
    time += sleep;
    if (time > 20000) return;
    insertTimer = setTimeout(insert, sleep);
    }

    process.on('SIGINT', drop);

    function drop () {
    db.db.dropDatabase(function () {
    console.error('closing');
    db.close();
    });
    process.exit(0);
    }