0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-10-18 09:58:43 +00:00
bird/flock/bgp-secondary/test.py
Maria Matejka 6ee70f196a Flock: log checking
Checking is done inline and asynchronously, every log message should be
explicitly expected, otherwise it's reported. It also has an implicit
timeout of 1s for the log message to appear, otherwise it fails as well.
2024-07-23 16:16:24 +02:00

117 lines
3.4 KiB
Python

#!/usr/bin/python3
import asyncio
from python.BIRD.Test import Test, BIRDInstance
class ThisTest(Test):
async def prepare(self):
# Set epoch
self.epoch = 0
# Prepare machines and links
self.src, self.dest = await self.machines(
"src", "dest",
t=BIRDInstance,
)
self.links = {
"L": await self.link("L", "src", "dest")
}
async def test(self):
# Startup check
await self.route_dump(10, "startup")
wtb = ["p170", "p180", "p190", "p200"]
btw = [*reversed(wtb)]
# Enable worst to best
for p in wtb:
await self.src.enable(p)
await self.route_dump(1, f"enable-{p}")
# Disable worst to best
for p in wtb:
await self.src.disable(p)
await self.route_dump(1, f"disable-{p}")
# Enable best to worst
for p in btw:
await self.src.enable(p)
await self.route_dump(1, f"enable-{p}")
# Disable best to worst
for p in btw:
await self.src.disable(p)
await self.route_dump(1, f"disable-{p}")
# Re-enable all at once
await asyncio.gather(*[ self.src.enable(p) for p in wtb ])
await self.route_dump(5, f"add-all")
# Update configuration
self.epoch = 1
self.src.write_config(test=self)
await self.src.configure(expected_logs=[
f"<INFO> Reconfiguring$",
f"<INFO> Reloading channel LINK.ipv6",
f"<INFO> Reconfigured$",
])
await self.route_dump(5, f"check-reconfig")
# Disable worst to best
for p in wtb:
await self.src.disable(p)
await self.route_dump(1, f"disable-{p}")
# Enable best to worst
for p in btw:
await self.src.enable(p)
await self.route_dump(1, f"enable-{p}")
# Disable best to worst
for p in btw:
await self.src.disable(p)
await self.route_dump(1, f"disable-{p}")
# Enable worst to best
for p in wtb:
await self.src.enable(p)
await self.route_dump(1, f"enable-{p}")
# Update configuration once again
self.epoch = 2
self.src.write_config(test=self)
await self.src.configure(expected_logs=[
f"<INFO> Reconfiguring$",
f"<INFO> Reloading channel LINK.ipv6",
f"<INFO> Reconfigured$",
])
await self.route_dump(5, f"check-reconfig")
# Disable best to worst
for p in btw:
await self.src.disable(p)
await self.route_dump(1, f"disable-{p}")
# Enable best to worst
for p in btw:
await self.src.enable(p)
await self.route_dump(1, f"enable-{p}")
# Disable worst to best
for p in wtb:
await self.src.disable(p)
await self.route_dump(1, f"disable-{p}")
# Enable worst to best
for p in wtb:
await self.src.enable(p)
await self.route_dump(1, f"enable-{p}")
# Pre-cleanup log checker
self.src.default_log_checker.append(f"{self.src.logprefix} <RMT> LINK: Received: Administrative shutdown")
self.dest.default_log_checker.append(f"{self.dest.logprefix} <RMT> LINK: Received: Administrative shutdown")
# Regular cleanup
await self.cleanup()