Create a constants module to easily modify some constants in a test
authorChocobozzz <florian.bigard@gmail.com>
Mon, 14 Dec 2015 20:09:25 +0000 (21:09 +0100)
committerChocobozzz <florian.bigard@gmail.com>
Mon, 14 Dec 2015 21:13:03 +0000 (22:13 +0100)
instance for example.

routes/index.js
server.js
src/constants.js [new file with mode: 0644]
src/database.js
src/pods.js
src/poolRequests.js
src/utils.js

index ecca8072164ddd6abf10783894bbce60d1971dac..f45aa7ba57f2bd7b453009818ea7ea30084e2f60 100644 (file)
@@ -1,8 +1,10 @@
 ;(function () {
   'use strict'
 
+  var constants = require('../src/constants')
+
   var routes = {
-    api: require('./api/' + global.API_VERSION),
+    api: require('./api/' + constants.API_VERSION),
     views: require('./views')
   }
 
index 4b93a7adf939e0ca7245d407051b450e7ff2becf..ad57649b24eaafb75889634a6bae258e0e6dc67a 100644 (file)
--- a/server.js
+++ b/server.js
 
   checker.createDirectoriesIfNotExist()
 
-  // ----------- Constants -----------
-  var utils = require('./src/utils')
-
-  global.API_VERSION = 'v1'
-  global.FRIEND_BASE_SCORE = utils.isTestInstance() ? 20 : 100
-
   // ----------- PeerTube modules -----------
   var config = require('config')
+  var constants = require('./src/constants')
   var customValidators = require('./src/customValidators')
   var logger = require('./src/logger')
   var poolRequests = require('./src/poolRequests')
   var routes = require('./routes')
+  var utils = require('./src/utils')
   var videos = require('./src/videos')
   var webtorrent = require('./src/webTorrentNode')
 
@@ -76,7 +72,7 @@
   app.set('view engine', 'jade')
 
   // API routes
-  var api_route = '/api/' + global.API_VERSION
+  var api_route = '/api/' + constants.API_VERSION
   app.use(api_route, routes.api)
 
   // Views routes
diff --git a/src/constants.js b/src/constants.js
new file mode 100644 (file)
index 0000000..00b7139
--- /dev/null
@@ -0,0 +1,37 @@
+;(function () {
+  'use strict'
+
+  var constants = {}
+
+  function isTestInstance () {
+    return (process.env.NODE_ENV === 'test')
+  }
+
+  // API version of our pod
+  constants.API_VERSION = 'v1'
+
+  // Score a pod has when we create it as a friend
+  constants.FRIEND_BASE_SCORE = 100
+
+  // Time to wait between requests to the friends
+  constants.INTERVAL = 60000
+
+  // Number of points we add/remove from a friend after a successful/bad request
+  constants.PODS_SCORE = {
+    MALUS: -10,
+    BONUS: 10
+  }
+
+  // Number of retries we make for the make retry requests (to friends...)
+  constants.REQUEST_RETRIES = 10
+
+  // Special constants for a test instance
+  if (isTestInstance() === true) {
+    constants.FRIEND_BASE_SCORE = 20
+    constants.INTERVAL = 10000
+    constants.REQUEST_RETRIES = 2
+  }
+
+  // ----------- Export -----------
+  module.exports = constants
+})()
index 514a622dc823e224a43adfe18506a0f72a35df5f..e03176b31e9a0f6fc16be6457b060c94a5985ac1 100644 (file)
@@ -4,6 +4,7 @@
   var config = require('config')
   var mongoose = require('mongoose')
 
+  var constants = require('./constants')
   var logger = require('./logger')
 
   var dbname = 'peertube' + config.get('database.suffix')
@@ -25,7 +26,7 @@
   var podsSchema = mongoose.Schema({
     url: String,
     publicKey: String,
-    score: { type: Number, max: global.FRIEND_BASE_SCORE }
+    score: { type: Number, max: constants.FRIEND_BASE_SCORE }
   })
 
   var PodsDB = mongoose.model('pods', podsSchema)
index a0dbb6b68c2efeff289b3f0f9aed2a7959005114..8da216a558b6123ebc0529ab70bd891157256a54 100644 (file)
@@ -6,6 +6,7 @@
   var fs = require('fs')
   var request = require('request')
 
+  var constants = require('./constants')
   var logger = require('./logger')
   var PodsDB = require('./database').PodsDB
   var poolRequests = require('./poolRequests')
@@ -20,7 +21,7 @@
   // ----------- Private functions -----------
 
   function getForeignPodsList (url, callback) {
-    var path = '/api/' + global.API_VERSION + '/pods'
+    var path = '/api/' + constants.API_VERSION + '/pods'
 
     request.get(url + path, function (err, response, body) {
       if (err) throw err
@@ -48,7 +49,7 @@
     var params = {
       url: data.url,
       publicKey: data.publicKey,
-      score: global.FRIEND_BASE_SCORE
+      score: constants.FRIEND_BASE_SCORE
     }
 
     PodsDB.create(params, function (err, pod) {
       }
 
       utils.makeMultipleRetryRequest(
-        { method: 'POST', path: '/api/' + global.API_VERSION + '/pods/', data: data },
+        { method: 'POST', path: '/api/' + constants.API_VERSION + '/pods/', data: data },
 
         pods_list,
 
         function eachRequest (err, response, body, url, pod, callback_each_request) {
           // We add the pod if it responded correctly with its public certificate
           if (!err && response.statusCode === 200) {
-            pods.add({ url: pod.url, publicKey: body.cert, score: global.FRIEND_BASE_SCORE }, function (err) {
+            pods.add({ url: pod.url, publicKey: body.cert, score: constants.FRIEND_BASE_SCORE }, function (err) {
               if (err) {
                 logger.error('Error with adding %s pod.', pod.url, { error: err })
               }
index 190fb36592db06abe8649ca42e0782955fc84bfd..edb12b1e82e2be76e354e2a16965d9be3a572f71 100644 (file)
@@ -3,6 +3,7 @@
 
   var async = require('async')
 
+  var constants = require('./constants')
   var logger = require('./logger')
   var database = require('./database')
   var PoolRequestsDB = database.PoolRequestsDB
 
   var poolRequests = {}
 
-  // ----------- Constants -----------
-
-  // Time to wait between requests to the friends
-  var INTERVAL = utils.isTestInstance() ? 10000 : 60000
-  var PODS_SCORE = {
-    MALUS: -10,
-    BONUS: 10
-  }
-
   // ----------- Private -----------
   var timer = null
 
@@ -90,8 +82,8 @@
   function updatePodsScore (good_pods, bad_pods) {
     logger.info('Updating %d good pods and %d bad pods scores.', good_pods.length, bad_pods.length)
 
-    PodsDB.update({ _id: { $in: good_pods } }, { $inc: { score: PODS_SCORE.BONUS } }, { multi: true }).exec()
-    PodsDB.update({ _id: { $in: bad_pods } }, { $inc: { score: PODS_SCORE.MALUS } }, { multi: true }, function (err) {
+    PodsDB.update({ _id: { $in: good_pods } }, { $inc: { score: constants.PODS_SCORE.BONUS } }, { multi: true }).exec()
+    PodsDB.update({ _id: { $in: bad_pods } }, { $inc: { score: constants.PODS_SCORE.MALUS } }, { multi: true }, function (err) {
       if (err) throw err
       removeBadPods()
     })
       }
 
       if (type === 'add') {
-        params.path = '/api/' + global.API_VERSION + '/remotevideos/add'
+        params.path = '/api/' + constants.API_VERSION + '/remotevideos/add'
       } else if (type === 'remove') {
-        params.path = '/api/' + global.API_VERSION + '/remotevideos/remove'
+        params.path = '/api/' + constants.API_VERSION + '/remotevideos/remove'
       } else {
         throw new Error('Unkown pool request type.')
       }
   // ----------- Public -----------
   poolRequests.activate = function () {
     logger.info('Pool requests activated.')
-    timer = setInterval(makePoolRequests, INTERVAL)
+    timer = setInterval(makePoolRequests, constants.INTERVAL)
   }
 
   poolRequests.addToPoolRequests = function (id, type, request) {
index 30edcd0e9db5601a46f72166142e7f196f75a1f3..5880c6c90409e08ff67febde7fbbe9a22e82d41a 100644 (file)
@@ -10,6 +10,7 @@
   var replay = require('request-replay')
   var ursa = require('ursa')
 
+  var constants = require('./constants')
   var logger = require('./logger')
 
   var utils = {}
     }
 
     logger.debug('Make retry requests to %s.', to_pod.url)
-    // Default 10 but in tests we want to be faster
-    var retries = utils.isTestInstance() ? 2 : 10
 
     replay(
       request.post(params, function (err, response, body) {
         callbackEach(err, response, body, params.url, to_pod)
       }),
       {
-        retries: retries,
+        retries: constants.REQUEST_RETRIES,
         factor: 3,
         maxTimeout: Infinity,
         errorCodes: [ 'EADDRINFO', 'ETIMEDOUT', 'ECONNRESET', 'ESOCKETTIMEDOUT', 'ENOTFOUND', 'ECONNREFUSED' ]
     process.kill(-webtorrent_process.pid)
   }
 
-  utils.isTestInstance = function () {
-    return (process.env.NODE_ENV === 'test')
-  }
-
   module.exports = utils
 })()