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); } }
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()); }
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); }
private static void AddResultToVirtModel(VirtSqlRpcModel virtModel, DataTable data, DataTable schema) { virtModel.Results.Add(new Result { Data = data, SchemaTable = schema }); }