Skip to content

Commit c2656ae

Browse files
committed
Revert style changes
1 parent 755ff07 commit c2656ae

File tree

94 files changed

+706
-656
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+706
-656
lines changed

perf/WebJobs.Script.Benchmarks/AuthUtilityBenchmarks.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the MIT License. See License.txt in the project root for license information.
33

4-
using System;
5-
using System.Collections.Generic;
6-
using System.Linq;
7-
using System.Security.Claims;
84
using BenchmarkDotNet.Attributes;
95
using Microsoft.Azure.WebJobs.Extensions.Http;
106
using Microsoft.Azure.WebJobs.Script.WebHost.Security.Authentication;
117
using Microsoft.Azure.WebJobs.Script.WebHost.Security.Authorization;
8+
using System;
9+
using System.Collections.Generic;
10+
using System.Linq;
11+
using System.Security.Claims;
1212

1313
namespace Microsoft.Azure.WebJobs.Script.Benchmarks
1414
{
1515
public class AuthUtilityBenchmarks
1616
{
17-
private ClaimsPrincipal _principal;
18-
17+
private ClaimsPrincipal Principal;
1918
private static List<Claim> TotallyRandomClaims { get; } = new List<Claim>()
2019
{
2120
new Claim(SecurityConstants.AuthLevelKeyNameClaimType, "test1"),
@@ -29,29 +28,29 @@ public class AuthUtilityBenchmarks
2928
};
3029

3130
[Params(null, "code")]
32-
public string KeyName { get; set; }
31+
public string KeyName;
3332

3433
[Params(0, 4, 8)]
35-
public int ClaimsCount { get; set; }
34+
public int ClaimsCount;
3635

3736
[GlobalSetup]
3837
public void Setup()
3938
{
4039
var identity = new ClaimsIdentity(TotallyRandomClaims.Take(ClaimsCount));
41-
_principal = new ClaimsPrincipal(identity);
40+
Principal = new ClaimsPrincipal(identity);
4241
}
4342

4443
[Benchmark(Baseline = true)]
4544
public bool PrincipalHasAuthLevelClaim() =>
46-
AuthUtility.PrincipalHasAuthLevelClaim(_principal, AuthorizationLevel.Function);
45+
AuthUtility.PrincipalHasAuthLevelClaim(Principal, AuthorizationLevel.Function);
4746

4847
[Benchmark]
4948
public bool PrincipalHasAuthLevelClaimNoArray() =>
50-
PrincipalHasAuthLevelClaimNoArray(_principal, AuthorizationLevel.Function);
49+
PrincipalHasAuthLevelClaimNoArray(Principal, AuthorizationLevel.Function);
5150

5251
[Benchmark]
5352
public bool PrincipalHasAuthLevelClaimHasClaim() =>
54-
PrincipalHasAuthLevelClaimHasClaim(_principal, AuthorizationLevel.Function);
53+
PrincipalHasAuthLevelClaimHasClaim(Principal, AuthorizationLevel.Function);
5554

5655
public static bool PrincipalHasAuthLevelClaimNoArray(ClaimsPrincipal principal, AuthorizationLevel requiredLevel, string keyName = null)
5756
{
@@ -108,7 +107,8 @@ public static bool PrincipalHasAuthLevelClaimHasClaim(ClaimsPrincipal principal,
108107

109108
return principal.HasClaim(c => c.Type == SecurityConstants.AuthLevelClaimType
110109
&& (c.Value == nameof(AuthorizationLevel.Admin)
111-
|| (c.Value == levelString && (keyName == null || string.Equals(principal.FindFirstValue(SecurityConstants.AuthLevelKeyNameClaimType), keyName, StringComparison.OrdinalIgnoreCase)))));
110+
|| (c.Value == levelString && (keyName == null || string.Equals(principal.FindFirstValue(SecurityConstants.AuthLevelKeyNameClaimType), keyName, StringComparison.OrdinalIgnoreCase)))
111+
));
112112
}
113113
}
114114
}
Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the MIT License. See License.txt in the project root for license information.
33

4-
using System;
5-
using System.IO;
6-
using System.Runtime.CompilerServices;
7-
using System.Threading.Tasks;
84
using BenchmarkDotNet.Attributes;
95
using Microsoft.Azure.WebJobs.Script.Description;
106
using Microsoft.Azure.WebJobs.Script.Extensibility;
@@ -13,63 +9,66 @@
139
using Microsoft.CodeAnalysis.Scripting;
1410
using Microsoft.CodeAnalysis.Scripting.Hosting;
1511
using Microsoft.Extensions.Logging.Abstractions;
12+
using System;
13+
using System.IO;
14+
using System.Runtime.CompilerServices;
15+
using System.Threading.Tasks;
1616

