Пример #1
0
        private void MapOutParametersAndReturnValue(VirtSqlRpcModel virtModel)
        {
            foreach (SqlParameter sqlParameter in _wrappedSqlCommand.Parameters)
            {
                if (sqlParameter.Direction == ParameterDirection.ReturnValue)
                {
                    virtModel.ReturnCode = (int)(sqlParameter.Value ?? 0);
                    continue;
                }

                virtModel.Parameters.Add(sqlParameter.ParameterName, sqlParameter.Value);
            }
        }
Пример #2
0
        protected override DbDataReader ExecuteDbDataReader(CommandBehavior behavior)
        {
            HandleConnectionNull();

            CreateSqlCommand();

            CreateSqlParamList();

            var dataSet = new DataSet();

            using (_wrappedSqlConnection = new SqlConnection(Connection.ConnectionString))
            {
                using (_wrappedSqlCommand)
                {
                    _wrappedSqlCommand.Connection = _wrappedSqlConnection;
                    _wrappedSqlConnection.Open();

                    var virtModel = new VirtSqlRpcModel(CommandText);

                    var sw = Stopwatch.StartNew();

                    using (var reader = _wrappedSqlCommand.ExecuteReader())
                    {
                        do
                        {
                            var schema = CreateSchemaTable(reader);

                            var data = CreateAndLoadDataTable(reader);

                            AddResultToVirtModel(virtModel, data, schema);

                            dataSet.Tables.Add(data);
                        } while (!reader.IsClosed);
                    }

                    MapOutParametersAndReturnValue(virtModel);

                    sw.Stop();

                    virtModel.DelayMs = sw.ElapsedMilliseconds;

                    ServiceVirtMountebankPublisher.AddRecordedCommand(virtModel);
                }
            }

            return(dataSet.CreateDataReader());
        }
Пример #3
0
        public override int ExecuteNonQuery()
        {
            HandleConnectionNull();

            CreateSqlCommand();

            CreateSqlParamList();

            int rowsAffected = 0;

            using (_wrappedSqlConnection = new SqlConnection(Connection.ConnectionString))
            {
                using (_wrappedSqlCommand)
                {
                    _wrappedSqlCommand.Connection = _wrappedSqlConnection;
                    _wrappedSqlConnection.Open();

                    var sw = Stopwatch.StartNew();

                    rowsAffected = _wrappedSqlCommand.ExecuteNonQuery();

                    sw.Stop();

                    var virtModel = new VirtSqlRpcModel(CommandText)
                    {
                        DelayMs      = sw.ElapsedMilliseconds,
                        RowsAffected = rowsAffected
                    };

                    MapOutParametersAndReturnValue(virtModel);

                    ServiceVirtMountebankPublisher.AddRecordedCommand(virtModel);
                }
            }

            return(rowsAffected);
        }
        public static void AddRecordedCommand(VirtSqlRpcModel model)
        {
            _recordedCommands.AddOrUpdate(model.StoredProcName, s => new List <VirtSqlRpcModel> {
                model
            }, (s, list) =>
            {
                list.Add(model);
                return(list);
            });

            var mountebankClient = new MountebankClient();

            mountebankClient.DeleteImposter(1234);

            var imposter = mountebankClient.CreateHttpImposter(1234, "test");

            foreach (var virtRecordedCommand in _recordedCommands)
            {
                var stub = imposter.AddStub();

                var predicateFields = new HttpPredicateFields
                {
                    Path = virtRecordedCommand.Key,
                };

                var containsPredicate = new ContainsPredicate <HttpPredicateFields>(predicateFields);

                foreach (var response in virtRecordedCommand.Value)
                {
                    stub
                    .On(containsPredicate)
                    .ReturnsJson(HttpStatusCode.OK, response);
                }
            }

            mountebankClient.Submit(imposter);
        }
Пример #5
0
 private static void AddResultToVirtModel(VirtSqlRpcModel virtModel, DataTable data, DataTable schema)
 {
     virtModel.Results.Add(new Result {
         Data = data, SchemaTable = schema
     });
 }