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
|
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package lambda
import (
"context"
"os"
"testing"
"github.com/stretchr/testify/assert"
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/sdk/resource"
semconv "go.opentelemetry.io/otel/semconv/v1.26.0"
)
// successfully return resource when process is running on Amazon Lambda environment.
func TestDetectSuccess(t *testing.T) {
t.Setenv(lambdaFunctionNameEnvVar, "testFunction")
t.Setenv(awsRegionEnvVar, "us-texas-1")
t.Setenv(lambdaFunctionVersionEnvVar, "$LATEST")
t.Setenv(lambdaLogStreamNameEnvVar, "2023/01/01/[$LATEST]5d1edb9e525d486696cf01a3503487bc")
t.Setenv(lambdaMemoryLimitEnvVar, "128")
attributes := []attribute.KeyValue{
semconv.CloudProviderAWS,
semconv.CloudRegion("us-texas-1"),
semconv.FaaSName("testFunction"),
semconv.FaaSVersion("$LATEST"),
semconv.FaaSInstance("2023/01/01/[$LATEST]5d1edb9e525d486696cf01a3503487bc"),
semconv.FaaSMaxMemory(128),
}
expectedResource := resource.NewWithAttributes(semconv.SchemaURL, attributes...)
detector := resourceDetector{}
res, err := detector.Detect(context.Background())
assert.NoError(t, err, "Detector unexpectedly returned error")
assert.Equal(t, expectedResource, res, "Resource returned is incorrect")
}
// return empty resource when not running on lambda.
func TestReturnsIfNoEnvVars(t *testing.T) {
os.Clearenv()
detector := resourceDetector{}
res, err := detector.Detect(context.Background())
assert.Equal(t, errNotOnLambda, err)
assert.Empty(t, res.Attributes())
}
|