# -*- coding: utf-8 -*-
'''
    tests.integration.conftest
    ~~~~~~~~~~~~~~~~~~~~~~~~~~

    Integration tests PyTest configuration/fixtures
'''
# pylint: disable=unused-argument,redefined-outer-name

# Import Python libs
from __future__ import absolute_import, unicode_literals
import logging
from collections import OrderedDict

# Import 3rd-party libs
import psutil
import pytest

log = logging.getLogger(__name__)


@pytest.fixture(scope='package', autouse=True)
def default_session_daemons(request,
                            log_server,
                            session_salt_master,
                            session_salt_minion,
                            session_secondary_salt_minion,
                            ):

    request.session.stats_processes.update(OrderedDict((
        ('Salt Master', psutil.Process(session_salt_master.pid)),
        ('Salt Minion', psutil.Process(session_salt_minion.pid)),
        ('Salt Sub Minion', psutil.Process(session_secondary_salt_minion.pid)),
    )).items())

    # Run tests
    yield

    # Stop daemons now(they would be stopped at the end of the test run session
    for daemon in (session_secondary_salt_minion, session_salt_minion, session_salt_master):
        try:
            daemon.terminate()
        except Exception as exc:  # pylint: disable=broad-except
            log.warning('Failed to terminate daemon: %s', daemon.__class__.__name__)

# -*- coding: utf-8 -*-
'''
    tests.integration.conftest
    ~~~~~~~~~~~~~~~~~~~~~~~~~~

    Integration tests PyTest configuration/fixtures
'''
# pylint: disable=unused-argument,redefined-outer-name

# Import Python libs
from __future__ import absolute_import, unicode_literals
import logging
from collections import OrderedDict

# Import 3rd-party libs
import psutil
import pytest

log = logging.getLogger(__name__)


@pytest.fixture(scope='package', autouse=True)
def default_session_daemons(request,
                            log_server,
                            session_salt_master,
                            session_salt_minion,
                            session_secondary_salt_minion,
                            ):

    request.session.stats_processes.update(OrderedDict((
        ('Salt Master', psutil.Process(session_salt_master.pid)),
        ('Salt Minion', psutil.Process(session_salt_minion.pid)),
        ('Salt Sub Minion', psutil.Process(session_secondary_salt_minion.pid)),
    )).items())

    # Run tests
    yield

    # Stop daemons now(they would be stopped at the end of the test run session
    for daemon in (session_secondary_salt_minion, session_salt_minion, session_salt_master):
        try:
            daemon.terminate()
        except Exception as exc:  # pylint: disable=broad-except
            log.warning('Failed to terminate daemon: %s', daemon.__class__.__name__)

# -*- coding: utf-8 -*- tests.integration.conftest     ~~~~~~~~~~~~~~~~~~~~~~~~~~      Integration tests PyTest configuration/fixtures # pylint: disable=unused-argument,redefined-outer-name # Import Python libs # Import 3rd-party libs # Run tests # Stop daemons now(they would be stopped at the end of the test run session # pylint: disable=broad-except