aboutsummaryrefslogtreecommitdiffstats
path: root/client/go/internal/admin/vespa-wrapper/logfmt/showflags_test.go
blob: b287ca677b474c5e1c8012744041b029a314ed28 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
// vespa logfmt command
// Author: arnej

package logfmt

import (
	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
	"strings"
	"testing"
)

func TestShowFlags(t *testing.T) {
	none := " -time -fmttime -msecs -usecs -host -level -pid -service -component -message"
	var flag flagValueForShow
	assert.Equal(t, none, flag.String(), "unset flag displays as '%s', expected '%s'", flag.String(), none)
	assert.Equal(t, "show flags", flag.Type())
	check := func(expected string, texts ...string) {
		var target flagValueForShow
		// target.levels = defaultLevelFlags()
		target.shown = defaultShowFlags()
		for _, text := range texts {
			err := target.Set(text)
			require.Nil(t, err, "unexpected error with show flags Set('%s'): %v", text, err)
		}
		assert.Equal(t, expected, target.String())
	}
	check(" +time +fmttime +msecs -usecs -host +level -pid +service +component +message")
	check(" -time -fmttime -msecs -usecs -host -level -pid -service -component -message", "-all")
	check(" +time +fmttime +msecs +usecs +host +level +pid +service +component +message", "all")
	check(" +time +fmttime +msecs +usecs +host +level +pid +service +component +message", "+all")
	check(" -time -fmttime -msecs -usecs -host -level +pid -service -component -message", "pid")
	check(" +time +fmttime +msecs +usecs -host +level +pid +service +component +message", "all-host")
	check(" +time +fmttime +msecs +usecs -host +level +pid +service +component +message", "all", "-host")
	check(" +time +fmttime -msecs -usecs -host +level +pid +service +component +message", "+pid", "-msecs")
	check(" +time -fmttime +msecs -usecs +host +level -pid -service +component +message", "+host,-fmttime,-service,pid")
	check(" +time -fmttime +msecs -usecs +host +level +pid -service +component +message", "+host,-fmttime,-service,+pid")
	check(" +time -fmttime +msecs -usecs +host +level +pid -service +component +message", "+host,-fmttime", "-service,+pid")
	check(" -time -fmttime -msecs -usecs -host -level +pid -service -component -message", "+host", "-fmttime", "-service", "pid")
	check = func(expectErr string, texts ...string) {
		var target flagValueForShow
		target.shown = defaultShowFlags()
		for _, text := range texts {
			err := target.Set(text)
			if err != nil {
				require.Equal(t, expectErr, err.Error())
				return
			}
		}
		t.Logf("Did not get expected error [%s] from %s", expectErr, strings.Join(texts, " "))
		t.Fail()
	}
	check("not a valid show flag: 'foo'", "foo")
	check("not a valid show flag: 'foo'", "level,foo,message")
	check("not a valid show flag: 'foo'", "-level,-foo,-message")
	check("not a valid show flag: 'foo'", "+level,+foo,+message")
	check("not a valid show flag: 'foo'", "level", "foo", "message")
	check("not a valid show flag: 'foo'", "-level", "-foo", "-message")
	check("not a valid show flag: 'foo'", "+level", "+foo", "+message")
}