tool/testutil/testutil.go (113 lines of code) (raw):
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: MIT
package testutil
import (
"fmt"
"strings"
"sync"
"testing"
"github.com/influxdata/telegraf"
"github.com/aws/amazon-cloudwatch-agent/tool/stdin"
)
func SetUpTestInputStream() chan<- string {
inputChan := make(chan string)
stdin.Scanln = func(answer ...interface{}) (int, error) {
inputString := <-inputChan
fmt.Println(inputString)
*(answer[0].(*string)) = inputString
return len(inputString), nil
}
return inputChan
}
func SetPrometheusRemoteWriteTestingEnv(t *testing.T) {
t.Setenv("AWS_ACCESS_KEY_ID", "amazing_access_key")
t.Setenv("AWS_SECRET_ACCESS_KEY", "super_secret_key")
t.Setenv("AWS_REGION", "us-east-1")
}
func Type(inputChan chan<- string, inputString ...string) {
go func() {
for _, s := range inputString {
inputChan <- s
}
}()
}
type LogSink struct {
mu sync.Mutex
lines []string
}
var _ telegraf.Logger = (*LogSink)(nil)
func NewLogSink() *LogSink {
return &LogSink{
lines: make([]string, 0),
}
}
func (l *LogSink) Errorf(format string, args ...any) {
l.mu.Lock()
defer l.mu.Unlock()
l.lines = append(l.lines, "E! "+fmt.Sprintf(format, args...))
}
func (l *LogSink) Error(args ...any) {
l.mu.Lock()
defer l.mu.Unlock()
l.lines = append(l.lines, "E! "+fmt.Sprint(args...))
}
func (l *LogSink) Debugf(format string, args ...any) {
l.mu.Lock()
defer l.mu.Unlock()
l.lines = append(l.lines, "D! "+fmt.Sprintf(format, args...))
}
func (l *LogSink) Debug(args ...any) {
l.mu.Lock()
defer l.mu.Unlock()
l.lines = append(l.lines, "D! "+fmt.Sprint(args...))
}
func (l *LogSink) Warnf(format string, args ...any) {
l.mu.Lock()
defer l.mu.Unlock()
l.lines = append(l.lines, "W! "+fmt.Sprintf(format, args...))
}
func (l *LogSink) Warn(args ...any) {
l.mu.Lock()
defer l.mu.Unlock()
l.lines = append(l.lines, "W! "+fmt.Sprint(args...))
}
func (l *LogSink) Infof(format string, args ...any) {
l.mu.Lock()
defer l.mu.Unlock()
l.lines = append(l.lines, "I! "+fmt.Sprintf(format, args...))
}
func (l *LogSink) Info(args ...any) {
l.mu.Lock()
defer l.mu.Unlock()
l.lines = append(l.lines, "I! "+fmt.Sprint(args...))
}
func (l *LogSink) Lines() []string {
l.mu.Lock()
defer l.mu.Unlock()
lines := make([]string, len(l.lines))
copy(lines, l.lines)
return lines
}
func (l *LogSink) String() string {
return strings.Join(l.Lines(), "\n")
}
type NopLogger struct {
}
var _ telegraf.Logger = (*NopLogger)(nil)
func NewNopLogger() telegraf.Logger {
return &NopLogger{}
}
func (n NopLogger) Errorf(string, ...interface{}) {
}
func (n NopLogger) Error(...interface{}) {
}
func (n NopLogger) Debugf(string, ...interface{}) {
}
func (n NopLogger) Debug(...interface{}) {
}
func (n NopLogger) Warnf(string, ...interface{}) {
}
func (n NopLogger) Warn(...interface{}) {
}
func (n NopLogger) Infof(string, ...interface{}) {
}
func (n NopLogger) Info(...interface{}) {
}