wavefront-sdk 3.3.2 → 3.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/HISTORY.md +42 -35
- data/README.md +5 -5
- data/lib/wavefront-sdk/alert.rb +2 -0
- data/lib/wavefront-sdk/core/api_caller.rb +6 -3
- data/lib/wavefront-sdk/defs/version.rb +2 -2
- data/lib/wavefront-sdk/derivedmetric.rb +7 -0
- data/lib/wavefront-sdk/externallink.rb +2 -2
- data/lib/wavefront-sdk/maintenancewindow.rb +6 -2
- data/lib/wavefront-sdk/notificant.rb +7 -0
- data/lib/wavefront-sdk/paginator/base.rb +8 -0
- data/lib/wavefront-sdk/search.rb +11 -2
- data/lib/wavefront-sdk/user.rb +39 -8
- data/lib/wavefront-sdk/webhook.rb +1 -1
- data/spec/constants.rb +30 -0
- data/spec/spec_helper.rb +12 -237
- data/spec/support/bad_mocket.rb +15 -0
- data/spec/support/hash.rb +9 -0
- data/spec/support/minitest_assertions.rb +110 -0
- data/spec/support/mocket.rb +19 -0
- data/spec/test_mixins/acl.rb +78 -0
- data/spec/test_mixins/general.rb +120 -0
- data/spec/test_mixins/tag.rb +55 -0
- data/spec/test_mixins/update_keys.rb +11 -0
- data/spec/wavefront-sdk/alert_spec.rb +88 -136
- data/spec/wavefront-sdk/apitoken_spec.rb +26 -13
- data/spec/wavefront-sdk/cloudintegration_spec.rb +42 -44
- data/spec/wavefront-sdk/dashboard_spec.rb +53 -72
- data/spec/wavefront-sdk/derivedmetric_spec.rb +23 -49
- data/spec/wavefront-sdk/distribution_spec.rb +14 -14
- data/spec/wavefront-sdk/event_spec.rb +39 -48
- data/spec/wavefront-sdk/externallink_spec.rb +19 -50
- data/spec/wavefront-sdk/integration_spec.rb +33 -38
- data/spec/wavefront-sdk/maintenancewindow_spec.rb +18 -33
- data/spec/wavefront-sdk/message_spec.rb +19 -4
- data/spec/wavefront-sdk/metric_spec.rb +13 -9
- data/spec/wavefront-sdk/notificant_spec.rb +16 -15
- data/spec/wavefront-sdk/proxy_spec.rb +20 -25
- data/spec/wavefront-sdk/query_spec.rb +50 -24
- data/spec/wavefront-sdk/report_spec.rb +3 -6
- data/spec/wavefront-sdk/resources/user_responses/add_user_groups.json +1 -0
- data/spec/wavefront-sdk/resources/user_responses/create.json +28 -0
- data/spec/wavefront-sdk/resources/user_responses/delete_multiple.json +1 -0
- data/spec/wavefront-sdk/resources/user_responses/describe.json +1 -0
- data/spec/wavefront-sdk/resources/user_responses/grant.json +1 -0
- data/spec/wavefront-sdk/resources/user_responses/list.json +1 -0
- data/spec/wavefront-sdk/savedsearch_spec.rb +41 -35
- data/spec/wavefront-sdk/search_spec.rb +35 -29
- data/spec/wavefront-sdk/settings_spec.rb +18 -12
- data/spec/wavefront-sdk/source_spec.rb +29 -32
- data/spec/wavefront-sdk/user_spec.rb +101 -74
- data/spec/wavefront-sdk/usergroup_spec.rb +56 -67
- data/spec/wavefront-sdk/webhook_spec.rb +22 -34
- data/spec/wavefront-sdk/write_spec.rb +2 -0
- data/spec/wavefront-sdk/writers/core_spec.rb +2 -0
- data/spec/wavefront-sdk/writers/summary_spec.rb +2 -0
- data/wavefront-sdk.gemspec +5 -5
- metadata +44 -13
| @@ -1,31 +1,44 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 |  | 
| 3 3 | 
             
            require_relative '../spec_helper'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            API_TOKEN_ID = '17db4cc1-65f6-40a8-a1fa-6fcae460c4bd'.freeze
         | 
