public static Fake Create(IReadOnlyList <IEnumerable <ServerAction> > msgs, TimeSpan?ackDeadline = null, TimeSpan?ackExtendWindow = null, int?flowMaxElements = null, int?flowMaxBytes = null, int clientCount = 1, int threadCount = 1, TimeSpan?writeAsyncPreDelay = null, bool useMsgAsId = false) { var scheduler = new TestScheduler(threadCount: threadCount); TaskHelper taskHelper = scheduler.TaskHelper; List <DateTime> clientShutdowns = new List <DateTime>(); var msgEn = msgs.GetEnumerator(); var clients = Enumerable.Range(0, clientCount) .Select(_ => new FakeSubscriberServiceApiClient(msgEn, scheduler, scheduler.Clock, taskHelper, writeAsyncPreDelay ?? TimeSpan.Zero, useMsgAsId)) .ToList(); var settings = new SubscriberClient.Settings { Scheduler = scheduler, AckDeadline = ackDeadline, AckExtensionWindow = ackExtendWindow, FlowControlSettings = new FlowControlSettings(flowMaxElements, flowMaxBytes), }; Task Shutdown() { clientShutdowns.Locked(() => clientShutdowns.Add(scheduler.Clock.GetCurrentDateTimeUtc())); return(Task.FromResult(0)); } var subs = new SubscriberClientImpl(new SubscriptionName("projectid", "subscriptionid"), clients, settings, Shutdown, taskHelper); return(new Fake { Scheduler = scheduler, Time0 = scheduler.Clock.GetCurrentDateTimeUtc(), TaskHelper = taskHelper, Subscribers = clients, ClientShutdowns = clientShutdowns, Subscriber = subs, }); }
private static Task <SubscriberClient> CreateSubscriberClientAsync(SubscriptionName subscriptionName, SubscriberClient.ClientCreationSettings clientCreationSettings = null, SubscriberClient.Settings settings = null) { clientCreationSettings ??= new SubscriberClient.ClientCreationSettings(); clientCreationSettings = clientCreationSettings.WithEmulatorDetection(EmulatorDetection.EmulatorOrProduction); return(SubscriberClient.CreateAsync(subscriptionName, clientCreationSettings, settings)); }