1717
namespace Microsoft.Azure.WebJobs.Script.Benchmarks
1818
{
1919
public class CSharpCompilationBenchmarks
2020
{
21-
// Dyanmic Compilation
22-
private readonly InteractiveAssemblyLoader _assemblyLoader = new InteractiveAssemblyLoader();
21+
// Set of samples to benchmark
22+
// TODOO: BlobTrigger, needs assembly refs working
23+
[Params("DocumentDB", "HttpTrigger", "HttpTrigger-Cancellation", "HttpTrigger-CustomRoute", "NotificationHub")]
24+
public string BenchmarkTrigger;
2325

2426
// Script source
25-
private string _scriptPath;
26-
private string _scriptSource;
27-
private FunctionMetadata _functionMetadata;
28-
private IFunctionMetadataResolver _resolver;
29-
private CSharpCompilationService _compilationService;
27+
private string ScriptPath;
28+
private static string GetCSharpSamplePath([CallerFilePath] string thisFilePath = null) =>
29+
Path.Combine(thisFilePath, "..", "..", "..", "sample", "CSharp");
30+
private string ScriptSource;
31+
private FunctionMetadata FunctionMetadata;
3032

31-
private IDotNetCompilation _scriptCompilation;
32-
private DotNetCompilationResult _scriptAssembly;
33+
// Dyanmic Compilation
34+
private readonly InteractiveAssemblyLoader AssemblyLoader = new InteractiveAssemblyLoader();
35+
private IFunctionMetadataResolver Resolver;
36+
private CSharpCompilationService CompilationService;
3337

34-
// Set of samples to benchmark
35-
// TODO: BlobTrigger, needs assembly refs working
36-
[Params("DocumentDB", "HttpTrigger", "HttpTrigger-Cancellation", "HttpTrigger-CustomRoute", "NotificationHub")]
37-
public string BenchmarkTrigger { get; set; }
38+
private IDotNetCompilation ScriptCompilation;
39+
private DotNetCompilationResult ScriptAssembly;
3840

3941
[GlobalSetup]
4042
public async Task SetupAsync()
4143
{
42-
_scriptPath = Path.Combine(GetCSharpSamplePath(), BenchmarkTrigger, "run.csx");
43-
_scriptSource = File.ReadAllText(_scriptPath);
44-
_functionMetadata = new FunctionMetadata()
44+
ScriptPath = Path.Combine(GetCSharpSamplePath(), BenchmarkTrigger, "run.csx");
45+
ScriptSource = File.ReadAllText(ScriptPath);
46+
FunctionMetadata = new FunctionMetadata()
4547
{
46-
FunctionDirectory = Path.GetDirectoryName(_scriptPath),
47-
ScriptFile = _scriptPath,
48+
FunctionDirectory = Path.GetDirectoryName(ScriptPath),
49+
ScriptFile = ScriptPath,
4850
Name = BenchmarkTrigger,
4951
Language = DotNetScriptTypes.CSharp
5052
};
5153

52-
_resolver = new ScriptFunctionMetadataResolver(_scriptPath, Array.Empty<IScriptBindingProvider>(), NullLogger.Instance);
53-
_compilationService = new CSharpCompilationService(_resolver, OptimizationLevel.Release);
54+
Resolver = new ScriptFunctionMetadataResolver(ScriptPath, Array.Empty<IScriptBindingProvider>(), NullLogger.Instance);
55+
CompilationService = new CSharpCompilationService(Resolver, OptimizationLevel.Release);
5456

55-
_scriptCompilation = await _compilationService.GetFunctionCompilationAsync(_functionMetadata);
56-
_scriptAssembly = await _scriptCompilation.EmitAsync(default);
57+
ScriptCompilation = await CompilationService.GetFunctionCompilationAsync(FunctionMetadata);
58+
ScriptAssembly = await ScriptCompilation.EmitAsync(default);
5759
}
5860

5961
[Benchmark(Description = nameof(CSharpScript) + "." + nameof(CSharpScript.Create))]
60-
public Script<object> ScriptCreation() =>
61-
CSharpScript.Create(_scriptSource, options: _resolver.CreateScriptOptions(), assemblyLoader: _assemblyLoader);
62+
public Script<object> ScriptCreation() =>
63+
CSharpScript.Create(ScriptSource, options: Resolver.CreateScriptOptions(), assemblyLoader: AssemblyLoader);
6264

6365
[Benchmark(Description = nameof(CSharpCompilationService) + "." + nameof(CSharpCompilationService.GetFunctionCompilationAsync))]
64-
public Task<IDotNetCompilation> GetFunctionCompilationAsync() => _compilationService.GetFunctionCompilationAsync(_functionMetadata);
66+
public Task<IDotNetCompilation> GetFunctionCompilationAsync() => CompilationService.GetFunctionCompilationAsync(FunctionMetadata);
6567

6668
[Benchmark(Description = nameof(CSharpCompilationBenchmarks) + "." + nameof(CSharpCompilationBenchmarks.EmitAsync))]
67-
public Task<DotNetCompilationResult> EmitAsync() => _scriptCompilation.EmitAsync(default);
69+
public Task<DotNetCompilationResult> EmitAsync() => ScriptCompilation.EmitAsync(default);
6870

6971
[Benchmark(Description = nameof(DotNetCompilationResult) + "." + nameof(DotNetCompilationResult.Load))]
70-
public void Load() => _scriptAssembly.Load(_functionMetadata, _resolver, NullLogger.Instance);
71-
72-
private static string GetCSharpSamplePath([CallerFilePath] string thisFilePath = null) =>
73-
Path.Combine(thisFilePath, "..", "..", "..", "sample", "CSharp");
72+
public void Load() => ScriptAssembly.Load(FunctionMetadata,Resolver, NullLogger.Instance);
7473
}
7574
}

