File: test_metric_descriptors.rb

package info (click to toggle)
ruby-fog-google 1.19.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,568 kB
  • sloc: ruby: 16,775; makefile: 3
file content (131 lines) | stat: -rw-r--r-- 4,766 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
require "helpers/integration_test_helper"
require "helpers/client_helper"

class TestMetricDescriptors < FogIntegrationTest
  TEST_METRIC_TYPE_PREFIX = "custom.googleapis.com/fog-google-test/test-metric-descriptors".freeze

  def setup
    @client = Fog::Google::Monitoring.new
    # Ensure any resources we create with test prefixes are removed
    Minitest.after_run do
      delete_test_resources
    end
  end

  def delete_test_resources
    test_resources = @client.monitoring.list_project_metric_descriptors(
      "projects/#{@project}",
      :filter => "metric.type = starts_with(\"#{TEST_METRIC_TYPE_PREFIX}\")"
    )
    unless test_resources.metric_descriptors.nil?
      test_resources.metric_descriptors.each do |md|
        @client.monitoring.delete_project_metric_descriptors(md.name)
      end
    end
  rescue
    # Do nothing
  end

  def test_list_metric_descriptors
    list_resp = @client.list_metric_descriptors
    assert_operator(list_resp.metric_descriptors.size, :>, 0,
                    "metric descriptor count should be positive")

    resp = @client.list_metric_descriptors(
      :filter => 'metric.type = starts_with("compute.googleapis.com")',
      :page_size => 5
    )
    assert_operator(resp.metric_descriptors.size, :<=, 5,
                    "metric descriptor count should be <= page size 5")

    resp = @client.list_metric_descriptors(:page_size => 1)
    assert_equal(resp.metric_descriptors.size, 1,
                 "metric descriptor count should be page size 1")

    next_resp = @client.list_metric_descriptors(
      :page_size => 1,
      :page_token => resp.next_page_token
    )
    assert_equal(next_resp.metric_descriptors.size, 1, "metric descriptor count should be page size 1")
    assert(resp.metric_descriptors[0].name != next_resp.metric_descriptors[0].name,
           "paginated result should not be the same value")
  end

  def test_create_custom_metric_descriptors
    metric_type = "#{TEST_METRIC_TYPE_PREFIX}/test-create"
    label = {
      :key => "foo",
      :value_type => "INT64",
      :description => "test label for a metric descriptor"
    }
    options = {
      :metric_type => metric_type,
      :unit => "1",
      :value_type => "INT64",
      :description => "A custom metric descriptor for fog-google metric descriptor tests.",
      :display_name => "fog-google/test-metric-descriptor",
      :metric_kind => "GAUGE",
      :labels => [label]
    }

    created = @client.create_metric_descriptor(**options)

    # Check created metric descriptor
    assert_equal(_full_name(metric_type), created.name)
    assert_equal(metric_type, created.type)
    assert_equal(options[:metric_kind], created.metric_kind)
    assert_equal(options[:value_type], created.value_type)
    assert_equal(options[:unit], created.unit)
    assert_equal(options[:description], created.description)
    assert_equal(options[:display_name], created.display_name)

    assert_equal(created.labels.size, 1, "expected 1 label, got #{created.labels.size}")
    label_descriptor = created.labels.first
    assert_equal(label[:key], label_descriptor.key)
    assert_equal(label[:value_type], label_descriptor.value_type)
    assert_equal(label[:description], label_descriptor.description)

    Fog.wait_for(30) do
      begin
        get_resp = @client.get_metric_descriptor(metric_type)
        return !get_resp.nil?
      rescue
        return false
      end
    end

    list_resp = @client.list_metric_descriptor(:filter => "metric.type = \"#{metric_type}\"", :page_size => 1)
    assert(!list_resp.metric_descriptors.nil?, "expected non-empty list request for metric descriptors")

    assert_empty(@client.delete_metric_descriptor(metric_type))
  end

  def test_metric_descriptors_all
    descriptors = @client.metric_descriptors.all
    assert_operator(descriptors.size, :>, 0,
                    "metric descriptor count should be positive")
  end

  def test_metric_descriptors_all_page_size
    descriptors = @client.metric_descriptors.all(
      :filter => 'metric.type = starts_with("compute.googleapis.com")',
      :page_size => 5
    )
    assert_operator(descriptors.size, :<=, 5,
                    "metric descriptor count should be <= page size 5")

    descriptors = @client.metric_descriptors.all(:page_size => 2)
    assert_equal(descriptors.size, 2, "metric descriptor count should be page size 2")
  end

  def test_metric_descriptors_get
    builtin_test_type = "compute.googleapis.com/instance/cpu/usage_time"

    descriptor = @client.metric_descriptors.get("compute.googleapis.com/instance/cpu/usage_time")
    assert_equal(descriptor.type, builtin_test_type)
  end

  def _full_name(metric_type)
    "projects/#{@client.project}/metricDescriptors/#{metric_type}"
  end
end