Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions chat_client/src/main.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging
import os
from getpass import getpass

import grpc
Expand Down Expand Up @@ -159,7 +160,7 @@ def _open_chat_receiver(self) -> None:
response_iterator = self._stub.RecieveMessages(
chat_pb2.RecieveMessagesRequest(to_user_login=self._username)
)
self._receiver = chat_receiver.ChatReceiver(response_iterator)
self._receiver = ChatReceiver(response_iterator)
self._receiver.start()

def _start_chat(self) -> None:
Expand Down Expand Up @@ -273,7 +274,7 @@ def _close_chat_receiver(self) -> None:
if __name__ == "__main__":
logging.basicConfig(format="%(message)s", level=logging.DEBUG)

chat_client = ChatClient("localhost", 50051)
chat_client = ChatClient(os.environ["CHAT_SERVER_IP_ADDR"], 50051)

chat_client.connect()
chat_client.run()
Expand Down
21 changes: 8 additions & 13 deletions chat_server/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,15 @@ FROM python:3.11

EXPOSE 50051

RUN mkdir /chat_server
VOLUME /chat_server/src
ENV ETCD_SERVER_IP_ADDR=${ETCD_SERVER_IP_ADDR}

WORKDIR /chat_server/src

# COPY protobufs/ /service/protobufs/
# COPY chat_server/src /service/chat_server/src
# RUN python -m -I. --python_out=/service/chat_server/src --pyi_out=/service/chat_server/src \
# --grpc_python_out=/service/chat_server/src protobufs/chat.proto
COPY requirements.txt .
COPY . /grpc_chat/chat_server/

WORKDIR /grpc_chat/
RUN ls
RUN ls chat_server
RUN ls chat_server/src
RUN python -m pip install --upgrade pip
RUN python -m pip install --no-cache-dir -r requirements.txt

COPY . .
RUN python -m pip install --no-cache-dir -r chat_server/requirements.txt

CMD ["python", "-u", "./main.py"]
CMD ["python", "-u","-m", "chat_server.src.main"]
57 changes: 57 additions & 0 deletions chat_server/tests/test_main.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,5 +106,62 @@ def test_send_message_user_not_found(self,
f"User Bruce not found"
)

@patch("chat_server.src.main.chat_pb2")
@patch("chat_server.src.main.EtcdMessagesHandler")
@patch("chat_server.src.main.logging")
@patch("chat_server.src.main.Parse")
def test_receive_messages(self,
parse: Mock,
_logging: Mock,
etcd_message_handler: Mock,
chat_pb2: Mock):
"""Tests chat_server.src.auth.login_user() method."""
request = Mock(
message=Mock(
to_user_login="Batman",
)
)
context = Mock(
is_active=Mock(
return_value=True
)
)
msg_handler = Mock(
get_elems_from_queue=Mock(
side_effect=[
[("1", "Message1"), ("2", "Message2"), ("3", "Message3")],
[],
[("1", "Message4"), ("2", "Message5"), ("3", "Message6")],
InterruptedError()
]
)
)
etcd_message_handler.return_value = msg_handler
empt_message = Mock()
chat_pb2.Message.return_value = empt_message

list(self.chat_server.RecieveMessages(request, context))

etcd_message_handler.assert_called_once_with(
client=self.etcd_client,
to_user="Batman"
)

self.assertEqual(msg_handler.call_count, 3)

parse.assert_has_calls(
call("Message1", empt_message),
call("Message2", empt_message),
call("Message3", empt_message),
call("Message4", empt_message),
call("Message5", empt_message),
call("Message6", empt_message),
)
self.assertEqual(_logging.debug.call_count, 4)
msg_handler.store_and_delete_sent_messages.assert_called_once_with(
[("1", "Message4"), ("2", "Message5"), ("3", "Message6")])
_logging.info.assert_called_once_with()


if __name__ == '__main__':
unittest.main()
4 changes: 4 additions & 0 deletions common/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
FROM python:3.8
COPY /*.py* /grpc_chat/common/
RUN ls
RUN ls /grpc_chat
6 changes: 3 additions & 3 deletions docker_compose.yml → docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ services:
build:
context: ./chat_server
dockerfile: Dockerfile
image: chat_server
volumes:
- ./chat_server/src:/chat_server/src
image: chat-server:0.1.0
environment:
- ETCD_SERVER_IP_ADDR=172.28.0.2
ports:
- 50051:50051
networks:
Expand Down
26 changes: 26 additions & 0 deletions grpc_chat_deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: grpc-chat-deployment
labels:
app: grpc-chat
spec:
replicas: 2
selector:
matchLabels:
app: grpc-chat-label
template:
metadata:
labels:
app: grpc-chat-label
spec:
nodeSelector:
type: backend
containers:
- name: grpc-chat-container
image: chat-server:0.1.0
env:
- name: ETCD_SERVER_IP_ADDR
value: 172.28.0.2
ports:
- containerPort: 50051
13 changes: 13 additions & 0 deletions grpc_chat_service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: apps/v1
kind: Service
metadata:
name: grpc-chat-service
labels:
app: grpc-chat-label
spec:
ports:
- port: 50051
targetPort: 50051
protocol: TCP
selector:
app: grpc-chat-label
10 changes: 10 additions & 0 deletions kind_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
labels:
type: backend
- role: worker
labels:
type: backend
1 change: 1 addition & 0 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ deps =
commands =
coverage erase
coverage run -m pytest --junitxml=pytest-report.xml
coverage xml -i

[coverage:report]
skip_empty = true
Expand Down