# Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
# or more contributor license agreements. Licensed under the Elastic License;
# you may not use this file except in compliance with the Elastic License.

require_relative "../spec_helper"
require 'securerandom'

describe "Direct shipping" do
  before :all do
    @elasticsearch_service = elasticsearch

    cleanup_elasticsearch

    config = "input { generator { count => 100 } tcp { port => 6000 } } output { null {} }"

    @logstash_service = logstash_with_empty_default("bin/logstash -e '#{config}' -w 1  --pipeline.id #{SecureRandom.hex(8)}", {
      :settings => {
        "xpack.monitoring.allow_legacy_collection" => true,
        "monitoring.enabled" => true,
        "monitoring.elasticsearch.hosts" => ["http://localhost:9200", "http://localhost:9200"],
        "monitoring.collection.interval" => "1s",
        "monitoring.elasticsearch.username" => "elastic",
        "monitoring.elasticsearch.password" => elastic_password
      }, # will be saved in the logstash.yml
      :belzebuth => {
        :wait_condition => /Pipelines running/,
        :timeout => 5 * 60 # Fail safe, this mean something went wrong if we hit this before the wait_condition
      }
    })
  end

  include_examples "record monitoring data to es"

  it "gives pipelines stats" do
    api = MonitoringAPI.new
    stats = api.pipelines_stats
    expect(stats.keys).not_to be_nil
  end

  after :all do
    @logstash_service.stop unless @logstash_service.nil?
    @elasticsearch_service.stop unless @elasticsearch_service.nil?
  end
end
