2024-08-02 11:19:49 +00:00
|
|
|
package main
|
2024-08-02 11:26:08 +00:00
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"penahub.gitlab.yandexcloud.net/backend/quiz/telegram/client"
|
|
|
|
"penahub.gitlab.yandexcloud.net/backend/quiz/telegram/models"
|
|
|
|
"penahub.gitlab.yandexcloud.net/backend/quiz/telegram/respondent"
|
|
|
|
stateManager "penahub.gitlab.yandexcloud.net/backend/quiz/telegram/state_manager"
|
|
|
|
"sync"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
//goos: windows
|
|
|
|
//goarch: amd64
|
|
|
|
//pkg: penahub.gitlab.yandexcloud.net/backend/quiz/telegram
|
|
|
|
//cpu: AMD Ryzen 5 5600H with Radeon Graphics
|
|
|
|
//BenchmarkMain-12 1 6015112300 ns/op 12184 B/op 94 allocs/op
|
|
|
|
//PASS
|
|
|
|
//ok penahub.gitlab.yandexcloud.net/backend/quiz/telegram 6.049s
|
|
|
|
|
|
|
|
func BenchmarkMain(b *testing.B) {
|
|
|
|
for n := 0; n < b.N; n++ {
|
|
|
|
var wg sync.WaitGroup
|
|
|
|
wg.Add(len(models.DataSet))
|
|
|
|
|
|
|
|
for i := 0; i < len(models.DataSet); i++ {
|
|
|
|
go func(i int) {
|
|
|
|
defer wg.Done()
|
|
|
|
mockClient := client.NewClient()
|
|
|
|
mockStateManager := stateManager.NewStateManager(stateManager.Deps{
|
|
|
|
Questions: models.DataSet[i],
|
|
|
|
State: "start",
|
|
|
|
Client: mockClient,
|
|
|
|
})
|
|
|
|
|
|
|
|
mockRespondent := respondent.NewRespondent(mockStateManager)
|
|
|
|
mockStateManager.SendQuestion()
|
|
|
|
|
|
|
|
for mockStateManager.State != "end" {
|
|
|
|
mockRespondent.Respond()
|
|
|
|
fmt.Println("respond")
|
2024-08-05 11:52:36 +00:00
|
|
|
//time.Sleep(2 * time.Second)
|
2024-08-02 11:26:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
fmt.Println(fmt.Sprintf("gorutine %d is complete, now serch it messages", i))
|
|
|
|
for number, msg := range mockClient.Messages {
|
|
|
|
fmt.Println(fmt.Sprintf("gorutine %d, message %s, message number %d", i, msg, number))
|
|
|
|
}
|
|
|
|
|
|
|
|
}(i)
|
|
|
|
}
|
|
|
|
wg.Wait()
|
|
|
|
|
|
|
|
fmt.Println("complete")
|
|
|
|
}
|
|
|
|
}
|