Merge pull request #13 from compose-viz/dev-parser

chore: update tests
This commit is contained in:
Xyphuz 2022-05-23 02:42:28 +08:00 committed by GitHub
commit 09f8c65e7c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 24 additions and 23 deletions

View file

@ -64,14 +64,15 @@ class Parser:
if type(port_data) is dict: if type(port_data) is dict:
# define a nested function to limit variable scope # define a nested function to limit variable scope
def long_syntax(): def long_syntax():
assert type(port_data) is dict
assert port_data["target"] assert port_data["target"]
container_port: str = port_data["target"] container_port: str = str(port_data["target"])
host_port: str = "" host_port: str = ""
protocol: Protocol = Protocol.tcp protocol: Protocol = Protocol.tcp
if port_data.get("host_port"): if port_data.get("published"):
host_port = port_data["host_port"] host_port = str(port_data["published"])
else: else:
host_port = container_port host_port = container_port
@ -80,7 +81,7 @@ class Parser:
host_port = f"{host_ip}:{host_port}" host_port = f"{host_ip}:{host_port}"
if port_data.get("protocol"): if port_data.get("protocol"):
protocol = Protocol(port_data["protocol"]) protocol = Protocol[str(port_data["protocol"])]
assert host_port, "Error parsing port, aborting." assert host_port, "Error parsing port, aborting."
@ -105,6 +106,7 @@ class Parser:
# - "6060:6060/udp" # - "6060:6060/udp"
def short_syntax(): def short_syntax():
assert type(port_data) is str
regex = r"(?P<host_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:)?((?P<host_port>\d+(\-\d+)?):)?((?P<container_port>\d+(\-\d+)?))?(/(?P<protocol>\w+))?" # noqa: E501 regex = r"(?P<host_ip>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:)?((?P<host_port>\d+(\-\d+)?):)?((?P<container_port>\d+(\-\d+)?))?(/(?P<protocol>\w+))?" # noqa: E501
match = re.match(regex, port_data) match = re.match(regex, port_data)
if match: if match:
@ -151,12 +153,12 @@ class Parser:
if type(volume_data) is dict: if type(volume_data) is dict:
assert volume_data["source"] and volume_data["target"], "Invalid volume input, aborting." assert volume_data["source"] and volume_data["target"], "Invalid volume input, aborting."
volume_source: str = volume_data["source"] volume_source: str = str(volume_data["source"])
volume_target: str = volume_data["target"] volume_target: str = str(volume_data["target"])
volume_type: VolumeType = VolumeType.volume volume_type: VolumeType = VolumeType.volume
if volume_data.get("type"): if volume_data.get("type"):
volume_type = VolumeType[volume_data["type"]] volume_type = VolumeType[str(volume_data["type"])]
service_volumes.append(Volume(source=volume_source, target=volume_target, type=volume_type)) service_volumes.append(Volume(source=volume_source, target=volume_target, type=volume_type))
elif type(volume_data) is str: elif type(volume_data) is str:

View file

@ -3,6 +3,6 @@ services:
web: web:
build: . build: .
ports: ports:
- "8000:5000" - "8080"
redis: redis:
image: "redis:alpine" image: "redis:alpine"

View file

@ -2,7 +2,10 @@ services:
frontend: frontend:
image: awesome/webapp image: awesome/webapp
ports: ports:
- "8000:5000" - target: 80
host_ip: 127.0.0.1
published: 8080
protocol: udp
networks: networks:
- front-tier - front-tier
- back-tier - back-tier
@ -10,14 +13,14 @@ services:
monitoring: monitoring:
image: awesome/monitoring image: awesome/monitoring
ports: ports:
- "8000:5001" - "127.0.0.1:8081:5001"
networks: networks:
- admin - admin
backend: backend:
image: awesome/backend image: awesome/backend
ports: ports:
- "8000:5010" - "8000:5010/udp"
networks: networks:
back-tier: back-tier:
aliases: aliases:

View file

@ -2,7 +2,7 @@ services:
frontend: frontend:
image: awesome/webapp image: awesome/webapp
ports: ports:
- "8000:5000" - target: 80
monitoring: monitoring:
extends: extends:

View file

@ -2,11 +2,7 @@ services:
backend: backend:
image: awesome/backend image: awesome/backend
volumes: volumes:
- type: volume - "db-data:/data"
source: db-data
target: /data
volume:
nocopy: true
- type: bind - type: bind
source: /var/run/postgres/postgres.sock source: /var/run/postgres/postgres.sock
target: /var/run/postgres/postgres.sock target: /var/run/postgres/postgres.sock

View file

@ -3,7 +3,7 @@ import pytest
from compose_viz.compose import Compose from compose_viz.compose import Compose
from compose_viz.extends import Extends from compose_viz.extends import Extends
from compose_viz.parser import Parser from compose_viz.parser import Parser
from compose_viz.port import Port from compose_viz.port import Port, Protocol
from compose_viz.service import Service from compose_viz.service import Service
from compose_viz.volume import AccessMode, Volume, VolumeType from compose_viz.volume import AccessMode, Volume, VolumeType
@ -82,7 +82,7 @@ from compose_viz.volume import AccessMode, Volume, VolumeType
name="web", name="web",
image="build from .", image="build from .",
ports=[ ports=[
Port(host_port="8000", container_port="5000"), Port(host_port="8080", container_port="8080"),
], ],
), ),
Service( Service(
@ -100,7 +100,7 @@ from compose_viz.volume import AccessMode, Volume, VolumeType
name="frontend", name="frontend",
image="awesome/webapp", image="awesome/webapp",
ports=[ ports=[
Port(host_port="8000", container_port="5000"), Port(host_port="127.0.0.1:8080", container_port="80", protocol=Protocol.udp),
], ],
networks=["front-tier", "back-tier"], networks=["front-tier", "back-tier"],
), ),
@ -108,7 +108,7 @@ from compose_viz.volume import AccessMode, Volume, VolumeType
name="monitoring", name="monitoring",
image="awesome/monitoring", image="awesome/monitoring",
ports=[ ports=[
Port(host_port="8000", container_port="5001"), Port(host_port="127.0.0.1:8081", container_port="5001"),
], ],
networks=["admin"], networks=["admin"],
), ),
@ -116,7 +116,7 @@ from compose_viz.volume import AccessMode, Volume, VolumeType
name="backend", name="backend",
image="awesome/backend", image="awesome/backend",
ports=[ ports=[
Port(host_port="8000", container_port="5010"), Port(host_port="8000", container_port="5010", protocol=Protocol.udp),
], ],
networks=["back-tier", "admin"], networks=["back-tier", "admin"],
), ),
@ -131,7 +131,7 @@ from compose_viz.volume import AccessMode, Volume, VolumeType
name="frontend", name="frontend",
image="awesome/webapp", image="awesome/webapp",
ports=[ ports=[
Port(host_port="8000", container_port="5000"), Port(host_port="80", container_port="80"),
], ],
), ),
Service( Service(