@Override(ConcurrentExperiment.ConcurrentExperiment)
    @logged()
    def do_start_experiment(self, lab_session_id, *args, **kwargs):

        # Consider whether we should initialize the heartbeater now. If we are the first
        # user, the heartbeater will not have started yet.
        with self.heartbeater_lock:
            if self.heartbeater is None:
                self.heartbeater = Heartbeater(self, self.heartbeat_period, self._session_manager)
                self.heartbeater.setDaemon(True)
                self.heartbeater.setName('Heartbeater')
                self.heartbeater.start()

        if DEBUG: dbg("[DBG] Current number of users: %s" % len(self._session_manager.list_sessions()))
        if DEBUG: dbg("[DBG] Lab Session Id: %s" % lab_session_id)
        if DEBUG: dbg("[DBG] Measure server address: %s" % self.measure_server_addr)
        if DEBUG: dbg("[DBG] Measure server target: %s" % self.measure_server_target)

        setup_data = self.build_setup_data("", self.client_url, self.get_circuits().keys())

        self._session_manager.create_session(lab_session_id.id)
        self._session_manager.modify_session(lab_session_id, {'cookie' : "", 'electro_lab_cookie' : ""})

        # Increment the user's counter, which indicates how many users are using the experiment.
        with self._users_counter_lock:
            self.users_counter += 1

        if(DEBUG): dbg("[VisirTestExperiment][Start]: Current users: %s" % self.users_counter)

        return json.dumps({ "initial_configuration" : setup_data, "batch" : False })
Callback run when the experiment is started
dataset/ETHPy150Open weblabdeusto/weblabdeusto/server/src/experiments/visir_html5.py/VisirExperiment.do_start_experiment