import os
import testinfra.utils.ansible_runner

def test_packages(host):
  package = host.package('elasticsearch')
  assert package.is_installed

def test_config_file(host):
  config = host.file('/etc/elasticsearch/elasticsearch.yml')
  assert config.user == 'root'
  assert config.group == 'elasticsearch'
  assert config.mode == 0o640
  assert config.contains('path.data: /var/lib/elasticsearch')

def test_service(host):
  service = host.service('elasticsearch')
  assert service.is_running
  assert service.is_enabled

def test_socket(host):
  for port in [9200, 9300]:
    socket = host.socket('tcp://127.0.0.1:%d' % (port))
    assert socket.is_listening

def test_java_memory(host):
  process = host.process.get(user='elasticsearch', comm='java')
  assert '-Xms512m' in process.args
  assert '-Xmx512m' in process.args

def test_elasticsearch_template(host):
  result = host.check_output('curl -v http://127.0.0.1:9200/_template/test')
  assert '"number_of_replicas":"1"' in result