package search

import (
	"sync"
	"testing"
	"time"

	"github.com/meilisearch/meilisearch-go"
	"github.com/valyala/fasthttp"
)

func TestMeilisearch(t *testing.T) {
	t.Skip()

	meili := meilisearch.NewFastHTTPCustomClient(
		meilisearch.ClientConfig{Host: "http://localhost:7700"},
		&fasthttp.Client{
			// Since Meilisearch idle time is 5s.
			MaxIdleConnDuration: 4 * time.Second,
			ConnPoolStrategy:    fasthttp.LIFO,
		},
	)

	// Simulate 10 clients sending requests.
	g := sync.WaitGroup{}
	for i := 0; i < 10; i++ {
		g.Add(1)
		go func() {
			defer g.Done()

			_, _ = meili.Index("foo").Search("bar", &meilisearch.SearchRequest{})
			time.Sleep(5 * time.Second)
			_, err := meili.Index("foo").Search("bar", &meilisearch.SearchRequest{})
			if e, ok := err.(*meilisearch.Error); ok && e.ErrCode == meilisearch.MeilisearchCommunicationError {
				panic(e)
			}
		}()
	}
	g.Wait()
}
