public void GetSet_EnableHoldTransactionUntilMessageCommited()
 {
     var test = new SqlServerMessageQueueTransportOptions();
     var c = test.EnableHoldTransactionUntilMessageCommited;
     test.EnableHoldTransactionUntilMessageCommited = !c;
     Assert.Equal(!c, test.EnableHoldTransactionUntilMessageCommited);
 }
 public void GetSet_Priority()
 {
     var test = new SqlServerMessageQueueTransportOptions();
     var c = test.EnablePriority;
     test.EnablePriority = !c;
     Assert.Equal(!c, test.EnablePriority);
 }
 public void GetSet_EnableStatus()
 {
     var test = new SqlServerMessageQueueTransportOptions();
     var c = test.EnableStatus;
     test.EnableStatus = !c;
     Assert.Equal(!c, test.EnableStatus);
 }
 public void GetSet_EnableHeartBeat()
 {
     var test = new SqlServerMessageQueueTransportOptions();
     var c = test.EnableHeartBeat;
     test.EnableHeartBeat = !c;
     Assert.Equal(!c, test.EnableHeartBeat);
 }
 public void GetSet_EnableDelayedProcessing()
 {
     var test = new SqlServerMessageQueueTransportOptions();
     var c = test.EnableDelayedProcessing;
     test.EnableDelayedProcessing = !c;
     Assert.Equal(!c, test.EnableDelayedProcessing);
 }
Beispiel #6
0
        public void Readonly()
        {
            var test = new SqlServerMessageQueueTransportOptions();

            test.SetReadOnly();
            Assert.True(test.IsReadOnly);
        }
Beispiel #7
0
        public void GetSet_Priority()
        {
            var test = new SqlServerMessageQueueTransportOptions();
            var c    = test.EnablePriority;

            test.EnablePriority = !c;
            Assert.Equal(!c, test.EnablePriority);
        }
Beispiel #8
0
        private SqlServerMessageQueueSchema Create()
        {
            var options = new SqlServerMessageQueueTransportOptions();
            var factory = Substitute.For <ISqlServerMessageQueueTransportOptionsFactory>();

            factory.Create().Returns(options);
            return(Create(factory));
        }
Beispiel #9
0
        public void GetSet_EnableHeartBeat()
        {
            var test = new SqlServerMessageQueueTransportOptions();
            var c    = test.EnableHeartBeat;

            test.EnableHeartBeat = !c;
            Assert.Equal(!c, test.EnableHeartBeat);
        }
Beispiel #10
0
        public void GetSet_EnableDelayedProcessing()
        {
            var test = new SqlServerMessageQueueTransportOptions();
            var c    = test.EnableDelayedProcessing;

            test.EnableDelayedProcessing = !c;
            Assert.Equal(!c, test.EnableDelayedProcessing);
        }
Beispiel #11
0
        public void GetSet_EnableMessageExpiration()
        {
            var test = new SqlServerMessageQueueTransportOptions();
            var c    = test.EnableMessageExpiration;

            test.EnableMessageExpiration = !c;
            Assert.Equal(!c, test.EnableMessageExpiration);
        }
Beispiel #12
0
        public void GetSet_EnableStatusTable()
        {
            var test = new SqlServerMessageQueueTransportOptions();
            var c    = test.EnableStatusTable;

            test.EnableStatusTable = !c;
            Assert.Equal(!c, test.EnableStatusTable);
        }
Beispiel #13
0
        public void GetSet_QueueType()
        {
            var test = new SqlServerMessageQueueTransportOptions {
                QueueType = QueueTypes.RpcReceive
            };

            Assert.Equal(QueueTypes.RpcReceive, test.QueueType);
        }