| 4 | 
            +
            require_relative '../test_mixins/general'
         | 
| 6 5 |  | 
| 7 6 | 
             
            # Unit tests for API token class
         | 
| 8 7 | 
             
            #
         | 
| 9 8 | 
             
            class WavefrontApiTokenTest < WavefrontTestBase
         | 
| 9 | 
            +
              include WavefrontTest::Delete
         | 
| 10 | 
            +
             | 
| 10 11 | 
             
              def test_list
         | 
| 11 | 
            -
                 | 
| 12 | 
            +
                assert_gets('/api/v2/apitoken') { wf.list }
         | 
| 12 13 | 
             
              end
         | 
| 13 14 |  | 
| 14 15 | 
             
              def test_create
         | 
| 15 | 
            -
                 | 
| 16 | 
            +
                assert_posts('/api/v2/apitoken', 'null') { wf.create }
         | 
| 16 17 | 
             
                assert_raises(ArgumentError) { wf.create('test') }
         | 
| 17 18 | 
             
              end
         | 
| 18 19 |  | 
| 19 | 
            -
              def test_delete
         | 
| 20 | 
            -
                should_work(:delete, API_TOKEN_ID, API_TOKEN_ID, :delete)
         | 
| 21 | 
            -
                should_be_invalid(:delete)
         | 
| 22 | 
            -
              end
         | 
| 23 | 
            -
             | 
| 24 20 | 
             
              def test_rename
         | 
| 25 | 
            -
                 | 
| 26 | 
            -
                             | 
| 27 | 
            -
             | 
| 28 | 
            -
                 | 
| 21 | 
            +
                assert_puts("/api/v2/apitoken/#{id}",
         | 
| 22 | 
            +
                            tokenID: id, tokenName: 'token name') do
         | 
| 23 | 
            +
                  wf.rename(id, 'token name')
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                assert_invalid_id { wf.rename(invalid_id, 'token name') }
         | 
| 29 27 | 
             
                assert_raises(ArgumentError) { wf.rename }
         | 
| 28 | 
            +
                assert_raises(ArgumentError) { wf.rename(id) }
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              private
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              def id
         | 
| 34 | 
            +
                '17db4cc1-65f6-40a8-a1fa-6fcae460c4bd'
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              def invalid_id
         | 
| 38 | 
            +
                '__rubbish__'
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              def api_class
         | 
| 42 | 
            +
                'apitoken'
         | 
| 30 43 | 
             
              end
         | 
| 31 44 | 
             
            end
         | 
| @@ -1,66 +1,64 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 |  | 
| 3 3 | 
             
            require_relative '../spec_helper'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            CLOUD = '3b56f61d-1a79-46f6-905c-d75a0f613d10'.freeze
         | 
| 6 | 
            -
            CLOUD_BODY = {
         | 
| 7 | 
            -
              name: 'SDK test Cloudwatch Integration',
         | 
| 8 | 
            -
              service: 'CLOUDWATCH',
         | 
| 9 | 
            -
              cloudWatch: {
         | 
| 10 | 
            -
                baseCredentials: {
         | 
| 11 | 
            -
                  roleArn:    'arn:aws:iam::<accountid>:role/<rolename>',
         | 
| 12 | 
            -
                  externalId: 'wave123'
         | 
| 13 | 
            -
                }
         | 
| 14 | 
            -
              },
         | 
| 15 | 
            -
              metricFilterRegex: '^aws.(sqs|ec2|ebs|elb).*$'
         | 
| 16 | 
            -
            }.freeze
         | 