perf/WebJobs.Script.Benchmarks/GrpcMessageConversionBenchmarks.cs

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,31 +4,33 @@
44
using System.Threading.Tasks;
55
using BenchmarkDotNet.Attributes;
66
using Google.Protobuf.Collections;
7+
using Newtonsoft.Json;
8+
using Newtonsoft.Json.Linq;
9+
using Microsoft.Extensions.Logging;
10+
using Microsoft.Extensions.Logging.Abstractions;
711
using Microsoft.Azure.WebJobs.Script.Grpc;
12+
using Microsoft.Azure.WebJobs.Script.Grpc.Messages;
813
using Microsoft.Azure.WebJobs.Script.Workers.Rpc;
9-
using Microsoft.Extensions.Logging.Abstractions;
10-
using Newtonsoft.Json.Linq;
1114

1215
namespace Microsoft.Azure.WebJobs.Script.Benchmarks
1316
{
1417
public class GrpcMessageConversionBenchmarks
1518
{
16-
private static readonly byte[] _byteArray = new byte[2000];
17-
private static readonly string _str = new('-', 2000);
18-
private static readonly double _dbl = 2000;
19-
private static readonly byte[][] _byteJaggedArray = new byte[1000][];
20-
private static readonly string[] _strArray = [new('-', 1000), new('-', 1000)];
21-
private static readonly double[] _dblArray = new double[1000];
22-
private static readonly long[] _longArray = new long[1000];
23-
private static readonly JObject _jObj = JObject.Parse(@"{'name': 'lilian'}");
24-
25-
private readonly GrpcCapabilities _grpcCapabilities = new(NullLogger.Instance);
19+
private static byte[] _byteArray = new byte[2000];
20+
private static string _str = new string('-', 2000);
21+
private static double _dbl = 2000;
22+
private static byte[][] _byteJaggedArray = new byte[1000][];
23+
private static string[] _strArray = new string[]{ new string('-', 1000), new string('-', 1000) };
24+
private static double[] _dblArray = new double[1000];
25+
private static long[] _longArray = new long[1000];
26+
private static JObject _jObj = JObject.Parse(@"{'name': 'lilian'}");
27+
internal GrpcCapabilities grpcCapabilities = new GrpcCapabilities(NullLogger.Instance);
2628

2729
// Not easy to benchmark
2830
// public static HttpRequest _httpRequest;
2931

3032
[Benchmark]
31-
public Task ToRpc_Null() => InvokeToRpc((object)null);
33+
public Task ToRpc_Null() => InvokeToRpc(((object)null));
3234

3335
[Benchmark]
3436
public Task ToRpc_ByteArray() => InvokeToRpc(_byteArray);
@@ -54,7 +56,7 @@ public class GrpcMessageConversionBenchmarks
5456
[Benchmark]
5557
public Task ToRpc_JObject() => InvokeToRpc(_jObj);
5658

57-
public async Task InvokeToRpc(object obj) => await obj.ToRpc(NullLogger.Instance, _grpcCapabilities);
59+
public async Task InvokeToRpc(object obj) => await obj.ToRpc(NullLogger.Instance, grpcCapabilities);
5860

5961
[GlobalSetup]
6062
public void Setup()
@@ -63,8 +65,7 @@ public void Setup()
6365
{
6466
{ RpcWorkerConstants.TypedDataCollection, "1" }
6567
};
66-
67-
_grpcCapabilities.UpdateCapabilities(addedCapabilities, GrpcCapabilitiesUpdateStrategy.Merge);
68+
grpcCapabilities.UpdateCapabilities(addedCapabilities, GrpcCapabilitiesUpdateStrategy.Merge);
6869
}
6970
}
7071
}