Beispiel #14
0
        public void GetSet_enableHoldTransactionUntilMessageCommitted()
        {
            var test = new SqlServerMessageQueueTransportOptions();
            var c    = test.EnableHoldTransactionUntilMessageCommitted;

            test.EnableHoldTransactionUntilMessageCommitted = !c;
            Assert.Equal(!c, test.EnableHoldTransactionUntilMessageCommitted);
        }
 public void Create_Status()
 {
     var tableName = GetTableNameHelper();
     var options = new SqlServerMessageQueueTransportOptions {EnableStatusTable = true};
     var factory = Substitute.For<ISqlServerMessageQueueTransportOptionsFactory>();
     factory.Create().Returns(options);
     var test = Create(factory, tableName);
     var tables = test.GetSchema();
     Assert.True(tables.Any(item => item.Name == tableName.StatusName));
 }
Beispiel #16
0
        internal static void BuildMetaCommand(SqlCommand command,
                                              ITableNameHelper tableNameHelper,
                                              IHeaders headers,
                                              IAdditionalMessageData data,
                                              IMessage message,
                                              long id,
                                              SqlServerMessageQueueTransportOptions options,
                                              TimeSpan?delay,
                                              TimeSpan expiration)
        {
            var sbMeta = new StringBuilder();

            sbMeta.AppendLine("Insert into " + tableNameHelper.MetaDataName);
            sbMeta.Append("(QueueID, CorrelationID, QueuedDateTime ");

            //add configurable columns - queue
            options.AddBuiltInColumns(sbMeta);

            //add configurable columns - user
            if (options.AdditionalColumnsOnMetaData)
            {
                AddUserColumns(sbMeta, data);
            }

            //close the column list
            sbMeta.AppendLine(") ");

            //add standard values that are always present
            sbMeta.Append("VALUES (");
            sbMeta.Append("@QueueID, @CorrelationID, GetUTCDate() ");

            //add the values for built in fields
            options.AddBuiltInColumnValues(delay, expiration, sbMeta);

            //add configurable column value - user
            if (options.AdditionalColumnsOnMetaData)
            {
                AddUserColumnsValues(sbMeta, data);
            }

            sbMeta.Append(")"); //close the VALUES

            command.CommandText = sbMeta.ToString();

            options.AddBuiltInColumnsParams(command, data);

            command.Parameters.Add("@QueueID", SqlDbType.BigInt, 8).Value = id;
            command.Parameters.Add("@CorrelationID", SqlDbType.UniqueIdentifier, 16).Value = data.CorrelationId.Id.Value;

            //add configurable column command params - user
            if (options.AdditionalColumnsOnMetaData)
            {
                AddUserColumnsParams(command, data);
            }
        }
 public void Create_Meta_Priority()
 {
     var tableName = GetTableNameHelper();
     var options = new SqlServerMessageQueueTransportOptions {EnablePriority = true};
     var factory = Substitute.For<ISqlServerMessageQueueTransportOptionsFactory>();
     factory.Create().Returns(options);
     var test = Create(factory, tableName);
     var tables = test.GetSchema();
     var statusTable = tables.Find(item => item.Name == tableName.MetaDataName);
     Assert.True(statusTable.Columns.Items.Any(item => item.Name == "Priority"));
 }
Beispiel #18
0
        /// <summary>
        /// Initializes a new instance of the <see cref="Connection" /> class.
        /// </summary>
        /// <param name="connectionInfo">The connection information.</param>
        /// <param name="options">The options.</param>
        public Connection(IConnectionInformation connectionInfo,
            SqlServerMessageQueueTransportOptions options)
        {
            SqlConnection = new SqlConnection(connectionInfo.ConnectionString);
            SqlConnection.Open();

            if (options.EnableHoldTransactionUntilMessageCommited)
            {
                SqlTransaction = SqlConnection.BeginTransaction(IsolationLevel.ReadCommitted);
            }
        }
 public void Create_Status_Extra_Columns()
 {
     var tableName = GetTableNameHelper();
     var options = new SqlServerMessageQueueTransportOptions {EnableStatusTable = true};
     options.AdditionalColumns.Add(new Column("testing", ColumnTypes.Bigint, true, null));
     var factory = Substitute.For<ISqlServerMessageQueueTransportOptionsFactory>();
     factory.Create().Returns(options);
     var test = Create(factory, tableName);
     var tables = test.GetSchema();
     var statusTable = tables.Find(item => item.Name == tableName.StatusName);
     Assert.True(statusTable.Columns.Items.Any(item => item.Name == "testing"));
 }
