Add some caching
Commit 918c2 pushed by Anže Pečar

54 tests 45 passed 8 failed 1 muted Duration
self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
>           sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/retry.py:46: in call_with_retry
    return do()
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:265: in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:627: in _connect
    raise err
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
>               sock.connect(socket_address)
E               ConnectionRefusedError: [Errno 111] Connection refused

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:615: ConnectionRefusedError

During handling of the above exception, another exception occurred:

self = <apps.projects.tests.IndexPageTest testMethod=test_index_page>

    def test_index_page(self):
>       response = self.client.get("/")

apps/projects/tests.py:11: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1049: in get
    response = super().get(path, data=data, secure=secure, headers=headers, **extra)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:465: in get
    return self.generic(
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:617: in generic
    return self.request(**r)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1013: in request
    self.check_exception(response)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:743: in check_exception
    raise exc_value
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:181: in _view_wrapper
    result = _pre_process_request(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:127: in _pre_process_request
    result = middleware.process_request(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/middleware/cache.py:158: in process_request
    cache_key = get_cache_key(request, self.key_prefix, "GET", cache=self.cache)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/cache.py:391: in get_cache_key
    headerlist = cache.get(cache_key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:187: in get
    return self._cache.get(key, default)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:99: in get
    value = client.get(key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/commands/core.py:1829: in get
    return self.execute_command("GET", name)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/client.py:533: in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:1086: in get_connection
    connection.connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
            sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )
        except socket.timeout:
            raise TimeoutError("Timeout connecting to server")
        except OSError as e:
>           raise ConnectionError(self._error_message(e))
E           redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:270: ConnectionError
self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
>           sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/retry.py:46: in call_with_retry
    return do()
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:265: in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:627: in _connect
    raise err
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
>               sock.connect(socket_address)
E               ConnectionRefusedError: [Errno 111] Connection refused

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:615: ConnectionRefusedError

During handling of the above exception, another exception occurred:

self = <ft.tests.TestCIPage testMethod=test_ci>

    def test_ci(self):
>       response = self.client.get(reverse("ci"))

ft/tests.py:40: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1049: in get
    response = super().get(path, data=data, secure=secure, headers=headers, **extra)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:465: in get
    return self.generic(
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:617: in generic
    return self.request(**r)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1013: in request
    self.check_exception(response)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:743: in check_exception
    raise exc_value
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:181: in _view_wrapper
    result = _pre_process_request(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:127: in _pre_process_request
    result = middleware.process_request(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/middleware/cache.py:158: in process_request
    cache_key = get_cache_key(request, self.key_prefix, "GET", cache=self.cache)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/cache.py:391: in get_cache_key
    headerlist = cache.get(cache_key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:187: in get
    return self._cache.get(key, default)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:99: in get
    value = client.get(key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/commands/core.py:1829: in get
    return self.execute_command("GET", name)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/client.py:533: in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:1086: in get_connection
    connection.connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
            sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )
        except socket.timeout:
            raise TimeoutError("Timeout connecting to server")
        except OSError as e:
>           raise ConnectionError(self._error_message(e))
E           redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:270: ConnectionError
self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
>           sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/retry.py:46: in call_with_retry
    return do()
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:265: in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:627: in _connect
    raise err
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
>               sock.connect(socket_address)
E               ConnectionRefusedError: [Errno 111] Connection refused

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:615: ConnectionRefusedError

During handling of the above exception, another exception occurred:

self = <ft.tests.TestGetStartedPage testMethod=test_get_started>

    def test_get_started(self):
>       response = self.client.get(reverse("get_started"))

ft/tests.py:33: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1049: in get
    response = super().get(path, data=data, secure=secure, headers=headers, **extra)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:465: in get
    return self.generic(
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:617: in generic
    return self.request(**r)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1013: in request
    self.check_exception(response)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:743: in check_exception
    raise exc_value
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:181: in _view_wrapper
    result = _pre_process_request(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:127: in _pre_process_request
    result = middleware.process_request(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/middleware/cache.py:158: in process_request
    cache_key = get_cache_key(request, self.key_prefix, "GET", cache=self.cache)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/cache.py:391: in get_cache_key
    headerlist = cache.get(cache_key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:187: in get
    return self._cache.get(key, default)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:99: in get
    value = client.get(key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/commands/core.py:1829: in get
    return self.execute_command("GET", name)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/client.py:533: in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:1086: in get_connection
    connection.connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
            sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )
        except socket.timeout:
            raise TimeoutError("Timeout connecting to server")
        except OSError as e:
>           raise ConnectionError(self._error_message(e))
E           redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:270: ConnectionError
self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
>           sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/retry.py:46: in call_with_retry
    return do()
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:265: in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:627: in _connect
    raise err
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
>               sock.connect(socket_address)
E               ConnectionRefusedError: [Errno 111] Connection refused

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:615: ConnectionRefusedError

During handling of the above exception, another exception occurred:

self = <ft.tests.TestIndexPage testMethod=test_index>

    def test_index(self):
>       response = self.client.get(reverse("index"))

ft/tests.py:10: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1049: in get
    response = super().get(path, data=data, secure=secure, headers=headers, **extra)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:465: in get
    return self.generic(
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:617: in generic
    return self.request(**r)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1013: in request
    self.check_exception(response)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:743: in check_exception
    raise exc_value
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:181: in _view_wrapper
    result = _pre_process_request(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:127: in _pre_process_request
    result = middleware.process_request(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/middleware/cache.py:158: in process_request
    cache_key = get_cache_key(request, self.key_prefix, "GET", cache=self.cache)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/cache.py:391: in get_cache_key
    headerlist = cache.get(cache_key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:187: in get
    return self._cache.get(key, default)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:99: in get
    value = client.get(key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/commands/core.py:1829: in get
    return self.execute_command("GET", name)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/client.py:533: in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:1086: in get_connection
    connection.connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
            sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )
        except socket.timeout:
            raise TimeoutError("Timeout connecting to server")
        except OSError as e:
>           raise ConnectionError(self._error_message(e))
E           redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:270: ConnectionError
self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
>           sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/retry.py:46: in call_with_retry
    return do()
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:265: in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:627: in _connect
    raise err
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
>               sock.connect(socket_address)
E               ConnectionRefusedError: [Errno 111] Connection refused

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:615: ConnectionRefusedError

During handling of the above exception, another exception occurred:

self = <ft.tests.TestIndexPage testMethod=test_user_logged_in>

    def test_user_logged_in(self):
        user = User.objects.create_user("testuser")
        self.client.force_login(user)
        project = Project.objects.create(name="Test Project")
        ProjectMember.objects.create(project=project, user=user, role=ProjectMember.MemberTypes.OWNER)
>       response = self.client.get(reverse("index"))

ft/tests.py:26: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1049: in get
    response = super().get(path, data=data, secure=secure, headers=headers, **extra)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:465: in get
    return self.generic(
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:617: in generic
    return self.request(**r)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1013: in request
    self.check_exception(response)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:743: in check_exception
    raise exc_value
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:181: in _view_wrapper
    result = _pre_process_request(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:127: in _pre_process_request
    result = middleware.process_request(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/middleware/cache.py:158: in process_request
    cache_key = get_cache_key(request, self.key_prefix, "GET", cache=self.cache)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/cache.py:391: in get_cache_key
    headerlist = cache.get(cache_key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:187: in get
    return self._cache.get(key, default)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:99: in get
    value = client.get(key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/commands/core.py:1829: in get
    return self.execute_command("GET", name)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/client.py:533: in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:1086: in get_connection
    connection.connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
            sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )
        except socket.timeout:
            raise TimeoutError("Timeout connecting to server")
        except OSError as e:
>           raise ConnectionError(self._error_message(e))
E           redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:270: ConnectionError
self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
>           sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/retry.py:46: in call_with_retry
    return do()
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:265: in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:627: in _connect
    raise err
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
>               sock.connect(socket_address)
E               ConnectionRefusedError: [Errno 111] Connection refused

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:615: ConnectionRefusedError

During handling of the above exception, another exception occurred:

self = <ft.tests.TestIndexPage testMethod=test_user_logged_in_without_projects>

    def test_user_logged_in_without_projects(self):
        user = User.objects.create_user("testuser")
        self.client.force_login(user)
>       response = self.client.get(reverse("index"))

ft/tests.py:17: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1049: in get
    response = super().get(path, data=data, secure=secure, headers=headers, **extra)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:465: in get
    return self.generic(
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:617: in generic
    return self.request(**r)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1013: in request
    self.check_exception(response)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:743: in check_exception
    raise exc_value
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:181: in _view_wrapper
    result = _pre_process_request(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:127: in _pre_process_request
    result = middleware.process_request(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/middleware/cache.py:158: in process_request
    cache_key = get_cache_key(request, self.key_prefix, "GET", cache=self.cache)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/cache.py:391: in get_cache_key
    headerlist = cache.get(cache_key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:187: in get
    return self._cache.get(key, default)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:99: in get
    value = client.get(key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/commands/core.py:1829: in get
    return self.execute_command("GET", name)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/client.py:533: in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:1086: in get_connection
    connection.connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
            sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )
        except socket.timeout:
            raise TimeoutError("Timeout connecting to server")
        except OSError as e:
>           raise ConnectionError(self._error_message(e))
E           redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:270: ConnectionError
self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
>           sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/retry.py:46: in call_with_retry
    return do()
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:265: in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:627: in _connect
    raise err
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
>               sock.connect(socket_address)
E               ConnectionRefusedError: [Errno 111] Connection refused

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:615: ConnectionRefusedError

During handling of the above exception, another exception occurred:

self = <ft.tests.TestTrubleshootingPage testMethod=test_troubleshooting>

    def test_troubleshooting(self):
>       response = self.client.get(reverse("trubleshooting"))

ft/tests.py:47: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1049: in get
    response = super().get(path, data=data, secure=secure, headers=headers, **extra)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:465: in get
    return self.generic(
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:617: in generic
    return self.request(**r)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1013: in request
    self.check_exception(response)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:743: in check_exception
    raise exc_value
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:181: in _view_wrapper
    result = _pre_process_request(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:127: in _pre_process_request
    result = middleware.process_request(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/middleware/cache.py:158: in process_request
    cache_key = get_cache_key(request, self.key_prefix, "GET", cache=self.cache)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/cache.py:391: in get_cache_key
    headerlist = cache.get(cache_key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:187: in get
    return self._cache.get(key, default)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:99: in get
    value = client.get(key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/commands/core.py:1829: in get
    return self.execute_command("GET", name)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/client.py:533: in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:1086: in get_connection
    connection.connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
            sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )
        except socket.timeout:
            raise TimeoutError("Timeout connecting to server")
        except OSError as e:
>           raise ConnectionError(self._error_message(e))
E           redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:270: ConnectionError
self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
>           sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:264: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/retry.py:46: in call_with_retry
    return do()
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:265: in <lambda>
    lambda: self._connect(), lambda error: self.disconnect(error)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:627: in _connect
    raise err
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def _connect(self):
        "Create a TCP socket connection"
        # we want to mimic what socket.create_connection does to support
        # ipv4/ipv6, but we want to set options prior to calling
        # socket.connect()
        err = None
        for res in socket.getaddrinfo(
            self.host, self.port, self.socket_type, socket.SOCK_STREAM
        ):
            family, socktype, proto, canonname, socket_address = res
            sock = None
            try:
                sock = socket.socket(family, socktype, proto)
                # TCP_NODELAY
                sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    
                # TCP_KEEPALIVE
                if self.socket_keepalive:
                    sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
                    for k, v in self.socket_keepalive_options.items():
                        sock.setsockopt(socket.IPPROTO_TCP, k, v)
    
                # set the socket_connect_timeout before we connect
                sock.settimeout(self.socket_connect_timeout)
    
                # connect
>               sock.connect(socket_address)
E               ConnectionRefusedError: [Errno 111] Connection refused

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:615: ConnectionRefusedError

During handling of the above exception, another exception occurred:

self = <ft.tests.TestTrubleshootingPage testMethod=test_troubleshooting_with_project>

    def test_troubleshooting_with_project(self):
        user = User.objects.create_user("testuser")
        self.client.force_login(user)
        project = Project.objects.create(name="Test Project")
        SecretTokens.objects.create(project=project, token="testtoken")
        ProjectMember.objects.create(project=project, user=user, role=ProjectMember.MemberTypes.OWNER)
>       response = self.client.get(reverse("trubleshooting_with_id", args=[project.id]))

ft/tests.py:57: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1049: in get
    response = super().get(path, data=data, secure=secure, headers=headers, **extra)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:465: in get
    return self.generic(
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:617: in generic
    return self.request(**r)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:1013: in request
    self.check_exception(response)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/test/client.py:743: in check_exception
    raise exc_value
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/exception.py:55: in inner
    response = get_response(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/handlers/base.py:197: in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:181: in _view_wrapper
    result = _pre_process_request(request, *args, **kwargs)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/decorators.py:127: in _pre_process_request
    result = middleware.process_request(request)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/middleware/cache.py:158: in process_request
    cache_key = get_cache_key(request, self.key_prefix, "GET", cache=self.cache)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/utils/cache.py:391: in get_cache_key
    headerlist = cache.get(cache_key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:187: in get
    return self._cache.get(key, default)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/django/core/cache/backends/redis.py:99: in get
    value = client.get(key)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/commands/core.py:1829: in get
    return self.execute_command("GET", name)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/client.py:533: in execute_command
    conn = self.connection or pool.get_connection(command_name, **options)
/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:1086: in get_connection
    connection.connect()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Connection<host=localhost,port=6379,db=0>

    def connect(self):
        "Connects to the Redis server if not already connected"
        if self._sock:
            return
        try:
            sock = self.retry.call_with_retry(
                lambda: self._connect(), lambda error: self.disconnect(error)
            )
        except socket.timeout:
            raise TimeoutError("Timeout connecting to server")
        except OSError as e:
>           raise ConnectionError(self._error_message(e))
E           redis.exceptions.ConnectionError: Error 111 connecting to localhost:6379. Connection refused.

/opt/hostedtoolcache/Python/3.12.1/x64/lib/python3.12/site-packages/redis/connection.py:270: ConnectionError