Skip to content

Commit 7ade972

Browse files
authored
{Sls} Add sls module (#1268)
* add sls * adjust runtime * fix tests * apply pager to openapi operation * remove unused * refine rest call for pathpattern * refine * add integration tests * add pb * add integration logs tests * add logs go tests * fix tests * fix auth * fix test * fix cred * fix ua * add tests * add tests
1 parent a60633d commit 7ade972

File tree

17 files changed

+3451
-3
lines changed

17 files changed

+3451
-3
lines changed

go.mod

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ go 1.23.0
55
toolchain go1.23.8
66

77
require (
8+
github.com/alibabacloud-go/alibabacloud-gateway-sls v0.3.0
89
github.com/alibabacloud-go/darabonba-openapi/v2 v2.1.12
910
github.com/alibabacloud-go/tea v1.3.12
1011
github.com/alibabacloud-go/tea-utils/v2 v2.0.7
@@ -13,7 +14,9 @@ require (
1314
github.com/aliyun/credentials-go v1.4.7
1415
github.com/alyu/configparser v0.0.0-20191103060215-744e9a66e7bc
1516
github.com/droundy/goopt v0.0.0-20220217183150-48d6390ad4d1
17+
github.com/gogo/protobuf v1.3.2
1618
github.com/jmespath/go-jmespath v0.4.0
19+
github.com/pierrec/lz4 v2.6.0+incompatible
1720
github.com/stretchr/testify v1.10.0
1821
github.com/syndtr/goleveldb v1.0.0
1922
golang.org/x/crypto v0.41.0
@@ -22,12 +25,21 @@ require (
2225
)
2326

2427
require (
28+
github.com/alibabacloud-go/alibabacloud-gateway-sls-util v0.3.0 // indirect
2529
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 // indirect
30+
github.com/alibabacloud-go/darabonba-array v0.1.0 // indirect
31+
github.com/alibabacloud-go/darabonba-encode-util v0.0.2 // indirect
32+
github.com/alibabacloud-go/darabonba-map v0.0.2 // indirect
33+
github.com/alibabacloud-go/darabonba-signature-util v0.0.7 // indirect
34+
github.com/alibabacloud-go/darabonba-string v1.0.2 // indirect
2635
github.com/alibabacloud-go/debug v1.0.1 // indirect
36+
github.com/alibabacloud-go/openapi-util v0.1.0 // indirect
37+
github.com/alibabacloud-go/tea-utils v1.3.1 // indirect
2738
github.com/clbanning/mxj/v2 v2.7.0 // indirect
2839
github.com/davecgh/go-spew v1.1.1 // indirect
2940
github.com/golang/snappy v1.0.0 // indirect
3041
github.com/json-iterator/go v1.1.12 // indirect
42+
github.com/klauspost/compress v1.17.8 // indirect
3143
github.com/kr/pretty v0.3.1 // indirect
3244
github.com/kr/text v0.2.0 // indirect
3345
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect

go.sum

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXY
66
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
77
github.com/alibabacloud-go/alibabacloud-gateway-pop v0.0.6 h1:eIf+iGJxdU4U9ypaUfbtOWCsZSbTb8AUHvyPrxu6mAA=
88
github.com/alibabacloud-go/alibabacloud-gateway-pop v0.0.6/go.mod h1:4EUIoxs/do24zMOGGqYVWgw0s9NtiylnJglOeEB5UJo=
9+
github.com/alibabacloud-go/alibabacloud-gateway-sls v0.3.0 h1:Cw8bt/gW9BXfy2RKfrhDiNfjLIcwiw8IUV7whK7PIGU=
10+
github.com/alibabacloud-go/alibabacloud-gateway-sls v0.3.0/go.mod h1:NKW3aNBvIA7b+wNbYzAs6984/WKvnRB4rTzLqR07Av4=
11+
github.com/alibabacloud-go/alibabacloud-gateway-sls-util v0.3.0 h1:5cHYj3jMXdF4jRV6Pql9Tav3RUUtqwmHILbBweJPQdg=
12+
github.com/alibabacloud-go/alibabacloud-gateway-sls-util v0.3.0/go.mod h1:o4e70j53rTN7CrD4EDj+r0tfiaFriDVHT9hpR6Tw2M0=
913
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.4/go.mod h1:sCavSAvdzOjul4cEqeVtvlSaSScfNsTQ+46HwlTL1hc=
1014
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5 h1:zE8vH9C7JiZLNJJQ5OwjU9mSi4T9ef9u3BURT6LCLC8=
1115
github.com/alibabacloud-go/alibabacloud-gateway-spi v0.0.5/go.mod h1:tWnyE9AjF8J8qqLk645oUmVUnFybApTQWklQmi5tY6g=
@@ -36,11 +40,14 @@ github.com/alibabacloud-go/tea v1.1.11/go.mod h1:/tmnEaQMyb4Ky1/5D+SE1BAsa5zj/Ke
3640
github.com/alibabacloud-go/tea v1.1.17/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
3741
github.com/alibabacloud-go/tea v1.1.20/go.mod h1:nXxjm6CIFkBhwW4FQkNrolwbfon8Svy6cujmKFUq98A=
3842
github.com/alibabacloud-go/tea v1.2.2/go.mod h1:CF3vOzEMAG+bR4WOql8gc2G9H3EkH3ZLAQdpmpXMgwk=
43+
github.com/alibabacloud-go/tea v1.2.3-0.20240605082020-e6e537a31150/go.mod h1:SP/4ugxOFdctgZvPRC0Anqbq1Q1VmuPXoUVyncO5azs=
3944
github.com/alibabacloud-go/tea v1.3.12 h1:ir2Io80UlBy1JHf7t+uCTxmaGQtiEta1WpV29NGJTkE=
4045
github.com/alibabacloud-go/tea v1.3.12/go.mod h1:A560v/JTQ1n5zklt2BEpurJzZTI8TUT+Psg2drWlxRg=
4146
github.com/alibabacloud-go/tea-utils v1.3.1 h1:iWQeRzRheqCMuiF3+XkfybB3kTgUXkXX+JMrqfLeB2I=
4247
github.com/alibabacloud-go/tea-utils v1.3.1/go.mod h1:EI/o33aBfj3hETm4RLiAxF/ThQdSngxrpF8rKUDJjPE=
48+
github.com/alibabacloud-go/tea-utils/v2 v2.0.1/go.mod h1:U5MTY10WwlquGPS34DOeomUGBB0gXbLueiq5Trwu0C4=
4349
github.com/alibabacloud-go/tea-utils/v2 v2.0.5/go.mod h1:dL6vbUT35E4F4bFTHL845eUloqaerYBYPsdWR2/jhe4=
50+
github.com/alibabacloud-go/tea-utils/v2 v2.0.6/go.mod h1:qxn986l+q33J5VkialKMqT/TTs3E+U9MJpd001iWQ9I=
4451
github.com/alibabacloud-go/tea-utils/v2 v2.0.7 h1:WDx5qW3Xa5ZgJ1c8NfqJkF6w+AU5wB8835UdhPr6Ax0=
4552
github.com/alibabacloud-go/tea-utils/v2 v2.0.7/go.mod h1:qxn986l+q33J5VkialKMqT/TTs3E+U9MJpd001iWQ9I=
4653
github.com/aliyun/alibaba-cloud-sdk-go v1.63.107 h1:qagvUyrgOnBIlVRQWOyCZGVKUIYbMBdGdJ104vBpRFU=
@@ -70,11 +77,15 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF
7077
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
7178
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
7279
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
80+
github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA=
81+
github.com/frankban/quicktest v1.14.5/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
7382
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
7483
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
7584
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
7685
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
7786
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
87+
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
88+
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
7889
github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A=
7990
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
8091
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
@@ -96,6 +107,7 @@ github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
96107
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
97108
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
98109
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
110+
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
99111
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
100112
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
101113
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -111,6 +123,10 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
111123
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
112124
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
113125
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
126+
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
127+
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
128+
github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU=
129+
github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
114130
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
115131
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
116132
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -141,6 +157,8 @@ github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
141157
github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
142158
github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b h1:FfH+VrHHk6Lxt9HdVS0PXzSXFyS2NbZKXv33FYPol0A=
143159
github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b/go.mod h1:AC62GU6hc0BrNm+9RK9VSiwa/EUe1bkIeFORAMcHvJU=
160+
github.com/pierrec/lz4 v2.6.0+incompatible h1:Ix9yFKn1nSPBLFl/yZknTp8TU5G4Ps0JDmguYK6iH1A=
161+
github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
144162
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
145163
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
146164
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
@@ -234,6 +252,7 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
234252
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
235253
golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY=
236254
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
255+
golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
237256
golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg=
238257
golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
239258
golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
@@ -317,7 +336,9 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn
317336
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
318337
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
319338
golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
339+
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
320340
golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
341+
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
321342
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
322343
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
323344
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=

integration/logexample.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"Topic": "cli-logs",
3+
"Source": "333.333.333.333",
4+
"LogTags": [
5+
{
6+
"Key": "env",
7+
"Value": "ccccc"
8+
}
9+
],
10+
"Logs": [
11+
{
12+
"Time": 1760361897,
13+
"Contents": [
14+
{
15+
"Key": "level",
16+
"Value": "info"
17+
},
18+
{
19+
"Key": "aaaaaaaa",
20+
"Value": "info"
21+
}
22+
]
23+
}
24+
]
25+
}

integration/sls_test.sh

Lines changed: 165 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,165 @@
1+
#!/bin/bash
2+
set +e
3+
4+
execute_command() {
5+
local description=$1
6+
shift
7+
local command=("$@")
8+
9+
echo ========================================================================
10+
11+
echo "Executing: ${command[*]}"
12+
output=$(go run "${command[@]}" 2>&1)
13+
local exit_code=$?
14+
15+
if [ $exit_code -ne 0 ]; then
16+
echo "Failed to $description"
17+
echo "$output"
18+
return 1
19+
fi
20+
21+
echo "$description success"
22+
echo "$output"
23+
echo
24+
echo
25+
return 0
26+
}
27+
28+
sls_project_test() {
29+
TIMESTAMP=$(date +"%Y%m%d-%H%M")
30+
PROJECT_NAME="sls-test-pro-$TIMESTAMP-$RANDOM"
31+
DESCRIPTION="this is test"
32+
33+
echo "###### Try to test project $PROJECT_NAME ######"
34+
35+
if ! execute_command "create project $PROJECT_NAME" ./main/main.go Sls CreateProject --body "{\"description\":\"$DESCRIPTION\",\"projectName\":\"$PROJECT_NAME\"}"; then
36+
return 1
37+
fi
38+
39+
if ! execute_command "update project $PROJECT_NAME" ./main/main.go Sls UpdateProject --project "$PROJECT_NAME" --body "{\"description\":\"this is test for update\"}"; then
40+
return 1
41+
fi
42+
43+
if ! execute_command "get project $PROJECT_NAME" ./main/main.go Sls GetProject --project "$PROJECT_NAME"; then
44+
return 1
45+
fi
46+
47+
if ! execute_command "list project" ./main/main.go Sls ListProject; then
48+
return 1
49+
fi
50+
51+
if ! execute_command "delete project $PROJECT_NAME" ./main/main.go Sls DeleteProject --project "$PROJECT_NAME"; then
52+
return 1
53+
fi
54+
}
55+
56+
sls_metric_store_test() {
57+
TIMESTAMP=$(date +"%Y%m%d-%H%M")
58+
PROJECT_NAME="sls-test-pro-$TIMESTAMP-$RANDOM"
59+
METRIC_STORE_NAME="sls-test-ms-$TIMESTAMP-$RANDOM"
60+
DESCRIPTION="this is test"
61+
62+
echo "###### Try to test metric store $METRIC_STORE_NAME for project $PROJECT_NAME ######"
63+
if ! execute_command "create project $PROJECT_NAME" ./main/main.go Sls CreateProject --body "{\"description\":\"$DESCRIPTION\",\"projectName\":\"$PROJECT_NAME\"}"; then
64+
return 1
65+
fi
66+
67+
if ! execute_command "create metric store $METRIC_STORE_NAME" ./main/main.go Sls CreateMetricStore --project "$PROJECT_NAME" --body "{\"name\":\"$METRIC_STORE_NAME\",\"ttl\":7,\"shardCount\":2}"; then
68+
return 1
69+
fi
70+
71+
if ! execute_command "get metric store $METRIC_STORE_NAME" ./main/main.go Sls GetMetricStore --project "$PROJECT_NAME" --name "$METRIC_STORE_NAME"; then
72+
return 1
73+
fi
74+
75+
if ! execute_command "update metric store $METRIC_STORE_NAME" ./main/main.go Sls UpdateMetricStore --project "$PROJECT_NAME" --name "$METRIC_STORE_NAME" --body "{\"ttl\":3}"; then
76+
return 1
77+
fi
78+
79+
if ! execute_command "list metric store" ./main/main.go Sls ListMetricStores --project "$PROJECT_NAME"; then
80+
return 1
81+
fi
82+
83+
if ! execute_command "get metric store $METRIC_STORE_NAME" ./main/main.go Sls GetMetricStore --project "$PROJECT_NAME" --name "$METRIC_STORE_NAME"; then
84+
return 1
85+
fi
86+
87+
if ! execute_command "delete metric store $METRIC_STORE_NAME" ./main/main.go Sls DeleteMetricStore --project "$PROJECT_NAME" --name "$METRIC_STORE_NAME"; then
88+
return 1
89+
fi
90+
91+
if ! execute_command "delete project $PROJECT_NAME" ./main/main.go Sls DeleteProject --project "$PROJECT_NAME"; then
92+
return 1
93+
fi
94+
}
95+
96+
sls_log_store_put_pull_test() {
97+
TIMESTAMP=$(date +"%Y%m%d-%H%M")
98+
PROJECT_NAME="sls-test-pro-$TIMESTAMP-$RANDOM"
99+
LOG_STORE_NAME="sls-test-ms-$TIMESTAMP-$RANDOM"
100+
DESCRIPTION="this is test"
101+
102+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
103+
104+
echo "###### Try to test log store $LOG_STORE_NAME for project $PROJECT_NAME ######"
105+
if ! execute_command "create project $PROJECT_NAME" ./main/main.go Sls CreateProject --body "{\"description\":\"$DESCRIPTION\",\"projectName\":\"$PROJECT_NAME\"}"; then
106+
return 1
107+
fi
108+
109+
if ! execute_command "create log store $LOG_STORE_NAME" ./main/main.go Sls CreateLogStore --project "$PROJECT_NAME" --body "{\"logstoreName\":\"$LOG_STORE_NAME\",\"ttl\":7,\"shardCount\":2}"; then
110+
return 1
111+
fi
112+
113+
if ! execute_command "get log store $LOG_STORE_NAME" ./main/main.go Sls GetLogStore --project "$PROJECT_NAME" --logstore "$LOG_STORE_NAME"; then
114+
return 1
115+
fi
116+
117+
if ! execute_command "update log store $LOG_STORE_NAME" ./main/main.go Sls UpdateLogStore --project "$PROJECT_NAME" --logstore "$LOG_STORE_NAME" --body "{\"ttl\":3}"; then
118+
return 1
119+
fi
120+
121+
if ! execute_command "list log store" ./main/main.go Sls ListLogStores --project "$PROJECT_NAME"; then
122+
return 1
123+
fi
124+
125+
if ! execute_command "get log store $LOG_STORE_NAME" ./main/main.go Sls GetLogStore --project "$PROJECT_NAME" --logstore "$LOG_STORE_NAME"; then
126+
return 1
127+
fi
128+
129+
if ! execute_command "put log store $LOG_STORE_NAME" ./main/main.go Sls PutLogs --project "$PROJECT_NAME" --logstore "$LOG_STORE_NAME" --body "{\"Logs\":[{\"Time\":$(date +%s),\"Contents\":[{\"Key\":\"test\",\"Value\":\"test\"}]}]}"; then
130+
return 1
131+
fi
132+
133+
if ! execute_command "put log store $LOG_STORE_NAME" ./main/main.go Sls PutLogs --project "$PROJECT_NAME" --logstore "$LOG_STORE_NAME" --body-file "${SCRIPT_DIR}/logexample.json"; then
134+
return 1
135+
fi
136+
sleep 10
137+
138+
cursor=$(go run ./main/main.go Sls GetCursor --project "$PROJECT_NAME" --logstore "$LOG_STORE_NAME" --from begin --shardId 0 --output cols=cursor | awk 'NR==3')
139+
echo $cursor
140+
if ! execute_command "pull log store $LOG_STORE_NAME" ./main/main.go Sls PullLogs --project "$PROJECT_NAME" --logStore "$LOG_STORE_NAME" --cursor "$cursor" --count 10 --shardId 0; then
141+
return 1
142+
fi
143+
144+
if ! execute_command "delete log store $LOG_STORE_NAME" ./main/main.go Sls DeleteLogStore --project "$PROJECT_NAME" --logstore "$LOG_STORE_NAME"; then
145+
return 1
146+
fi
147+
148+
if ! execute_command "delete project $PROJECT_NAME" ./main/main.go Sls DeleteProject --project "$PROJECT_NAME"; then
149+
return 1
150+
fi
151+
}
152+
153+
echo "###### Start to test sls project ######"
154+
sls_project_test
155+
echo "###### End to test sls project ######"
156+
157+
echo "###### Start to test sls metric store ######"
158+
sls_metric_store_test
159+
echo "###### End to test sls metric store ######"
160+
161+
echo "###### Start to test sls log store put and pull ######"
162+
sls_log_store_put_pull_test
163+
echo "###### End to test sls log store put and pull ######"
164+
165+
exit

main/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424
aliyunopenapimeta "github.com/aliyun/aliyun-cli/v3/aliyun-openapi-meta"
2525
"github.com/aliyun/aliyun-cli/v3/cli"
2626
"github.com/aliyun/aliyun-cli/v3/config"
27-
"github.com/aliyun/aliyun-cli/v3/go-migrate"
27+
go_migrate "github.com/aliyun/aliyun-cli/v3/go-migrate"
2828
"github.com/aliyun/aliyun-cli/v3/i18n"
2929
"github.com/aliyun/aliyun-cli/v3/openapi"
3030
"github.com/aliyun/aliyun-cli/v3/oss/lib"

meta/repository.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ package meta
1515

1616
import (
1717
"encoding/json"
18+
"errors"
1819
"regexp"
1920
"sort"
2021
"strings"
@@ -29,6 +30,35 @@ type Repository struct {
2930
index map[string]Product
3031
}
3132

33+
// For test mock data only
34+
func MockLoadRepository(Products []Product) (*Repository, error) {
35+
r := Repository{
36+
index: make(map[string]Product),
37+
}
38+
for _, product := range Products {
39+
name := strings.ToLower(product.Code)
40+
_, ok := r.index[name]
41+
if !ok {
42+
r.Names = append(r.Names, product.Code)
43+
r.index[name] = product
44+
} else {
45+
return nil, errors.New("Duplicated Name: " + product.Code)
46+
}
47+
sort.Strings(product.ApiNames)
48+
r.Products = append(r.Products, product)
49+
}
50+
sort.Strings(r.Names)
51+
return &r, nil
52+
}
53+
54+
var HookGetApi = func(fn func(productCode string, version string, apiName string) (Api, bool)) func(productCode string, version string, apiName string) (Api, bool) {
55+
return fn
56+
}
57+
58+
var HookGetApiByPath = func(fn func(productCode string, version string, method string, path string) (Api, bool)) func(productCode string, version string, method string, path string) (Api, bool) {
59+
return fn
60+
}
61+
3262
func LoadRepository() *Repository {
3363
var e ProductSet
3464
err := ReadJsonFrom("products.json", &e)

0 commit comments

Comments
 (0)