100 lines
1.9 KiB
Go
100 lines
1.9 KiB
Go
package api
|
|
|
|
import (
|
|
"fmt"
|
|
"net/url"
|
|
"testing"
|
|
"time"
|
|
|
|
"gotest.tools/assert"
|
|
is "gotest.tools/assert/cmp"
|
|
)
|
|
|
|
// func parseLogOptions(q url.Values) (opts ContainerLogOpts, err error)
|
|
func TestParseLogOptions(t *testing.T) {
|
|
// tailLines
|
|
// follow
|
|
// limitBytes
|
|
// previous
|
|
// sinceSeconds
|
|
// sinceTime
|
|
// timestamps
|
|
sinceTime, _ := time.Parse(time.RFC3339, "2020-03-20T21:07:34Z")
|
|
fmt.Printf("%+v\n", sinceTime)
|
|
testCases := []struct {
|
|
Values url.Values
|
|
Failure bool
|
|
Result ContainerLogOpts
|
|
}{
|
|
{
|
|
Values: url.Values{},
|
|
Failure: false,
|
|
Result: ContainerLogOpts{},
|
|
},
|
|
{
|
|
Values: url.Values{
|
|
"follow": {"true"},
|
|
"limitBytes": {"123"},
|
|
"previous": {"true"},
|
|
"sinceSeconds": {"10"},
|
|
"tailLines": {"99"},
|
|
"timestamps": {"true"},
|
|
},
|
|
Failure: false,
|
|
Result: ContainerLogOpts{
|
|
Follow: true,
|
|
LimitBytes: 123,
|
|
Previous: true,
|
|
SinceSeconds: 10,
|
|
Tail: 99,
|
|
Timestamps: true,
|
|
},
|
|
},
|
|
{
|
|
Values: url.Values{
|
|
"sinceSeconds": {"10"},
|
|
"sinceTime": {"2020-03-20T21:07:34Z"},
|
|
},
|
|
Failure: true,
|
|
},
|
|
{
|
|
Values: url.Values{
|
|
"sinceTime": {"2020-03-20T21:07:34Z"},
|
|
},
|
|
Failure: false,
|
|
Result: ContainerLogOpts{
|
|
SinceTime: sinceTime,
|
|
},
|
|
},
|
|
{
|
|
Values: url.Values{
|
|
"tailLines": {"-1"},
|
|
},
|
|
Failure: true,
|
|
},
|
|
{
|
|
Values: url.Values{
|
|
"limitBytes": {"0"},
|
|
},
|
|
Failure: true,
|
|
},
|
|
{
|
|
Values: url.Values{
|
|
"sinceSeconds": {"-10"},
|
|
},
|
|
Failure: true,
|
|
},
|
|
}
|
|
// follow=true&limitBytes=1&previous=true&sinceSeconds=1&sinceTime=2020-03-20T21%3A07%3A34Z&tailLines=1×tamps=true
|
|
for i, tc := range testCases {
|
|
msg := fmt.Sprintf("test case #%d %+v failed", i+1, tc)
|
|
result, err := parseLogOptions(tc.Values)
|
|
if tc.Failure {
|
|
assert.Check(t, is.ErrorContains(err, ""), msg)
|
|
} else {
|
|
assert.NilError(t, err, msg)
|
|
assert.Check(t, is.Equal(result, tc.Result), msg)
|
|
}
|
|
}
|
|
}
|