This patch removes some code duplicity by using code from the base
classes.
For pings within the vlan the RatePingEvaluator is used, for cross-vlan
ping the ZeroPassPingEvaluator is used.
Signed-off-by: Jan Tluka <jtluka(a)redhat.com>
---
lnst/Recipes/ENRT/VirtOvsVxlanRecipe.py | 46 +++--------------
.../ENRT/VirtualBridgeVlansOverBondRecipe.py | 49 ++++---------------
.../VirtualOvsBridgeVlansOverBondRecipe.py | 49 ++++---------------
lnst/Recipes/ENRT/VlansOverBondRecipe.py | 49 ++++---------------
lnst/Recipes/ENRT/VlansOverTeamRecipe.py | 49 ++++---------------
lnst/Recipes/ENRT/VlansRecipe.py | 49 ++++---------------
6 files changed, 53 insertions(+), 238 deletions(-)
diff --git a/lnst/Recipes/ENRT/VirtOvsVxlanRecipe.py
b/lnst/Recipes/ENRT/VirtOvsVxlanRecipe.py
index c1fc1478..3c966ad4 100644
--- a/lnst/Recipes/ENRT/VirtOvsVxlanRecipe.py
+++ b/lnst/Recipes/ENRT/VirtOvsVxlanRecipe.py
@@ -5,6 +5,8 @@ from lnst.Recipes.ENRT.BaseEnrtRecipe import BaseEnrtRecipe
from lnst.Recipes.ENRT.ConfigMixins.CommonHWSubConfigMixin import (
CommonHWSubConfigMixin)
from lnst.Devices import OvsBridgeDevice
+from lnst.RecipeCommon.Ping.Evaluators import (
+ ZeroPassPingEvaluator, RatePingEvaluator)
class VirtOvsVxlanRecipe(CommonHWSubConfigMixin, BaseEnrtRecipe):
host1 = HostReq()
@@ -148,47 +150,15 @@ class VirtOvsVxlanRecipe(CommonHWSubConfigMixin, BaseEnrtRecipe):
def do_ping_tests(self, recipe_config):
for ping_config in self.generate_ping_configurations(recipe_config):
I think at this point it might just be easier to extend the
generate_ping_configurations method instead and keep using the original
do_ping_tests method as it is defined in the parent class. So it should
just look something like this:
def generate_ping_configurations(self, recipe_config):
for ping_config in super().generate_ping_configurations(recipe_config):
#add the condition and evaluator registration here
yield ping_config
This saves the two following lines that otherwise need to be part of the
loop...
result = self.ping_test(ping_config, exp_fail)
self.ping_evaluate_and_report(result)
Same pattern applies for all the other recipes as well.
- exp_fail = []
for pconf in ping_config:
cond = self.tun_id_match(pconf.client_bind,
pconf.destination_address)
- exp_fail.append(cond)
- result = self.ping_test(ping_config, exp_fail)
- self.ping_evaluate_and_report(result)
-
- def ping_test(self, ping_config, exp_fail):
- results = {}
-
- running_ping_array = []
- for pingconf, fail in zip(ping_config, exp_fail):
- ping, client = self.ping_init(pingconf)
- running_ping = client.prepare_job(ping, fail=fail)
- running_ping.start(bg = True)
- running_ping_array.append((pingconf, running_ping))
-
- for _, pingjob in running_ping_array:
- try:
- pingjob.wait()
- finally:
- pingjob.kill()
-
- for pingconf, pingjob in running_ping_array:
- result = pingjob.result
- passed = pingjob.passed
- results[pingconf] = (result, passed)
-
- return results
-
- def single_ping_evaluate_and_report(self, ping_config, result):
- fmt = "From: <{0.client.hostid} ({0.client_bind})> To: " \
- "<{0.destination.hostid} ({0.destination_address})>"
- description = fmt.format(ping_config)
- if result[0].get("rate", 0) > 50:
- message = "Ping successful --- " + description
- self.add_result(result[1], message, result[0])
- else:
- message = "Ping unsuccessful --- " + description
- self.add_result(result[1], message, result[0])
+ if cond:
+ pconf.register_evaluators([ZeroPassPingEvaluator()])
+ else:
+ pconf.register_evaluators([RatePingEvaluator(min_rate=50)])
+ result = self.ping_test(ping_config)
+ self.ping_report_and_evaluate(result)
def tun_id_match(self, src_addr, dst_addr):
guest1, guest2, guest3, guest4 = (self.matched.guest1,
diff --git a/lnst/Recipes/ENRT/VirtualBridgeVlansOverBondRecipe.py
b/lnst/Recipes/ENRT/VirtualBridgeVlansOverBondRecipe.py
index 8edf4234..fbda81ab 100644
--- a/lnst/Recipes/ENRT/VirtualBridgeVlansOverBondRecipe.py
+++ b/lnst/Recipes/ENRT/VirtualBridgeVlansOverBondRecipe.py
@@ -10,6 +10,8 @@ from lnst.Recipes.ENRT.ConfigMixins.CommonHWSubConfigMixin import (
from lnst.Devices import VlanDevice
from lnst.Devices import BondDevice
from lnst.Devices import BridgeDevice
+from lnst.RecipeCommon.Ping.Evaluators import (
+ ZeroPassPingEvaluator, RatePingEvaluator)
class VirtualBridgeVlansOverBondRecipe(CommonHWSubConfigMixin,
OffloadSubConfigMixin, BaseEnrtRecipe):
@@ -182,49 +184,16 @@ class VirtualBridgeVlansOverBondRecipe(CommonHWSubConfigMixin,
self.ctl.wait_for_condition(condition, timeout=5)
def do_ping_tests(self, recipe_config):
- for ping_config in self.generate_ping_configurations(
- recipe_config):
- exp_fail = []
+ for ping_config in self.generate_ping_configurations(recipe_config):
for pconf in ping_config:
cond = self.vlan_id_match(pconf.client_bind,
pconf.destination_address)
- exp_fail.append(cond)
- result = self.ping_test(ping_config, exp_fail)
- self.ping_evaluate_and_report(result)
-
- def ping_test(self, ping_config, exp_fail):
- results = {}
-
- running_ping_array = []
- for pingconf, fail in zip(ping_config, exp_fail):
- ping, client = self.ping_init(pingconf)
- running_ping = client.prepare_job(ping, fail=fail)
- running_ping.start(bg = True)
- running_ping_array.append((pingconf, running_ping))
-
- for _, pingjob in running_ping_array:
- try:
- pingjob.wait()
- finally:
- pingjob.kill()
-
- for pingconf, pingjob in running_ping_array:
- result = pingjob.result
- passed = pingjob.passed
- results[pingconf] = (result, passed)
-
- return results
-
- def single_ping_evaluate_and_report(self, ping_config, result):
- fmt = "From: <{0.client.hostid} ({0.client_bind})> To: " \
- "<{0.destination.hostid} ({0.destination_address})>"
- description = fmt.format(ping_config)
- if result[0].get("rate", 0) > 50:
- message = "Ping successful --- " + description
- self.add_result(result[1], message, result[0])
- else:
- message = "Ping unsuccessful --- " + description
- self.add_result(result[1], message, result[0])
+ if cond:
+ pconf.register_evaluators([ZeroPassPingEvaluator()])
+ else:
+ pconf.register_evaluators([RatePingEvaluator(min_rate=50)])
+ result = self.ping_test(ping_config)
+ self.ping_report_and_evaluate(result)
def vlan_id_match(self, src_addr, dst_addr):
guest1, guest2, guest3, guest4 = (self.matched.guest1,
diff --git a/lnst/Recipes/ENRT/VirtualOvsBridgeVlansOverBondRecipe.py
b/lnst/Recipes/ENRT/VirtualOvsBridgeVlansOverBondRecipe.py
index 7cc9641f..b89e5133 100644
--- a/lnst/Recipes/ENRT/VirtualOvsBridgeVlansOverBondRecipe.py
+++ b/lnst/Recipes/ENRT/VirtualOvsBridgeVlansOverBondRecipe.py
@@ -8,6 +8,8 @@ from lnst.Recipes.ENRT.ConfigMixins.OffloadSubConfigMixin import (
from lnst.Recipes.ENRT.ConfigMixins.CommonHWSubConfigMixin import (
CommonHWSubConfigMixin)
from lnst.Devices import OvsBridgeDevice
+from lnst.RecipeCommon.Ping.Evaluators import (
+ ZeroPassPingEvaluator, RatePingEvaluator)
class VirtualOvsBridgeVlansOverBondRecipe(CommonHWSubConfigMixin,
OffloadSubConfigMixin, BaseEnrtRecipe):
@@ -186,49 +188,16 @@ class VirtualOvsBridgeVlansOverBondRecipe(CommonHWSubConfigMixin,
self.matched.host2.eth0, self.matched.host2.eth1]
def do_ping_tests(self, recipe_config):
- for ping_config in self.generate_ping_configurations(
- recipe_config):
- exp_fail = []
+ for ping_config in self.generate_ping_configurations(recipe_config):
for pconf in ping_config:
cond = self.vlan_id_match(pconf.client_bind,
pconf.destination_address)
- exp_fail.append(cond)
- result = self.ping_test(ping_config, exp_fail)
- self.ping_evaluate_and_report(result)
-
- def ping_test(self, ping_config, exp_fail):
- results = {}
-
- running_ping_array = []
- for pingconf, fail in zip(ping_config, exp_fail):
- ping, client = self.ping_init(pingconf)
- running_ping = client.prepare_job(ping, fail=fail)
- running_ping.start(bg = True)
- running_ping_array.append((pingconf, running_ping))
-
- for _, pingjob in running_ping_array:
- try:
- pingjob.wait()
- finally:
- pingjob.kill()
-
- for pingconf, pingjob in running_ping_array:
- result = pingjob.result
- passed = pingjob.passed
- results[pingconf] = (result, passed)
-
- return results
-
- def single_ping_evaluate_and_report(self, ping_config, result):
- fmt = "From: <{0.client.hostid} ({0.client_bind})> To: " \
- "<{0.destination.hostid} ({0.destination_address})>"
- description = fmt.format(ping_config)
- if result[0].get("rate", 0) > 50:
- message = "Ping successful --- " + description
- self.add_result(result[1], message, result[0])
- else:
- message = "Ping unsuccessful --- " + description
- self.add_result(result[1], message, result[0])
+ if cond:
+ pconf.register_evaluators([ZeroPassPingEvaluator()])
+ else:
+ pconf.register_evaluators([RatePingEvaluator(min_rate=50)])
+ result = self.ping_test(ping_config)
+ self.ping_report_and_evaluate(result)
def vlan_id_match(self, src_addr, dst_addr):
guest1, guest2, guest3, guest4 = (self.matched.guest1,
diff --git a/lnst/Recipes/ENRT/VlansOverBondRecipe.py
b/lnst/Recipes/ENRT/VlansOverBondRecipe.py
index 12ce812d..d2e1514d 100644
--- a/lnst/Recipes/ENRT/VlansOverBondRecipe.py
+++ b/lnst/Recipes/ENRT/VlansOverBondRecipe.py
@@ -9,6 +9,8 @@ from lnst.Recipes.ENRT.ConfigMixins.CommonHWSubConfigMixin import (
from lnst.Devices import VlanDevice
from lnst.Devices.VlanDevice import VlanDevice as Vlan
from lnst.Devices import BondDevice
+from lnst.RecipeCommon.Ping.Evaluators import (
+ ZeroPassPingEvaluator, RatePingEvaluator)
class VlansOverBondRecipe(CommonHWSubConfigMixin, OffloadSubConfigMixin,
BaseEnrtRecipe):
@@ -174,49 +176,16 @@ class VlansOverBondRecipe(CommonHWSubConfigMixin,
OffloadSubConfigMixin,
return [host1.eth0, host1.eth1, host2.eth0]
def do_ping_tests(self, recipe_config):
- for ping_config in self.generate_ping_configurations(
- recipe_config):
- exp_fail = []
+ for ping_config in self.generate_ping_configurations(recipe_config):
for pconf in ping_config:
cond = self.vlan_id_same(pconf.client_bind,
pconf.destination_address)
- exp_fail.append(cond)
- result = self.ping_test(ping_config, exp_fail)
- self.ping_evaluate_and_report(result)
-
- def ping_test(self, ping_config, exp_fail):
- results = {}
-
- running_ping_array = []
- for pingconf, fail in zip(ping_config, exp_fail):
- ping, client = self.ping_init(pingconf)
- running_ping = client.prepare_job(ping, fail=fail)
- running_ping.start(bg = True)
- running_ping_array.append((pingconf, running_ping))
-
- for _, pingjob in running_ping_array:
- try:
- pingjob.wait()
- finally:
- pingjob.kill()
-
- for pingconf, pingjob in running_ping_array:
- result = pingjob.result
- passed = pingjob.passed
- results[pingconf] = (result, passed)
-
- return results
-
- def single_ping_evaluate_and_report(self, ping_config, result):
- fmt = "From: <{0.client.hostid} ({0.client_bind})> To: " \
- "<{0.destination.hostid} ({0.destination_address})>"
- description = fmt.format(ping_config)
- if result[0].get("rate", 0) > 50:
- message = "Ping successful --- " + description
- self.add_result(result[1], message, result[0])
- else:
- message = "Ping unsuccessful --- " + description
- self.add_result(result[1], message, result[0])
+ if cond:
+ pconf.register_evaluators([ZeroPassPingEvaluator()])
+ else:
+ pconf.register_evaluators([RatePingEvaluator(min_rate=50)])
+ result = self.ping_test(ping_config)
+ self.ping_report_and_evaluate(result)
def vlan_id_same(self, src_addr, dst_addr):
host1, host2 = self.matched.host1, self.matched.host2
diff --git a/lnst/Recipes/ENRT/VlansOverTeamRecipe.py
b/lnst/Recipes/ENRT/VlansOverTeamRecipe.py
index 679ab35f..ffe91fd0 100644
--- a/lnst/Recipes/ENRT/VlansOverTeamRecipe.py
+++ b/lnst/Recipes/ENRT/VlansOverTeamRecipe.py
@@ -9,6 +9,8 @@ from lnst.Recipes.ENRT.ConfigMixins.CommonHWSubConfigMixin import (
from lnst.Devices import VlanDevice
from lnst.Devices.VlanDevice import VlanDevice as Vlan
from lnst.Devices import TeamDevice
+from lnst.RecipeCommon.Ping.Evaluators import (
+ ZeroPassPingEvaluator, RatePingEvaluator)
class VlansOverTeamRecipe(CommonHWSubConfigMixin, OffloadSubConfigMixin,
BaseEnrtRecipe):
@@ -171,49 +173,16 @@ class VlansOverTeamRecipe(CommonHWSubConfigMixin,
OffloadSubConfigMixin,
return [host1.eth0, host1.eth1, host2.eth0]
def do_ping_tests(self, recipe_config):
- for ping_config in self.generate_ping_configurations(
- recipe_config):
- exp_fail = []
+ for ping_config in self.generate_ping_configurations(recipe_config):
for pconf in ping_config:
cond = self.vlan_id_same(pconf.client_bind,
pconf.destination_address)
- exp_fail.append(cond)
- result = self.ping_test(ping_config, exp_fail)
- self.ping_evaluate_and_report(result)
-
- def ping_test(self, ping_config, exp_fail):
- results = {}
-
- running_ping_array = []
- for pingconf, fail in zip(ping_config, exp_fail):
- ping, client = self.ping_init(pingconf)
- running_ping = client.prepare_job(ping, fail=fail)
- running_ping.start(bg = True)
- running_ping_array.append((pingconf, running_ping))
-
- for _, pingjob in running_ping_array:
- try:
- pingjob.wait()
- finally:
- pingjob.kill()
-
- for pingconf, pingjob in running_ping_array:
- result = pingjob.result
- passed = pingjob.passed
- results[pingconf] = (result, passed)
-
- return results
-
- def single_ping_evaluate_and_report(self, ping_config, result):
- fmt = "From: <{0.client.hostid} ({0.client_bind})> To: " \
- "<{0.destination.hostid} ({0.destination_address})>"
- description = fmt.format(ping_config)
- if result[0].get("rate", 0) > 50:
- message = "Ping successful --- " + description
- self.add_result(result[1], message, result[0])
- else:
- message = "Ping unsuccessful --- " + description
- self.add_result(result[1], message, result[0])
+ if cond:
+ pconf.register_evaluators([ZeroPassPingEvaluator()])
+ else:
+ pconf.register_evaluators([RatePingEvaluator(min_rate=50)])
+ result = self.ping_test(ping_config)
+ self.ping_report_and_evaluate(result)
def vlan_id_same(self, src_addr, dst_addr):
host1, host2 = self.matched.host1, self.matched.host2
diff --git a/lnst/Recipes/ENRT/VlansRecipe.py b/lnst/Recipes/ENRT/VlansRecipe.py
index 38f1f454..bd9e0555 100644
--- a/lnst/Recipes/ENRT/VlansRecipe.py
+++ b/lnst/Recipes/ENRT/VlansRecipe.py
@@ -7,6 +7,8 @@ from lnst.Recipes.ENRT.ConfigMixins.OffloadSubConfigMixin import (
from lnst.Recipes.ENRT.ConfigMixins.CommonHWSubConfigMixin import (
CommonHWSubConfigMixin)
from lnst.Devices import VlanDevice
+from lnst.RecipeCommon.Ping.Evaluators import (
+ ZeroPassPingEvaluator, RatePingEvaluator)
class VlansRecipe(CommonHWSubConfigMixin, OffloadSubConfigMixin,
BaseEnrtRecipe):
@@ -140,49 +142,16 @@ class VlansRecipe(CommonHWSubConfigMixin, OffloadSubConfigMixin,
return [self.matched.host1.eth0, self.matched.host2.eth0]
def do_ping_tests(self, recipe_config):
- for ping_config in self.generate_ping_configurations(
- recipe_config):
- exp_fail = []
+ for ping_config in self.generate_ping_configurations(recipe_config):
for pconf in ping_config:
cond = self.vlan_id_same(pconf.client_bind,
pconf.destination_address)
- exp_fail.append(cond)
- result = self.ping_test(ping_config, exp_fail)
- self.ping_evaluate_and_report(result)
-
- def ping_test(self, ping_config, exp_fail):
- results = {}
-
- running_ping_array = []
- for pingconf, fail in zip(ping_config, exp_fail):
- ping, client = self.ping_init(pingconf)
- running_ping = client.prepare_job(ping, fail=fail)
- running_ping.start(bg = True)
- running_ping_array.append((pingconf, running_ping))
-
- for _, pingjob in running_ping_array:
- try:
- pingjob.wait()
- finally:
- pingjob.kill()
-
- for pingconf, pingjob in running_ping_array:
- result = pingjob.result
- passed = pingjob.passed
- results[pingconf] = (result, passed)
-
- return results
-
- def single_ping_evaluate_and_report(self, ping_config, result):
- fmt = "From: <{0.client.hostid} ({0.client_bind})> To: " \
- "<{0.destination.hostid} ({0.destination_address})>"
- description = fmt.format(ping_config)
- if result[0].get("rate", 0) > 50:
- message = "Ping successful --- " + description
- self.add_result(result[1], message, result[0])
- else:
- message = "Ping unsuccessful --- " + description
- self.add_result(result[1], message, result[0])
+ if cond:
+ pconf.register_evaluators([ZeroPassPingEvaluator()])
+ else:
+ pconf.register_evaluators([RatePingEvaluator(min_rate=50)])
+ result = self.ping_test(ping_config)
+ self.ping_report_and_evaluate(result)
def vlan_id_same(self, src_addr, dst_addr):
host1, host2 = self.matched.host1, self.matched.host2
--
2.21.1
_______________________________________________
LNST-developers mailing list -- lnst-developers(a)lists.fedorahosted.org
To unsubscribe send an email to lnst-developers-leave(a)lists.fedorahosted.org
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedorahosted.org/archives/list/lnst-developers@lists.fedora...