Beispiel #20
0
        public void Create_Status()
        {
            var tableName = GetTableNameHelper();
            var options   = new SqlServerMessageQueueTransportOptions {
                EnableStatusTable = true
            };
            var factory = Substitute.For <ISqlServerMessageQueueTransportOptionsFactory>();

            factory.Create().Returns(options);
            var test   = Create(factory, tableName);
            var tables = test.GetSchema().ConvertAll(o => (Table)o);

            Assert.Contains(tables, item => item.Name == tableName.StatusName);
        }
Beispiel #21
0
        public void Create_Meta_Priority()
        {
            var tableName = GetTableNameHelper();
            var options   = new SqlServerMessageQueueTransportOptions {
                EnablePriority = true
            };
            var factory = Substitute.For <ISqlServerMessageQueueTransportOptionsFactory>();

            factory.Create().Returns(options);
            var test        = Create(factory, tableName);
            var tables      = test.GetSchema().ConvertAll(o => (Table)o);
            var statusTable = tables.Find(item => item.Name == tableName.MetaDataName);

            Assert.Contains(statusTable.Columns.Items, item => item.Name == "Priority");
        }
Beispiel #22
0
        internal static void BuildStatusCommand(SqlCommand command,
                                                ITableNameHelper tableNameHelper,
                                                IHeaders headers,
                                                IAdditionalMessageData data,
                                                IMessage message,
                                                long id,
                                                SqlServerMessageQueueTransportOptions options)
        {
            var builder = new StringBuilder();

            builder.AppendLine("Insert into " + tableNameHelper.StatusName);
            builder.Append("(QueueID, Status, CorrelationID ");

            //add configurable columns - user
            if (!options.AdditionalColumnsOnMetaData)
            {
                AddUserColumns(builder, data);
            }

            //close the column list
            builder.AppendLine(") ");

            //add standard values that are always present
            builder.Append("VALUES (");
            builder.Append($"@QueueID, {Convert.ToInt32(QueueStatuses.Waiting)}, @CorrelationID");

            //add configurable column value - user
            if (!options.AdditionalColumnsOnMetaData)
            {
                AddUserColumnsValues(builder, data);
            }

            builder.Append(")"); //close the VALUES

            command.CommandText = builder.ToString();

            options.AddBuiltInColumnsParams(command, data);

            command.Parameters.Add("@QueueID", SqlDbType.BigInt, 8).Value = id;
            command.Parameters.Add("@CorrelationID", SqlDbType.UniqueIdentifier, 16).Value = data.CorrelationId.Id.Value;

            //add configurable column command params - user
            if (!options.AdditionalColumnsOnMetaData)
            {
                AddUserColumnsParams(command, data);
            }
        }
Beispiel #23
0
        public void Create_Status_Extra_Columns()
        {
            var tableName = GetTableNameHelper();
            var options   = new SqlServerMessageQueueTransportOptions {
                EnableStatusTable = true
            };

            options.AdditionalColumns.Add(new Column("testing", ColumnTypes.Bigint, true, null));
            var factory = Substitute.For <ISqlServerMessageQueueTransportOptionsFactory>();

            factory.Create().Returns(options);
            var test        = Create(factory, tableName);
            var tables      = test.GetSchema().ConvertAll(o => (Table)o);
            var statusTable = tables.Find(item => item.Name == tableName.StatusName);

            Assert.Contains(statusTable.Columns.Items, item => item.Name == "testing");
        }
