#pylint: disable=C0111
#pylint: disable=W0621
from xmodule.util.mock_youtube_server.mock_youtube_server import MockYoutubeServer
from lettuce import before, after, world
from django.conf import settings
import threading

from logging import getLogger
logger = getLogger(__name__)


@before.all
def setup_mock_youtube_server():
    server_host = '127.0.0.1'

    server_port = settings.VIDEO_PORT

    address = (server_host, server_port)

    # Create the mock server instance
    server = MockYoutubeServer(address)
    logger.debug("Youtube server started at {} port".format(str(server_port)))

    server.time_to_response = 0.1  # seconds

    server.address = address

    # Start the server running in a separate daemon thread
    # Because the thread is a daemon, it will terminate
    # when the main thread terminates.
    server_thread = threading.Thread(target=server.serve_forever)
    server_thread.daemon = True
    server_thread.start()

    # Store the server instance in lettuce's world
    # so that other steps can access it
    # (and we can shut it down later)
    world.youtube_server = server


@after.all
def teardown_mock_youtube_server(total):

    # Stop the LTI server and free up the port
    world.youtube_server.shutdown()