mirror of
https://github.com/kernelkit/infix.git
synced 2026-08-03 14:23:02 +02:00
test: verify modifying a running container takes
Add new test step that adds a content mount to /var/www/index.html to verify that changes to a running container are activated. This test pass was previously part of the container bridge test, but was moved here to allow that test to focus on bridge specific checks. Issue #930 Signed-off-by: Joachim Wiberg <troglobit@gmail.com>
This commit is contained in:
@@ -17,10 +17,12 @@ endif::testgroup[]
|
||||
endif::topdoc[]
|
||||
==== Test sequence
|
||||
. Set up topology and attach to target DUT
|
||||
. Create container 'web-phys' from bundled OCI image
|
||||
. Verify container 'web-phys' has started
|
||||
. Create httpd container from bundled OCI image
|
||||
. Verify container has started
|
||||
. Verify host:data can ping 10.0.0.2
|
||||
. Verify container 'web-phys' is reachable on http://10.0.0.2:91
|
||||
. Verify container is reachable on http://10.0.0.2:91
|
||||
. Add a content mount, overriding index.html
|
||||
. Verify server is restarted and returns new content
|
||||
|
||||
|
||||
<<<
|
||||
|
||||
@@ -11,12 +11,14 @@ given a physical interface instead of an end of a VETH pair.
|
||||
"""
|
||||
import base64
|
||||
import infamy
|
||||
from infamy.util import until
|
||||
from infamy.util import until, to_binary
|
||||
|
||||
with infamy.Test() as test:
|
||||
NAME = "web-phys"
|
||||
DUTIP = "10.0.0.2"
|
||||
OURIP = "10.0.0.1"
|
||||
MESG = "Kilroy was here"
|
||||
BODY = f"<html><body><p>{MESG}</p></body></html>"
|
||||
URL = f"http://{DUTIP}:91/index.html"
|
||||
|
||||
with test.step("Set up topology and attach to target DUT"):
|
||||
@@ -26,43 +28,39 @@ with infamy.Test() as test:
|
||||
if not target.has_model("infix-containers"):
|
||||
test.skip()
|
||||
|
||||
with test.step("Create container 'web-phys' from bundled OCI image"):
|
||||
with test.step("Create httpd container from bundled OCI image"):
|
||||
_, ifname = env.ltop.xlate("target", "data")
|
||||
|
||||
target.put_config_dict("ietf-interfaces", {
|
||||
"interfaces": {
|
||||
"interface": [
|
||||
{
|
||||
"name": f"{ifname}",
|
||||
"ipv4": {
|
||||
"address": [{
|
||||
"ip": f"{DUTIP}",
|
||||
"prefix-length": 24
|
||||
}]
|
||||
},
|
||||
"container-network": {}
|
||||
}
|
||||
]
|
||||
"interface": [{
|
||||
"name": f"{ifname}",
|
||||
"ipv4": {
|
||||
"address": [{
|
||||
"ip": f"{DUTIP}",
|
||||
"prefix-length": 24
|
||||
}]
|
||||
},
|
||||
"container-network": {}
|
||||
}]
|
||||
}
|
||||
})
|
||||
target.put_config_dict("infix-containers", {
|
||||
"containers": {
|
||||
"container": [
|
||||
{
|
||||
"name": f"{NAME}",
|
||||
"image": f"oci-archive:{infamy.Container.HTTPD_IMAGE}",
|
||||
"command": "/usr/sbin/httpd -f -v -p 91",
|
||||
"network": {
|
||||
"interface": [
|
||||
{ "name": f"{ifname}" }
|
||||
]
|
||||
}
|
||||
"container": [{
|
||||
"name": f"{NAME}",
|
||||
"image": f"oci-archive:{infamy.Container.HTTPD_IMAGE}",
|
||||
"command": "/usr/sbin/httpd -f -v -p 91",
|
||||
"network": {
|
||||
"interface": [
|
||||
{"name": f"{ifname}"}
|
||||
]
|
||||
}
|
||||
]
|
||||
}]
|
||||
}
|
||||
})
|
||||
|
||||
with test.step("Verify container 'web-phys' has started"):
|
||||
with test.step("Verify container has started"):
|
||||
c = infamy.Container(target)
|
||||
until(lambda: c.running(NAME), attempts=10)
|
||||
|
||||
@@ -74,7 +72,27 @@ with infamy.Test() as test:
|
||||
with test.step("Verify host:data can ping 10.0.0.2"):
|
||||
ns.must_reach(DUTIP)
|
||||
|
||||
with test.step("Verify container 'web-phys' is reachable on http://10.0.0.2:91"):
|
||||
with test.step("Verify container is reachable on http://10.0.0.2:91"):
|
||||
until(lambda: url.nscheck(ns, "It works"), attempts=10)
|
||||
|
||||
with test.step("Add a content mount, overriding index.html"):
|
||||
# Verify modifying a running container takes, issue #930
|
||||
data = to_binary(BODY)
|
||||
|
||||
target.put_config_dict("infix-containers", {
|
||||
"containers": {
|
||||
"container": [{
|
||||
"name": f"{NAME}",
|
||||
"mount": [{
|
||||
"name": "index.html",
|
||||
"content": f"{data}",
|
||||
"target": "/var/www/index.html"
|
||||
}]
|
||||
}]
|
||||
}
|
||||
})
|
||||
|
||||
with test.step("Verify server is restarted and returns new content"):
|
||||
until(lambda: url.nscheck(ns, MESG), attempts=10)
|
||||
|
||||
test.succeed()
|
||||
|
||||
Reference in New Issue
Block a user