private IEnumerable <List <long> > GenerateValuesInMultipleThreads(int threadCount, int valueCount) { const int blockSize = 10; var serviceProvider = SqlServerTestHelpers.Instance.CreateServiceProvider(); var state = new SqlServerSequenceValueGeneratorState( new Sequence( new Model(), RelationalAnnotationNames.Prefix, "Foo") { IncrementBy = blockSize }); var executor = new FakeSqlCommandBuilder(blockSize); var sqlGenerator = new SqlServerUpdateSqlGenerator(new SqlServerSqlGenerator()); var tests = new Action[threadCount]; var generatedValues = new List <long> [threadCount]; for (var i = 0; i < tests.Length; i++) { var testNumber = i; generatedValues[testNumber] = new List <long>(); tests[testNumber] = () => { for (var j = 0; j < valueCount; j++) { var connection = CreateConnection(serviceProvider); var generator = new SqlServerSequenceHiLoValueGenerator <long>(executor, sqlGenerator, state, connection); generatedValues[testNumber].Add(generator.Next()); } }; } Parallel.Invoke(tests); return(generatedValues); }
public FakeRelationalCommand(FakeSqlCommandBuilder commandBuilder) { _commandBuilder = commandBuilder; }