From 0bb12f32fa626fa61f2731b8221e2a87f4d22572 Mon Sep 17 00:00:00 2001 From: Henrique Santos Date: Sun, 13 Mar 2016 16:22:14 -0300 Subject: [PATCH] remove project controller / handler add unit test scaffolding --- services/filestore/app.coffee | 3 +-- .../app/coffee/AWSSDKPersistorManager.coffee | 2 +- .../app/coffee/FSPersistorManager.coffee | 2 +- .../filestore/app/coffee/FileController.coffee | 11 +++++++++++ .../filestore/app/coffee/FileHandler.coffee | 7 +++++++ .../app/coffee/ProjectController.coffee | 18 ------------------ .../filestore/app/coffee/ProjectHandler.coffee | 13 ------------- .../app/coffee/S3PersistorManager.coffee | 2 +- .../coffee/AWSSDKPersistorManagerTests.coffee | 8 ++++++++ .../unit/coffee/FSPersistorManagerTests.coffee | 5 +++++ .../unit/coffee/FileControllerTests.coffee | 5 +++++ .../test/unit/coffee/FileHandlerTests.coffee | 5 +++++ .../unit/coffee/S3PersistorManagerTests.coffee | 5 +++++ 13 files changed, 50 insertions(+), 36 deletions(-) delete mode 100644 services/filestore/app/coffee/ProjectController.coffee delete mode 100644 services/filestore/app/coffee/ProjectHandler.coffee diff --git a/services/filestore/app.coffee b/services/filestore/app.coffee index ad05bd5124..04c13eb4b5 100644 --- a/services/filestore/app.coffee +++ b/services/filestore/app.coffee @@ -4,7 +4,6 @@ logger.initialize("filestore") settings = require("settings-sharelatex") request = require("request") fileController = require("./app/js/FileController") -projectController = require("./app/js/ProjectController") keyBuilder = require("./app/js/KeyBuilder") domain = require("domain") appIsOk = true @@ -86,7 +85,7 @@ app.post "/project/:project_id/public/:public_file_id", keyBuilder.publicFileKey app.put "/project/:project_id/public/:public_file_id", keyBuilder.publicFileKey, express.bodyParser(), fileController.copyFile app.del "/project/:project_id/public/:public_file_id", keyBuilder.publicFileKey, fileController.deleteFile -app.get "/project/:project_id/size", keyBuilder.publicProjectKey, projectController.projectSize +app.get "/project/:project_id/size", keyBuilder.publicProjectKey, fileController.directorySize app.get "/heapdump", (req, res)-> require('heapdump').writeSnapshot '/tmp/' + Date.now() + '.filestore.heapsnapshot', (err, filename)-> diff --git a/services/filestore/app/coffee/AWSSDKPersistorManager.coffee b/services/filestore/app/coffee/AWSSDKPersistorManager.coffee index ca72901f8f..5be80506f5 100644 --- a/services/filestore/app/coffee/AWSSDKPersistorManager.coffee +++ b/services/filestore/app/coffee/AWSSDKPersistorManager.coffee @@ -85,7 +85,7 @@ module.exports = return callback err callback null, data.ETag? - getProjectSize:(bucketName, key, callback)-> + directorySize:(bucketName, key, callback)-> logger.log bucketName:bucketName, key:key, "get project size in s3" s3.listObjects {Bucket: bucketName, Prefix: key}, (err, data) -> if err? diff --git a/services/filestore/app/coffee/FSPersistorManager.coffee b/services/filestore/app/coffee/FSPersistorManager.coffee index c146b162ff..0868216a15 100644 --- a/services/filestore/app/coffee/FSPersistorManager.coffee +++ b/services/filestore/app/coffee/FSPersistorManager.coffee @@ -88,7 +88,7 @@ module.exports = logger.log location:location, name:filteredName, exists:exists, "checked if file exists" callback null, exists - getProjectSize:(location, name, callback)-> + directorySize:(location, name, callback)-> filteredName = filterName name.replace(/\/$/,'') logger.log location:location, name:filteredName, "get project size in file system" fs.readdir "#{location}/#{filteredName}", (err, files) -> diff --git a/services/filestore/app/coffee/FileController.coffee b/services/filestore/app/coffee/FileController.coffee index fed469e700..e1c212711a 100644 --- a/services/filestore/app/coffee/FileController.coffee +++ b/services/filestore/app/coffee/FileController.coffee @@ -83,3 +83,14 @@ module.exports = FileController = else range = parsed[0] {start: range.start, end: range.end} + + directorySize: (req, res)-> + metrics.inc "projectSize" + {project_id, bucket} = req + logger.log project_id:project_id, bucket:bucket, "reciving request to project size" + FileHandler.getDirectorySize bucket, project_id, (err, size)-> + if err? + logger.log err: err, project_id: project_id, bucket: bucket, "error inserting file" + res.send 500 + else + res.json {'total bytes' : size} diff --git a/services/filestore/app/coffee/FileHandler.coffee b/services/filestore/app/coffee/FileHandler.coffee index f22285edae..718195a484 100644 --- a/services/filestore/app/coffee/FileHandler.coffee +++ b/services/filestore/app/coffee/FileHandler.coffee @@ -87,3 +87,10 @@ module.exports = if err? return callback(err) LocalFileWriter.writeStream fileStream, key, callback + + getDirectorySize: (bucket, project_id, callback)-> + logger.log bucket:bucket, project_id:project_id, "getting project size" + PersistorManager.directorySize bucket, project_id, (err, size)-> + if err? + logger.err bucket:bucket, project_id:project_id, "error getting size" + callback err, size diff --git a/services/filestore/app/coffee/ProjectController.coffee b/services/filestore/app/coffee/ProjectController.coffee deleted file mode 100644 index e31d2539b5..0000000000 --- a/services/filestore/app/coffee/ProjectController.coffee +++ /dev/null @@ -1,18 +0,0 @@ -settings = require("settings-sharelatex") -logger = require("logger-sharelatex") -metrics = require("metrics-sharelatex") -Errors = require('./Errors') -ProjectHandler = require("./ProjectHandler") - -module.exports = projectController = - - projectSize: (req, res)-> - metrics.inc "projectSize" - {project_id, bucket} = req - logger.log project_id:project_id, bucket:bucket, "reciving request to project size" - ProjectHandler.getSize bucket, project_id, (err, size)-> - if err? - logger.log err: err, project_id: project_id, bucket: bucket, "error inserting file" - res.send 500 - else - res.json {'total bytes' : size} \ No newline at end of file diff --git a/services/filestore/app/coffee/ProjectHandler.coffee b/services/filestore/app/coffee/ProjectHandler.coffee deleted file mode 100644 index 53ed2df183..0000000000 --- a/services/filestore/app/coffee/ProjectHandler.coffee +++ /dev/null @@ -1,13 +0,0 @@ -settings = require("settings-sharelatex") -PersistorManager = require("./PersistorManager") -logger = require("logger-sharelatex") -async = require("async") - -module.exports = - - getSize: (bucket, project_id, callback)-> - logger.log bucket:bucket, project_id:project_id, "getting project size" - PersistorManager.getProjectSize bucket, project_id, (err, size)-> - if err? - logger.err bucket:bucket, project_id:project_id, "error getting size" - callback err, size \ No newline at end of file diff --git a/services/filestore/app/coffee/S3PersistorManager.coffee b/services/filestore/app/coffee/S3PersistorManager.coffee index 4accd517cb..b1a03fb4f4 100644 --- a/services/filestore/app/coffee/S3PersistorManager.coffee +++ b/services/filestore/app/coffee/S3PersistorManager.coffee @@ -138,7 +138,7 @@ module.exports = logger.log bucketName:bucketName, key:key, exists:exists, "checked if file exsists in s3" callback(err, exists) - getProjectSize:(bucketName, key, callback)-> + directorySize:(bucketName, key, callback)-> logger.log bucketName:bucketName, key:key, "get project size in s3" s3Client = knox.createClient key: settings.filestore.s3.key diff --git a/services/filestore/test/unit/coffee/AWSSDKPersistorManagerTests.coffee b/services/filestore/test/unit/coffee/AWSSDKPersistorManagerTests.coffee index 0ca8c65ffc..262f7aa94c 100644 --- a/services/filestore/test/unit/coffee/AWSSDKPersistorManagerTests.coffee +++ b/services/filestore/test/unit/coffee/AWSSDKPersistorManagerTests.coffee @@ -247,3 +247,11 @@ describe "AWSSDKPersistorManager", -> @AWSSDKPersistorManager.checkIfFileExists @bucketName, @key, (err, exists) => expect(err).to.equal @error done() + + describe "directorySize", -> + + it "should list the directory content using s3.listObjects", (done) -> + done() + + it "should sum directory files size", (done) -> + done() diff --git a/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee b/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee index 75a4376b8c..1d7eb17e88 100644 --- a/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee +++ b/services/filestore/test/unit/coffee/FSPersistorManagerTests.coffee @@ -208,3 +208,8 @@ describe "FSPersistorManagerTests", -> @FSPersistorManager.checkIfFileExists @location, @name1, (err,exists) => exists.should.be.false done() + + describe "directorySize", -> + + it "should sum directory files size", (done) -> + done() \ No newline at end of file diff --git a/services/filestore/test/unit/coffee/FileControllerTests.coffee b/services/filestore/test/unit/coffee/FileControllerTests.coffee index 1a2c3e81ea..94d50d67c1 100644 --- a/services/filestore/test/unit/coffee/FileControllerTests.coffee +++ b/services/filestore/test/unit/coffee/FileControllerTests.coffee @@ -152,3 +152,8 @@ describe "FileController", -> result = @controller._get_range('carrots=0-200') expect(result).to.equal null done() + + describe "directorySize", -> + + it "should call the file handler the directory size", (done) -> + done() diff --git a/services/filestore/test/unit/coffee/FileHandlerTests.coffee b/services/filestore/test/unit/coffee/FileHandlerTests.coffee index e67a8d38b7..405ccc2cc1 100644 --- a/services/filestore/test/unit/coffee/FileHandlerTests.coffee +++ b/services/filestore/test/unit/coffee/FileHandlerTests.coffee @@ -192,3 +192,8 @@ describe "FileHandler", -> @FileConverter.convert.calledWith(@stubbedPath, @format).should.equal true @LocalFileWriter.deleteFile.calledWith(@stubbedPath).should.equal true done() + + describe "directorySize", -> + + it "should call the filestore manager to get directory size", (done) -> + done() diff --git a/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee b/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee index 78fec6cea5..e1f7b7b7a9 100644 --- a/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee +++ b/services/filestore/test/unit/coffee/S3PersistorManagerTests.coffee @@ -256,3 +256,8 @@ describe "S3PersistorManagerTests", -> @S3PersistorManager.checkIfFileExists @bucketName, @key, (err)=> err.should.equal @error done() + + describe "directorySize", -> + + it "should sum directory files size", (done) -> + done()