From eb653353b3e15f282aab16c552ccea0d5085dfe3 Mon Sep 17 00:00:00 2001 From: longfar Date: Mon, 4 Sep 2023 08:27:52 +0800 Subject: [PATCH 1/5] test: better integration --- tests/benchmark/feed_test.go | 69 ------------------- tests/benchmark/main_test.go | 28 -------- .../blank.sql} | 0 .../integration.yml} | 0 tests/jmeter_script/comment_list_jmeter.go | 42 ----------- tests/jmeter_script/follower_list_jmeter.go | 38 ---------- tests/jmeter_script/following_list_jmeter.go | 56 --------------- tests/jmeter_script/friend_list_jmeter.go | 63 ----------------- .../{start_douyin.sh => start_integretion.sh} | 4 +- tests/test_init_data.go | 4 +- 10 files changed, 5 insertions(+), 299 deletions(-) delete mode 100644 tests/benchmark/feed_test.go delete mode 100644 tests/benchmark/main_test.go rename tests/{test_init_data.sql => integration/blank.sql} (100%) rename tests/{test_config.yml => integration/integration.yml} (100%) delete mode 100644 tests/jmeter_script/comment_list_jmeter.go delete mode 100644 tests/jmeter_script/follower_list_jmeter.go delete mode 100644 tests/jmeter_script/following_list_jmeter.go delete mode 100644 tests/jmeter_script/friend_list_jmeter.go rename tests/{start_douyin.sh => start_integretion.sh} (53%) diff --git a/tests/benchmark/feed_test.go b/tests/benchmark/feed_test.go deleted file mode 100644 index c9ad79e..0000000 --- a/tests/benchmark/feed_test.go +++ /dev/null @@ -1,69 +0,0 @@ -package benchmark - -import ( - "net/http" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - gm "github.com/onsi/gomega/gmeasure" - - util "douyin/test/testutil" -) - -var _ = Describe("feed test", func() { - const ( - path = "/douyin/feed" - ) - var ( - e *gm.Experiment - ) - BeforeEach(func() { - e = gm.NewExperiment("Test Experiment") - AddReportEntry(e.Name, e) - }) - - Context("no token", func() { - It("should feed success", func() { - e.Sample(func(idx int) { - e.MeasureDuration("", func() { - resp, err := http.Get(util.CreateURL(path, nil)) - Expect(err).To(BeNil()) - defer resp.Body.Close() - Expect(resp.StatusCode).To(Equal(200)) - }) - }, gm.SamplingConfig{N: Times, NumParallel: Threads}) - }) - }) - - Context("has token", func() { - const ( - username = "fortest-feed" - password = "fortest-feed" - ) - - var ( - query = make(map[string]string) - ) - - BeforeEach(func() { - _, token, err := util.GetUseridAndToken(username, password) - Expect(err).To(BeNil()) - query["token"] = token - }) - - AfterEach(func() { - delete(query, "token") - }) - - It("should feed success", func() { - e.Sample(func(idx int) { - e.MeasureDuration("", func() { - resp, err := http.Get(util.CreateURL(path, query)) - Expect(err).To(BeNil()) - defer resp.Body.Close() - Expect(resp.StatusCode).To(Equal(200)) - }) - }, gm.SamplingConfig{N: Times, NumParallel: Threads}) - }) - }) -}) diff --git a/tests/benchmark/main_test.go b/tests/benchmark/main_test.go deleted file mode 100644 index 838192e..0000000 --- a/tests/benchmark/main_test.go +++ /dev/null @@ -1,28 +0,0 @@ -package benchmark - -import ( - "flag" - "fmt" - "testing" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" -) - -var ( - Times int - Threads int -) - -func init() { - flag.IntVar(&Times, "repeat", 1000, "-times=") - flag.IntVar(&Threads, "thread", 5, "-threads=") -} - -func TestDouyin(t *testing.T) { - flag.Parse() - fmt.Printf("\033[33mrepeat times = %v, thread numbers = %v\n\033[0m", Times, Threads) - - RegisterFailHandler(Fail) - RunSpecs(t, "Douyin benchmark test") -} diff --git a/tests/test_init_data.sql b/tests/integration/blank.sql similarity index 100% rename from tests/test_init_data.sql rename to tests/integration/blank.sql diff --git a/tests/test_config.yml b/tests/integration/integration.yml similarity index 100% rename from tests/test_config.yml rename to tests/integration/integration.yml diff --git a/tests/jmeter_script/comment_list_jmeter.go b/tests/jmeter_script/comment_list_jmeter.go deleted file mode 100644 index 0ea4cee..0000000 --- a/tests/jmeter_script/comment_list_jmeter.go +++ /dev/null @@ -1,42 +0,0 @@ -package main - -import ( - util "douyin/test/testutil" - "errors" - "fmt" - "net/http" -) - -func main() { - id, token, err := util.GetUseridAndToken("jmeter-comment", "123456") - if err != nil { - panic(err) - } - fmt.Printf("id: %v", id) - _ = token - err = AddComments(token, "1", "This is a comment for comment list test.", 100) - if err != nil { - panic(err) - } -} - -func AddComments(token, video_id, content string, num int) error { - q := map[string]string{ - "token": token, - "video_id": video_id, - "action_type": "1", - "comment_text": content, - } - for i := 0; i < num; i++ { - resp, err := http.Post(util.CreateURL("/douyin/comment/action", q), "", nil) - if err != nil { - return err - } - defer resp.Body.Close() - if resp.StatusCode != 200 { - return errors.New("return code != 200") - } - fmt.Println("add a comment") - } - return nil -} diff --git a/tests/jmeter_script/follower_list_jmeter.go b/tests/jmeter_script/follower_list_jmeter.go deleted file mode 100644 index 081402f..0000000 --- a/tests/jmeter_script/follower_list_jmeter.go +++ /dev/null @@ -1,38 +0,0 @@ -package main - -import ( - util "douyin/test/testutil" - "fmt" - "net/http" -) - -func main() { - id, _, err := util.GetUseridAndToken("jmeter-follower-list", "123456") - if err != nil { - panic(err) - } - err = DoFollower(100, id, "jmeter-fan", "1") - if err != nil { - panic(err) - } -} - -func DoFollower(num int, id int64, prefix, action string) (err error) { - query := map[string]string{ - "to_user_id": fmt.Sprintf("%d", id), - "action_type": action, - } - for i := 0; i < num; i++ { - f := prefix + fmt.Sprintf("%d", i) - _, token, err := util.GetUseridAndToken(f, f) - if err != nil { - return err - } - query["token"] = token - _, err = http.Post(util.CreateURL("/douyin/relation/action", query), "", nil) - if err != nil { - return err - } - } - return nil -} diff --git a/tests/jmeter_script/following_list_jmeter.go b/tests/jmeter_script/following_list_jmeter.go deleted file mode 100644 index 7479527..0000000 --- a/tests/jmeter_script/following_list_jmeter.go +++ /dev/null @@ -1,56 +0,0 @@ -package main - -import ( - util "douyin/test/testutil" - "fmt" - "net/http" -) - -func main() { - _, token, err := util.GetUseridAndToken("jmeter-following-list", "123456") - if err != nil { - panic(err) - } - DoFollowing(100, "jmeter-star", token, "1") -} - -func DoFollowing(num int, prefix, token, action string) (err error) { - query := map[string]string{ - "token": token, - "action_type": action, - } - for i := 0; i < num; i++ { - u := prefix + fmt.Sprintf("%d", i) - var uid int64 - uid, _, err = util.GetUseridAndToken(u, u) - if err != nil { - return - } - query["to_user_id"] = fmt.Sprintf("%d", uid) - _, err = http.Post(util.CreateURL("/douyin/relation/action", query), "", nil) - if err != nil { - return - } - } - return -} - -// func DoFollower(num int, id int64, prefix, action string) { -// query := map[string]string{ -// "to_user_id": fmt.Sprintf("%d", id), -// "action_type": action, -// } -// for i := 0; i < fansNumber; i++ { -// f := prefix + fmt.Sprintf("%d", i) -// _, token, err := util.GetUseridAndToken(f, f) -// if err != nil { -// return err -// } -// query["token"] = token -// _, err = http.Post(util.CreateURL("/douyin/relation/action", query), "", nil) -// if err != nil { -// return err -// } -// } -// return nil -// } diff --git a/tests/jmeter_script/friend_list_jmeter.go b/tests/jmeter_script/friend_list_jmeter.go deleted file mode 100644 index 67d73a4..0000000 --- a/tests/jmeter_script/friend_list_jmeter.go +++ /dev/null @@ -1,63 +0,0 @@ -package main - -import ( - util "douyin/test/testutil" - "fmt" - "net/http" -) - -func main() { - id, token, err := util.GetUseridAndToken("jmeter-friend-list", "123456") - if err != nil { - panic(err) - } - err = DoFollowing(100, "jmeter-friend", token, "1") - if err != nil { - panic(err) - } - err = DoFollower(100, id, "jmeter-friend", "1") - if err != nil { - panic(err) - } -} - -func DoFollowing(num int, prefix, token, action string) (err error) { - query := map[string]string{ - "token": token, - "action_type": action, - } - for i := 0; i < num; i++ { - u := prefix + fmt.Sprintf("%d", i) - var uid int64 - uid, _, err = util.GetUseridAndToken(u, u) - if err != nil { - return - } - query["to_user_id"] = fmt.Sprintf("%d", uid) - _, err = http.Post(util.CreateURL("/douyin/relation/action", query), "", nil) - if err != nil { - return - } - } - return -} - -func DoFollower(num int, id int64, prefix, action string) (err error) { - query := map[string]string{ - "to_user_id": fmt.Sprintf("%d", id), - "action_type": action, - } - for i := 0; i < num; i++ { - f := prefix + fmt.Sprintf("%d", i) - _, token, err := util.GetUseridAndToken(f, f) - if err != nil { - return err - } - query["token"] = token - _, err = http.Post(util.CreateURL("/douyin/relation/action", query), "", nil) - if err != nil { - return err - } - } - return nil -} diff --git a/tests/start_douyin.sh b/tests/start_integretion.sh similarity index 53% rename from tests/start_douyin.sh rename to tests/start_integretion.sh index 4f5c28b..f4abacc 100755 --- a/tests/start_douyin.sh +++ b/tests/start_integretion.sh @@ -1,8 +1,10 @@ +lsof -i:30000 | awk '{print $2}' | grep -v PID | xargs kill go mod tidy && go run test_init_data.go cd .. && go mod tidy && go build . echo '编译完成' -nohup ./douyin -c tests/test_config.yml& +nohup ./douyin -c tests/integration/integration.yml& while ! nc -z localhost 30000; do sleep 1 done echo '启动完成' +cd tests && ginkgo integration diff --git a/tests/test_init_data.go b/tests/test_init_data.go index ae37f12..a2fb44c 100644 --- a/tests/test_init_data.go +++ b/tests/test_init_data.go @@ -51,10 +51,10 @@ func importSQLFile(filename, dsn string) { func main() { user := flag.String("u", "root", "username of mysql") passwd := flag.String("p", "root", "password of mysql") + file := flag.String("f", "./integration/blank.sql", "sql file") flag.Parse() - sqlFilename := "test_init_data.sql" dsn := fmt.Sprintf("%s:%s@tcp(localhost)/", *user, *passwd) - importSQLFile(sqlFilename, dsn) + importSQLFile(*file, dsn) } From 913bf8c6e3a0ad7aca2e992e96c3b8c179c9d90b Mon Sep 17 00:00:00 2001 From: longfar Date: Mon, 4 Sep 2023 08:42:53 +0800 Subject: [PATCH 2/5] test: increase the password strength of the test account --- tests/integration/comment_test.go | 1 - tests/integration/favorite_test.go | 1 - tests/integration/feed_test.go | 1 - tests/integration/main_test.go | 4 ++++ tests/integration/message_test.go | 4 ++-- tests/integration/relation_test.go | 18 +++++++++--------- tests/integration/user_test.go | 16 ++++++++-------- 7 files changed, 23 insertions(+), 22 deletions(-) diff --git a/tests/integration/comment_test.go b/tests/integration/comment_test.go index 9fdb878..f12ec18 100644 --- a/tests/integration/comment_test.go +++ b/tests/integration/comment_test.go @@ -13,7 +13,6 @@ import ( var _ = Describe("comment test", func() { const ( username = "fortest-comment" - password = "fortest-comment" video_id = 2 content = "This is a comment for test" ) diff --git a/tests/integration/favorite_test.go b/tests/integration/favorite_test.go index 0c7fdb3..9cacc3d 100644 --- a/tests/integration/favorite_test.go +++ b/tests/integration/favorite_test.go @@ -13,7 +13,6 @@ import ( var _ = Describe("favorite test", func() { const ( username = "fortest-favorite" - password = "fortest-favorite" ) var ( diff --git a/tests/integration/feed_test.go b/tests/integration/feed_test.go index 60f010a..1107133 100644 --- a/tests/integration/feed_test.go +++ b/tests/integration/feed_test.go @@ -65,7 +65,6 @@ var _ = Describe("/douyin/feed api request", func() { Context("has token", func() { const ( username = "fortest-feed" - password = "fortest-feed" ) var ( diff --git a/tests/integration/main_test.go b/tests/integration/main_test.go index 441237b..ddcb40e 100644 --- a/tests/integration/main_test.go +++ b/tests/integration/main_test.go @@ -7,6 +7,10 @@ import( . "github.com/onsi/gomega" ) +const ( + password = "IntegrationTest!2023" +) + func TestDouyin(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Douyin integration test") diff --git a/tests/integration/message_test.go b/tests/integration/message_test.go index 5bc3a57..941d9a0 100644 --- a/tests/integration/message_test.go +++ b/tests/integration/message_test.go @@ -25,9 +25,9 @@ var _ = Describe("message test", func() { BeforeEach(func() { var err error - idA, tokenA, err = util.GetUseridAndToken(userA, userA) + idA, tokenA, err = util.GetUseridAndToken(userA, password) Expect(err).To(BeNil()) - idB, tokenB, err = util.GetUseridAndToken(userB, userB) + idB, tokenB, err = util.GetUseridAndToken(userB, password) Expect(err).To(BeNil()) // DoRelationAction(map[string]string{ // "token": tokenA, diff --git a/tests/integration/relation_test.go b/tests/integration/relation_test.go index e4581ae..7b43cc1 100644 --- a/tests/integration/relation_test.go +++ b/tests/integration/relation_test.go @@ -28,9 +28,9 @@ var _ = Describe("relation test", func() { ) BeforeEach(func() { - fanid_, token, err := util.GetUseridAndToken(fan, fan) + fanid_, token, err := util.GetUseridAndToken(fan, password) Expect(err).To(BeNil()) - upid_, _, err := util.GetUseridAndToken(up, up) + upid_, _, err := util.GetUseridAndToken(up, password) Expect(err).To(BeNil()) fanid = fanid_ upid = upid_ @@ -124,7 +124,7 @@ var _ = Describe("relation test", func() { ) BeforeEach(func() { - id, token, err := util.GetUseridAndToken(fan, fan) + id, token, err := util.GetUseridAndToken(fan, password) Expect(err).To(BeNil()) fanid = id query["user_id"] = fmt.Sprintf("%d", id) @@ -221,7 +221,7 @@ var _ = Describe("relation test", func() { ) BeforeEach(func() { - id, token, err := util.GetUseridAndToken(up, up) + id, token, err := util.GetUseridAndToken(up, password) Expect(err).To(BeNil()) upid = id query["user_id"] = fmt.Sprintf("%d", id) @@ -302,7 +302,7 @@ var _ = Describe("relation test", func() { ) BeforeEach(func() { - id, token, err := util.GetUseridAndToken(userA, userA) + id, token, err := util.GetUseridAndToken(userA, password) Expect(err).To(BeNil()) query["user_id"] = fmt.Sprintf("%d", id) query["token"] = token @@ -336,12 +336,12 @@ var _ = Describe("relation test", func() { ) BeforeEach(func() { - id, token, err := util.GetUseridAndToken(userA, userA) + id, token, err := util.GetUseridAndToken(userA, password) Expect(err).To(BeNil()) queryA["user_id"] = fmt.Sprintf("%d", id) queryA["token"] = token - id, token, err = util.GetUseridAndToken(userB, userB) + id, token, err = util.GetUseridAndToken(userB, password) Expect(err).To(BeNil()) queryB["user_id"] = fmt.Sprintf("%d", id) queryB["token"] = token @@ -465,7 +465,7 @@ func actionFollowing(token, action string) (err error) { for i := 1; i < fansNumber+1; i++ { u := prefix + fmt.Sprintf("%d", i) var uid int64 - uid, _, err = util.GetUseridAndToken(u, u) + uid, _, err = util.GetUseridAndToken(u, password) if err != nil { return } @@ -486,7 +486,7 @@ func actionFollower(upid int64, action string) error { } for i := 1; i < fansNumber+1; i++ { f := user + fmt.Sprintf("%d", i) - _, token, err := util.GetUseridAndToken(f, f) + _, token, err := util.GetUseridAndToken(f, password) if err != nil { return err } diff --git a/tests/integration/user_test.go b/tests/integration/user_test.go index b730e04..44f3576 100644 --- a/tests/integration/user_test.go +++ b/tests/integration/user_test.go @@ -23,7 +23,7 @@ var _ = Describe("user test", func() { It("should register success", func() { query := map[string]string{ "username": testuser, - "password": "123456", + "password": password, } resp, err := http.Post(util.CreateURL(path, query), "", nil) Expect(err).To(BeNil()) @@ -38,7 +38,7 @@ var _ = Describe("user test", func() { It("username exited", func() { query := map[string]string{ "username": testuser, - "password": "123456", + "password": password, } resp, err := http.Post(util.CreateURL(path, query), "", nil) Expect(err).To(BeNil()) @@ -58,7 +58,7 @@ var _ = Describe("user test", func() { Expect(len(longuser) > 32).To(BeTrue()) query := map[string]string{ "username": longuser, - "password": "000000", + "password": password, } resp, err := http.Post(util.CreateURL(path, query), "", nil) Expect(err).To(BeNil()) @@ -84,7 +84,7 @@ var _ = Describe("user test", func() { respData, err := util.GetDouyinResponse[util.DouyinUserRegisterResponse](resp) Expect(err).To(BeNil()) - Expect(respData.StatusCode).To(Equal(int64(10400))) + Expect(respData.StatusCode).To(Equal(int64(10122))) }) // TODO: password too short and not strong enough @@ -94,7 +94,7 @@ var _ = Describe("user test", func() { const ( path = uPath + "/login" username = "fortest-login" - password = "fortest-login" + password = password ) var ( userid int64 @@ -131,7 +131,7 @@ var _ = Describe("user test", func() { query := map[string]string{ "username": user, - "password": "hhhhhh", + "password": password, } resp, err := http.Post(util.CreateURL(path, query), "", nil) Expect(err).To(BeNil()) @@ -172,7 +172,7 @@ var _ = Describe("user test", func() { BeforeEach(func() { var err error - id, token, err = util.GetUseridAndToken(username, username) + id, token, err = util.GetUseridAndToken(username, password) Expect(err).To(BeNil()) userid = fmt.Sprintf("%d", id) }) @@ -214,7 +214,7 @@ var _ = Describe("user test", func() { It("wrong userid", func() { query := map[string]string{ - "user_id": userid + "0", + "user_id": userid + "000", "token": token, } resp, err := http.Get(util.CreateURL(path, query)) From 2fcb2bf873ea5a2c3e864d5d3bd0b249ca8da769 Mon Sep 17 00:00:00 2001 From: longfar Date: Mon, 4 Sep 2023 08:58:59 +0800 Subject: [PATCH 3/5] test: adjust the CI script --- .github/workflows/StandAloneDouyin.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/StandAloneDouyin.yml b/.github/workflows/StandAloneDouyin.yml index d5b594f..4a526a9 100644 --- a/.github/workflows/StandAloneDouyin.yml +++ b/.github/workflows/StandAloneDouyin.yml @@ -35,8 +35,7 @@ jobs: with: redis-port: 6379 - - name: start test + - name: Start integration test run: | cd tests - bash ./start_douyin.sh - go test ./integration + bash ./start_integration.sh From 056de8207c1af7c9932799c61d6acfe69257c11a Mon Sep 17 00:00:00 2001 From: longfar Date: Mon, 4 Sep 2023 09:01:55 +0800 Subject: [PATCH 4/5] test: fix wrong filename --- tests/{start_integretion.sh => start_integration.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/{start_integretion.sh => start_integration.sh} (100%) diff --git a/tests/start_integretion.sh b/tests/start_integration.sh similarity index 100% rename from tests/start_integretion.sh rename to tests/start_integration.sh From 682a13b3704741a5eb4b0c826c679abe0dbcebba Mon Sep 17 00:00:00 2001 From: longfar Date: Mon, 4 Sep 2023 09:05:22 +0800 Subject: [PATCH 5/5] fix: install ginkgo --- .github/workflows/StandAloneDouyin.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/StandAloneDouyin.yml b/.github/workflows/StandAloneDouyin.yml index 4a526a9..87c541a 100644 --- a/.github/workflows/StandAloneDouyin.yml +++ b/.github/workflows/StandAloneDouyin.yml @@ -37,5 +37,6 @@ jobs: - name: Start integration test run: | + sudo apt install ginkgo cd tests bash ./start_integration.sh