| 4 | 
            +
            require_relative '../test_mixins/general'
         | 
| 17 5 |  | 
| 18 6 | 
             
            # Unit tests for CloudIntegration class
         | 
| 19 7 | 
             
            #
         | 
| 20 8 | 
             
            class WavefrontCloudIntegrationTest < WavefrontTestBase
         | 
| 21 | 
            -
               | 
| 22 | 
            -
             | 
| 23 | 
            -
               | 
| 9 | 
            +
              include WavefrontTest::List
         | 
| 10 | 
            +
              include WavefrontTest::Create
         | 
| 11 | 
            +
              include WavefrontTest::Describe
         | 
| 12 | 
            +
              include WavefrontTest::Update
         | 
| 13 | 
            +
              include WavefrontTest::DeleteUndelete
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def test_update
         | 
| 16 | 
            +
                assert_puts("/api/v2/cloudintegration/#{id}", payload) do
         | 
| 17 | 
            +
                  wf.update(id, payload)
         | 
| 18 | 
            +
                end
         | 
| 24 19 |  | 
| 25 | 
            -
             | 
| 26 | 
            -
                 | 
| 27 | 
            -
                            CLOUD_BODY.to_json)
         | 
| 28 | 
            -
                assert_raises(ArgumentError) { wf.create }
         | 
| 29 | 
            -
                assert_raises(ArgumentError) { wf.create('test') }
         | 
| 20 | 
            +
                assert_invalid_id { wf.update(invalid_id, payload) }
         | 
| 21 | 
            +
                assert_raises(ArgumentError) { wf.update }
         | 
| 30 22 | 
             
              end
         | 
| 31 23 |  | 
| 32 | 
            -
              def  | 
| 33 | 
            -
                 | 
| 34 | 
            -
                 | 
| 24 | 
            +
              def test_enable
         | 
| 25 | 
            +
                assert_posts("/api/v2/cloudintegration/#{id}/enable") { wf.enable(id) }
         | 
| 26 | 
            +
                assert_invalid_id { wf.enable(invalid_id) }
         | 
| 27 | 
            +
                assert_raises(ArgumentError) { wf.enable }
         | 
| 35 28 | 
             
              end
         | 
| 36 29 |  | 
| 37 | 
            -
              def  | 
| 38 | 
            -
                 | 
| 39 | 
            -
             | 
| 30 | 
            +
              def test_disable
         | 
| 31 | 
            +
                assert_posts("/api/v2/cloudintegration/#{id}/disable") do
         | 
| 32 | 
            +
                  wf.disable(id)
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                assert_invalid_id { wf.disable(invalid_id) }
         | 
| 36 | 
            +
                assert_raises(ArgumentError) { wf.disable }
         | 
| 40 37 | 
             
              end
         | 
| 41 38 |  | 
| 42 | 
            -
               | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
                 | 
| 46 | 
            -
                assert_raises(ArgumentError) { wf.update }
         | 
| 39 | 
            +
              private
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              def id
         | 
| 42 | 
            +
                '3b56f61d-1a79-46f6-905c-d75a0f613d10'
         | 
| 47 43 | 
             
              end
         | 
| 48 44 |  | 
| 49 | 
            -
              def  | 
| 50 | 
            -
                 | 
| 51 | 
            -
                            POST_HEADERS)
         | 
| 52 | 
            -
                should_be_invalid(:undelete)
         | 
| 45 | 
            +
              def invalid_id
         | 
| 46 | 
            +
                '__rubbish__'
         | 
| 53 47 | 
             
              end
         | 
| 54 48 |  | 
| 55 | 
            -
              def  | 
| 56 | 
            -
                 | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 49 | 
            +
              def payload
         | 
