Пример #1
0
    it("kills running process on trigger", function (done) {
        var subprocessId = Math.random();

        var log = logginator({});
        var action = new DaemonAction(id, spec);

        var wasKilled = false;
        function subprocessKiller() {
            wasKilled = true;
        }

        action.trigger(log, {
            execute: function () { return subprocessId; },
            get: function () { return undefined; }
        });

        action.trigger(log, {
            execute: function () { assert(false); },
            get: function (id) {
                assert.equal(subprocessId, id);
                return { kill: subprocessKiller };
            }
        });

        assert(wasKilled);
        done();
    });
Пример #2
0
    it("handles missing config", function (done) {
        var log = logginator({});
        var app = core(log, {});

        var expressApp = express();
        github(log, app, expressApp);
        expressApp.on('listening', function () {
            var address = expressApp.address();
        });

        // Would bind to 127.0.0.1, but that makes address() return null
        var httpServer = expressApp.listen(0);
        var port = httpServer.address().port;

        request({
            url: "http://127.0.0.1:" + port + "/github",
            method: "POST",
            headers: {
                "Content-Type": "application/x-www-form-urlencoded"
            },
            body: querystring.stringify({ payload: JSON.stringify(examplePostData) })
        }, function (err, res, body) {
            assert.equal(err, null);
            assert.equal(Math.floor(res.statusCode / 100), 2);
            done();
        });
    });
Пример #3
0
    it("starts first time", function (done) {
        var log = logginator({});
        var action = new DaemonAction(id, spec);

        var wasExecuted = false;
        action.trigger(log, {
            execute: function () { wasExecuted = true; },
            get: function () { return undefined; }
        });

        assert(wasExecuted);
        done();
    });
Пример #4
0
    it("can schedule multiple", function (done) {
        // This test unfortunately requires one second to run, due to a hardcoded
        // timer value inside the github subsystem module. The solution is to make
        // this interval configurable, or to employ some kind of virtual time.

        var outstandingCallbacks = 3;
        function decrementOutstanding() {
            if (!--outstandingCallbacks) done();
        }

        var log = logginator({});
        var app = core(log, {});

        app.actionManager.push({
            id: "test-action-1",
            trigger: decrementOutstanding
        });
        app.actionManager.push({
            id: "test-action-2",
            trigger: decrementOutstanding
        });

        var expressApp = express();
        github(log, app, expressApp, {
            "https://github.com/octokitty/testing": [ "test-action-1", "test-action-2" ]
        });
        expressApp.on('listening', function () {
            var address = expressApp.address();
        });

        // Would bind to 127.0.0.1, but that makes address() return null
        var httpServer = expressApp.listen(0);
        var port = httpServer.address().port;

        request({
            url: "http://127.0.0.1:" + port + "/github",
            method: "POST",
            headers: {
                "Content-Type": "application/x-www-form-urlencoded"
            },
            body: querystring.stringify({ payload: JSON.stringify(examplePostData) })
        }, function (err, res, body) {
            assert.equal(err, null);
            assert.equal(Math.floor(res.statusCode / 100), 2);
            decrementOutstanding();
        });
    });
Пример #5
0
    it("handles correct input", function (done) {
        var outstandingCallbacks = 2;
        function decrementOutstanding() {
            if (!--outstandingCallbacks) done();
        }

        var log = logginator({});
        var app = core(log, {});

        app.actionManager.push({
            id: "test-action",
            trigger: decrementOutstanding
        });

        var expressApp = express();
        github(log, app, expressApp, {
            "https://github.com/octokitty/testing": "test-action"
        });
        expressApp.on('listening', function () {
            var address = expressApp.address();
        });

        // Would bind to 127.0.0.1, but that makes address() return null
        var httpServer = expressApp.listen(0);
        var port = httpServer.address().port;

        request({
            url: "http://127.0.0.1:" + port + "/github",
            method: "POST",
            headers: {
                "Content-Type": "application/x-www-form-urlencoded"
            },
            body: querystring.stringify({ payload: JSON.stringify(examplePostData) })
        }, function (err, res, body) {
            assert.equal(err, null);
            assert.equal(Math.floor(res.statusCode / 100), 2);
            decrementOutstanding();
        });
    });
Пример #6
0
    it("restarts after successful kill", function (done) {
        var subprocessId = Math.random();

        var log = logginator({});
        var action = new DaemonAction(id, spec);

        var wasRestarted = false;
        var wasKilled = false;
        var killedCallback;
        function subprocessKiller(log, callback) {
            wasKilled = true;
            killedCallback = callback;
        }

        action.trigger(log, {
            execute: function () { return subprocessId; },
            get: function () { return undefined; }
        });

        action.trigger(log, {
            execute: function () {
                assert(wasKilled);
                wasRestarted = true;
            },
            get: function (id) {
                assert.equal(subprocessId, id);
                return { kill: subprocessKiller };
            }
        });

        assert(wasKilled);
        assert(!wasRestarted);
        killedCallback();
        assert(wasRestarted);

        done();
    });