Skip to content

Commit 286864f

Browse files
committed
add CreateMetricStore
1 parent b8d79e0 commit 286864f

File tree

2 files changed

+143
-0
lines changed

2 files changed

+143
-0
lines changed

client_metric_store.go

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package sls
2+
3+
import "time"
4+
5+
// CreateMetricStore .
6+
func (c *Client) CreateMetricStore(project, name string, ttl, shard int) error {
7+
logStore := &LogStore{
8+
Name: name,
9+
TTL: ttl,
10+
ShardCount: shard,
11+
TelemetryType: "Metrics",
12+
AutoSplit: true,
13+
MaxSplitShard: 64,
14+
}
15+
err := c.CreateLogStoreV2(project, logStore)
16+
if err != nil {
17+
return err
18+
}
19+
time.Sleep(time.Second * 3)
20+
subStore := &SubStore{}
21+
subStore.Name = "prom"
22+
subStore.SortedKeyCount = 2
23+
subStore.TimeIndex = 2
24+
subStore.TTL = ttl
25+
subStore.Keys = append(subStore.Keys, SubStoreKey{
26+
Name: "__name__",
27+
Type: "text",
28+
}, SubStoreKey{
29+
Name: "__labels__",
30+
Type: "text",
31+
}, SubStoreKey{
32+
Name: "__time_nano__",
33+
Type: "long",
34+
}, SubStoreKey{
35+
Name: "__value__",
36+
Type: "double",
37+
})
38+
if !subStore.IsValid() {
39+
panic("metric store invalid")
40+
}
41+
return c.CreateSubStore(project, name, subStore)
42+
}
43+
44+
// UpdateMetricStore .
45+
func (c *Client) UpdateMetricStore(project, name string, ttl int) error {
46+
metricStore := &LogStore{
47+
Name: name,
48+
TelemetryType: "Metrics",
49+
TTL: ttl,
50+
}
51+
err := c.UpdateLogStoreV2(project, metricStore)
52+
if err != nil {
53+
return err
54+
}
55+
return c.UpdateSubStoreTTL(project, name, ttl)
56+
}
57+
58+
// DeleteMetricStore .
59+
func (c *Client) DeleteMetricStore(project, name string) error {
60+
return c.DeleteLogStore(project, name)
61+
}
62+
63+
// GetMetricStore .
64+
func (c *Client) GetMetricStore(project, name string) (*LogStore, error) {
65+
return c.GetLogStore(project, name)
66+
}

client_metric_store_test.go

+77
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
package sls
2+
3+
import (
4+
"fmt"
5+
"github.com/stretchr/testify/suite"
6+
"os"
7+
"testing"
8+
"time"
9+
)
10+
11+
func TestMetricStore(t *testing.T) {
12+
suite.Run(t, new(MetricStoreTestSuite))
13+
}
14+
15+
type MetricStoreTestSuite struct {
16+
suite.Suite
17+
endpoint string
18+
projectName string
19+
metricStoreName string
20+
accessKeyID string
21+
accessKeySecret string
22+
ttl int
23+
shardCnt int
24+
client *Client
25+
}
26+
27+
func (m *MetricStoreTestSuite) SetupSuite() {
28+
m.endpoint = os.Getenv("LOG_TEST_ENDPOINT")
29+
m.accessKeyID = os.Getenv("LOG_TEST_ACCESS_KEY_ID")
30+
m.accessKeySecret = os.Getenv("LOG_TEST_ACCESS_KEY_SECRET")
31+
suffix := time.Now().Unix()
32+
m.projectName = fmt.Sprintf("test-metric-store-%d", suffix)
33+
m.metricStoreName = "test"
34+
m.ttl = 30
35+
m.shardCnt = 2
36+
m.client = &Client{
37+
Endpoint: m.endpoint,
38+
AccessKeyID: m.accessKeyID,
39+
AccessKeySecret: m.accessKeySecret,
40+
}
41+
_, err := m.client.CreateProject(m.projectName, "test metric store")
42+
m.Require().Nil(err)
43+
time.Sleep(time.Minute)
44+
}
45+
46+
func (m *MetricStoreTestSuite) TearDownSuite() {
47+
err := m.client.DeleteProject(m.projectName)
48+
m.Require().Nil(err)
49+
}
50+
51+
func (m *MetricStoreTestSuite) TestClient_CreateAndDeleteMetricStore() {
52+
ce := m.client.CreateMetricStore(m.projectName, m.metricStoreName, m.ttl, m.shardCnt)
53+
m.Require().Nil(ce)
54+
de := m.client.DeleteMetricStore(m.projectName, m.metricStoreName)
55+
m.Require().Nil(de)
56+
}
57+
58+
func (m *MetricStoreTestSuite) TestClient_UpdateAndGetMetricStore() {
59+
ce := m.client.CreateMetricStore(m.projectName, m.metricStoreName, m.ttl, m.shardCnt)
60+
m.Require().Nil(ce)
61+
metricStore, ge := m.client.GetMetricStore(m.projectName, m.metricStoreName)
62+
m.Require().Nil(ge)
63+
m.Require().Equal(m.metricStoreName, metricStore.Name)
64+
m.Require().Equal(m.ttl, metricStore.TTL)
65+
m.Require().Equal(m.shardCnt, metricStore.ShardCount)
66+
m.Require().Equal("Metrics", metricStore.TelemetryType)
67+
68+
ue := m.client.UpdateMetricStore(m.projectName, m.metricStoreName, 15)
69+
m.Require().Nil(ue)
70+
metricStore2, ge2 := m.client.GetMetricStore(m.projectName, m.metricStoreName)
71+
m.Require().Nil(ge2)
72+
m.Require().Equal(m.metricStoreName, metricStore2.Name)
73+
m.Require().Equal(15, metricStore2.TTL)
74+
m.Require().Equal("Metrics", metricStore.TelemetryType)
75+
de := m.client.DeleteMetricStore(m.projectName, m.metricStoreName)
76+
m.Require().Nil(de)
77+
}

0 commit comments

Comments
 (0)