| 50 | 
            +
                { name: 'SDK test Cloudwatch Integration',
         | 
| 51 | 
            +
                  service: 'CLOUDWATCH',
         | 
| 52 | 
            +
                  cloudWatch: {
         | 
| 53 | 
            +
                    baseCredentials: {
         | 
| 54 | 
            +
                      roleArn:    'arn:aws:iam::<accountid>:role/<rolename>',
         | 
| 55 | 
            +
                      externalId: 'wave123'
         | 
| 56 | 
            +
                    }
         | 
| 57 | 
            +
                  },
         | 
| 58 | 
            +
                  metricFilterRegex: '^aws.(sqs|ec2|ebs|elb).*$' }
         | 
| 59 59 | 
             
              end
         | 
| 60 60 |  | 
| 61 | 
            -
              def  | 
| 62 | 
            -
                 | 
| 63 | 
            -
                            POST_HEADERS)
         | 
| 64 | 
            -
                should_be_invalid(:enable)
         | 
| 61 | 
            +
              def api_class
         | 
| 62 | 
            +
                'cloudintegration'
         | 
| 65 63 | 
             
              end
         | 
| 66 64 | 
             
            end
         | 
| @@ -1,95 +1,76 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 |  | 
| 3 3 | 
             
            require_relative '../spec_helper'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 7 | 
            -
             | 
| 8 | 
            -
              id: 'sdk-test',
         | 
| 9 | 
            -
              description: 'dummy test dashboard',
         | 
| 10 | 
            -
              sections: [
         | 
| 11 | 
            -
                name: 'Section 1',
         | 
| 12 | 
            -
                rows: [
         | 
| 13 | 
            -
                  { charts: [
         | 
| 14 | 
            -
                    name: 'S1 Chart1',
         | 
| 15 | 
            -
                    description: 'chart',
         | 
| 16 | 
            -
                    sources: [
         | 
| 17 | 
            -
                      { name: 'S1 C1 Source 1',
         | 
| 18 | 
            -
                        query: 'ts("some.series")' }
         | 
| 19 | 
            -
                    ]
         | 
| 20 | 
            -
                  ] }
         | 
| 21 | 
            -
                ]
         | 
| 22 | 
            -
              ]
         | 
| 23 | 
            -
            }.freeze
         | 
| 4 | 
            +
            require_relative '../test_mixins/acl'
         | 
| 5 | 
            +
            require_relative '../test_mixins/tag'
         | 
| 6 | 
            +
            require_relative '../test_mixins/update_keys'
         | 
| 7 | 
            +
            require_relative '../test_mixins/general'
         | 
| 24 8 |  | 
| 25 9 | 
             
            # Unit tests for dashboard class
         | 
| 26 10 | 
             
            #
         | 
| 27 11 | 
             
            class WavefrontDashboardTest < WavefrontTestBase
         | 
| 28 | 
            -
               | 
| 29 | 
            -
             | 
| 30 | 
            -
               | 
| 12 | 
            +
              include WavefrontTest::Acl
         | 
| 13 | 
            +
              include WavefrontTest::Create
         | 
| 14 | 
            +
              include WavefrontTest::DeleteUndelete
         | 
| 15 | 
            +
              include WavefrontTest::Describe
         | 
| 16 | 
            +
              include WavefrontTest::History
         | 
| 17 | 
            +
              include WavefrontTest::List
         | 
| 18 | 
            +
              include WavefrontTest::Tag
         | 
| 19 | 
            +
              include WavefrontTest::Update
         | 
| 20 | 
            +
              include WavefrontTest::UpdateKeys
         | 
| 31 21 |  | 
| 32 | 
            -
              def  | 
| 33 | 
            -
                 | 
| 34 | 
            -
             | 
