public void Test_PubSubManager_CreateEntity() { // Arrange var pubsub = new PubSubMessenger(new PubSubJsonAuthConfig() { JsonAuthFile = _credentialPath, ProjectId = _projectId, }); var topicName = $"testTopic_{ DateTime.Now.ToEpochTime() }"; var createEntity = new ReceiverConfig { ProjectId = _projectId, EntityName = topicName }; // Verify does not exist pubsub.EntityManager.EntityExists(topicName).GetAwaiter().GetResult().Should().BeFalse(); // Create a topic pubsub.EntityManager.CreateEntity(createEntity).GetAwaiter().GetResult(); ((PubSubManager)pubsub.EntityManager).SubscriptionExists($"{topicName}_default").GetAwaiter().GetResult().Should().BeTrue(); // Verify the topic exists pubsub.EntityManager.EntityExists(topicName).GetAwaiter().GetResult().Should().BeTrue(); // Attempt to create if not exist ((PubSubManager)pubsub.EntityManager).CreateTopicIfNotExists(topicName).GetAwaiter().GetResult(); // Delete topic ((PubSubManager)pubsub.EntityManager).DeleteEntity(topicName).GetAwaiter().GetResult(); ((PubSubManager)pubsub.EntityManager).DeleteTopic($"{topicName}_deadletter").GetAwaiter().GetResult(); ((PubSubManager)pubsub.EntityManager).DeleteSubscription($"{topicName}_deadletter_default").GetAwaiter().GetResult(); ((PubSubManager)pubsub.EntityManager).DeleteSubscription($"{topicName}_deadletter_default").GetAwaiter().GetResult(); // done twice for branch coverage. ((PubSubManager)pubsub.EntityManager).DeleteTopic(topicName).GetAwaiter().GetResult(); // done twice for branch coverage. // Attempt to create if not exists ((PubSubManager)pubsub.EntityManager).CreateTopicIfNotExists(topicName).GetAwaiter().GetResult(); ((PubSubManager)pubsub.EntityManager).CreateTopicIfNotExists(topicName).GetAwaiter().GetResult(); // called twice for branch coverage. ((PubSubManager)pubsub.EntityManager).CreateSubscription(topicName, "OtherSub2").GetAwaiter().GetResult(); ((PubSubManager)pubsub.EntityManager).CreateSubscription(topicName, "OtherSub2").GetAwaiter().GetResult(); // called twice for coverage. ((PubSubManager)pubsub.EntityManager).SubscriptionExists("OtherSub2").GetAwaiter().GetResult().Should().BeTrue(); // Verify exists ((PubSubManager)pubsub.EntityManager).TopicExists(topicName).GetAwaiter().GetResult().Should().BeTrue(); // Finally... delete pubsub.EntityManager.DeleteEntity(topicName).GetAwaiter().GetResult(); pubsub.EntityManager.DeleteEntity($"{topicName}_deadletter").GetAwaiter().GetResult(); // done twice for branch coverage. // Verify does not exist ((PubSubManager)pubsub.EntityManager).TopicExists(topicName).GetAwaiter().GetResult().Should().BeFalse(); ((PubSubManager)pubsub.EntityManager).SubscriptionExists($"{topicName}_default").GetAwaiter().GetResult().Should().BeFalse(); ((PubSubManager)pubsub.EntityManager).SubscriptionExists("OtherSub2").GetAwaiter().GetResult().Should().BeFalse(); }
public void Test_ReceiverSetup_Validate() { // Arrange var receiverSetup = new ReceiverConfig() { CreateEntityIfNotExists = false, EntityName = "", PollFrequencyInSeconds = 1, RemoveSerializationFailureMessages = false }; // Act/Assert Assert.Throws <ValidateException>(() => receiverSetup.ThrowIfInvalid()); Assert.False(receiverSetup.CreateEntityIfNotExists); Assert.True(receiverSetup.EntityName == ""); Assert.Equal(1, receiverSetup.PollFrequencyInSeconds); Assert.False(receiverSetup.RemoveSerializationFailureMessages); receiverSetup.ToString().Should().NotBeNullOrEmpty(); }
public void Test_ReceiverConfig_ToStringFunctionality() { // Arrange var config = new ReceiverConfig { EntityName = "entityName", EntitySubscriptionName = "subscriptionName", CreateEntityIfNotExists = true, EntityFilter = new KeyValuePair <string, string>("testkey", "testfilter"), ProjectId = "12345", ReadFromErrorEntity = true }; // Act var str = config.ToString(); // Assert str.Should().Be("EntityName: entityName, EntityDeadLetterName: entityName_deadletter, EntitySubscriptionName: subscriptionName, " + "EntityDeadLetterSubscriptionName: entityName_deadletter_default, EntityFilter: [testkey, testfilter], CreateEntityIfNotExists: True, ReadFromErrorEntity: True"); }
public void Test_ReceiverConfig_Setup() { // Arrange var receiver = new ReceiverConfig { EntityName = "entityName", EntitySubscriptionName = "test", ReadFromErrorEntity = true, CreateEntityIfNotExists = false, EntityFilter = new KeyValuePair <string, string>("key", "value"), ProjectId = "projId" }; // Assert receiver.TopicRelativeName.Should().Be($"projects/projId/topics/entityName"); receiver.EntityDeadLetterName.Should().Be($"entityName_deadletter"); receiver.TopicDeadletterRelativeName.Should().Be($"projects/projId/topics/entityName_deadletter"); receiver.ToString().Length.Should().BeGreaterThan(0); receiver.ProjectId.Should().Be("projId"); receiver.ReadFromErrorEntity.Should().BeTrue(); }
/// <summary> /// Creates the topic, along with default subscription/dead-letter topic/subscription, if the topic does not exists. /// </summary> /// <param name="topicName">Name of the topic to create if not already exists.</param> /// <param name="createDefaults">If set to <c>true</c> [create default subscription, as well dead-letter topic/subscription].</param> /// <returns><c>true</c> if created, <c>false</c> if not.</returns> public async Task <bool> CreateTopicIfNotExists(string topicName, bool createDefaults) { // If the topic does not exist, create the topic along with the default subscriptions and dead-letter topic/subscription. if (!await TopicExists(topicName)) { // Build defaults. var defaultConfig = new ReceiverConfig { EntityName = topicName }; // Set depending on flag. string subscription = createDefaults ? defaultConfig.EntitySubscriptionName : null; string deadletterName = createDefaults ? defaultConfig.EntityDeadLetterName : null; string deadletterSubscription = createDefaults ? defaultConfig.EntityDeadLetterSubscriptionName : null; // Create... await CreateTopicDefaults(topicName, deadletterName, subscription, deadletterSubscription); return(true); } return(false); }
public IReceiverControl CreateReceiverControl(ReceiverConfig receiver, IReceiverForm receiverForm) { return(new FBRConfigControl((FBRReceiverConfig)receiver, receiverForm)); }
public ILogReceiver CreateReceiver(ReceiverConfig config) { return(new FBRReceiver(this, (FBRReceiverConfig)config)); }
/// <summary> /// Returns a custom receiver configuration record. /// </summary> /// <param name="receiver">The custom receiver configuration.</param> /// <param name="edit">Controls, if the configuration dialog is is created to edit an existing receiver (true), /// or to create a new receiver (false).</param> /// <returns></returns> public override ICustomReceiverConfigurator CreateReceiverConfigurator(ReceiverConfig receiver, bool edit) => new Log4jNetReceiverConfigVm((Log4jNetReceiverConfig)receiver);
public override ILogReceiver CreateReceiver(ReceiverConfig config) => new Log4jNetReceiver(this, (Log4jNetReceiverConfig)config);
/// <summary> /// Add Storage Queue singleton of type StorageQueueMessenger, using named properties (as opposed to passing MsiConfig/ServicePrincipleConfig etc). /// Will automatically use MsiConfiguration. /// </summary> /// <param name="services">Service collection to extend.</param> /// <param name="key">Key to identify the named instance of the Storage Queue singleton.</param> /// <param name="instanceName">Instance name of Storage Queue.</param> /// <param name="tenantId">Tenant Id where Storage Queue exists.</param> /// <param name="subscriptionId">Subscription within the tenancy to use for the Storage Queue instance.</param> /// <param name="receiver">Receiver configuration (if any).</param> /// <param name="sender">Sender configuration (if any).</param> /// <returns>Modified service collection with the StorageQueueMessenger and NamedInstanceFactory{StorageQueueMessenger} configured.</returns> public static IServiceCollection AddStorageQueueSingletonNamed(this IServiceCollection services, string key, string instanceName, string tenantId, string subscriptionId, ReceiverConfig receiver = null, SenderConfig sender = null) { return(AddNamedInstance <StorageQueueMessenger>(services, key, new StorageQueueMessenger(new MsiConfig { InstanceName = instanceName, TenantId = tenantId, SubscriptionId = subscriptionId, Receiver = receiver, Sender = sender }))); }
/// <summary> /// Add Storage Queue singleton of type StorageQueueMessenger, using named properties (as opposed to passing MsiConfig/ServicePrincipleConfig etc). /// Will automatically use MsiConfiguration. /// </summary> /// <param name="services">Service collection to extend</param> /// <param name="instanceName">Instance name of Storage Queue.</param> /// <param name="tenantId">Tenant Id where Storage Queue exists.</param> /// <param name="subscriptionId">Subscription within the tenancy to use for the Storage Queue instance.</param> /// <param name="receiver">Receiver configuration (if any).</param> /// <param name="sender">Sender configuration (if any).</param> /// <returns>Modified service collection with the StorageQueueMessenger and NamedInstanceFactory{StorageQueueMessenger} configured.</returns> public static IServiceCollection AddStorageQueueSingleton(this IServiceCollection services, string instanceName, string tenantId, string subscriptionId, ReceiverConfig receiver = null, SenderConfig sender = null) { return(services.AddStorageQueueSingletonNamed <StorageQueueMessenger>(null, instanceName, tenantId, subscriptionId, receiver, sender)); }
/// <summary> /// Adds the Gcp Pub/Sub singleton using the passed in params to build configuration. /// </summary> /// <param name="services">The service collection to extend.</param> /// <param name="projectId">The Gcp Project Id.</param> /// <param name="jsonAuthFile">The json authentication file.</param> /// <param name="receiver">The receiver configuration.</param> /// <param name="sender">The sender configuration.</param> /// <returns>IServiceCollection.</returns> public static IServiceCollection AddPubSubSingleton(this IServiceCollection services, string projectId, string jsonAuthFile, ReceiverConfig receiver = null, SenderConfig sender = null) { return(services.AddPubSubSingletonNamed <PubSubMessenger>(null, new PubSubJsonAuthConfig { ProjectId = projectId, JsonAuthFile = jsonAuthFile, ReceiverConfig = receiver, Sender = sender })); }