How to use the powerapi.actor.Actor function in powerapi

To help you get started, we’ve selected a few powerapi examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github powerapi-ng / powerapi / tests / unit / actor / abstract_test_actor.py View on Github external
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import time

from multiprocessing import Queue
from mock import Mock

import pytest

from powerapi.message import PoisonPillMessage, StartMessage, OKMessage, ErrorMessage
from powerapi.actor import Actor, NotConnectedException

class FakeActor(Actor):

    def __init__(self, name, *args, queue=None, **kwargs):
        self.q = queue
        self.logger = Mock()
        self.logger.info = Mock()
        self.name = name
        self.socket_interface = Mock()
        self.q.put((name, args, kwargs))
        self.alive = False

    def connect_data(self):
        pass

    def connect_control(self):
        pass
github powerapi-ng / powerapi / tests / unit / actor / test_supervisor.py View on Github external
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""

import pytest
import zmq
from mock import Mock 
from powerapi.actor import Actor, Supervisor, ActorInitError, State
from powerapi.actor import SocketInterface, ActorAlreadySupervisedException
from powerapi.message import OKMessage, ErrorMessage, StartMessage

#########
# Utils #
#########

class FakeActor(Actor):

    def __init__(self):
        Actor.__init__(self, 'test_supervisor')
        self.state = State(Mock())
        self.send_msg = []
        self.alive = False

    def is_alive(self):
        return self.alive

    def kill(self):
        self.alive = False

    def join(self):
        pass
github powerapi-ng / powerapi / tests / unit / actor / test_actor.py View on Github external
"""

import logging
import pytest
from mock import Mock
import setproctitle

from powerapi.message import UnknowMessageTypeException, PoisonPillMessage
from powerapi.actor import Actor, State
from powerapi.handler import PoisonPillMessageHandler


ACTOR_NAME = "dummy_actor"
LOG_LEVEL = logging.NOTSET

class DummyActor(Actor):

    def __init__(self, name=ACTOR_NAME):
        Actor.__init__(self, name, level_logger=LOG_LEVEL)

    def setup(self):
        self.add_handler(PoisonPillMessage, PoisonPillMessageHandler(self.state))


@pytest.fixture()
def dummy_actor_mocked():
    """ Return a mocked dummy actor"""
    actor = DummyActor()
    actor._signal_handler_setup = Mock()
    actor.state = Mock()
    actor.socket_interface = Mock()
    actor.socket_interface.send_control = Mock()
github powerapi-ng / powerapi / powerapi / pusher / pusher_actor.py View on Github external
"""
        :param BaseDB database: Database for saving data.
        """
        State.__init__(self, actor)

        #: (BaseDB): Database for saving data.
        self.database = database

        #: (Report): Type of the report that the pusher handle.
        self.report_model = report_model

        #: (Dict): Buffer data.
        self.buffer = []


class PusherActor(Actor):
    """
    PusherActor class

    The Pusher allow to save Report sent by Formula.
    """

    def __init__(self, name, report_model, database, level_logger=logging.WARNING, timeout=1000, delay=100, max_size=50):
        """
        :param str name: Pusher name.
        :param Report report_model: ReportModel
        :param BaseDB database: Database use for saving data.
        :param int level_logger: Define the level of the logger
        :param int delay: number of ms before message containing in the buffer will be writen in database
        :param int max_size: maximum of message that the buffer can store before write them in database
        """
        Actor.__init__(self, name, level_logger, timeout)
github powerapi-ng / powerapi / powerapi / puller / puller_actor.py View on Github external
def __init__(self, name, database, report_filter, report_model, stream_mode=False, level_logger=logging.WARNING,
                 timeout=0, timeout_puller=100):
        """
        :param str name: Actor name.
        :param BaseDB database: Allow to interact with a Database.
        :param Filter report_filter: Filter of the Puller.
        :param int level_logger: Define the level of the logger
        :param int tiemout_puller: (require stream mode) time (in ms) between two database reading
        """

        Actor.__init__(self, name, level_logger, timeout)
        #: (State): Actor State.
        self.state = PullerState(self, database, report_filter, report_model, stream_mode, timeout_puller)
github powerapi-ng / powerapi / powerapi / formula / formula_actor.py View on Github external
def __init__(self, name, pushers: Dict[str, PusherActor], level_logger=logging.WARNING, timeout=None):
        """
        Initialize a new Formula actor.
        :param name: Actor name
        :param pushers: Pusher actors
        :param level_logger: Level of the logger
        :param timeout: Time in millisecond to wait for a message before calling the timeout handler
        """
        Actor.__init__(self, name, level_logger, timeout)
        self.state = FormulaState(self, pushers)
github powerapi-ng / powerapi / powerapi / dispatcher / dispatcher_actor.py View on Github external
def setup(self):
        """
        Check if there is a primary group by rule. Set define
        StartMessage, PoisonPillMessage and Report handlers
        """
        Actor.setup(self)
        if self.state.route_table.primary_dispatch_rule is None:
            raise NoPrimaryDispatchRuleRuleException()

        self.add_handler(Report, FormulaDispatcherReportHandler(self.state))
        self.add_handler(PoisonPillMessage, DispatcherPoisonPillMessageHandler(self.state))
        self.add_handler(StartMessage, StartHandler(self.state))