mirror of
https://github.com/redis/go-redis.git
synced 2025-10-20 09:52:25 +03:00
64 lines
1.4 KiB
Go
64 lines
1.4 KiB
Go
package e2e
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
"runtime"
|
|
"time"
|
|
)
|
|
|
|
func isTimeout(errMsg string) bool {
|
|
return contains(errMsg, "i/o timeout") ||
|
|
contains(errMsg, "deadline exceeded") ||
|
|
contains(errMsg, "context deadline exceeded")
|
|
}
|
|
|
|
// isTimeoutError checks if an error is a timeout error
|
|
func isTimeoutError(err error) bool {
|
|
if err == nil {
|
|
return false
|
|
}
|
|
|
|
// Check for various timeout error types
|
|
errStr := err.Error()
|
|
return isTimeout(errStr)
|
|
}
|
|
|
|
// contains checks if a string contains a substring (case-insensitive)
|
|
func contains(s, substr string) bool {
|
|
return len(s) >= len(substr) &&
|
|
(s == substr ||
|
|
(len(s) > len(substr) &&
|
|
(s[:len(substr)] == substr ||
|
|
s[len(s)-len(substr):] == substr ||
|
|
containsSubstring(s, substr))))
|
|
}
|
|
|
|
func containsSubstring(s, substr string) bool {
|
|
for i := 0; i <= len(s)-len(substr); i++ {
|
|
if s[i:i+len(substr)] == substr {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func min(a, b int) int {
|
|
if a < b {
|
|
return a
|
|
}
|
|
return b
|
|
}
|
|
|
|
func printLog(group string, isError bool, format string, args ...interface{}) {
|
|
_, filename, line, _ := runtime.Caller(2)
|
|
filename = filepath.Base(filename)
|
|
finalFormat := "%s:%d [%s][%s] " + format + "\n"
|
|
if isError {
|
|
finalFormat = "%s:%d [%s][%s][ERROR] " + format + "\n"
|
|
}
|
|
ts := time.Now().Format("15:04:05.000")
|
|
args = append([]interface{}{filename, line, ts, group}, args...)
|
|
fmt.Printf(finalFormat, args...)
|
|
}
|