You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
packer/packer/telemetry_test.go

58 lines
1.5 KiB

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: BUSL-1.1
package packer
import (
"errors"
"testing"
"github.com/stretchr/testify/assert"
)
func TestFlattenConfigKeys_nil(t *testing.T) {
f := flattenConfigKeys(nil)
assert.Zero(t, f, "Expected empty list.")
}
func TestFlattenConfigKeys_nested(t *testing.T) {
inp := make(map[string]interface{})
inp["A"] = ""
inp["B"] = []string{}
c := make(map[string]interface{})
c["X"] = ""
d := make(map[string]interface{})
d["a"] = ""
c["Y"] = d
inp["C"] = c
assert.Equal(t,
[]string{"A", "B", "C/X", "C/Y/a"},
flattenConfigKeys(inp),
"Input didn't flatten correctly.",
)
}
func TestCheckpointTelemetry(t *testing.T) {
defer func() {
if r := recover(); r != nil {
t.Error("a noop CheckpointTelemetry should not to panic but it did\n", r)
}
}()
// A null CheckpointTelemetry obtained in Packer when the CHECKPOINT_DISABLE env var is set results in a NOOP reporter
// The null reporter can be executable as a configured reporter but does not report any telemetry data.
var c *CheckpointTelemetry
c.SetTemplateType(HCL2Template)
c.SetBundledUsage()
c.AddSpan("mockprovisioner", "provisioner", nil)
if err := c.ReportPanic("Bogus Panic"); err != nil {
t.Errorf("calling ReportPanic on a nil checkpoint reporter should not error")
}
if err := c.Finalize("test", 1, errors.New("Bogus Error")); err != nil {
t.Errorf("calling Finalize on a nil checkpoint reporter should not error")
}
}