Beispiel #24
0
        public void Create_FIFO()
        {
            var tableName = GetTableNameHelper();
            var options   = new SqlServerMessageQueueTransportOptions
            {
                EnableStatus    = false,
                EnableHeartBeat = false,
                EnablePriority  = false
            };
            var factory = Substitute.For <ISqlServerMessageQueueTransportOptionsFactory>();

            factory.Create().Returns(options);
            var test   = Create(factory, tableName);
            var tables = test.GetSchema();

            Assert.NotNull(tables);
        }
Beispiel #25
0
        internal static void BuildMetaCommand(SqlCommand command, 
            TableNameHelper tableNameHelper,
            IHeaders headers,
            IAdditionalMessageData data,
            IMessage message,
            long id,
            SqlServerMessageQueueTransportOptions options,
            TimeSpan? delay, 
            TimeSpan expiration)
        {
            var sbMeta = new StringBuilder();
            sbMeta.AppendLine("Insert into " + tableNameHelper.MetaDataName);
            sbMeta.Append("(QueueID, CorrelationID, QueuedDateTime ");

            //add configurable columns - queue
            options.AddBuiltInColumns(sbMeta);

            AddHeaderColumns(sbMeta, message, headers);

            //close the column list
            sbMeta.AppendLine(") ");

            //add standard values that are always present
            sbMeta.Append("VALUES (");
            sbMeta.Append("@QueueID, @CorrelationID, GetUTCDate() ");

            //add the values for built in fields
            options.AddBuiltInColumnValues(delay, expiration, sbMeta);

            AddHeaderValues(sbMeta, message, headers);

            sbMeta.Append(")"); //close the VALUES 

            command.CommandText = sbMeta.ToString();

            options.AddBuiltInColumnsParams(command, data);
            AddHeaderColumnParams(command, message, headers);

            command.Parameters.Add("@QueueID", SqlDbType.BigInt, 8).Value = id;
            command.Parameters.Add("@CorrelationID", SqlDbType.UniqueIdentifier, 16).Value = data.CorrelationId.Id.Value;

        }
        /// <summary>
        /// Creates new instance.
        /// </summary>
        /// <returns></returns>
        public SqlServerMessageQueueTransportOptions Create()
        {
            if (string.IsNullOrEmpty(_connectionInformation.ConnectionString))
            {
                return new SqlServerMessageQueueTransportOptions();
            }

            if (_options != null) return _options;
            lock (_creator)
            {
                if (_options == null)
                {
                    _options = _queryOptions.Handle(new GetQueueOptionsQuery());
                }
                if (_options == null) //does not exist in DB; return a new copy
                {
                    _options = new SqlServerMessageQueueTransportOptions();
                }
            }
            return _options;
        }
Beispiel #27
0
        internal static void BuildStatusCommand(SqlCommand command,
            TableNameHelper tableNameHelper,
            IHeaders headers,
            IAdditionalMessageData data,
            IMessage message,
            long id,
            SqlServerMessageQueueTransportOptions options)
        {
            var builder = new StringBuilder();
            builder.AppendLine("Insert into " + tableNameHelper.StatusName);
            builder.Append("(QueueID, Status, CorrelationID ");

            //add configurable columns - user
            AddUserColumns(builder, data);

            //close the column list
            builder.AppendLine(") ");

            //add standard values that are always present
            builder.Append("VALUES (");
            builder.Append($"@QueueID, {Convert.ToInt32(QueueStatuses.Waiting)}, @CorrelationID");

            //add configurable column value - user
            AddUserColumnsValues(builder, data);

            builder.Append(")"); //close the VALUES 

            command.CommandText = builder.ToString();

            options.AddBuiltInColumnsParams(command, data);

            command.Parameters.Add("@QueueID", SqlDbType.BigInt, 8).Value = id;
            command.Parameters.Add("@CorrelationID", SqlDbType.UniqueIdentifier, 16).Value = data.CorrelationId.Id.Value;

            //add configurable column command params - user
            AddUserColumnsParams(command, data);
            AddHeaderColumnParams(command, message, headers);
        }
