def test_setup_pemserver_epas():
    if get_pg_type() != 'EPAS':
        pytest.skip()

    host = get_pemserver()
    packages = ['edb-pem-server']

    for package in packages:
        assert host.package(package).is_installed, \
            "Package %s not installed" % packages
def test_setup_pemagent_packages():
    host = get_pemserver()
    pg_version = get_pg_version()
    packages = [
        'edb-pem-agent',
    ]

    for package in packages:
        assert host.package(package).is_installed, \
            "Package %s not installed" % packages
def test_setup_pemserver_service():
    host = get_pemserver()
    pg_version = get_pg_version()
    service = 'pemagent'

    assert host.service(service).is_running, \
        "Pemagent service not running"

    assert host.service(service).is_enabled, \
        "Pemagent service not enabled"
def test_setup_pemserver_web_interface():
    pg_user = '******'
    pg_group = 'postgres'

    if get_pg_type() == 'EPAS':
        pg_user = '******'
        pg_group = 'enterprisedb'

    address = str(get_pemserver()).strip("<>").split('//')[1]
    host = get_pemserver()

    with host.sudo(pg_user):
        cmd = host.run(" curl --insecure -L -I https://%s/pem | grep HTTP" %
                       address)
        result = cmd.stdout.strip()

    # Getting status code after filtering out redirection
    result = result.split('\n')
    assert '200' in result[len(result)-1], \
        "PEM web interface is not up and running."
def test_setup_pemserver_pg():
    if get_pg_type() != 'PG':
        pytest.skip()

    host = get_pemserver()
    pg_version = get_pg_version()
    packages = [
        'edb-pem-server',
        'sslutils_%s' % pg_version,
        'postgresql%s-contrib' % pg_version,
    ]

    for package in packages:
        assert host.package(package).is_installed, \
            "Package %s not installed" % packages
def test_setup_pemserver_pemagent():
    pg_user = '******'
    pg_group = 'postgres'

    if get_pg_type() == 'EPAS':
        pg_user = '******'
        pg_group = 'enterprisedb'

    host = get_pemserver()
    socket_dir = get_pg_unix_socket_dir()

    with host.sudo(pg_user):
        query = "Select * from pg_user where usename = 'agent1'"
        cmd = host.run('psql -At -h %s -c "%s" postgres' % (socket_dir, query))
        result = cmd.stdout.strip()

    assert len(result) > 0, \
        "pemagent user was not succesfully created"
def test_setup_pemserver_creation():
    pg_user = '******'
    pg_group = 'postgres'

    if get_pg_type() == 'EPAS':
        pg_user = '******'
        pg_group = 'enterprisedb'

    host = get_pemserver()
    socket_dir = get_pg_unix_socket_dir()

    with host.sudo(pg_user):
        query = r"\list"
        cmd = host.run('psql -At -h %s -c "%s" postgres | grep pem' %
                       (socket_dir, query))
        result = cmd.stdout.strip()

    assert len(result) > 0, \
        "PEM database was not succesfully created"
def test_setup_pemagent_agents():
    pg_user = '******'
    pg_group = 'postgres'
    nodes = [node for node in get_pg_nodes()]

    if get_pg_type() == 'EPAS':
        pg_user = '******'
        pg_group = 'enterprisedb'

    host = get_pemserver()
    socket_dir = get_pg_unix_socket_dir()

    with host.sudo(pg_user):
        query = "Select id from pem.agent"
        cmd = host.run('psql -At -h %s -c "%s" pem' % (socket_dir, query))
        result = cmd.stdout.strip().split('\n')

    # Seeing if number of agents is equal to the number of nodes
    assert len(result) == len(nodes), \
        "Pem agents were created sucessfuly."
def test_setup_pemserver_socket():
    host = get_pemserver()
    assert host.socket('tcp://0.0.0.0:8443').is_listening, \
        "PEM web interface is not listening on %s" % '0.0.0.0:8443'