From 058d4095d0d07f8233e4c9815174dddd052a5d90 Mon Sep 17 00:00:00 2001 From: Ricky Kaare Engelharth Date: Tue, 20 Jul 2021 12:49:38 +0200 Subject: [PATCH] Add test to verify concurrent write operations --- src/Parquet.Test/Rows/RowsModelTest.cs | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/Parquet.Test/Rows/RowsModelTest.cs b/src/Parquet.Test/Rows/RowsModelTest.cs index 49f81fe7..5d84f1f2 100644 --- a/src/Parquet.Test/Rows/RowsModelTest.cs +++ b/src/Parquet.Test/Rows/RowsModelTest.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; +using System.Threading.Tasks; using Newtonsoft.Json; using Parquet.Data; using Parquet.Data.Rows; @@ -58,6 +59,37 @@ public void Flat_write_read() Assert.True(table.Equals(table2, true)); } + [Fact] + public async Task Flat_concurrent_write_read() + { + var schema = new Schema( + new DataField("id"), + new DataField("city")); + + var inputTables = new List(); + for (int i = 0; i < 10; i++) + { + var table = new Table(schema); + for (int j = 0; j < 10; j++) + { + table.Add(new Row(i, $"record#{i},{j}")); + } + + inputTables.Add(table); + } + + var tasks = inputTables + .Select(t => Task.Run(() => WriteRead(t))) + .ToArray(); + + var outputTables = await Task.WhenAll(tasks); + + for (int i = 0; i < inputTables.Count; i++) + { + Assert.True(inputTables[i].Equals(outputTables[i], true)); + } + } + #endregion #region [ Array Tables ]