| 35 | 
            -
                assert_raises(ArgumentError) { wf. | 
| 36 | 
            -
                 | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
              def test_describe
         | 
| 40 | 
            -
                should_work(:describe, DASHBOARD, DASHBOARD)
         | 
| 41 | 
            -
                assert_raises(ArgumentError) { wf.describe }
         | 
| 42 | 
            -
              end
         | 
| 43 | 
            -
             | 
| 44 | 
            -
              def test_describe_v
         | 
| 45 | 
            -
                should_work(:describe, [DASHBOARD, 4], "#{DASHBOARD}/history/4")
         | 
| 22 | 
            +
              def test_favorite
         | 
| 23 | 
            +
                assert_posts("/api/v2/dashboard/#{id}/favorite") { wf.favorite(id) }
         | 
| 24 | 
            +
                assert_invalid_id { wf.favorite(invalid_id) }
         | 
| 25 | 
            +
                assert_raises(ArgumentError) { wf.favorite }
         | 
| 26 | 
            +
                assert_posts("/api/v2/dashboard/#{id}/favorite") { wf.favourite(id) }
         | 
| 27 | 
            +
                assert_invalid_id { wf.favourite(invalid_id) }
         | 
| 28 | 
            +
                assert_raises(ArgumentError) { wf.favourite }
         | 
| 46 29 | 
             
              end
         | 
| 47 30 |  | 
| 48 | 
            -
              def  | 
| 49 | 
            -
                 | 
| 50 | 
            -
                 | 
| 51 | 
            -
             | 
| 31 | 
            +
              def test_unfavorite
         | 
| 32 | 
            +
                assert_posts("/api/v2/dashboard/#{id}/unfavorite") { wf.unfavorite(id) }
         | 
| 33 | 
            +
                assert_invalid_id { wf.unfavorite(invalid_id) }
         | 
| 34 | 
            +
                assert_raises(ArgumentError) { wf.unfavorite }
         | 
| 52 35 |  | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
                            DASHBOARD_BODY.to_json)
         | 
| 57 | 
            -
                should_be_invalid(:update, ['!invalid dash!', DASHBOARD_BODY])
         | 
| 58 | 
            -
                assert_raises(ArgumentError) { wf.update }
         | 
| 59 | 
            -
              end
         | 
| 36 | 
            +
                assert_posts("/api/v2/dashboard/#{id}/unfavorite") do
         | 
| 37 | 
            +
                  wf.unfavourite(id)
         | 
| 38 | 
            +
                end
         | 
| 60 39 |  | 
| 61 | 
            -
             | 
| 62 | 
            -
                 | 
| 63 | 
            -
                                                   nil], :post, POST_HEADERS)
         | 
| 64 | 
            -
                should_work(:favourite, DASHBOARD, ["#{DASHBOARD}/favorite",
         | 
| 65 | 
            -
                                                    nil], :post, POST_HEADERS)
         | 
| 66 | 
            -
                should_be_invalid(:favorite)
         | 
| 40 | 
            +
                assert_invalid_id { wf.unfavourite(invalid_id) }
         | 
| 41 | 
            +
                assert_raises(ArgumentError) { wf.unfavourite }
         | 
| 67 42 | 
             
              end
         | 
| 68 43 |  | 
| 69 | 
            -
               | 
| 70 | 
            -
                should_work(:history, DASHBOARD, "#{DASHBOARD}/history")
         | 
| 71 | 
            -
                should_be_invalid(:history)
         | 
| 72 | 
            -
              end
         | 
| 44 | 
            +
              private
         | 
| 73 45 |  | 
| 74 | 
            -
              def  | 
| 75 | 
            -
                 | 
| 46 | 
            +
              def api_class
         | 
| 47 | 
            +
                'dashboard'
         | 
| 76 48 | 
             
              end
         | 
| 77 49 |  | 
| 78 | 
            -
              def  | 
| 79 | 
            -
                 | 
| 50 | 
            +
              def id
         | 
| 51 | 
            +
                'test_dashboard'
         | 
| 80 52 | 
             
              end
         | 
| 81 53 |  | 
| 82 | 
            -
              def  | 
| 83 | 
            -
                 | 
