require 'helper'

class AzureMonitorMetricsInputTest < Test::Unit::TestCase
  def setup
    Fluent::Test.setup
  end

  ### for monitor metrics
  CONFIG_MONITOR_METRICS = %[
    tag azuremonitormetrics
    tenant_id test_tenant_id
    client_id test_client_id
    client_secret test_client_secret

    timespan          300
    interval          PT1M
    resource_uri      /subscriptions/b324c52b-4073-4807-93af-e07d289c093e/resourceGroups/test/providers/Microsoft.Storage/storageAccounts/larryshoebox/blobServices/default/providers/Microsoft.Insights/metrics/BlobCapacity
    aggregation       Average,count
    top               20
    orderby           sum asc
    filter            A eq 'a1' and B eq '*'
    result_type       Success
    metric            Percentage CPU
    api_version       2017-05-01-preview
  ]

  def create_driver_monitor_metrics(conf = CONFIG_MONITOR_METRICS)
    Fluent::Test::InputTestDriver.new(Fluent::AzureMonitorMetricsInput).configure(conf)
  end

  def test_configure_monitor_metrics
    d = create_driver_monitor_metrics
    assert_equal 'azuremonitormetrics', d.instance.tag
    assert_equal 'test_tenant_id', d.instance.tenant_id
    assert_equal 'test_client_id', d.instance.client_id
    assert_equal 300, d.instance.timespan
    assert_equal 'PT1M', d.instance.interval
    assert_equal '/subscriptions/b324c52b-4073-4807-93af-e07d289c093e/resourceGroups/test/providers/Microsoft.Storage/storageAccounts/larryshoebox/blobServices/default/providers/Microsoft.Insights/metrics/BlobCapacity', d.instance.resource_uri
    assert_equal 'Average,count', d.instance.aggregation
    assert_equal 20, d.instance.top
    assert_equal 'sum asc', d.instance.orderby
    assert_equal 'A eq \'a1\' and B eq \'*\'', d.instance.filter
    assert_equal 'Success', d.instance.result_type
    assert_equal 'Percentage CPU', d.instance.metric
    assert_equal '2017-05-01-preview', d.instance.api_version
  end

  def test_set_query_options
    d = create_driver_monitor_metrics
    query_options = d.instance.set_path_options(d.instance.filter, {})
    assert_equal '2017-05-01-preview', query_options[:query_params]['api-version']
    assert_equal 'A eq \'a1\' and B eq \'*\'', query_options[:query_params]['$filter']
    assert_equal 'Average,count', query_options[:query_params]['aggregation']
    assert_equal 'PT1M', query_options[:query_params]['interval']
    assert_equal 20, query_options[:query_params]['$top']
    assert_equal 'sum asc', query_options[:query_params]['$orderby']
    assert_equal 'Success', query_options[:query_params]['resultType']
    assert_equal 'Percentage CPU', query_options[:query_params]['metric']
    assert_equal '/subscriptions/b324c52b-4073-4807-93af-e07d289c093e/resourceGroups/test/providers/Microsoft.Storage/storageAccounts/larryshoebox/blobServices/default/providers/Microsoft.Insights/metrics/BlobCapacity', query_options[:path_params]['resourceUri']
  end

end