Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
062981d
support toplevel statements in aws lambda initial commit
joeyzhao2018 Aug 21, 2023
a39eb0b
Serializer done
joeyzhao2018 Sep 27, 2023
40ae1bd
add the ducktypes
joeyzhao2018 Sep 27, 2023
eaa2147
start using Tony's Delegates Utils
joeyzhao2018 Sep 28, 2023
ccc913a
fix
joeyzhao2018 Sep 28, 2023
691b9bb
1st working version using the DelegateInstrumentation util
joeyzhao2018 Oct 1, 2023
5eb43d2
fix
joeyzhao2018 Oct 2, 2023
52a10f5
fix
joeyzhao2018 Oct 2, 2023
ba79a69
comment out the old approach initialization
joeyzhao2018 Oct 4, 2023
dc30b90
update
joeyzhao2018 Oct 11, 2023
d78bb11
adding integration tests
joeyzhao2018 Oct 11, 2023
49eadf5
small fixes
joeyzhao2018 Oct 12, 2023
ac4630c
packageversiongenerator definition fix
joeyzhao2018 Oct 12, 2023
9205184
merging
joeyzhao2018 Oct 20, 2023
f06d1e8
merging
joeyzhao2018 Oct 20, 2023
2b62553
merging
joeyzhao2018 Oct 20, 2023
3965cf1
update versions
joeyzhao2018 Oct 13, 2023
31ecdb2
empty line added
joeyzhao2018 Oct 13, 2023
3be10c2
merging
joeyzhao2018 Oct 20, 2023
5abbca8
add the toplevel statement case in existing serverless integration tests
joeyzhao2018 Oct 14, 2023
900928d
fixes
joeyzhao2018 Oct 16, 2023
80043ea
duplicate config_prefix_block_list.json
joeyzhao2018 Oct 16, 2023
5cbd2ca
fix
joeyzhao2018 Oct 16, 2023
f77684e
refactoring a bit
joeyzhao2018 Oct 19, 2023
4915222
removing old aws lambda serverless instrumentations
joeyzhao2018 Oct 20, 2023
a7f85c2
Updated package versions
github-actions[bot] Oct 20, 2023
5d21ef3
remove a debug logging
joeyzhao2018 Oct 20, 2023
d1903d1
Comment out unused ILambdaContext properties.
joeyzhao2018 Oct 20, 2023
3f35b8e
revert unrelated changes
joeyzhao2018 Oct 20, 2023
507656d
revert the unrelated changes.
joeyzhao2018 Oct 20, 2023
51c5b8a
add [DD_TRACE_DOTNET] in logging
joeyzhao2018 Oct 20, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion .azure-pipelines/ultimate-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1956,6 +1956,13 @@ stages:
command: "BuildLinuxIntegrationTests --framework $(publishTargetFramework) --SampleName Samples.Aws.Lambda"
apiKey: $(DD_LOGGER_DD_API_KEY)

- template: steps/run-in-docker.yml
parameters:
build: true
baseImage: $(baseImage)
command: "BuildLinuxIntegrationTests --framework $(publishTargetFramework) --SampleName Samples.Amazon.Lambda.RuntimeSupport"
apiKey: $(DD_LOGGER_DD_API_KEY)