| 84 | 
            -
                                                   nil], :post, POST_HEADERS)
         | 
| 85 | 
            -
                should_be_invalid(:undelete)
         | 
| 54 | 
            +
              def invalid_id
         | 
| 55 | 
            +
                'a bad dashboard name'
         | 
| 86 56 | 
             
              end
         | 
| 87 57 |  | 
| 88 | 
            -
              def  | 
| 89 | 
            -
                 | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 58 | 
            +
              def payload
         | 
| 59 | 
            +
                { name: 'SDK Dashboard test',
         | 
| 60 | 
            +
                  id: 'sdk-test',
         | 
| 61 | 
            +
                  description: 'dummy test dashboard',
         | 
| 62 | 
            +
                  sections: [
         | 
| 63 | 
            +
                    name: 'Section 1',
         | 
| 64 | 
            +
                    rows: [
         | 
| 65 | 
            +
                      { charts: [
         | 
| 66 | 
            +
                        name: 'S1 Chart1',
         | 
| 67 | 
            +
                        description: 'chart',
         | 
| 68 | 
            +
                        sources: [
         | 
| 69 | 
            +
                          { name: 'S1 C1 Source 1',
         | 
| 70 | 
            +
                            query: 'ts("some.series")' }
         | 
| 71 | 
            +
                        ]
         | 
| 72 | 
            +
                      ] }
         | 
| 73 | 
            +
                    ]
         | 
| 74 | 
            +
                  ] }
         | 
| 94 75 | 
             
              end
         | 
| 95 76 | 
             
            end
         | 
| @@ -1,66 +1,40 @@ | |
| 1 1 | 
             
            #!/usr/bin/env ruby
         | 
| 2 2 |  | 
| 3 3 | 
             
            require_relative '../spec_helper'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
            DERIVED_METRIC_BODY = {
         | 
| 7 | 
            -
              minutes: 5,
         | 
| 8 | 
            -
              name: 'test_1',
         | 
| 9 | 
            -
              query: 'aliasMetric(ts("test.metric"), "derived.test_1")',
         | 
| 10 | 
            -
              tags: { customerTags: ['test'] },
         | 
| 11 | 
            -
              includeObsoleteMetrics: false,
         | 
| 12 | 
            -
              processRateMinutes: 1
         | 
| 13 | 
            -
            }.freeze
         | 
| 4 | 
            +
            require_relative '../test_mixins/general'
         | 
| 5 | 
            +
            require_relative '../test_mixins/tag'
         | 
| 14 6 |  | 
| 15 7 | 
             
            # Unit tests for derived metric class
         | 
| 16 8 | 
             
            #
         | 
| 17 9 | 
             
            class WavefrontDerivedMetricTest < WavefrontTestBase
         | 
| 18 | 
            -
               | 
| 19 | 
            -
             | 
| 20 | 
            -
               | 
| 10 | 
            +
              include WavefrontTest::Create
         | 
| 11 | 
            +
              include WavefrontTest::DeleteUndelete
         | 
| 12 | 
            +
              include WavefrontTest::Describe
         | 
| 13 | 
            +
              include WavefrontTest::History
         | 
| 14 | 
            +
              include WavefrontTest::List
         | 
| 15 | 
            +
              include WavefrontTest::Tag
         | 
| 16 | 
            +
              include WavefrontTest::Update
         | 
| 21 17 |  | 
| 22 | 
            -
               | 
| 23 | 
            -
                should_work(:create, DERIVED_METRIC_BODY, '', :post,
         | 
| 24 | 
            -
                            JSON_POST_HEADERS, DERIVED_METRIC_BODY.to_json)
         | 
| 25 | 
            -
                assert_raises(ArgumentError) { wf.create }
         | 
| 26 | 
            -
                assert_raises(ArgumentError) { wf.create('test') }
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
              def test_describe
         | 
