package main import ( "encoding/json" "fmt" "io" "log" "math/rand" "os" "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" "testing" "time" ) func BenchmarkMain(b *testing.B) { for n := 0; n < b.N; n++ { f, err := os.Open("treedata.json") if err != nil { log.Fatalf("err open json file: %v", err) } defer f.Close() values, err := io.ReadAll(f) if err != nil { log.Fatalf("err read json file: %v", err) } var dataSet []models.Question err = json.Unmarshal(values, &dataSet) if err != nil { log.Fatalf("err unmarshall json: %v", err) } dataSetMap := make(map[string]models.Question) for _, data := range dataSet { dataSetMap[data.Title] = data } rand.Seed(time.Now().UnixNano()) keys := make([]string, 0, len(dataSetMap)) for key := range dataSetMap { keys = append(keys, key) } //for i := 0; i < len(dataSet); i++ { startState := keys[rand.Intn(len(keys))] mockClient := client.NewClient() mockStateManager := stateManager.NewStateManager(stateManager.Deps{ Questions: dataSetMap, State: startState, Client: mockClient, }) mockRespondent := respondent.NewRespondent(mockStateManager) mockStateManager.SendQuestion() for { if _, ok := dataSetMap[mockStateManager.State]; !ok { fmt.Println("state not found") break } mockRespondent.Respond(startState) fmt.Println("respond") } for number, msg := range mockClient.Messages { fmt.Println(fmt.Sprintf("message %d: %s", number, msg)) } //} fmt.Println("Complete") } }