X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=yardstick%2Fnetwork_services%2Fvnf_generic%2Fvnf%2Fbase.py;h=fb41a4e4a377dbd13c6d015f888d72656193baf4;hb=5e531e1e38da7670a1226aec4c664ef96a77335e;hp=804257fe903680df6be56c0f4982fb79794a97a2;hpb=5ea92a3ba1c5bbd011c9d9ae0f2c686aa59417af;p=yardstick.git diff --git a/yardstick/network_services/vnf_generic/vnf/base.py b/yardstick/network_services/vnf_generic/vnf/base.py index 804257fe9..fb41a4e4a 100644 --- a/yardstick/network_services/vnf_generic/vnf/base.py +++ b/yardstick/network_services/vnf_generic/vnf/base.py @@ -19,6 +19,7 @@ import logging import six from yardstick.common import messaging +from yardstick.common.messaging import payloads from yardstick.common.messaging import producer from yardstick.network_services.helpers.samplevnf_helper import PortPairs @@ -146,9 +147,31 @@ class TrafficGeneratorProducer(producer.MessagingProducer): This message producer must be instantiated in the process created "run_traffic" process. """ - def __init__(self, pid): + def __init__(self, _id): super(TrafficGeneratorProducer, self).__init__(messaging.TOPIC_TG, - pid=pid) + _id=_id) + + def tg_method_started(self, version=1): + """Send a message to inform the traffic generation has started""" + self.send_message( + messaging.TG_METHOD_STARTED, + payloads.TrafficGeneratorPayload(version=version, iteration=0, + kpi={})) + + def tg_method_finished(self, version=1): + """Send a message to inform the traffic generation has finished""" + self.send_message( + messaging.TG_METHOD_FINISHED, + payloads.TrafficGeneratorPayload(version=version, iteration=0, + kpi={})) + + def tg_method_iteration(self, iteration, version=1, kpi=None): + """Send a message, with KPI, once an iteration has finished""" + kpi = {} if kpi is None else kpi + self.send_message( + messaging.TG_METHOD_ITERATION, + payloads.TrafficGeneratorPayload(version=version, + iteration=iteration, kpi=kpi)) @six.add_metaclass(abc.ABCMeta) @@ -301,9 +324,15 @@ class GenericTrafficGen(GenericVNF): """ pass - def _setup_mq_producer(self, pid): + @staticmethod + def _setup_mq_producer(id): """Setup the TG MQ producer to send messages between processes :return: (derived class from ``MessagingProducer``) MQ producer object """ - return TrafficGeneratorProducer(pid) + return TrafficGeneratorProducer(id) + + def get_mq_producer_id(self): + """Return the MQ producer ID if initialized""" + if self._mq_producer: + return self._mq_producer.get_id()