mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-09-01 14:53:07 +08:00
4efc987abb
Start the DocReader gRPC server in the DocReader workflow, skip client integration tests when the server is unavailable, exclude docreader packages from the App workflow test scope, and trigger DocReader checks on go.mod/go.sum changes.
96 lines
2.2 KiB
Go
96 lines
2.2 KiB
Go
package client
|
|
|
|
import (
|
|
"context"
|
|
"log"
|
|
"os"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/Tencent/WeKnora/docreader/proto"
|
|
)
|
|
|
|
func init() {
|
|
log.SetOutput(os.Stdout)
|
|
log.SetFlags(log.LstdFlags | log.Lmicroseconds | log.Lshortfile)
|
|
log.Println("INFO: Initializing DocReader client tests")
|
|
}
|
|
|
|
func requireLiveDocReaderClient(t *testing.T) *Client {
|
|
t.Helper()
|
|
|
|
client, err := NewClient("localhost:50051")
|
|
if err != nil {
|
|
t.Fatalf("Failed to create client: %v", err)
|
|
}
|
|
t.Cleanup(func() { client.Close() })
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
|
|
defer cancel()
|
|
if _, err := client.ListEngines(ctx, &proto.ListEnginesRequest{}); err != nil {
|
|
t.Skipf("DocReader gRPC server not available at localhost:50051: %v", err)
|
|
}
|
|
|
|
return client
|
|
}
|
|
|
|
func TestReadURL(t *testing.T) {
|
|
client := requireLiveDocReaderClient(t)
|
|
client.SetDebug(true)
|
|
|
|
startTime := time.Now()
|
|
resp, err := client.Read(
|
|
context.Background(),
|
|
&proto.ReadRequest{
|
|
Url: "https://example.com",
|
|
Title: "test",
|
|
},
|
|
)
|
|
log.Printf("INFO: Read(URL) completed in %v", time.Since(startTime))
|
|
|
|
if err != nil {
|
|
t.Fatalf("Read failed: %v", err)
|
|
}
|
|
if resp.Error != "" {
|
|
t.Fatalf("Read returned error: %s", resp.Error)
|
|
}
|
|
if resp.MarkdownContent == "" {
|
|
t.Error("Expected non-empty markdown content")
|
|
}
|
|
log.Printf("INFO: content_len=%d, images=%d", len(resp.MarkdownContent), len(resp.ImageRefs))
|
|
}
|
|
|
|
func TestReadFile(t *testing.T) {
|
|
client := requireLiveDocReaderClient(t)
|
|
client.SetDebug(true)
|
|
|
|
fileContent, err := os.ReadFile("../testdata/test.md")
|
|
if err != nil {
|
|
t.Fatalf("Failed to read test file: %v", err)
|
|
}
|
|
|
|
startTime := time.Now()
|
|
resp, err := client.Read(
|
|
context.Background(),
|
|
&proto.ReadRequest{
|
|
FileContent: fileContent,
|
|
FileName: "test.md",
|
|
FileType: "md",
|
|
},
|
|
)
|
|
log.Printf("INFO: Read(file) completed in %v", time.Since(startTime))
|
|
|
|
if err != nil {
|
|
t.Fatalf("Read failed: %v", err)
|
|
}
|
|
if resp.Error != "" {
|
|
t.Fatalf("Read returned error: %s", resp.Error)
|
|
}
|
|
if resp.MarkdownContent == "" {
|
|
t.Error("Expected non-empty markdown content")
|
|
}
|
|
|
|
imageRefs := GetImageRefsFromResponse(resp)
|
|
log.Printf("INFO: content_len=%d, images=%d", len(resp.MarkdownContent), len(imageRefs))
|
|
}
|