whole_func_string: function (options) {
      var self = this;
  
      if (options == null) {
        options = {};
      }
  
      this.options = extend({
        requestedPorts  : 0,
        type            : this.TYPE_MOCHA,
        compilerModules : []
      }, options);
  
      this.eventMediator = new EventEmitter();
  
      this.eventMediator.on('bail', this._bail.bind(this));
  
      switch (this.options.type) {
        case this.TYPE_CUCUMBER:
          this.reporter = new CucumberReporter(this.eventMediator);
          break;
        case this.TYPE_MOCHA:
        default:
          this.reporter = new MochaReporter(this.eventMediator);
      }
  
      this._setColors();
  
      this._handleSignals();
  
      cluster.setupMaster({
        exec   : path.join(__dirname, 'fork_worker.js'),
        silent : false
      });
  
      this._loadTestSuites()
        .then(function (tests) {
          return self._processTests(self._batchTests(tests));
        })
        .then(function(){
          self.eventMediator.emit('start');
          return self._getOpenPorts(self.options.requestedPorts);
        })
        .then(function (ports) {
          for (var i=0; i<self._getMaxServers(); i++) {
            var portBlockSize  = self.options.requestedPorts + 1,
                portBlockStart = i * portBlockSize,
                port           = ports[portBlockStart],
                requestedPorts = ports.slice(portBlockStart+1, portBlockStart+portBlockSize);
  
            self._createServerWorker(port, requestedPorts);
          }
        })
        .done();
    }
func_code_string: function (options) {
      var self = this;
  
      if (options == null) {
        options = {};
      }
  
      this.options = extend({
        requestedPorts  : 0,
        type            : this.TYPE_MOCHA,
        compilerModules : []
      }, options);
  
      this.eventMediator = new EventEmitter();
  
      this.eventMediator.on('bail', this._bail.bind(this));
  
      switch (this.options.type) {
        case this.TYPE_CUCUMBER:
          this.reporter = new CucumberReporter(this.eventMediator);
          break;
        case this.TYPE_MOCHA:
        default:
          this.reporter = new MochaReporter(this.eventMediator);
      }
  
      this._setColors();
  
      this._handleSignals();
  
      cluster.setupMaster({
        exec   : path.join(__dirname, 'fork_worker.js'),
        silent : false
      });
  
      this._loadTestSuites()
        .then(function (tests) {
          return self._processTests(self._batchTests(tests));
        })
        .then(function(){
          self.eventMediator.emit('start');
          return self._getOpenPorts(self.options.requestedPorts);
        })
        .then(function (ports) {
          for (var i=0; i<self._getMaxServers(); i++) {
            var portBlockSize  = self.options.requestedPorts + 1,
                portBlockStart = i * portBlockSize,
                port           = ports[portBlockStart],
                requestedPorts = ports.slice(portBlockStart+1, portBlockStart+portBlockSize);
  
            self._createServerWorker(port, requestedPorts);
          }
        })
        .done();
    }
func_documentation_string: ////////////////////////////////////////////////////////////////////////// Public methods ///////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// 
  Functional.start(options) -> Promise
  - options (Object)