Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
266 changes: 266 additions & 0 deletions tests/Valimar/Stats/TEST_Stats_Spotlight_Sid.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,266 @@
import time
from .Stats_Common import Stats_CommonTestCase
from .Stats_Common import (
STUB_srteSensorConfigCliCreate,
STUB_srteSensorConfigCliDelete,
)
from utilities.commonPredicates import checkTrue
from utilities.prereq import Prereq
import utilities.SR.Predicates as SR_Preds


class TEST_Stats_Spotlight_Sid(Stats_CommonTestCase):
"""
SR Sid Spotlight.
"""

def testSetup(self):
super().testSetup()

for d in self.ALL_DEVICES:
d.stubEnable(STUB_srteSensorConfigCliCreate)
d.stubEnable(STUB_srteSensorConfigCliDelete)

def testExecute(self):
algo0_labels = [16001, 16002, 16003]
flex_labels = [17002, 17003, 18002, 18003, 19002, 19003]
adj_labels = [32000, 32001]

with self.testlog.step(
"Enable spotlight+collection on algo0 range",
pass_on_exit=True,
reraise_ex=True,
):
for l in algo0_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.sendConfig(
"""segment-routing sid-stats-range "16000" "16999" stats-spotlight-state on"""
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Disable spotlight on algo0 range",
pass_on_exit=True,
reraise_ex=True,
):
for l in algo0_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.sendConfig(
"""segment-routing sid-stats-range "16000" "16999" stats-spotlight-state off"""
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Re-Enable spotlight on algo0 range",
pass_on_exit=True,
reraise_ex=True,
):
for l in algo0_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.sendConfig(
"""segment-routing sid-stats-range "16000" "16999" stats-spotlight-state on"""
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Remove the algo0 range",
pass_on_exit=True,
reraise_ex=True,
):
for l in algo0_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.sendConfig(
"""no segment-routing sid-stats-range "16000" "16999" """
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Enable spotlight+collection on flex range",
pass_on_exit=True,
reraise_ex=True,
):
for l in flex_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
# no labels alloc'ed for FA local, but stats still enabled
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.sendConfig(
"""segment-routing sid-stats-range "17000" "19999" stats-spotlight-state on"""
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Disable spotlight on flex range",
pass_on_exit=True,
reraise_ex=True,
):
for l in flex_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
# no labels alloc'ed for FA local, but stats still enabled
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.sendConfig(
"""segment-routing sid-stats-range "17000" "19999" stats-spotlight-state off"""
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Re-Enable spotlight on flex range",
pass_on_exit=True,
reraise_ex=True,
):
for l in flex_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
# no labels alloc'ed for FA local, but stats still enabled
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.sendConfig(
"""segment-routing sid-stats-range "17000" "19999" stats-spotlight-state on"""
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Remove the flex range",
pass_on_exit=True,
reraise_ex=True,
):
for l in flex_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
# no labels alloc'ed for FA local, but stats still enabled
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.sendConfig(
"""no segment-routing sid-stats-range "17000" "19999" """
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Enable spotlight+collection on adjacency SID labels",
pass_on_exit=True,
reraise_ex=True,
):
for l in adj_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.sendConfig(
"""segment-routing adj-sid-stats stats-collection on stats-spotlight-state on"""
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Disable spotlight on adjacency SID labels",
pass_on_exit=True,
reraise_ex=True,
):
for l in adj_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.sendConfig(
"""segment-routing adj-sid-stats stats-spotlight-state off"""
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Re-Enable spotlight on adjacency SID labels",
pass_on_exit=True,
reraise_ex=True,
):
for l in adj_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.sendConfig(
"""segment-routing adj-sid-stats stats-spotlight-state on"""
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Remove adjacency SID spotlight configurations",
pass_on_exit=True,
reraise_ex=True,
):
for l in adj_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.sendConfig(
"""no segment-routing adj-sid-stats stats-spotlight-state"""
)
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Re-Enable spotlight on adjacency SID labels and remove adjacency SID configurations",
pass_on_exit=True,
reraise_ex=True,
):
for l in adj_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.sendConfig(
"""segment-routing adj-sid-stats stats-spotlight-state on"""
)
self.sanityCheck(devices=[self.UUT])
for l in adj_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.sendConfig("""no segment-routing adj-sid-stats""")
self.sanityCheck(devices=[self.UUT])

with self.testlog.step(
"Re-Enable spotlight on SIDs and remove all segment-routing configurations",
pass_on_exit=True,
reraise_ex=True,
):
# Re-enable spotlight on algo0 labels (16000-16999 range)
for l in algo0_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.sendConfig(
"""segment-routing sid-stats-range "16000" "16999" stats-spotlight-state on"""
)
self.sanityCheck(devices=[self.UUT])

# Re-enable spotlight on flex labels (17000-19999 range)
for l in flex_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
# no labels alloc'ed for FA local, but stats still enabled
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.sendConfig(
"""segment-routing sid-stats-range "17000" "19999" stats-spotlight-state on"""
)
self.sanityCheck(devices=[self.UUT])

# Re-enable spotlight on adjacency SID labels
for l in adj_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliCreate, f"0 1")
self.UUT.sendConfig(
"""segment-routing adj-sid-stats stats-collection on stats-spotlight-state on"""
)
self.sanityCheck(devices=[self.UUT])

# Now use "no segment-routing" to disable all spotlight configurations
# This should delete all the sensors that were created above

# Expect deletion of algo0 labels
for l in algo0_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")

# Expect deletion of flex labels
for l in flex_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
# no labels alloc'ed for FA local, but stats still enabled
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")

# Expect deletion of adjacency SID labels
for l in adj_labels:
self.UUT.stubExpect(STUB_srteSensorConfigCliDelete, f"0 1")

# Execute the "no segment-routing" command to disable all segment-routing features
self.UUT.sendConfig("""no segment-routing""")
self.sanityCheck(devices=[self.UUT])

def testCleanup(self):
for d in self.ALL_DEVICES:
d.stubDisable(STUB_srteSensorConfigCliCreate)
d.stubDisable(STUB_srteSensorConfigCliDelete)

super().testCleanup()
Binary file not shown.