fix: allow underscores in vector schemes

Also unify tests for global and non-global logs:set calls
This commit is contained in:
Jose Diaz-Gonzalez
2021-01-23 19:00:33 -05:00
parent aeb9241d3b
commit dfc98ecc0f
3 changed files with 100 additions and 6 deletions

View File

@@ -109,9 +109,14 @@ func stopVectorContainer() error {
})
}
func valueToConfig(appName string, value string) (vectorSink, error) {
func sinkValueToConfig(appName string, sinkValue string) (vectorSink, error) {
var data vectorSink
u, err := url.Parse(value)
if strings.Contains(sinkValue, "://") {
parts := strings.SplitN(sinkValue, "://", 2)
parts[0] = strings.ReplaceAll(parts[0], "_", "-")
sinkValue = strings.Join(parts, "://")
}
u, err := url.Parse(sinkValue)
if err != nil {
return data, err
}
@@ -120,6 +125,8 @@ func valueToConfig(appName string, value string) (vectorSink, error) {
return data, errors.New("Invalid option sinks")
}
u.Scheme = strings.ReplaceAll(u.Scheme, "-", "_")
t := fmt.Sprintf("type=%s", u.Scheme)
i := fmt.Sprintf("inputs[]=docker-source:%s", appName)
if appName == "--global" {
@@ -163,7 +170,7 @@ func writeVectorConfig() error {
continue
}
sink, err := valueToConfig(appName, value)
sink, err := sinkValueToConfig(appName, value)
if err != nil {
return err
}
@@ -178,7 +185,7 @@ func writeVectorConfig() error {
value := common.PropertyGet("logs", "--global", "vector-sink")
if value != "" {
sink, err := valueToConfig("--global", value)
sink, err := sinkValueToConfig("--global", value)
if err != nil {
return err
}
@@ -201,7 +208,7 @@ func writeVectorConfig() error {
if len(data.Sinks) == 0 {
// write logs to a blackhole
sink, err := valueToConfig("--null", "blackhole://?print_amount=1")
sink, err := sinkValueToConfig("--null", "blackhole://?print_amount=1")
if err != nil {
return err
}

View File

@@ -49,7 +49,7 @@ func validateVectorSink(appName string, value string) error {
return nil
}
_, err := valueToConfig(appName, value)
_, err := sinkValueToConfig(appName, value)
if err != nil {
return err
}

View File

@@ -145,6 +145,44 @@ teardown() {
assert_success
assert_output "console://?encoding[codec]=json"
run /bin/bash -c "dokku logs:set $TEST_APP vector-sink datadog_logs://?api_key=abc123" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Setting vector-sink"
assert_output_contains "Writing updated vector config to /var/lib/dokku/data/logs/vector.json"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-vector-sink 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "datadog_logs://?api_key=abc123"
run /bin/bash -c "dokku logs:set $TEST_APP vector-sink" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Unsetting vector-sink"
assert_output_contains "Writing updated vector config to /var/lib/dokku/data/logs/vector.json"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-vector-sink 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku logs:set $TEST_APP vector-sink" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Unsetting vector-sink"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-vector-sink 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output ""
run /bin/bash -c "dokku logs:report $TEST_APP --logs-max-size 2>&1"
echo "output: $output"
echo "status: $status"
@@ -186,6 +224,18 @@ teardown() {
echo "status: $status"
assert_success
assert_output "unlimited"
run /bin/bash -c "dokku logs:set "$TEST_APP" max-size" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Unsetting max-size"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-max-size 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output ""
}
@test "(logs) logs:set global" {
@@ -226,6 +276,19 @@ teardown() {
assert_success
assert_output "console://?encoding[codec]=json"
run /bin/bash -c "dokku logs:set --global vector-sink datadog_logs://?api_key=abc123" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Setting vector-sink"
assert_output_contains "Writing updated vector config to /var/lib/dokku/data/logs/vector.json"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-global-vector-sink 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "datadog_logs://?api_key=abc123"
run /bin/bash -c "dokku logs:set --global vector-sink" 2>&1
echo "output: $output"
echo "status: $status"
@@ -239,6 +302,24 @@ teardown() {
assert_success
assert_output_not_exists
run /bin/bash -c "dokku logs:set --global vector-sink" 2>&1
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Unsetting vector-sink"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-global-vector-sink 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_not_exists
run /bin/bash -c "dokku logs:report $TEST_APP --logs-global-max-size 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "10m"
run /bin/bash -c "dokku logs:set --global max-size" 2>&1
echo "output: $output"
echo "status: $status"
@@ -280,6 +361,12 @@ teardown() {
echo "status: $status"
assert_success
assert_output_contains "Unsetting max-size"
run /bin/bash -c "dokku logs:report $TEST_APP --logs-global-max-size 2>&1"
echo "output: $output"
echo "status: $status"
assert_success
assert_output "10m"
}
@test "(logs) logs:vector" {