Skip to content

Commit 2dee2ff

Browse files
ddanujddanuj-o11y
andauthored
AGG-2000 Added API implementation for automated archival APIs (#247)
* added API implementation for automated archival APIs * added create_settings_success json file to write the result of CreateSettingsTest * increased buffer capacity to avoid BufferOverflow error * fixing unit tests * reversing the changes to datapoint_writer_test * added test for GET automated-archival settings API * fixing TestGetSettings * more unit tests for automated archival APIs * fixing TestCreateExemptMetrics --------- Co-authored-by: Anuj Doiphode <[email protected]>
1 parent e868ae7 commit 2dee2ff

7 files changed

+427
-0
lines changed

automated_archival.go

Lines changed: 177 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

automated_archival_test.go

Lines changed: 168 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
package signalfx
2+
3+
import (
4+
"context"
5+
"net/http"
6+
"testing"
7+
8+
automated_archival "github.com/signalfx/signalfx-go/automated-archival"
9+
"github.com/stretchr/testify/assert"
10+
)
11+
12+
func TestCreateSettings(t *testing.T) {
13+
teardown := setup()
14+
defer teardown()
15+
16+
mux.HandleFunc(AutomatedArchivalApiURL+"/settings", verifyRequest(t, http.MethodPost, true, http.StatusOK, nil, "automated_archival/create_settings_success.json"))
17+
result, err := client.CreateSettings(context.Background(), &automated_archival.AutomatedArchivalSettings{
18+
Version: 1,
19+
Enabled: true,
20+
LookbackPeriod: "P60D",
21+
GracePeriod: "P30D",
22+
})
23+
24+
assert.NoError(t, err, "Unexpected error creating Automated Archival settings")
25+
assert.Equal(t, int64(1), result.Version, "Version doesn't match")
26+
assert.Equal(t, true, result.Enabled, "Enabled doesn't match")
27+
assert.Equal(t, "P60D", result.LookbackPeriod, "Lookback period doesn't match")
28+
assert.Equal(t, "P30D", result.GracePeriod, "Grace period doesn't match")
29+
}
30+
31+
func TestGetSettings(t *testing.T) {
32+
teardown := setup()
33+
defer teardown()
34+
35+
mux.HandleFunc(AutomatedArchivalApiURL+"/settings", verifyRequest(t, http.MethodGet, true, http.StatusOK, nil, "automated_archival/get_settings_success.json"))
36+
37+
result, err := client.GetSettings(context.Background())
38+
assert.NoError(t, err, "Unexpected error getting Automated Archival settings")
39+
assert.Equal(t, int64(1), result.Version, "Version doesn't match")
40+
assert.Equal(t, true, result.Enabled, "Enabled doesn't match")
41+
assert.Equal(t, "P60D", result.LookbackPeriod, "Lookback period doesn't match")
42+
assert.Equal(t, "P30D", result.GracePeriod, "Grace period doesn't match")
43+
assert.Equal(t, int64(1674598662022), *result.Created, "'Created' timestamp doesn't match")
44+
assert.Equal(t, int64(1674598662022), *result.LastUpdated, "'Last Updated' timestamp doesn't match")
45+
assert.Equal(t, "TestCreatorId", *result.Creator, "Creator doesn't match")
46+
assert.Equal(t, "TestUpdatedId", *result.LastUpdatedBy, "'Last Updated By' user doesn't match")
47+
}
48+
49+
func TestUpdateSettings(t *testing.T) {
50+
teardown := setup()
51+
defer teardown()
52+
53+
mux.HandleFunc(AutomatedArchivalApiURL+"/settings", verifyRequest(t, http.MethodPut, true, http.StatusOK, nil, "automated_archival/update_settings_success.json"))
54+
result, err := client.UpdateSettings(context.Background(), &automated_archival.AutomatedArchivalSettings{
55+
Version: 2,
56+
Enabled: true,
57+
LookbackPeriod: "P45D",
58+
GracePeriod: "P30D",
59+
})
60+
61+
assert.NoError(t, err, "Unexpected error updating Automated Archival settings")
62+
assert.Equal(t, int64(2), result.Version, "Version doesn't match")
63+
assert.Equal(t, true, result.Enabled, "Enabled doesn't match")
64+
assert.Equal(t, "P45D", result.LookbackPeriod, "Lookback period doesn't match")
65+
assert.Equal(t, "P30D", result.GracePeriod, "Grace period doesn't match")
66+
}
67+
68+
func TestDeleteSettings(t *testing.T) {
69+
teardown := setup()
70+
defer teardown()
71+
72+
mux.HandleFunc(AutomatedArchivalApiURL+"/settings", verifyRequest(t, http.MethodDelete, true, http.StatusNoContent, nil, ""))
73+
var version = int64(1)
74+
err := client.DeleteSettings(context.Background(), &automated_archival.AutomatedArchivalSettingsDeleteRequest{
75+
Version: &version,
76+
})
77+
assert.NoError(t, err, "Unexpected error deleting Automated Archival settings")
78+
}
79+
80+
func TestCreateExemptMetrics(t *testing.T) {
81+
teardown := setup()
82+
defer teardown()
83+
84+
mux.HandleFunc(AutomatedArchivalApiURL+"/exempt-metrics", verifyRequest(t, http.MethodPost, true, http.StatusOK, nil, "automated_archival/create_exempt_metrics_success.json"))
85+
Creator := "AAAAAAAAAAA"
86+
Created := int64(1741968478768)
87+
Metric1ID := "GmAb7YHAIBs"
88+
Metric2ID := "GmAb7YHAIB0"
89+
Metric3ID := "GmAb7YHAIB8"
90+
Name1 := "bugbash.automated.archival1"
91+
Name2 := "bugbash.automated.archival.132"
92+
Name3 := "bugbash.automated.archival.10"
93+
result, err := client.CreateExemptMetrics(context.Background(), &[]automated_archival.ExemptMetric{
94+
{
95+
Creator: &Creator,
96+
LastUpdatedBy: nil,
97+
Created: &Created,
98+
LastUpdated: &Created,
99+
Id: &Metric1ID,
100+
Name: Name1,
101+
},
102+
{
103+
Creator: &Creator,
104+
LastUpdatedBy: nil,
105+
Created: &Created,
106+
LastUpdated: &Created,
107+
Id: &Metric2ID,
108+
Name: Name2,
109+
},
110+
{
111+
Creator: &Creator,
112+
LastUpdatedBy: nil,
113+
Created: &Created,
114+
LastUpdated: &Created,
115+
Id: &Metric3ID,
116+
Name: Name3,
117+
},
118+
})
119+
120+
assert.NoError(t, err, "Unexpected error creating Automated Archival exempt metrics")
121+
assert.Equal(t, 3, len(*result), "Unexpected exempt metrics array length")
122+
exemptMetric1 := (*result)[0]
123+
assert.Equal(t, Metric1ID, *exemptMetric1.Id, "Exempt metric id doesn't match")
124+
assert.Equal(t, Name1, exemptMetric1.Name, "Exempt metric name doesn't match")
125+
exemptMetric2 := (*result)[1]
126+
assert.Equal(t, Metric2ID, *exemptMetric2.Id, "Exempt metric id doesn't match")
127+
assert.Equal(t, Name2, exemptMetric2.Name, "Exempt metric name doesn't match")
128+
exemptMetric3 := (*result)[2]
129+
assert.Equal(t, Metric3ID, *exemptMetric3.Id, "Exempt metric id doesn't match")
130+
assert.Equal(t, Name3, exemptMetric3.Name, "Exempt metric name doesn't match")
131+
}
132+
133+
func TestGetExemptMetrics(t *testing.T) {
134+
teardown := setup()
135+
defer teardown()
136+
137+
mux.HandleFunc(AutomatedArchivalApiURL+"/exempt-metrics", verifyRequest(t, http.MethodGet, true, http.StatusOK, nil, "automated_archival/get_exempt_metrics_success.json"))
138+
Metric1ID := "GmAb7YHAIBs"
139+
Metric2ID := "GmAb7YHAIB0"
140+
Metric3ID := "GmAb7YHAIB8"
141+
Name1 := "bugbash.automated.archival1"
142+
Name2 := "bugbash.automated.archival.132"
143+
Name3 := "bugbash.automated.archival.10"
144+
result, err := client.GetExemptMetrics(context.Background())
145+
146+
assert.NoError(t, err, "Unexpected error creating Automated Archival exempt metrics")
147+
assert.Equal(t, 3, len(*result), "Unexpected exempt metrics array length")
148+
exemptMetric1 := (*result)[0]
149+
assert.Equal(t, Metric1ID, *exemptMetric1.Id, "Exempt metric id doesn't match")
150+
assert.Equal(t, Name1, exemptMetric1.Name, "Exempt metric name doesn't match")
151+
exemptMetric2 := (*result)[1]
152+
assert.Equal(t, Metric2ID, *exemptMetric2.Id, "Exempt metric id doesn't match")
153+
assert.Equal(t, Name2, exemptMetric2.Name, "Exempt metric name doesn't match")
154+
exemptMetric3 := (*result)[2]
155+
assert.Equal(t, Metric3ID, *exemptMetric3.Id, "Exempt metric id doesn't match")
156+
assert.Equal(t, Name3, exemptMetric3.Name, "Exempt metric name doesn't match")
157+
}
158+
159+
func TestDeleteExemptMetrics(t *testing.T) {
160+
teardown := setup()
161+
defer teardown()
162+
163+
mux.HandleFunc(AutomatedArchivalApiURL+"/exempt-metrics", verifyRequest(t, http.MethodDelete, true, http.StatusNoContent, nil, ""))
164+
err := client.DeleteExemptMetrics(context.Background(), &automated_archival.ExemptMetricDeleteRequest{
165+
Ids: []string{"GmAb7YHAIBs", "GmAb7YHAIB0", "GmAb7YHAIB8"},
166+
})
167+
assert.NoError(t, err, "Unexpected error deleting Automated Archival exempt metrics")
168+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
[
2+
{
3+
"creator": "AAAAAAAAAAA",
4+
"lastUpdatedBy": null,
5+
"created": 1741968478768,
6+
"lastUpdated": 1741968478768,
7+
"id": "GmAb7YHAIBs",
8+
"name": "bugbash.automated.archival1"
9+
},
10+
{
11+
"creator": "AAAAAAAAAAA",
12+
"lastUpdatedBy": null,
13+
"created": 1741968532367,
14+
"lastUpdated": 1741968532367,
15+
"id": "GmAb7YHAIB0",
16+
"name": "bugbash.automated.archival.132"
17+
},
18+
{
19+
"creator": "AAAAAAAAAAA",
20+
"lastUpdatedBy": null,
21+
"created": 1741968608103,
22+
"lastUpdated": 1741968608103,
23+
"id": "GmAb7YHAIB8",
24+
"name": "bugbash.automated.archival.10"
25+
}
26+
]
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"created": 1674598662022,
3+
"creator": "TestCreatorId",
4+
"lastUpdated": 1674598662022,
5+
"lastUpdatedBy": "TestUpdatedId",
6+
"version": 1,
7+
"enabled": true,
8+
"lookbackPeriod": "P60D",
9+
"gracePeriod": "P30D"
10+
}

0 commit comments

Comments
 (0)