mirror of
https://github.com/redhat-developer/odo.git
synced 2025-10-19 03:06:19 +03:00
* Add integration test highlighting the expectations * Record parameter (and value) set or unset using the 'odo preference set/unset' commands By default, values are anonymized. Only parameters explicitly declared list will be recorded verbatim. This list is currently empty, but that might change later on. * Mark all current preference parameters except ImageRegistry as clear-text Co-authored-by: Philippe Martin <phmartin@redhat.com> --------- Co-authored-by: Philippe Martin <phmartin@redhat.com>
86 lines
2.5 KiB
Go
86 lines
2.5 KiB
Go
package helper
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"os"
|
|
|
|
_ "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
|
|
"github.com/redhat-developer/odo/pkg/config"
|
|
envcontext "github.com/redhat-developer/odo/pkg/config/context"
|
|
"github.com/redhat-developer/odo/pkg/preference"
|
|
"github.com/redhat-developer/odo/pkg/segment"
|
|
)
|
|
|
|
const (
|
|
DebugTelemetryFileEnv = "ODO_DEBUG_TELEMETRY_FILE"
|
|
)
|
|
|
|
func setDebugTelemetryFile(value string) error {
|
|
return os.Setenv(DebugTelemetryFileEnv, value)
|
|
}
|
|
|
|
// EnableTelemetryDebug creates a temp file to use for debugging telemetry.
|
|
// it also sets up envs and cfg for the same
|
|
func EnableTelemetryDebug() preference.Client {
|
|
Expect(os.Setenv(segment.TrackingConsentEnv, "yes")).NotTo(HaveOccurred())
|
|
|
|
ctx := context.Background()
|
|
envConfig, err := config.GetConfiguration()
|
|
Expect(err).To(BeNil())
|
|
ctx = envcontext.WithEnvConfig(ctx, *envConfig)
|
|
|
|
cfg, _ := preference.NewClient(ctx)
|
|
err = cfg.SetConfiguration(preference.ConsentTelemetrySetting, "true")
|
|
Expect(err).To(BeNil())
|
|
tempFile, err := os.CreateTemp("", "telemetry")
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(setDebugTelemetryFile(tempFile.Name())).NotTo(HaveOccurred())
|
|
Expect(tempFile.Close()).NotTo(HaveOccurred())
|
|
|
|
return cfg
|
|
}
|
|
|
|
func GetDebugTelemetryFile() string {
|
|
return os.Getenv(DebugTelemetryFileEnv)
|
|
}
|
|
|
|
func ClearTelemetryFile() {
|
|
err := os.Truncate(GetDebugTelemetryFile(), 0)
|
|
Expect(err).ShouldNot(HaveOccurred())
|
|
}
|
|
|
|
// GetTelemetryDebugData gets telemetry data dumped into temp file for testing/debugging
|
|
func GetTelemetryDebugData() segment.TelemetryData {
|
|
var data []byte
|
|
var td segment.TelemetryData
|
|
telemetryFile := GetDebugTelemetryFile()
|
|
Eventually(func() string {
|
|
d, err := os.ReadFile(telemetryFile)
|
|
Expect(err).To(BeNil())
|
|
return string(d)
|
|
}, 10, 1).Should(ContainSubstring("event"))
|
|
data, err := os.ReadFile(telemetryFile)
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(json.Unmarshal(data, &td)).NotTo(HaveOccurred())
|
|
return td
|
|
}
|
|
|
|
// ResetTelemetry resets the telemetry back to original values
|
|
func ResetTelemetry() {
|
|
Expect(os.Setenv(segment.TrackingConsentEnv, "no")).NotTo(HaveOccurred())
|
|
Expect(os.Unsetenv(DebugTelemetryFileEnv))
|
|
|
|
ctx := context.Background()
|
|
envConfig, err := config.GetConfiguration()
|
|
Expect(err).To(BeNil())
|
|
ctx = envcontext.WithEnvConfig(ctx, *envConfig)
|
|
|
|
cfg, _ := preference.NewClient(ctx)
|
|
err = cfg.SetConfiguration(preference.ConsentTelemetrySetting, "true")
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(segment.IsTelemetryEnabled(cfg, *envConfig)).To(BeFalse())
|
|
}
|