def _run_test_against_dev_server(self, request_logic, assert_logic=None):
        '''This method provides a template for writing integration tests that requires a development server being active.
        It accepts a request logic (code that actually do the http request) and an assert logic for making sure
        code is correct.'''

        assert_logic = assert_logic or self._check_server_started

        server = DevServer()

        def start_server():
            server.start()

        def stop_server():
            try:
                while not server.started:
                    time.sleep(0.01)

                request_logic(server)

                self.assertTrue(server.started)
            finally:
                server.stop()

        thread_start = threading.Thread(target=start_server)
        thread_start.start()

        thread_stop = threading.Thread(target=stop_server)
        thread_stop.start()

        thread_stop.join()

        self._check_server_started(server)
        assert_logic(server)
 def init(self):
     self._settings_facade = Mock()
     self._settings_facade.get = self._get_server_key
     self._settings_facade_cls = Mock(return_value=self._settings_facade)
     self._server = DevServer(self._settings_facade_cls)