perf/WebJobs.Script.Benchmarks/Microsoft.Azure.WebJobs.Script.Benchmarks.csproj

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,9 @@
1717
<ProjectReference Include="../../src/WebJobs.Script.WebHost/WebJobs.Script.WebHost.csproj" />
1818
</ItemGroup>
1919

20-
</Project>
20+
<ItemGroup>
21+
<!-- TODO: add back in and address warnings. -->
22+
<GlobalPackageReference Remove="StyleCop.Analyzers" />
23+
</ItemGroup>
24+
25+
</Project>
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the MIT License. See License.txt in the project root for license information.
33

4-
using System.IO;
54
using BenchmarkDotNet.Running;
5+
using System.IO;
66

77
namespace Microsoft.Azure.WebJobs.Script.Benchmarks
88
{
@@ -12,6 +12,7 @@ public static void Main(string[] args) =>
1212
BenchmarkSwitcher
1313
.FromAssembly(typeof(Program).Assembly)
1414
.Run(args, RecommendedConfig.Create(
15-
artifactsPath: new DirectoryInfo(Path.Combine(Path.GetDirectoryName(typeof(Program).Assembly.Location), "BenchmarkDotNet.Artifacts"))));
15+
artifactsPath: new DirectoryInfo(Path.Combine(Path.GetDirectoryName(typeof(Program).Assembly.Location), "BenchmarkDotNet.Artifacts"))
16+
));
1617
}
1718
}

perf/WebJobs.Script.Benchmarks/RecommendedConfig.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Copyright (c) .NET Foundation. All rights reserved.
22
// Licensed under the MIT License. See License.txt in the project root for license information.
33

4-
using System.IO;
54
using BenchmarkDotNet.Columns;
65
using BenchmarkDotNet.Configs;
76
using BenchmarkDotNet.Diagnosers;
@@ -11,20 +10,21 @@
1110
using BenchmarkDotNet.Loggers;
1211
using BenchmarkDotNet.Reports;
1312
using Perfolizer.Horology;
13+
using System.IO;
1414