Beispiel #28
0
        /// <summary>
        /// Creates new instance.
        /// </summary>
        /// <returns></returns>
        public SqlServerMessageQueueTransportOptions Create()
        {
            if (string.IsNullOrEmpty(_connectionInformation.ConnectionString))
            {
                return(new SqlServerMessageQueueTransportOptions());
            }

            if (_options != null)
            {
                return(_options);
            }
            lock (_creator)
            {
                if (_options == null)
                {
                    _options = _queryOptions.Handle(new GetQueueOptionsQuery <SqlServerMessageQueueTransportOptions>());
                }
                if (_options == null) //does not exist in DB; return a new copy
                {
                    _options = new SqlServerMessageQueueTransportOptions();
                }
            }
            return(_options);
        }
 public void Test_DefaultNotReadOnly()
 {
     var test = new SqlServerMessageQueueTransportOptions();
     Assert.False(test.IsReadOnly);
 }
 public void GetSet_QueueType()
 {
     var test = new SqlServerMessageQueueTransportOptions {QueueType = QueueTypes.RpcReceive};
     Assert.Equal(QueueTypes.RpcReceive, test.QueueType);
 }
 public VerifyQueueData(string queueName, SqlServerMessageQueueTransportOptions options)
 {
     _options = options;
     _connection = new SqlConnectionInformation(queueName, ConnectionInfo.ConnectionString);
     _tableNameHelper = new TableNameHelper(_connection);
 }
Beispiel #32
0
 public VerifyQueueRecordCount(QueueConnection queueConnection, SqlServerMessageQueueTransportOptions options)
 {
     _options         = options;
     _connection      = new SqlConnectionInformation(queueConnection);
     _tableNameHelper = new SqlServerTableNameHelper(_connection);
 }
Beispiel #33
0
 public VerifyQueueRecordCount(string queueName, SqlServerMessageQueueTransportOptions options)
 {
     _options         = options;
     _connection      = new SqlConnectionInformation(queueName, ConnectionInfo.ConnectionString);
     _tableNameHelper = new TableNameHelper(_connection);
 }
 public void Create_FIFO()
 {
     var tableName = GetTableNameHelper();
     var options = new SqlServerMessageQueueTransportOptions
     {
         EnableStatus = false,
         EnableHeartBeat = false,
         EnablePriority = false
     };
     var factory = Substitute.For<ISqlServerMessageQueueTransportOptionsFactory>();
     factory.Create().Returns(options);
     var test = Create(factory, tableName);
     var tables = test.GetSchema();
     Assert.NotNull(tables);
 }
Beispiel #35
0
        public void Test_DefaultNotReadOnly()
        {
            var test = new SqlServerMessageQueueTransportOptions();

            Assert.False(test.IsReadOnly);
        }
 public void Readonly()
 {
     var test = new SqlServerMessageQueueTransportOptions();
     test.SetReadOnly();
     Assert.True(test.IsReadOnly);
 }
 public void Validation()
 {
     var test = new SqlServerMessageQueueTransportOptions();
     test.ValidConfiguration();
 }
 public void GetSet_EnableMessageExpiration()
 {
     var test = new SqlServerMessageQueueTransportOptions();
     var c = test.EnableMessageExpiration;
     test.EnableMessageExpiration = !c;
     Assert.Equal(!c, test.EnableMessageExpiration);
 }
 private SqlServerMessageQueueSchema Create()
 {
     var options = new SqlServerMessageQueueTransportOptions();
     var factory = Substitute.For<ISqlServerMessageQueueTransportOptionsFactory>();
     factory.Create().Returns(options);
     return Create(factory);
 }
Beispiel #40
0
        public void Validation()
        {
            var test = new SqlServerMessageQueueTransportOptions();

            test.ValidConfiguration();
        }