diff --git a/.travis.yml b/.travis.yml index ed73ffb..9577d83 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,6 @@ language: node_js node_js: - - "0.10" + - "0.10.33" before_install: - "npm install -g grunt-cli" - "npm install -g phantomjs" diff --git a/lib/server/controllers/apiController.js b/lib/server/controllers/apiController.js index 0f976d7..d76d458 100644 --- a/lib/server/controllers/apiController.js +++ b/lib/server/controllers/apiController.js @@ -52,16 +52,25 @@ var ApiController = function(app) { .then(function(data) { debug('Success'); - runsDatastore.markAsComplete(run.runId); + // Save result in datastore data.runId = run.runId; - resultsDatastore.saveResult(data); + resultsDatastore.saveResult(data) + .then(function() { - // Send result if the user was waiting - if (run.params.waitForResponse) { - res.redirect(302, '/api/results/' + run.runId); - } + runsDatastore.markAsComplete(run.runId); + + // Send result if the user was waiting + if (run.params.waitForResponse) { + res.redirect(302, '/api/results/' + run.runId); + } + + }) + .fail(function(err) { + debug('Saving results to resultsDatastore failed:'); + debug(err); + }); }).fail(function(err) { diff --git a/lib/server/datastores/resultsDatastore.js b/lib/server/datastores/resultsDatastore.js index 3d2ce8a..3392337 100644 --- a/lib/server/datastores/resultsDatastore.js +++ b/lib/server/datastores/resultsDatastore.js @@ -2,6 +2,7 @@ var fs = require('fs'); var rimraf = require('rimraf'); var path = require('path'); var Q = require('q'); +var debug = require('debug')('ylt:resultsDatastore'); function ResultsDatastore() { @@ -13,12 +14,14 @@ function ResultsDatastore() { this.saveResult = function(testResults) { - var promise = createResultFolder(testResults.runId); + debug('Saving results to disk...'); + promise.then(function() { var resultFilePath = path.join(resultsDir, testResults.runId, resultFileName); + debug('Destination file is %s', resultFilePath); return Q.nfcall(fs.writeFile, resultFilePath, JSON.stringify(testResults, null, 2)); }); @@ -30,6 +33,8 @@ function ResultsDatastore() { this.getResult = function(runId) { var resultFilePath = path.join(resultsDir, runId, resultFileName); + + debug('Reading results (runID = %s) from disk...', runId); return Q.nfcall(fs.readFile, resultFilePath, {encoding: 'utf8'}).then(function(data) { return JSON.parse(data); @@ -40,6 +45,8 @@ function ResultsDatastore() { this.deleteResult = function(runId) { var folder = path.join(resultsDir, runId); + debug('Deleting results (runID = %s) from disk...', runId); + return Q.nfcall(rimraf, folder); }; @@ -48,6 +55,8 @@ function ResultsDatastore() { function createResultFolder(folderName) { var folder = path.join(resultsDir, folderName); + debug('Creating the folder %s', folderName); + return createGlobalFolder().then(function() { return Q.nfcall(fs.mkdir, folder); }); @@ -62,6 +71,7 @@ function ResultsDatastore() { if (exists) { deferred.resolve(); } else { + debug('Creating the global results folder', resultsDir); fs.mkdir(resultsDir, function(err) { if (err) { deferred.reject(err);