mirror of
https://github.com/containers/podman.git
synced 2025-06-26 04:46:57 +08:00
Delete all containers and pods between tests
New tearDown() deletes all pods and containers between tests Signed-off-by: Jhon Honce <jhonce@redhat.com>
This commit is contained in:
@ -3,6 +3,7 @@ import json
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
|
|
||||||
@ -27,7 +28,9 @@ class Podman(object):
|
|||||||
self.cmd.append("--root=" + os.path.join(self.anchor_directory, "crio"))
|
self.cmd.append("--root=" + os.path.join(self.anchor_directory, "crio"))
|
||||||
self.cmd.append("--runroot=" + os.path.join(self.anchor_directory, "crio-run"))
|
self.cmd.append("--runroot=" + os.path.join(self.anchor_directory, "crio-run"))
|
||||||
|
|
||||||
os.environ["CONTAINERS_REGISTRIES_CONF"] = os.path.join(self.anchor_directory, "registry.conf")
|
os.environ["CONTAINERS_REGISTRIES_CONF"] = os.path.join(
|
||||||
|
self.anchor_directory, "registry.conf"
|
||||||
|
)
|
||||||
p = configparser.ConfigParser()
|
p = configparser.ConfigParser()
|
||||||
p.read_dict(
|
p.read_dict(
|
||||||
{
|
{
|
||||||
@ -114,13 +117,20 @@ class Podman(object):
|
|||||||
check = kwargs.get("check", False)
|
check = kwargs.get("check", False)
|
||||||
shell = kwargs.get("shell", False)
|
shell = kwargs.get("shell", False)
|
||||||
|
|
||||||
return subprocess.run(
|
try:
|
||||||
cmd,
|
return subprocess.run(
|
||||||
shell=shell,
|
cmd,
|
||||||
check=check,
|
shell=shell,
|
||||||
stdout=subprocess.PIPE,
|
check=check,
|
||||||
stderr=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
)
|
stderr=subprocess.PIPE,
|
||||||
|
)
|
||||||
|
except subprocess.CalledProcessError as e:
|
||||||
|
if e.stdout:
|
||||||
|
sys.stdout.write("\nRun Stdout:\n" + e.stdout.decode("utf-8"))
|
||||||
|
if e.stderr:
|
||||||
|
sys.stderr.write("\nRun Stderr:\n" + e.stderr.decode("utf-8"))
|
||||||
|
raise
|
||||||
|
|
||||||
def tear_down(self):
|
def tear_down(self):
|
||||||
shutil.rmtree(self.anchor_directory, ignore_errors=True)
|
shutil.rmtree(self.anchor_directory, ignore_errors=True)
|
||||||
|
@ -50,23 +50,20 @@ class TestApi(unittest.TestCase):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
|
|
||||||
try:
|
TestApi.podman.run("run", "alpine", "/bin/ls", check=True)
|
||||||
TestApi.podman.run("run", "alpine", "/bin/ls", check=True)
|
|
||||||
except subprocess.CalledProcessError as e:
|
def tearDown(self) -> None:
|
||||||
if e.stdout:
|
super().tearDown()
|
||||||
sys.stdout.write("\nRun Stdout:\n" + e.stdout.decode("utf-8"))
|
|
||||||
if e.stderr:
|
TestApi.podman.run("pod", "rm", "--all", "--force", check=True)
|
||||||
sys.stderr.write("\nRun Stderr:\n" + e.stderr.decode("utf-8"))
|
TestApi.podman.run("rm", "--all", "--force", check=True)
|
||||||
raise
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def setUpClass(cls):
|
def setUpClass(cls):
|
||||||
super().setUpClass()
|
super().setUpClass()
|
||||||
|
|
||||||
TestApi.podman = Podman()
|
TestApi.podman = Podman()
|
||||||
TestApi.service = TestApi.podman.open(
|
TestApi.service = TestApi.podman.open("system", "service", "tcp:localhost:8080", "--time=0")
|
||||||
"system", "service", "tcp:localhost:8080", "--time=0"
|
|
||||||
)
|
|
||||||
# give the service some time to be ready...
|
# give the service some time to be ready...
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
||||||
@ -243,9 +240,7 @@ class TestApi(unittest.TestCase):
|
|||||||
|
|
||||||
def test_post_create_compat(self):
|
def test_post_create_compat(self):
|
||||||
"""Create network and connect container during create"""
|
"""Create network and connect container during create"""
|
||||||
net = requests.post(
|
net = requests.post(PODMAN_URL + "/v1.40/networks/create", json={"Name": "TestNetwork"})
|
||||||
PODMAN_URL + "/v1.40/networks/create", json={"Name": "TestNetwork"}
|
|
||||||
)
|
|
||||||
self.assertEqual(net.status_code, 201, net.text)
|
self.assertEqual(net.status_code, 201, net.text)
|
||||||
|
|
||||||
create = requests.post(
|
create = requests.post(
|
||||||
@ -454,15 +449,11 @@ class TestApi(unittest.TestCase):
|
|||||||
self.assertIn(k, o)
|
self.assertIn(k, o)
|
||||||
|
|
||||||
def test_network_compat(self):
|
def test_network_compat(self):
|
||||||
name = "Network_" + "".join(
|
name = "Network_" + "".join(random.choice(string.ascii_letters) for i in range(10))
|
||||||
random.choice(string.ascii_letters) for i in range(10)
|
|
||||||
)
|
|
||||||
|
|
||||||
# Cannot test for 0 existing networks because default "podman" network always exists
|
# Cannot test for 0 existing networks because default "podman" network always exists
|
||||||
|
|
||||||
create = requests.post(
|
create = requests.post(PODMAN_URL + "/v1.40/networks/create", json={"Name": name})
|
||||||
PODMAN_URL + "/v1.40/networks/create", json={"Name": name}
|
|
||||||
)
|
|
||||||
self.assertEqual(create.status_code, 201, create.content)
|
self.assertEqual(create.status_code, 201, create.content)
|
||||||
obj = json.loads(create.content)
|
obj = json.loads(create.content)
|
||||||
self.assertIn(type(obj), (dict,))
|
self.assertIn(type(obj), (dict,))
|
||||||
@ -492,9 +483,7 @@ class TestApi(unittest.TestCase):
|
|||||||
self.assertEqual(inspect.status_code, 404, inspect.content)
|
self.assertEqual(inspect.status_code, 404, inspect.content)
|
||||||
|
|
||||||
# network prune
|
# network prune
|
||||||
prune_name = "Network_" + "".join(
|
prune_name = "Network_" + "".join(random.choice(string.ascii_letters) for i in range(10))
|
||||||
random.choice(string.ascii_letters) for i in range(10)
|
|
||||||
)
|
|
||||||
prune_create = requests.post(
|
prune_create = requests.post(
|
||||||
PODMAN_URL + "/v1.40/networks/create", json={"Name": prune_name}
|
PODMAN_URL + "/v1.40/networks/create", json={"Name": prune_name}
|
||||||
)
|
)
|
||||||
@ -506,9 +495,7 @@ class TestApi(unittest.TestCase):
|
|||||||
self.assertTrue(prune_name in obj["NetworksDeleted"])
|
self.assertTrue(prune_name in obj["NetworksDeleted"])
|
||||||
|
|
||||||
def test_volumes_compat(self):
|
def test_volumes_compat(self):
|
||||||
name = "Volume_" + "".join(
|
name = "Volume_" + "".join(random.choice(string.ascii_letters) for i in range(10))
|
||||||
random.choice(string.ascii_letters) for i in range(10)
|
|
||||||
)
|
|
||||||
|
|
||||||
ls = requests.get(PODMAN_URL + "/v1.40/volumes")
|
ls = requests.get(PODMAN_URL + "/v1.40/volumes")
|
||||||
self.assertEqual(ls.status_code, 200, ls.content)
|
self.assertEqual(ls.status_code, 200, ls.content)
|
||||||
@ -524,9 +511,7 @@ class TestApi(unittest.TestCase):
|
|||||||
for k in required_keys:
|
for k in required_keys:
|
||||||
self.assertIn(k, obj)
|
self.assertIn(k, obj)
|
||||||
|
|
||||||
create = requests.post(
|
create = requests.post(PODMAN_URL + "/v1.40/volumes/create", json={"Name": name})
|
||||||
PODMAN_URL + "/v1.40/volumes/create", json={"Name": name}
|
|
||||||
)
|
|
||||||
self.assertEqual(create.status_code, 201, create.content)
|
self.assertEqual(create.status_code, 201, create.content)
|
||||||
|
|
||||||
# See https://docs.docker.com/engine/api/v1.40/#operation/VolumeCreate
|
# See https://docs.docker.com/engine/api/v1.40/#operation/VolumeCreate
|
||||||
@ -703,21 +688,15 @@ class TestApi(unittest.TestCase):
|
|||||||
"""Verify issue #8865"""
|
"""Verify issue #8865"""
|
||||||
|
|
||||||
pod_name = list()
|
pod_name = list()
|
||||||
pod_name.append(
|
pod_name.append("Pod_" + "".join(random.choice(string.ascii_letters) for i in range(10)))
|
||||||
"Pod_" + "".join(random.choice(string.ascii_letters) for i in range(10))
|
pod_name.append("Pod_" + "".join(random.choice(string.ascii_letters) for i in range(10)))
|
||||||
)
|
|
||||||
pod_name.append(
|
|
||||||
"Pod_" + "".join(random.choice(string.ascii_letters) for i in range(10))
|
|
||||||
)
|
|
||||||
|
|
||||||
r = requests.post(
|
r = requests.post(
|
||||||
_url("/pods/create"),
|
_url("/pods/create"),
|
||||||
json={
|
json={
|
||||||
"name": pod_name[0],
|
"name": pod_name[0],
|
||||||
"no_infra": False,
|
"no_infra": False,
|
||||||
"portmappings": [
|
"portmappings": [{"host_ip": "127.0.0.1", "host_port": 8889, "container_port": 89}],
|
||||||
{"host_ip": "127.0.0.1", "host_port": 8889, "container_port": 89}
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
self.assertEqual(r.status_code, 201, r.text)
|
self.assertEqual(r.status_code, 201, r.text)
|
||||||
@ -736,9 +715,7 @@ class TestApi(unittest.TestCase):
|
|||||||
json={
|
json={
|
||||||
"name": pod_name[1],
|
"name": pod_name[1],
|
||||||
"no_infra": False,
|
"no_infra": False,
|
||||||
"portmappings": [
|
"portmappings": [{"host_ip": "127.0.0.1", "host_port": 8889, "container_port": 89}],
|
||||||
{"host_ip": "127.0.0.1", "host_port": 8889, "container_port": 89}
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
self.assertEqual(r.status_code, 201, r.text)
|
self.assertEqual(r.status_code, 201, r.text)
|
||||||
|
Reference in New Issue
Block a user