public void TestWriteWithTornMessage() { var tableEncoderTester = new TableEncoderTester(); // Setup encoder var encoder = new SbeTableEncoder(); var stream = new MemoryStream(); var table = TestTableHelper.CreateReactiveTableFull(); var columnsToFieldIds = new Dictionary <string, int> { { TestTableColumns.IdColumn, 101 }, { TestTableColumns.StringColumn, 102 }, { TestTableColumns.DecimalColumn, 103 }, { TestTableColumns.BoolColumn, 104 }, { TestTableColumns.DoubleColumn, 105 }, { TestTableColumns.ShortColumn, 106 }, { TestTableColumns.LongColumn, 107 }, // {TestTableColumns.DateTimeColumn, 108}, // {TestTableColumns.TimespanColumn, 109}, // {TestTableColumns.GuidColumn, 110}, { TestTableColumns.FloatColumn, 111 }, { TestTableColumns.ByteColumn, 112 }, { TestTableColumns.CharColumn, 113 }, }; encoder.Setup(stream, table, new SbeTableEncoderState { ColumnsToFieldIds = columnsToFieldIds }); // Add data var row1 = TableEncoderTester.AddTestRow(table, false); var row2 = TableEncoderTester.AddTestRow(table, false); tableEncoderTester.UpdateTestRow(table, row1, false); tableEncoderTester.UpdateTestRow(table, row2, false); encoder.Dispose(); //stream.Flush(); stream.Seek(0, SeekOrigin.Begin); // Decode var destTable = TestTableHelper.CreateReactiveTableFull(); // Read in chunks to simulate receiving over a network stream var tableDecoder = new SbeTableDecoder(60); var t = Task.Run(() => tableDecoder.Setup(stream, destTable, new SbeTableDecoderState { FieldIdsToColumns = columnsToFieldIds.InverseUniqueDictionary() }) ); t.Wait(200); tableDecoder.Stop(); tableEncoderTester.CompareTables(table, destTable); }
public void Test() { var tableEncoderTester = new TableEncoderTester(); // Setup encoder var encoder = new ProtobufTableEncoder(); var stream = new MemoryStream(); var table = TestTableHelper.CreateReactiveTableFull(); var columnsToFieldIds = new Dictionary <string, int> { { TestTableColumns.IdColumn, 101 }, { TestTableColumns.StringColumn, 102 }, { TestTableColumns.DecimalColumn, 103 }, { TestTableColumns.BoolColumn, 104 }, { TestTableColumns.DoubleColumn, 105 }, { TestTableColumns.ShortColumn, 106 }, { TestTableColumns.LongColumn, 107 }, { TestTableColumns.DateTimeColumn, 108 }, { TestTableColumns.TimespanColumn, 109 }, { TestTableColumns.GuidColumn, 110 }, { TestTableColumns.FloatColumn, 111 }, { TestTableColumns.ByteColumn, 112 }, { TestTableColumns.CharColumn, 113 }, }; encoder.Setup(stream, table, new ProtobufEncoderState(columnsToFieldIds)); // Add data var row1 = TableEncoderTester.AddTestRow(table); var row2 = TableEncoderTester.AddTestRow(table); tableEncoderTester.UpdateTestRow(table, row1); encoder.Dispose(); //stream.Flush(); stream.Seek(0, SeekOrigin.Begin); // Decode var destTable = TestTableHelper.CreateReactiveTableFull(); var tableDecoder = new ProtobufTableDecoder(); tableDecoder.Setup(stream, destTable, columnsToFieldIds.InverseUniqueDictionary()); // Task.Run(() => tableDecoder.Start()); Thread.Sleep(100); tableDecoder.Stop(); tableEncoderTester.CompareTables(table, destTable); }