Send clear cache requests to the correct CLSI group

This commit is contained in:
James Allen 2014-12-01 12:19:01 +00:00
parent e0178b17b5
commit c70c048aae
6 changed files with 51 additions and 42 deletions

View file

@ -21,19 +21,18 @@ module.exports = ClsiManager =
ClsiManager._parseOutputFiles(project_id, response?.compile?.outputFiles)
)
getLogLines: (project_id, callback = (error, lines) ->) ->
request "#{Settings.apis.clsi.url}/project/#{project_id}/output/output.log", (error, response, body) ->
return callback(error) if error?
callback null, body?.split("\n") or []
deleteAuxFiles: (project_id, options, callback = (error) ->) ->
compilerUrl = @_getCompilerUrl(options?.compileGroup)
request.del "#{compilerUrl}/project/#{project_id}", callback
deleteAuxFiles: (project_id, callback = (error) ->) ->
request.del "#{Settings.apis.clsi.url}/project/#{project_id}", callback
_getCompilerUrl: (compileGroup) ->
if compileGroup == "priority"
return Settings.apis.clsi_priority.url
else
return Settings.apis.clsi.url
_postToClsi: (project_id, req, compileGroup, callback = (error, response) ->) ->
if compileGroup == "priority"
compilerUrl = Settings.apis.clsi_priority.url
else
compilerUrl = Settings.apis.clsi.url
compilerUrl = @_getCompilerUrl(compileGroup)
request.post {
url: "#{compilerUrl}/project/#{project_id}/compile"
json: req

View file

@ -48,7 +48,7 @@ module.exports = CompileController =
deleteAuxFiles: (req, res, next) ->
project_id = req.params.Project_id
ClsiManager.deleteAuxFiles project_id, (error) ->
CompileManager.deleteAuxFiles project_id, (error) ->
return next(error) if error?
res.send(200)

View file

@ -40,6 +40,11 @@ module.exports = CompileManager =
return callback(error) if error?
logger.log files: outputFiles, "output files"
callback(null, status, outputFiles, output)
deleteAuxFiles: (project_id, callback = (error) ->) ->
CompileManager.getProjectCompileLimits project_id, (error, limits) ->
return callback(error) if error?
ClsiManager.deleteAuxFiles project_id, limits, callback
getProjectCompileLimits: (project_id, callback = (error, limits) ->) ->
Project.findById project_id, {owner_ref: 1}, (error, project) ->
@ -51,12 +56,6 @@ module.exports = CompileManager =
compileGroup: owner.features?.compileGroup || Settings.defaultFeatures.compileGroup
}
getLogLines: (project_id, callback)->
Metrics.inc "editor.raw-logs"
ClsiManager.getLogLines project_id, (error, logLines)->
return callback(error) if error?
callback null, logLines
COMPILE_DELAY: 1 # seconds
_checkIfRecentlyCompiled: (project_id, user_id, callback = (error, recentlyCompiled) ->) ->
key = "compile:#{project_id}:#{user_id}"

View file

@ -77,15 +77,27 @@ describe "ClsiManager", ->
describe "deleteAuxFiles", ->
beforeEach ->
@request.del = sinon.stub().callsArg(1)
@ClsiManager.deleteAuxFiles @project_id, @callback
describe "with the standard compileGroup", ->
beforeEach ->
@ClsiManager.deleteAuxFiles @project_id, {compileGroup: "standard"}, @callback
it "should call the delete method in the CLSI", ->
@request.del
.calledWith("#{@settings.apis.clsi.url}/project/#{@project_id}")
.should.equal true
it "should call the delete method in the standard CLSI", ->
@request.del
.calledWith("#{@settings.apis.clsi.url}/project/#{@project_id}")
.should.equal true
it "should call the callback", ->
@callback.called.should.equal true
it "should call the callback", ->
@callback.called.should.equal true
describe "with the priority compileGroup", ->
beforeEach ->
@ClsiManager.deleteAuxFiles @project_id, {compileGroup: "priority"}, @callback
it "should call the delete method in the CLSI", ->
@request.del
.calledWith("#{@settings.apis.clsi_priority.url}/project/#{@project_id}")
.should.equal true
describe "_buildRequest", ->
beforeEach ->

View file

@ -181,14 +181,14 @@ describe "CompileController", ->
describe "deleteAuxFiles", ->
beforeEach ->
@ClsiManager.deleteAuxFiles = sinon.stub().callsArg(1)
@CompileManager.deleteAuxFiles = sinon.stub().callsArg(1)
@req.params =
Project_id: @project_id
@res.send = sinon.stub()
@CompileController.deleteAuxFiles @req, @res, @next
it "should proxy to the CLSI", ->
@ClsiManager.deleteAuxFiles
@CompileManager.deleteAuxFiles
.calledWith(@project_id)
.should.equal true

View file

@ -134,26 +134,25 @@ describe "CompileManager", ->
compileGroup: @group
})
.should.equal true
describe "getLogLines", ->
describe "deleteAuxFiles", ->
beforeEach ->
@ClsiManager.getLogLines = sinon.stub().callsArgWith(1, null, @lines = ["log", "lines"])
@CompileManager.getLogLines @project_id, @callback
it "should call the new api", ->
@ClsiManager.getLogLines
@CompileManager.getProjectCompileLimits = sinon.stub().callsArgWith 1, null, @limits = { compileGroup: "mock-compile-group" }
@ClsiManager.deleteAuxFiles = sinon.stub().callsArg(2)
@CompileManager.deleteAuxFiles @project_id, @callback
it "should look up the compile group to use", ->
@CompileManager.getProjectCompileLimits
.calledWith(@project_id)
.should.equal true
it "should call the callback with the lines", ->
@callback
.calledWith(null, @lines)
.should.equal true
it "should increase the log count metric", ->
@Metrics.inc
.calledWith("editor.raw-logs")
it "should delete the aux files", ->
@ClsiManager.deleteAuxFiles
.calledWith(@project_id, @limits)
.should.equal true
it "should call the callback", ->
@callback.called.should.equal true
describe "_checkIfRecentlyCompiled", ->
describe "when the key exists in redis", ->