mirror of https://github.com/sipwise/ngcpcfg.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.8 KiB
113 lines
3.8 KiB
#!/usr/bin/env py.test-3
|
|
|
|
from pathlib import Path
|
|
import pytest
|
|
import re
|
|
import shutil
|
|
from fixtures.fs import check_stdoutput
|
|
|
|
|
|
def test_apply_instances(ngcpcfgcli, tmpdir):
|
|
commit_msg = "instance changes"
|
|
out = ngcpcfgcli(
|
|
"apply",
|
|
"--force-all-services",
|
|
commit_msg,
|
|
env={
|
|
"NGCP_HOSTNAME": "lb01a",
|
|
"TEMPLATE_POOL_BASE": "fixtures/build_instances",
|
|
"TEMPLATE_INSTANCES": "fixtures/repos/instances.yml",
|
|
"NGCPCFG": "fixtures/ngcpcfg_carrier_instances.cfg",
|
|
},
|
|
)
|
|
|
|
assert out.returncode == 0
|
|
assert not re.search(r"Error", out.stdout)
|
|
assert not re.search(r"Error", out.stderr)
|
|
|
|
base_dir = out.env["OUTPUT_DIRECTORY"]
|
|
output_file = base_dir.joinpath("ngcpcfg.service")
|
|
check_stdoutput("INSTANCE_NAME:\n", str(output_file), tmpdir)
|
|
assert re.search(
|
|
r"Executing action for .*/etc/kamailio/lb/ngcpcfg.services", out.stdout
|
|
)
|
|
|
|
output_file = base_dir.joinpath("ngcpcfg.serviceA")
|
|
check_stdoutput("INSTANCE_NAME:A\n", str(output_file), tmpdir)
|
|
assert re.search(
|
|
r"Executing action for .*/etc/kamailio/lb/ngcpcfg.services\[A\]", out.stdout
|
|
)
|
|
|
|
output_file = base_dir.joinpath("ngcpcfg.serviceB")
|
|
check_stdoutput("INSTANCE_NAME:B\n", str(output_file), tmpdir)
|
|
assert re.search(
|
|
r"Executing action for .*/etc/kamailio/lb/ngcpcfg.services\[B\]", out.stdout
|
|
)
|
|
|
|
|
|
def test_apply_instances_changes(ngcpcfg, ngcpcfgcli, tmpdir, gitrepo):
|
|
commit_msg = "instance changes for B"
|
|
env, cfg = ngcpcfg(
|
|
env={
|
|
"NGCP_HOSTNAME": "lb01a",
|
|
"TEMPLATE_POOL_BASE": "fixtures/apply_instances",
|
|
"TEMPLATE_INSTANCES": "fixtures/repos/instances.yml",
|
|
"NGCPCFG": "fixtures/ngcpcfg_carrier_instances.cfg",
|
|
}
|
|
)
|
|
base_dir = env["OUTPUT_DIRECTORY"]
|
|
base_git = Path(base_dir).joinpath("etc")
|
|
base_path = Path(base_dir).joinpath("etc/kamailio")
|
|
base_orig = Path("fixtures/output")
|
|
orig = [
|
|
("lb_kamailio_cfg_carrier", "lb"),
|
|
("lb_kamailio_cfg_instances_A", "lb_A"),
|
|
("lb_kamailio_cfg_instances_B", "lb_B"),
|
|
]
|
|
# put expected output of build_instances
|
|
with gitrepo.in_folder(base_git) as git:
|
|
# ensure we have valid user information
|
|
git.config("--local", "user.email", "pytest@example.com")
|
|
git.config("--local", "user.name", "pytest")
|
|
for file, dir in orig:
|
|
dst_path = base_path.joinpath(dir)
|
|
dst_path.mkdir(parents=True, exist_ok=True)
|
|
dst_file = dst_path.joinpath("kamailio.cfg")
|
|
shutil.copy(base_orig.joinpath(file), dst_file)
|
|
git.add(dst_file)
|
|
ex, out, err = git.commit("-a", "-m", "old conf done")
|
|
print("{}\nstdout:\n{}stderr:{}\n".format("git commit", out, err))
|
|
assert ex == 0
|
|
|
|
out = ngcpcfgcli(
|
|
"apply",
|
|
commit_msg,
|
|
env=env,
|
|
)
|
|
|
|
assert out.returncode == 0
|
|
assert re.search(
|
|
r"Executing action for .*/etc/kamailio/lb/ngcpcfg.services", out.stdout
|
|
)
|
|
|
|
assert not re.search(r"Error", out.stdout)
|
|
assert not re.search(r"Error", out.stderr)
|
|
|
|
output_file = base_dir.joinpath("ngcpcfg.service")
|
|
assert not output_file.exists()
|
|
assert not re.search(
|
|
r"Executing action for .*/etc/kamailio/lb/ngcpcfg.services$", out.stdout
|
|
)
|
|
|
|
output_file = base_dir.joinpath("ngcpcfg.serviceA")
|
|
assert not output_file.exists()
|
|
assert not re.search(
|
|
r"Executing action for .*/etc/kamailio/lb/ngcpcfg.services\[A\]$", out.stdout
|
|
)
|
|
|
|
output_file = base_dir.joinpath("ngcpcfg.serviceB")
|
|
check_stdoutput("INSTANCE_NAME:B\n", str(output_file), tmpdir)
|
|
assert re.search(
|
|
r"Executing action for .*/etc/kamailio/lb/ngcpcfg.services\[B\]", out.stdout
|
|
)
|