mirror of
https://github.com/hibiken/asynqmon.git
synced 2025-01-18 10:53:31 +08:00
Add tests for asynqmon command binary
This commit is contained in:
parent
2f9d2021c3
commit
6dbc580738
5
.gitignore
vendored
5
.gitignore
vendored
@ -24,8 +24,9 @@ package-json.lock
|
||||
*.out
|
||||
|
||||
# binaries
|
||||
asynqmon
|
||||
api
|
||||
/cmd/asynqmon/asynqmon
|
||||
/asynqmon
|
||||
/api
|
||||
dist/
|
||||
|
||||
# Editor configs
|
||||
|
125
cmd/asynqmon/main_test.go
Normal file
125
cmd/asynqmon/main_test.go
Normal file
@ -0,0 +1,125 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"github.com/google/go-cmp/cmp/cmpopts"
|
||||
"github.com/hibiken/asynq"
|
||||
)
|
||||
|
||||
func TestParseFlags(t *testing.T) {
|
||||
tests := []struct {
|
||||
args []string
|
||||
want *Config
|
||||
}{
|
||||
{
|
||||
args: []string{"--redis-addr", "localhost:6380", "--redis-db", "3"},
|
||||
want: &Config{
|
||||
RedisAddr: "localhost:6380",
|
||||
RedisDB: 3,
|
||||
|
||||
// Default values
|
||||
Port: 8080,
|
||||
RedisPassword: "",
|
||||
RedisTLS: "",
|
||||
RedisURL: "",
|
||||
RedisInsecureTLS: false,
|
||||
RedisClusterNodes: "",
|
||||
MaxPayloadLength: 200,
|
||||
MaxResultLength: 200,
|
||||
EnableMetricsExporter: false,
|
||||
PrometheusServerAddr: "",
|
||||
ReadOnly: false,
|
||||
|
||||
Args: []string{},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
t.Run(strings.Join(tc.args, " "), func(t *testing.T) {
|
||||
cfg, output, err := parseFlags("asynqmon", tc.args)
|
||||
if err != nil {
|
||||
t.Errorf("parseFlags returned error: %v", err)
|
||||
}
|
||||
if output != "" {
|
||||
t.Errorf("parseFlag returned output=%q, want empty", output)
|
||||
}
|
||||
if diff := cmp.Diff(tc.want, cfg); diff != "" {
|
||||
t.Errorf("parseFlag returned Config %v, want %v; (-want,+got)\n%s", cfg, tc.want, diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestMakeRedisConnOpt(t *testing.T) {
|
||||
var tests = []struct {
|
||||
desc string
|
||||
cfg *Config
|
||||
want asynq.RedisConnOpt
|
||||
}{
|
||||
{
|
||||
desc: "With address, db number and password",
|
||||
cfg: &Config{
|
||||
RedisAddr: "localhost:6380",
|
||||
RedisDB: 1,
|
||||
RedisPassword: "foo",
|
||||
},
|
||||
want: asynq.RedisClientOpt{
|
||||
Addr: "localhost:6380",
|
||||
DB: 1,
|
||||
Password: "foo",
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "With TLS server name",
|
||||
cfg: &Config{
|
||||
RedisAddr: "localhost:6379",
|
||||
RedisTLS: "foobar",
|
||||
},
|
||||
want: asynq.RedisClientOpt{
|
||||
Addr: "localhost:6379",
|
||||
TLSConfig: &tls.Config{ServerName: "foobar"},
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "With redis URL",
|
||||
cfg: &Config{
|
||||
RedisURL: "redis://:bar@localhost:6381/2",
|
||||
},
|
||||
want: asynq.RedisClientOpt{
|
||||
Addr: "localhost:6381",
|
||||
DB: 2,
|
||||
Password: "bar",
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "With cluster nodes",
|
||||
cfg: &Config{
|
||||
RedisClusterNodes: "localhost:5000,localhost:5001,localhost:5002,localhost:5003,localhost:5004,localhost:5005",
|
||||
},
|
||||
want: asynq.RedisClusterClientOpt{
|
||||
Addrs: []string{
|
||||
"localhost:5000", "localhost:5001", "localhost:5002", "localhost:5003", "localhost:5004", "localhost:5005"},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
t.Run(tc.desc, func(t *testing.T) {
|
||||
got, err := makeRedisConnOpt(tc.cfg)
|
||||
if err != nil {
|
||||
t.Fatalf("makeRedisConnOpt returned error: %v", err)
|
||||
}
|
||||
|
||||
if diff := cmp.Diff(tc.want, got, cmpopts.IgnoreUnexported(tls.Config{})); diff != "" {
|
||||
t.Errorf("diff found: want=%v, got=%v; (-want,+got)\n%s",
|
||||
tc.want, got, diff)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user