71 lines
1.8 KiB
Go
71 lines
1.8 KiB
Go
package hyfile
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestAcquireUploadSlot_respectsInterval(t *testing.T) {
|
|
SetUploadMinInterval(80 * time.Millisecond)
|
|
t.Cleanup(func() {
|
|
SetUploadMinInterval(defaultUploadMinInterval)
|
|
ResetUploadThrottleForTest()
|
|
})
|
|
ResetUploadThrottleForTest()
|
|
|
|
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
_ = json.NewEncoder(w).Encode(map[string]any{
|
|
"success": true,
|
|
"record": map[string]string{"fileId": "ok"},
|
|
})
|
|
}))
|
|
defer srv.Close()
|
|
|
|
pdf := []byte("%PDF-1.4")
|
|
token := "ak:sign:policy"
|
|
|
|
start := time.Now()
|
|
if _, err := UploadPDF(pdf, "a.pdf", srv.URL, token, ""); err != nil {
|
|
t.Fatalf("first upload: %v", err)
|
|
}
|
|
if _, err := UploadPDF(pdf, "b.pdf", srv.URL, token, ""); err != nil {
|
|
t.Fatalf("second upload: %v", err)
|
|
}
|
|
elapsed := time.Since(start)
|
|
if elapsed < 75*time.Millisecond {
|
|
t.Fatalf("expected throttle wait >= 75ms, elapsed=%s", elapsed)
|
|
}
|
|
}
|
|
|
|
func TestAcquireUploadSlot_zeroIntervalNoWait(t *testing.T) {
|
|
SetUploadMinInterval(0)
|
|
t.Cleanup(func() {
|
|
SetUploadMinInterval(defaultUploadMinInterval)
|
|
ResetUploadThrottleForTest()
|
|
})
|
|
ResetUploadThrottleForTest()
|
|
|
|
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
_ = json.NewEncoder(w).Encode(map[string]any{
|
|
"success": true,
|
|
"record": map[string]string{"fileId": "ok"},
|
|
})
|
|
}))
|
|
defer srv.Close()
|
|
|
|
start := time.Now()
|
|
pdf := []byte("x")
|
|
token := "ak:sign:policy"
|
|
for i := 0; i < 2; i++ {
|
|
if _, err := UploadPDF(pdf, "x.pdf", srv.URL, token, ""); err != nil {
|
|
t.Fatalf("upload %d: %v", i, err)
|
|
}
|
|
}
|
|
if time.Since(start) > 200*time.Millisecond {
|
|
t.Fatalf("zero interval should not sleep noticeably, elapsed=%s", time.Since(start))
|
|
}
|
|
}
|