Skip to content

Commit 7f69b5c

Browse files
authored
Enable EventHubs WebJobs extension live tests (Azure#17029)
Goals: 1. Get E2E live tests running so we can start iterating while having some level of validation
1 parent d1e4e46 commit 7f69b5c

17 files changed

+222
-356
lines changed

sdk/eventhub/Azure.Messaging.EventHubs.Shared/src/Testing/EventHubsTestEnvironment.cs

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public sealed class EventHubsTestEnvironment: TestEnvironment
137137
/// Initializes a new instance of <see cref="EventHubsTestEnvironment"/>.
138138
/// </summary>
139139
///
140-
private EventHubsTestEnvironment() : base("eventhub")
140+
public EventHubsTestEnvironment() : base("eventhub")
141141
{
142142
ParsedConnectionString = new Lazy<EventHubsConnectionStringProperties>(() => EventHubsConnectionStringProperties.Parse(EventHubsConnectionString), LazyThreadSafetyMode.ExecutionAndPublication);
143143
ActiveEventHubsNamespace = new Lazy<NamespaceProperties>(EnsureEventHubsNamespace, LazyThreadSafetyMode.ExecutionAndPublication);
@@ -167,25 +167,6 @@ private EventHubsTestEnvironment() : base("eventhub")
167167
///
168168
public string BuildConnectionStringForEventHub(string eventHubName) => $"{ EventHubsConnectionString };EntityPath={ eventHubName }";
169169

170-
/// <summary>
171-
/// Builds a connection string for the Event Hubs namespace used for Live tests, creating a shared access signature
172-
/// in place of the shared key.
173-
/// </summary>
174-
///
175-
/// <param name="eventHubName">The name of the Event Hub to base the connection string on.</param>
176-
/// <param name="signatureAudience">The audience to use for the shared access signature.</param>
177-
/// <param name="validDurationMinutes">The duration, in minutes, that the signature should be considered valid for.</param>
178-
///
179-
/// <returns>The namespace connection string with a shared access signature based on the shared key of the current scope.</value>
180-
///
181-
public string BuildConnectionStringWithSharedAccessSignature(string eventHubName,
182-
string signatureAudience,
183-
int validDurationMinutes = 30)
184-
{
185-
var signature = new SharedAccessSignature(signatureAudience, SharedAccessKeyName, SharedAccessKey, TimeSpan.FromMinutes(validDurationMinutes));
186-
return $"Endpoint=sb://{ ParsedConnectionString.Value.FullyQualifiedNamespace };EntityPath={ eventHubName };SharedAccessSignature={ signature.Value }";
187-
}
188-
189170
/// <summary>
190171
/// Ensures that an Event Hubs namespace is available for the test run, using one if provided by the
191172
/// <see cref="EventHubsNamespaceConnectionStringEnvironmentVariable" /> or creating a new Azure resource specific

sdk/eventhub/Azure.Messaging.EventHubs/tests/Connection/EventHubConnectionLiveTests.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@ public async Task ConnectionCanConnectToEventHubsUsingSharedAccessSignatureConne
8181
{
8282
var options = new EventHubConnectionOptions();
8383
var audience = EventHubConnection.BuildConnectionAudience(options.TransportType, EventHubsTestEnvironment.Instance.FullyQualifiedNamespace, scope.EventHubName);
84-
var connectionString = EventHubsTestEnvironment.Instance.BuildConnectionStringWithSharedAccessSignature(scope.EventHubName, audience);
84+
EventHubsTestEnvironment tempQualifier = EventHubsTestEnvironment.Instance;
85+
var signature = new SharedAccessSignature(audience, tempQualifier.SharedAccessKeyName, tempQualifier.SharedAccessKey, TimeSpan.FromMinutes(30));
86+
var connectionString = $"Endpoint=sb://{tempQualifier.FullyQualifiedNamespace };EntityPath={ scope.EventHubName };SharedAccessSignature={ signature.Value }";
8587

8688
await using (var connection = new TestConnectionWithTransport(connectionString, options))
8789
{

sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/Microsoft.Azure.WebJobs.Extensions.EventHubs.sln

Lines changed: 42 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio 15
44
VisualStudioVersion = 15.0.26124.0
55
MinimumVisualStudioVersion = 15.0.26124.0
6-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Azure.WebJobs.Extensions.EventHubs", "src\Microsoft.Azure.WebJobs.Extensions.EventHubs.csproj", "{CFBC2DEF-E738-4380-A8DE-236433E15CF6}"
7-
EndProject
86
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Azure.WebJobs.Extensions.EventHubs.Tests", "tests\Microsoft.Azure.WebJobs.Extensions.EventHubs.Tests.csproj", "{91E0D968-2082-4959-A294-6F1B790ECECF}"
97
EndProject
8+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Core.TestFramework", "..\..\core\Azure.Core.TestFramework\src\Azure.Core.TestFramework.csproj", "{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}"
9+
EndProject
10+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Azure.WebJobs.Extensions.EventHubs", "src\Microsoft.Azure.WebJobs.Extensions.EventHubs.csproj", "{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}"
11+
EndProject
12+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Azure.Messaging.EventHubs", "..\Azure.Messaging.EventHubs\src\Azure.Messaging.EventHubs.csproj", "{B51ECD35-11DA-46D2-89D7-9DE3888CF896}"
13+
EndProject
1014
Global
1115
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1216
Debug|Any CPU = Debug|Any CPU
@@ -20,18 +24,6 @@ Global
2024
HideSolutionNode = FALSE
2125
EndGlobalSection
2226
GlobalSection(ProjectConfigurationPlatforms) = postSolution
23-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
24-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Debug|Any CPU.Build.0 = Debug|Any CPU
25-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Debug|x64.ActiveCfg = Debug|Any CPU
26-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Debug|x64.Build.0 = Debug|Any CPU
27-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Debug|x86.ActiveCfg = Debug|Any CPU
28-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Debug|x86.Build.0 = Debug|Any CPU
29-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Release|Any CPU.ActiveCfg = Release|Any CPU
30-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Release|Any CPU.Build.0 = Release|Any CPU
31-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Release|x64.ActiveCfg = Release|Any CPU
32-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Release|x64.Build.0 = Release|Any CPU
33-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Release|x86.ActiveCfg = Release|Any CPU
34-
{CFBC2DEF-E738-4380-A8DE-236433E15CF6}.Release|x86.Build.0 = Release|Any CPU
3527
{91E0D968-2082-4959-A294-6F1B790ECECF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
3628
{91E0D968-2082-4959-A294-6F1B790ECECF}.Debug|Any CPU.Build.0 = Debug|Any CPU
3729
{91E0D968-2082-4959-A294-6F1B790ECECF}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -44,5 +36,41 @@ Global
4436
{91E0D968-2082-4959-A294-6F1B790ECECF}.Release|x64.Build.0 = Release|Any CPU
4537
{91E0D968-2082-4959-A294-6F1B790ECECF}.Release|x86.ActiveCfg = Release|Any CPU
4638
{91E0D968-2082-4959-A294-6F1B790ECECF}.Release|x86.Build.0 = Release|Any CPU
39+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
40+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
41+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Debug|x64.ActiveCfg = Debug|Any CPU
42+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Debug|x64.Build.0 = Debug|Any CPU
43+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Debug|x86.ActiveCfg = Debug|Any CPU
44+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Debug|x86.Build.0 = Debug|Any CPU
45+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
46+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Release|Any CPU.Build.0 = Release|Any CPU
47+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Release|x64.ActiveCfg = Release|Any CPU
48+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Release|x64.Build.0 = Release|Any CPU
49+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Release|x86.ActiveCfg = Release|Any CPU
50+
{DCDC9E7A-94F5-4765-B6B1-DCA4E0E04EF7}.Release|x86.Build.0 = Release|Any CPU
51+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
52+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Debug|Any CPU.Build.0 = Debug|Any CPU
53+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Debug|x64.ActiveCfg = Debug|Any CPU
54+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Debug|x64.Build.0 = Debug|Any CPU
55+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Debug|x86.ActiveCfg = Debug|Any CPU
56+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Debug|x86.Build.0 = Debug|Any CPU
57+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Release|Any CPU.ActiveCfg = Release|Any CPU
58+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Release|Any CPU.Build.0 = Release|Any CPU
59+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Release|x64.ActiveCfg = Release|Any CPU
60+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Release|x64.Build.0 = Release|Any CPU
61+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Release|x86.ActiveCfg = Release|Any CPU
62+
{B5B06EAD-54CA-4F69-959C-1AEEEE19B832}.Release|x86.Build.0 = Release|Any CPU
63+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
64+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Debug|Any CPU.Build.0 = Debug|Any CPU
65+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Debug|x64.ActiveCfg = Debug|Any CPU
66+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Debug|x64.Build.0 = Debug|Any CPU
67+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Debug|x86.ActiveCfg = Debug|Any CPU
68+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Debug|x86.Build.0 = Debug|Any CPU
69+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Release|Any CPU.ActiveCfg = Release|Any CPU
70+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Release|Any CPU.Build.0 = Release|Any CPU
71+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Release|x64.ActiveCfg = Release|Any CPU
72+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Release|x64.Build.0 = Release|Any CPU
73+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Release|x86.ActiveCfg = Release|Any CPU
74+
{B51ECD35-11DA-46D2-89D7-9DE3888CF896}.Release|x86.Build.0 = Release|Any CPU
4775
EndGlobalSection
4876
EndGlobal

sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/api/Microsoft.Azure.WebJobs.Extensions.EventHubs.netstandard2.0.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ namespace Microsoft.Azure.WebJobs.EventHubs
2424
{
2525
public partial class EventHubOptions : Microsoft.Azure.WebJobs.Hosting.IOptionsFormatter
2626
{
27-
public const string LeaseContainerName = "azure-webjobs-eventhub";
2827
public EventHubOptions() { }
2928
public int BatchCheckpointFrequency { get { throw null; } set { } }
3029
public Azure.Messaging.EventHubs.Primitives.EventProcessorOptions EventProcessorOptions { get { throw null; } }
3130
public bool InvokeProcessorAfterReceiveTimeout { get { throw null; } set { } }
31+
public string LeaseContainerName { get { throw null; } set { } }
3232
public int MaxBatchSize { get { throw null; } set { } }
3333
public void AddEventHubProducerClient(Azure.Messaging.EventHubs.Producer.EventHubProducerClient client) { }
3434
public void AddEventHubProducerClient(string eventHubName, Azure.Messaging.EventHubs.Producer.EventHubProducerClient client) { }

sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/src/Config/EventHubExtensionConfigProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ private static LogLevel GetLogLevel(Exception ex)
113113
private IAsyncCollector<EventData> BuildFromAttribute(EventHubAttribute attribute)
114114
{
115115
EventHubProducerClient client = _options.Value.GetEventHubProducerClient(attribute.EventHubName, attribute.Connection);
116-
return new EventHubAsyncCollector(new EventHubProducerClientImpl(client));
116+
return new EventHubAsyncCollector(new EventHubProducerClientImpl(client, _loggerFactory));
117117
}
118118

119119
private static string ConvertEventDataToString(EventData x)

sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/src/Config/EventHubOptions.cs

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.Collections.Generic;
77
using System.Globalization;
88
using System.Text;
9+
using Azure.Messaging.EventHubs;
910
using Azure.Messaging.EventHubs.Consumer;
1011
using Azure.Messaging.EventHubs.Primitives;
1112
using Azure.Messaging.EventHubs.Producer;
@@ -32,7 +33,8 @@ public class EventHubOptions : IOptionsFormatter
3233
/// Name of the blob container that the EventHostProcessor instances uses to coordinate load balancing listening on an event hub.
3334
/// Each event hub gets its own blob prefix within the container.
3435
/// </summary>
35-
public const string LeaseContainerName = "azure-webjobs-eventhub";
36+
public string LeaseContainerName { get; set; } = "azure-webjobs-eventhub";
37+
3638
private int _batchCheckpointFrequency = 1;
3739

3840
public EventHubOptions()
@@ -256,27 +258,13 @@ internal EventProcessorHost GetEventProcessorHost(IConfiguration config, string
256258
storageConnectionString = defaultStorageString;
257259
}
258260

259-
// If the connection string provides a hub name, that takes precedence.
260-
// Note that connection strings *can't* specify a consumerGroup, so must always be passed in.
261-
string actualPath = eventHubName;
262-
EventHubsConnectionStringBuilder sb = new EventHubsConnectionStringBuilder(creds.EventHubConnectionString);
263-
if (sb.EntityPath != null)
264-
{
265-
actualPath = sb.EntityPath;
266-
sb.EntityPath = null; // need to remove to use with EventProcessorHost
267-
}
268-
269-
var @namespace = GetEventHubNamespace(sb);
270-
var blobPrefix = GetBlobPrefix(actualPath, @namespace);
271-
272261
// Use blob prefix support available in EPH starting in 2.2.6
273262
EventProcessorHost host = new EventProcessorHost(
274-
eventHubPath: actualPath,
263+
eventHubName: eventHubName,
275264
consumerGroupName: consumerGroup,
276-
eventHubConnectionString: sb.ToString(),
265+
eventHubConnectionString: creds.EventHubConnectionString,
277266
storageConnectionString: storageConnectionString,
278267
leaseContainerName: LeaseContainerName,
279-
legacyCheckpointStorageBlobPrefix: blobPrefix,
280268
exceptionHandler: _exceptionHandler);
281269

282270
return host;

sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/src/EventHubProducerClientImpl.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,21 @@
44
using System.Threading;
55
using System.Threading.Tasks;
66
using Azure.Messaging.EventHubs.Producer;
7+
using Microsoft.Azure.WebJobs.Logging;
8+
using Microsoft.Extensions.Logging;
79

810
namespace Microsoft.Azure.WebJobs
911
{
1012
/// TODO: Remove when https://github.com/Azure/azure-sdk-for-net/issues/9117 is fixed
1113
internal class EventHubProducerClientImpl : IEventHubProducerClient
1214
{
1315
private readonly EventHubProducerClient _client;
16+
private readonly ILogger _logger;
1417

15-
public EventHubProducerClientImpl(EventHubProducerClient client)
18+
public EventHubProducerClientImpl(EventHubProducerClient client, ILoggerFactory loggerFactory)
1619
{
1720
_client = client;
21+
_logger = loggerFactory?.CreateLogger(LogCategories.Executor);
1822
}
1923

2024
public async Task<IEventDataBatch> CreateBatchAsync(CancellationToken cancellationToken)
@@ -24,7 +28,9 @@ public async Task<IEventDataBatch> CreateBatchAsync(CancellationToken cancellati
2428

2529
public async Task SendAsync(IEventDataBatch batch, CancellationToken cancellationToken)
2630
{
27-
await _client.SendAsync(((EventDataBatchImpl) batch).Batch, cancellationToken).ConfigureAwait(false);
31+
_logger?.LogDebug("Sending events to EventHub");
32+
var eventDataBatch = ((EventDataBatchImpl) batch).Batch;
33+
await _client.SendAsync(eventDataBatch, cancellationToken).ConfigureAwait(false);
2834
}
2935
}
3036
}

sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/src/Listeners/EventHubListener.cs

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
using System.Threading;
1111
using System.Threading.Tasks;
1212
using Azure.Messaging.EventHubs;
13-
using Azure.Messaging.EventHubs.Consumer;
1413
using Azure.Messaging.EventHubs.Processor;
1514
using Azure.Storage.Blobs;
1615
using Microsoft.Azure.WebJobs.EventHubs.Listeners;
@@ -26,11 +25,6 @@ namespace Microsoft.Azure.WebJobs.EventHubs
2625
internal sealed class EventHubListener : IListener, IEventProcessorFactory, IScaleMonitorProvider
2726
{
2827
private static readonly Dictionary<string, object> EmptyScope = new Dictionary<string, object>();
29-
private readonly string _functionId;
30-
private readonly string _eventHubName;
31-
private readonly string _consumerGroup;
32-
private readonly string _connectionString;
33-
private readonly string _storageConnectionString;
3428
private readonly ITriggeredFunctionExecutor _executor;
3529
private readonly EventProcessorHost _eventProcessorHost;
3630
private readonly bool _singleDispatch;
@@ -42,28 +36,26 @@ internal sealed class EventHubListener : IListener, IEventProcessorFactory, ISca
4236

4337
public EventHubListener(
4438
string functionId,
45-
string eventHubName,
46-
string consumerGroup,
47-
string connectionString,
48-
string storageConnectionString,
4939
ITriggeredFunctionExecutor executor,
5040
EventProcessorHost eventProcessorHost,
5141
bool singleDispatch,
5242
EventHubOptions options,
5343
ILogger logger,
5444
BlobContainerClient blobContainer = null)
5545
{
56-
_functionId = functionId;
57-
_eventHubName = eventHubName;
58-
_consumerGroup = consumerGroup;
59-
_connectionString = connectionString;
60-
_storageConnectionString = storageConnectionString;
6146
_executor = executor;
6247
_eventProcessorHost = eventProcessorHost;
6348
_singleDispatch = singleDispatch;
6449
_options = options;
6550
_logger = logger;
66-
_scaleMonitor = new Lazy<EventHubsScaleMonitor>(() => new EventHubsScaleMonitor(_functionId, _eventHubName, _consumerGroup, _connectionString, _storageConnectionString, _logger, blobContainer));
51+
_scaleMonitor = new Lazy<EventHubsScaleMonitor>(() => new EventHubsScaleMonitor(
52+
functionId,
53+
eventProcessorHost.EventHubName,
54+
eventProcessorHost.ConsumerGroupName,
55+
eventProcessorHost.EventHubConnectionString,
56+
eventProcessorHost.StorageConnectionString,
57+
_logger,
58+
blobContainer));
6759
}
6860

6961
void IListener.Cancel()
@@ -216,6 +208,7 @@ public async Task ProcessEventsAsync(ProcessorPartitionContext context, IEnumera
216208
// code, and capture/log/persist failed events, since they won't be retried.
217209
if (messages.Any())
218210
{
211+
context.CheckpointEvent = messages.Last();
219212
await CheckpointAsync(context).ConfigureAwait(false);
220213
}
221214
}

sdk/eventhub/Microsoft.Azure.WebJobs.Extensions.EventHubs/src/Microsoft.Azure.WebJobs.Extensions.EventHubs.csproj

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,24 @@
44
<TargetFramework>netstandard2.0</TargetFramework>
55
<Description>Microsoft Azure WebJobs SDK EventHubs Extension</Description>
66
<Version>5.0.0-beta.1</Version>
7-
<NoWarn>$(NoWarn);AZC0001;CS1591</NoWarn>
7+
<NoWarn>$(NoWarn);AZC0001;CS1591;SA1636</NoWarn>
88
<AssemblyOriginatorKeyFile>sign.snk</AssemblyOriginatorKeyFile>
99
</PropertyGroup>
1010

1111
<ItemGroup>
12-
<PackageReference Include="Azure.Messaging.EventHubs" />
1312
<PackageReference Include="Azure.Storage.Blobs" />
1413
<PackageReference Include="Microsoft.Azure.WebJobs" />
1514
</ItemGroup>
1615

16+
<ItemGroup>
17+
<ProjectReference Include="../../Azure.Messaging.EventHubs/src/Azure.Messaging.EventHubs.csproj" />
18+
</ItemGroup>
19+
20+
<ItemGroup>
21+
<Compile Include="$(AzureCoreSharedSources)Argument.cs" />
22+
<Compile Include="../../Azure.Messaging.EventHubs.Shared/src/Processor/StorageManager.cs"/>
23+
<Compile Include="../../Azure.Messaging.EventHubs.Shared/src/Core/CancellationTokenExtensions.cs"/>
24+
<Compile Include="../../Azure.Messaging.EventHubs.Shared/src/BlobCheckpointStore/*.cs"/>
25+
</ItemGroup>
26+
1727
</Project>

0 commit comments

Comments
 (0)