1515
namespace Microsoft.Azure.WebJobs.Script.Benchmarks
1616
{
1717
/// <summary>
1818
/// Default config largely matching the dotnet/performance repo:
19-
/// https://github.com/dotnet/performance/blob/a453235176943a222f126762b4b5436f6687d62e/src/harness/BenchmarkDotNet.Extensions/RecommendedConfig.cs.
19+
/// https://github.com/dotnet/performance/blob/a453235176943a222f126762b4b5436f6687d62e/src/harness/BenchmarkDotNet.Extensions/RecommendedConfig.cs
2020
/// </summary>
2121
internal static class RecommendedConfig
2222
{
2323
public static IConfig Create(DirectoryInfo artifactsPath)
2424
{
2525
var job = Job.Default
2626
.WithWarmupCount(1) // 1 warmup is enough for our purpose
27-
.WithIterationTime(TimeInterval.FromMilliseconds(250)) // the default is 0.5s per iteration, which is slightly too much for us
27+
.WithIterationTime(TimeInterval.FromMilliseconds(250)) // the default is 0.5s per iteration, which is slighlty too much for us
2828
.WithMinIterationCount(15)
2929
.WithMaxIterationCount(20); // we don't want to run more that 20 iterations
3030

src/WebJobs.Script.WebHost/Extensions/FunctionMetadataExtensions.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.IO;
66
using System.Linq;
77
using System.Threading.Tasks;
8+
using Microsoft.Azure.WebJobs.Logging;
89
using Microsoft.Azure.WebJobs.Script.Description;
910
using Microsoft.Azure.WebJobs.Script.Management.Models;
1011
using Microsoft.Azure.WebJobs.Script.WebHost.Management;
@@ -175,7 +176,21 @@ private static async Task<JObject> GetFunctionConfig(FunctionMetadata metadata,
175176

176177
private static async Task<JObject> GetFunctionConfigFromFile(string path)
177178
{
178-
return JObject.Parse(await FileUtility.ReadAsync(path));
179+
var fileContent = await FileUtility.ReadAsync(path);
180+
var jObject = JObject.Parse(fileContent);
181+
182+
if (jObject.TryGetValue("bindings", StringComparison.OrdinalIgnoreCase, out JToken bindingsToken) && bindingsToken is JArray bindingsArray)
183+
{
184+
for (int i = 0; i < bindingsArray.Count; i++)
185+
{
186+
if (bindingsArray[i] is JObject binding)
187+
{
188+
bindingsArray[i] = MetadataJsonHelper.SanitizeProperties(binding, ScriptConstants.SensitiveMetadataBindingPropertyNames);
189+
}
190+
}
191+
}
192+
193+
return jObject;
179194
}
180195

181196
private static JObject GetFunctionConfigFromMetadata(FunctionMetadata metadata)

src/WebJobs.Script/Host/HostFunctionMetadataProvider.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,9 @@ internal static FunctionMetadata ParseFunctionMetadata(string functionName, JObj
135135
{
136136
foreach (JObject binding in bindingArray)
137137
{
138-
BindingMetadata bindingMetadata = BindingMetadata.Create(binding);
138+
var sanitizedJObject = MetadataJsonHelper.SanitizeProperties(binding, ScriptConstants.SensitiveMetadataBindingPropertyNames);
139+
140+
BindingMetadata bindingMetadata = BindingMetadata.Create(sanitizedJObject);
139141
functionMetadata.Bindings.Add(bindingMetadata);
140142
}
141143
}

src/WebJobs.Script/Host/WorkerFunctionMetadataProvider.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ internal class WorkerFunctionMetadataProvider : IWorkerFunctionMetadataProvider,
2929
private readonly IEnvironment _environment;
3030
private readonly IWebHostRpcWorkerChannelManager _channelManager;
3131
private readonly IScriptHostManager _scriptHostManager;
32-
private readonly JsonSerializerSettings _dateTimeSerializerSettings;
3332
private string _workerRuntime;
3433
private ImmutableArray<FunctionMetadata> _functions;
3534
private IHost _currentJobHost = null;
@@ -47,7 +46,6 @@ public WorkerFunctionMetadataProvider(
4746
_channelManager = webHostRpcWorkerChannelManager;
4847
_scriptHostManager = scriptHostManager;
4948
_workerRuntime = _environment.GetEnvironmentVariable(EnvironmentSettingNames.FunctionWorkerRuntime);
50-
_dateTimeSerializerSettings = new JsonSerializerSettings { DateParseHandling = DateParseHandling.None };
5149

5250
_scriptHostManager.ActiveHostChanged += OnHostChanged;
5351
}
@@ -289,8 +287,8 @@ internal FunctionMetadata ValidateBindings(IEnumerable<string> rawBindings, Func
289287

290288
foreach (string binding in rawBindings)
291289
{
292-
var deserializedObj = JsonConvert.DeserializeObject<JObject>(binding, _dateTimeSerializerSettings);
293-
var functionBinding = BindingMetadata.Create(deserializedObj);
290+
var sanitizedBinding = MetadataJsonHelper.CreateJObjectWithSanitizedPropertyValue(binding, ScriptConstants.SensitiveMetadataBindingPropertyNames, DateParseHandling.None);
291+
var functionBinding = BindingMetadata.Create(sanitizedBinding);
294292

295293
Utility.ValidateBinding(functionBinding);
296294

src/WebJobs.Script/ScriptConstants.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -267,5 +267,7 @@ public static class ScriptConstants
267267
public static readonly string CancellationTokenRegistration = "CancellationTokenRegistration";
268268

269269
internal const string MasterKeyName = "_master";
270+
271+
public static readonly ImmutableHashSet<string> SensitiveMetadataBindingPropertyNames = ImmutableHashSet.Create(StringComparer.OrdinalIgnoreCase, "connection");
270272
}
271273
}

0 commit comments

Comments
 (0)