| 30 | 
            -
                should_work(:describe, DERIVED_METRIC, DERIVED_METRIC)
         | 
| 31 | 
            -
                assert_raises(ArgumentError) { wf.describe }
         | 
| 32 | 
            -
              end
         | 
| 33 | 
            -
             | 
| 34 | 
            -
              def test_describe_v
         | 
| 35 | 
            -
                should_work(:describe, [DERIVED_METRIC, 4], "#{DERIVED_METRIC}/history/4")
         | 
| 36 | 
            -
              end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
              def test_delete
         | 
| 39 | 
            -
                should_work(:delete, DERIVED_METRIC, DERIVED_METRIC, :delete)
         | 
| 40 | 
            -
                should_be_invalid(:delete)
         | 
| 41 | 
            -
              end
         | 
| 18 | 
            +
              private
         | 
| 42 19 |  | 
| 43 | 
            -
              def  | 
| 44 | 
            -
                 | 
| 45 | 
            -
                should_be_invalid(:history)
         | 
| 20 | 
            +
              def id
         | 
| 21 | 
            +
                '1529926075038'
         | 
| 46 22 | 
             
              end
         | 
| 47 23 |  | 
| 48 | 
            -
              def  | 
| 49 | 
            -
                 | 
| 50 | 
            -
                            DERIVED_METRIC, :put, JSON_POST_HEADERS,
         | 
| 51 | 
            -
                            DERIVED_METRIC_BODY.to_json)
         | 
| 52 | 
            -
                should_be_invalid(:update, ['!invalid derived metric!',
         | 
| 53 | 
            -
                                            DERIVED_METRIC_BODY])
         | 
| 54 | 
            -
                assert_raises(ArgumentError) { wf.update }
         | 
| 24 | 
            +
              def invalid_id
         | 
| 25 | 
            +
                '! invalid derived metric !'
         | 
| 55 26 | 
             
              end
         | 
| 56 27 |  | 
| 57 | 
            -
              def  | 
| 58 | 
            -
                 | 
| 28 | 
            +
              def payload
         | 
| 29 | 
            +
                { minutes: 5,
         | 
| 30 | 
            +
                  name: 'test_1',
         | 
| 31 | 
            +
                  query: 'aliasMetric(ts("test.metric"), "derived.test_1")',
         | 
| 32 | 
            +
                  tags: { customerTags: ['test'] },
         | 
| 33 | 
            +
                  includeObsoleteMetrics: false,
         | 
| 34 | 
            +
                  processRateMinutes: 1 }
         | 
| 59 35 | 
             
              end
         | 
| 60 36 |  | 
| 61 | 
            -
              def  | 
| 62 | 
            -
                 | 
| 63 | 
            -
                                                        nil], :post, POST_HEADERS)
         | 
| 64 | 
            -
                should_be_invalid(:undelete)
         | 
| 37 | 
            +
              def api_class
         | 
| 38 | 
            +
                'derivedmetric'
         | 
| 65 39 | 
             
              end
         | 
| 66 40 | 
             
            end
         | 
| @@ -3,20 +3,11 @@ | |
| 3 3 | 
             
            require_relative '../spec_helper'
         | 
| 4 4 | 
             
            require_relative '../../lib/wavefront-sdk/distribution'
         | 
| 5 5 |  | 
| 6 | 
            -
            DIST = {
         | 
| 7 | 
            -
              interval: :m,
         | 
| 8 | 
            -
              path:     'test.distribution',
         | 
| 9 | 
            -
              value:    [[5, 11], [15, 2.533], [8, -15], [12, 1e6]],
         | 
| 10 | 
            -
              ts:       1_538_865_613,
         | 
| 11 | 
            -
              source:   'minitest',
         | 
| 12 | 
            -
              tags:     { tag1: 'val1', tag2: 'val2' }
         | 
| 13 | 
            -
            }.freeze
         | 
| 14 | 
            -
             | 
