Exemple #1
0
        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);
Exemple #10
0
 /// <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
     })));
 }
Exemple #11
0
 /// <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));
 }
Exemple #12
0
 /// <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
     }));
 }