mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 17:30:00 +00:00
Merge pull request #126579 from my-git9/ut-version
kubeadm: increase ut coverage for util/version
This commit is contained in:
commit
82cfcbf86d
@ -18,6 +18,8 @@ package util
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/http"
|
||||||
|
"net/http/httptest"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
@ -525,3 +527,72 @@ func TestValidateStableVersion(t *testing.T) {
|
|||||||
func errorFetcher(url string, timeout time.Duration) (string, error) {
|
func errorFetcher(url string, timeout time.Duration) (string, error) {
|
||||||
return "should not make internet calls", errors.Errorf("should not make internet calls, tried to request url: %s", url)
|
return "should not make internet calls", errors.Errorf("should not make internet calls, tried to request url: %s", url)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestFetchFromURL(t *testing.T) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
url string
|
||||||
|
expected string
|
||||||
|
timeout time.Duration
|
||||||
|
code int
|
||||||
|
body string
|
||||||
|
expectErr bool
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "normal success",
|
||||||
|
url: "/normal",
|
||||||
|
code: http.StatusOK,
|
||||||
|
body: "normal response",
|
||||||
|
expected: "normal response",
|
||||||
|
expectErr: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "HTTP error status",
|
||||||
|
url: "/error",
|
||||||
|
code: http.StatusBadRequest,
|
||||||
|
body: "bad request",
|
||||||
|
expected: "bad request",
|
||||||
|
expectErr: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "Request timeout",
|
||||||
|
url: "/timeout",
|
||||||
|
timeout: time.Millisecond * 50,
|
||||||
|
expectErr: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if tt.code != 0 {
|
||||||
|
w.WriteHeader(tt.code)
|
||||||
|
}
|
||||||
|
if tt.body != "" {
|
||||||
|
if _, err := w.Write([]byte(tt.body)); err != nil {
|
||||||
|
t.Error("Write body failed.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if tt.timeout == time.Millisecond*50 {
|
||||||
|
time.Sleep(time.Millisecond * 200)
|
||||||
|
w.WriteHeader(http.StatusOK)
|
||||||
|
if _, err := w.Write([]byte("Delayed response")); err != nil {
|
||||||
|
t.Error("Write body failed.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
ts := httptest.NewServer(handler)
|
||||||
|
defer ts.Close()
|
||||||
|
|
||||||
|
url := ts.URL + tt.url
|
||||||
|
result, err := fetchFromURL(url, tt.timeout)
|
||||||
|
if (err != nil) != tt.expectErr {
|
||||||
|
t.Errorf("expected error: %v, got: %v", tt.expectErr, err)
|
||||||
|
}
|
||||||
|
if tt.expected != result {
|
||||||
|
t.Errorf("expected result: %q, got: %q", tt.expected, result)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user