| 15 6 | 
             
            # Most of the distribution methods are inherited from the Write
         | 
| 16 7 | 
             
            # class so they aren't tested again here.
         | 
| 17 8 | 
             
            #
         | 
| 18 9 | 
             
            class WavefrontDistributionTest < MiniTest::Test
         | 
| 19 | 
            -
              attr_reader :wf | 
| 10 | 
            +
              attr_reader :wf
         | 
| 20 11 |  | 
| 21 12 | 
             
              def setup
         | 
| 22 13 | 
             
                @wf = Wavefront::Distribution.new(W_CREDS)
         | 
| @@ -39,19 +30,19 @@ class WavefrontDistributionTest < MiniTest::Test | |
| 39 30 | 
             
              end
         | 
| 40 31 |  | 
| 41 32 | 
             
              def test_hash_to_wf
         | 
| 42 | 
            -
                assert_equal(wf.hash_to_wf( | 
| 33 | 
            +
                assert_equal(wf.hash_to_wf(distribution),
         | 
| 43 34 | 
             
                             '!M 1538865613 #5 11 #15 2.533 #8 -15 #12 1000000.0 ' \
         | 
| 44 35 | 
             
                             'test.distribution source=minitest ' \
         | 
| 45 36 | 
             
                             'tag1="val1" tag2="val2"')
         | 
| 46 37 |  | 
| 47 | 
            -
                d2 =  | 
| 38 | 
            +
                d2 = distribution.dup
         | 
| 48 39 | 
             
                d2[:tags] = {}
         | 
| 49 40 |  | 
| 50 41 | 
             
                assert_equal(wf.hash_to_wf(d2),
         | 
| 51 42 | 
             
                             '!M 1538865613 #5 11 #15 2.533 #8 -15 #12 1000000.0 ' \
         | 
| 52 43 | 
             
                             'test.distribution source=minitest')
         | 
| 53 44 |  | 
| 54 | 
            -
                d3 =  | 
| 45 | 
            +
                d3 = distribution.dup
         | 
| 55 46 | 
             
                d3[:ts] = Time.at(1_538_865_613)
         | 
| 56 47 | 
             
                d3 = d3.tap { |d| d.delete(:source) }
         | 
| 57 48 |  | 
| @@ -60,7 +51,7 @@ class WavefrontDistributionTest < MiniTest::Test | |
| 60 51 | 
             
                             "test.distribution source=#{Socket.gethostname} " \
         | 
| 61 52 | 
             
                             'tag1="val1" tag2="val2"')
         | 
| 62 53 |  | 
| 63 | 
            -
                bad_dist =  | 
| 54 | 
            +
                bad_dist = distribution.dup
         | 
| 64 55 | 
             
                bad_dist.delete(:interval)
         | 
| 65 56 |  | 
| 66 57 | 
             
                assert_raises(Wavefront::Exception::InvalidDistribution) do
         | 
| @@ -72,4 +63,13 @@ class WavefrontDistributionTest < MiniTest::Test | |
| 72 63 | 
             
                assert_equal(wf.array2dist([[1, 4], [6, 5]]), '#1 4 #6 5')
         | 
| 73 64 | 
             
                assert_equal(wf.array2dist([[12, 4.235]]), '#12 4.235')
         | 
| 74 65 | 
             
              end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              def distribution
         | 
| 68 | 
            +
                { interval: :m,
         | 
| 69 | 
            +
                  path:     'test.distribution',
         | 
| 70 | 
            +
                  value:    [[5, 11], [15, 2.533], [8, -15], [12, 1e6]],
         | 
| 71 | 
            +
                  ts:       1_538_865_613,
         | 
| 72 | 
            +
                  source:   'minitest',
         | 
| 73 | 
            +
                  tags:     { tag1: 'val1', tag2: 'val2' } }
         | 
| 74 | 
            +
              end
         | 
| 75 75 | 
             
            end
         |