- script: |
# Include the serverless dockerfile
docker-compose -p ddtrace_$(Build.BuildNumber) \
Expand Down Expand Up @@ -2041,7 +2048,8 @@ stages:
serverless-lambda-generic-abstract \
serverless-lambda-generic-abstract-async \
serverless-lambda-generic-complex \
serverless-lambda-generic-complex-nested
serverless-lambda-generic-complex-nested \
serverless-lambda-toplevel-statement
env:
baseImage: $(baseImage)
framework: $(publishTargetFramework)
Expand Down
6 changes: 6 additions & 0 deletions Datadog.Trace.sln
Original file line number Diff line number Diff line change
Expand Up @@ -546,6 +546,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Datadog.Trace.Tools.dd_dotn
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.AWS.DynamoDBv2", "tracer\test\test-applications\integrations\Samples.AWS.DynamoDBv2\Samples.AWS.DynamoDBv2.csproj", "{D59C5649-BE0E-4A33-B868-B652D8614534}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Samples.Amazon.Lambda.RuntimeSupport", "tracer\test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj", "{18A6904A-5AFD-4816-AC3F-9F5E433720B5}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -1302,6 +1304,10 @@ Global
{D59C5649-BE0E-4A33-B868-B652D8614534}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D59C5649-BE0E-4A33-B868-B652D8614534}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D59C5649-BE0E-4A33-B868-B652D8614534}.Release|Any CPU.Build.0 = Release|Any CPU
{18A6904A-5AFD-4816-AC3F-9F5E433720B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{18A6904A-5AFD-4816-AC3F-9F5E433720B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{18A6904A-5AFD-4816-AC3F-9F5E433720B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{18A6904A-5AFD-4816-AC3F-9F5E433720B5}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
27 changes: 27 additions & 0 deletions docker-compose.serverless.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ services:
- serverless-lambda-generic-abstract-async
- serverless-lambda-generic-complex
- serverless-lambda-generic-complex-nested
- serverless-lambda-toplevel-statement
- serverless-dummy-api
environment:
- AWS_LAMBDA_ENDPOINT_NO_PARAM_SYNC=http://serverless-lambda-no-param-sync:8080
Expand Down Expand Up @@ -79,6 +80,7 @@ services:
- AWS_LAMBDA_ENDPOINT_GENERICBASE_ABSTRACT_ASYNC=http://serverless-lambda-generic-abstract-async:8080
- AWS_LAMBDA_ENDPOINT_GENERICBASE_COMPLEX=http://serverless-lambda-generic-complex:8080
- AWS_LAMBDA_ENDPOINT_GENERICBASE_COMPLEX_NESTED=http://serverless-lambda-generic-complex-nested:8080
- AWS_LAMBDA_ENDPOINT_TOPLEVEL_STATEMENT=http://serverless-lambda-toplevel-statement:8080
- DUMMY_API_HOST=http://serverless-dummy-api:9005

StartDependencies.Serverless:
Expand Down Expand Up @@ -121,6 +123,7 @@ services:
- serverless-lambda-generic-abstract-async
- serverless-lambda-generic-complex
- serverless-lambda-generic-complex-nested
- serverless-lambda-toplevel-statement
- serverless-dummy-api
environment:
- TIMEOUT_LENGTH=120
Expand Down Expand Up @@ -162,6 +165,7 @@ services:
serverless-lambda-generic-abstract-async:8080
serverless-lambda-generic-complex:8080
serverless-lambda-generic-complex-nested:8080
serverless-lambda-toplevel-statement:8080
serverless-dummy-api:9005

serverless-lambda-no-param-sync:
Expand Down Expand Up @@ -1015,6 +1019,29 @@ services:
- ./:/project
- ./tracer/build_data/logs/serverless-lambda-generic-complex-nested:/var/log/datadog/dotnet

serverless-lambda-toplevel-statement:
build:
context: ./tracer/test/test-applications/integrations/Samples.Amazon.Lambda.RuntimeSupport
dockerfile: serverless.lambda.dockerfile
args:
- lambdaBaseImage=${lambdaBaseImage:-public.ecr.aws/lambda/dotnet:6}
- framework=${framework:-net6.0}
depends_on:
- serverless-dummy-api
command: "Samples.Amazon.Lambda.RuntimeSupport"
image: dd-trace-dotnet/serverless-lambda-toplevel-statement
environment:
- DD_TRACE_AGENT_URL=http://integrationtests:5002
- _DD_EXTENSION_ENDPOINT=http://integrationtests:9003
- DUMMY_API_HOST=http://serverless-dummy-api:9005
- DD_INSTRUMENTATION_TELEMETRY_ENABLED=0
- DD_TRACE_DEBUG=1
ports:
- "8080"
volumes:
- ./:/project
- ./tracer/build_data/logs/serverless-lambda-toplevel-statement:/var/log/datadog/dotnet

# The serverless function calls this API, which always returns 200 OK
serverless-dummy-api:
image: andrewlock/ok-api:latest
Expand Down
14 changes: 14 additions & 0 deletions tracer/build/PackageVersionsGeneratorDefinitions.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,20 @@
"IncludeOnlyTargetFrameworks": ["net462"]
}]
},
{
"IntegrationName": "AwsLambda",
"SampleProjectName": "Samples.Amazon.Lambda.RuntimeSupport",
"NugetPackageSearchName": "Amazon.Lambda.RuntimeSupport",
"MinVersion": "1.4.0",
"MaxVersionExclusive": "2.0.0",
"SpecificVersions": [
"1.8.*"
],
"VersionConditions": [{
"MinVersion": "1.4.0",
"IncludeOnlyTargetFrameworks": ["net6.0","net7.0"]
}]
},
{
"IntegrationName": "AwsSqs",
"SampleProjectName": "Samples.AWS.SQS",
Expand Down
12 changes: 12 additions & 0 deletions tracer/build/PackageVersionsLatestMajors.g.props
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,18 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.AWS.Kinesis</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.9.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net6.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.9.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net7.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.AWS.SQS\Samples.AWS.SQS.csproj">
<Properties>ApiVersion=3.7.200.59;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net462</TargetFramework>
Expand Down
72 changes: 72 additions & 0 deletions tracer/build/PackageVersionsLatestMinors.g.props
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,78 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.AWS.Kinesis</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.4.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net6.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.5.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net6.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.6.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net6.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.7.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net6.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.8.8;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net6.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.9.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net6.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.4.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net7.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.5.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net7.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.6.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net7.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.7.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net7.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.8.8;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net7.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.9.0;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net7.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.AWS.SQS\Samples.AWS.SQS.csproj">
<Properties>ApiVersion=3.1.0.13;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net462</TargetFramework>
Expand Down
12 changes: 12 additions & 0 deletions tracer/build/PackageVersionsLatestSpecific.g.props
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,18 @@ NOTE: This code was generated by the GeneratePackageVersions tool. To safely
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.AWS.Kinesis</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.8.8;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net6.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.Amazon.Lambda.RuntimeSupport\Samples.Amazon.Lambda.RuntimeSupport.csproj">
<Properties>ApiVersion=1.8.8;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net7.0</TargetFramework>
<RequiresDockerDependency>All</RequiresDockerDependency>
<SampleName>Samples.Amazon.Lambda.RuntimeSupport</SampleName>
</PackageVersionSample>
<PackageVersionSample Include="test\test-applications\integrations\Samples.AWS.SQS\Samples.AWS.SQS.csproj">
<Properties>ApiVersion=3.1.0.13;RestoreRecursive=false;BuildProjectReferences=false</Properties>
<TargetFramework>net462</TargetFramework>
Expand Down
10 changes: 6 additions & 4 deletions tracer/build/_build/Build.Steps.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2111,10 +2111,12 @@ var name when multiPackageProjects.Contains(name) => false,
.Executes(() =>
{

var projectFile = TracerDirectory.GlobFiles("test/test-applications/integrations/*/Samples.AWS.Lambda.csproj").FirstOrDefault();
var target = projectFile / ".." / "bin" / "artifacts" / "monitoring-home";

CopyDirectoryRecursively(MonitoringHomeDirectory, target, DirectoryExistsPolicy.Merge, FileExistsPolicy.Overwrite);
var serverlessProjects = new List<string> { "Samples.AWS.Lambda.csproj", "Samples.Amazon.Lambda.RuntimeSupport.csproj" };
foreach (var target in serverlessProjects.Select(projectName => TracerDirectory.GlobFiles($"test/test-applications/integrations/*/{projectName}").FirstOrDefault())
.Select(projectFile => projectFile / ".." / "bin" / "artifacts" / "monitoring-home"))
{
CopyDirectoryRecursively(MonitoringHomeDirectory, target, DirectoryExistsPolicy.Merge, FileExistsPolicy.Overwrite);
}
});

Target CreateRootDescriptorsFile => _ => _
Expand Down
1 change: 1 addition & 0 deletions tracer/build/_build/Honeypot/IntegrationGroups.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ static IntegrationMap()
NugetPackages.Add("AerospikeClient", new [] { "Aerospike.Client" });
NugetPackages.Add("Microsoft.AspNetCore.Http", new string[] { });
NugetPackages.Add("System.Web.Mvc", new [] { "Microsoft.AspNet.Mvc" });
NugetPackages.Add("Amazon.Lambda.RuntimeSupport", new [] { "Amazon.Lambda.RuntimeSupport" });
NugetPackages.Add("AWSSDK.DynamoDBv2", new [] { "AWSSDK.DynamoDBv2" });
NugetPackages.Add("AWSSDK.Core", new [] { "AWSSDK.Core" });
NugetPackages.Add("AWSSDK.Kinesis", new [] { "AWSSDK.Kinesis" });
Expand Down
5 changes: 5 additions & 0 deletions tracer/dependabot/Datadog.Dependabot.Integrations.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,11 @@
<!-- Latest package https://www.nuget.org/packages/Microsoft.Extensions.Identity.Core/7.0.12 -->
<PackageReference Include="Microsoft.Extensions.Identity.Core" Version="7.0.12" />

<!-- Integration: Amazon.Lambda.RuntimeSupport -->
<!-- Assembly: Amazon.Lambda.RuntimeSupport -->
<!-- Latest package https://www.nuget.org/packages/Amazon.Lambda.RuntimeSupport/1.9.0 -->
<PackageReference Include="Amazon.Lambda.RuntimeSupport" Version="1.9.0" />

<!-- Integration: Microsoft.Azure.WebJobs.Host -->
<!-- Assembly: Microsoft.Azure.WebJobs.Host -->
<!-- Latest package https://www.nuget.org/packages/Microsoft.Azure.WebJobs/3.0.39 -->
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
<linker>
<assembly fullname="AerospikeClient" />
<assembly fullname="Amazon.Lambda.RuntimeSupport" />
<assembly fullname="AWSSDK.Core" />
<assembly fullname="AWSSDK.DynamoDBv2" />
<assembly fullname="AWSSDK.Kinesis" />
Expand Down
Loading