152 lines
5.3 KiB
C#
152 lines
5.3 KiB
C#
using System.Collections.Concurrent;
|
|
using System.Diagnostics;
|
|
using MesETL.App.Services.ETL;
|
|
using MesETL.Shared.Helper;
|
|
using Xunit.Abstractions;
|
|
using ZstdSharp;
|
|
|
|
namespace TestProject1;
|
|
|
|
public class Test
|
|
{
|
|
private readonly ITestOutputHelper _output;
|
|
|
|
public Test(ITestOutputHelper output)
|
|
{
|
|
_output = output;
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData([@"D:\Dump\NewMockData2\cferp.order_box_block.00000.dat.zst"])]
|
|
public async Task ZstdDecompressTest(string inputFile)
|
|
{
|
|
var count = 0;
|
|
var flag = true;
|
|
var sw = Stopwatch.StartNew();
|
|
var reader = new StreamReader(new DecompressionStream(File.OpenRead(inputFile)));
|
|
var monitor = Task.Run(async () =>
|
|
{
|
|
var lastElapse = sw.ElapsedMilliseconds;
|
|
var lastCount = 0;
|
|
while (flag)
|
|
{
|
|
await Task.Delay(2000);
|
|
|
|
_output.WriteLine($"speed: {(count - lastCount) / ((sw.ElapsedMilliseconds - lastElapse) / 1000f)}");
|
|
lastElapse = sw.ElapsedMilliseconds;
|
|
lastCount = count;
|
|
}
|
|
});
|
|
while (!reader.EndOfStream)
|
|
{
|
|
var str = await reader.ReadLineAsync();
|
|
char a;
|
|
// foreach (var c in str)
|
|
// {
|
|
// a = c;
|
|
// }
|
|
CsvReader.ParseRowFaster(str, '"', ',');
|
|
count++;
|
|
}
|
|
|
|
flag = false;
|
|
monitor.Wait();
|
|
}
|
|
|
|
|
|
public static IEnumerable<object[]> ParseRowData()
|
|
{
|
|
yield return
|
|
[@"20220104020855,""2022-01-04 10:06:46"",1455,""0001-01-01 00:00:00"",""1"",0,""2"",""0"",\N,""0"",22010"];
|
|
yield return
|
|
[@"20220104020858,""2022-01-04 15:08:22"",1455,""0001-01-01 00:00:00"",""1"",838,""2"",""0"",""5"",""0"",22010"];
|
|
yield return
|
|
[@"5586326,20220104020855,220105981029,""1"",482278,482279,3768774,0,0,""1.000"",1455,22010"];
|
|
yield return
|
|
[@"130658,""PD220104002302"",3,4616,""2022-01-04 15:10:40"",1443,""2022-01-04 15:10:40"",""2022-01-04 15:10:51"",0,"""",0,1455,""0001-01-01 00:00:00"",1,5B32303232303130343032303835385D,E590B8E5A1912D2DE590B8E5A1912D2D31382D2D323030302A3630302D2D3130E789872D2D352E3936333B6361696C69616F2D2D79616E73652D2D392D2D323031302A313137342D2D31E789872D2D322E3336,""0"",0"];
|
|
}
|
|
[Theory]
|
|
[MemberData(nameof(ParseRowData))]
|
|
public void ParseRowFasterTest(string row)
|
|
{
|
|
var fields = CsvReader.ParseRowFaster(row, '"', ',');
|
|
_output.WriteLine(string.Join(',', fields));
|
|
}
|
|
|
|
[Fact]
|
|
public void DictMemoryTest()
|
|
{
|
|
var dict = new ConcurrentDictionary<string, string>();
|
|
for (int i = 0; i < 3000000; i++)
|
|
{
|
|
dict.AddOrUpdate(Guid.NewGuid().ToString(), Random.Shared.NextInt64(1000000000L, 9999999999L).ToString(), (_, __) => Random.Shared.NextInt64(1000000000L, 9999999999L).ToString());
|
|
}
|
|
|
|
while (true)
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
[Fact]
|
|
public void GetResult()
|
|
{
|
|
var input =
|
|
"""
|
|
machine: 19303/19061
|
|
order: 3416759/3415192
|
|
order_block_plan: 2934281/1968850
|
|
order_block_plan_item: 0/235927707
|
|
order_block_plan_result: 1375479/277667
|
|
order_box_block: 23457666/23450841
|
|
order_data_block: 513012248/513012248
|
|
order_data_goods: 18655270/18655270
|
|
order_data_parts: 353139066/353139066
|
|
order_item: 955274320/955274320
|
|
order_module: 102907480/56935691
|
|
order_module_extra: 40044077/40044077
|
|
order_module_item: 49209022/49209022
|
|
order_package: 12012712/12012712
|
|
order_package_item: 0/80605124
|
|
order_process: 4045309/2682043
|
|
order_process_step: 8343418/5505158
|
|
order_process_step_item: 14856509/9787696
|
|
order_scrap_board: 136096/136090
|
|
process_group: 1577/1543
|
|
process_info: 9212/9008
|
|
process_item_exp: 30/30
|
|
process_schdule_capacity: 42442/42442
|
|
process_step_efficiency: 8/8
|
|
report_template: 7358/7338
|
|
simple_package: 142861/137730
|
|
simple_plan_order: 1167004/854699
|
|
simple_plan_order: 0/55677
|
|
sys_config: 2608/2608
|
|
work_calendar: 11/11
|
|
work_shift: 73/73
|
|
work_time: 77/77
|
|
order_process_step_item: 14856509/9790701
|
|
order_process_step: 8343418/5506925
|
|
order_module: 102907480/56935691
|
|
order_process: 4045309/2682043
|
|
report_template: 7358/7358
|
|
process_info: 9212/9212
|
|
process_group: 1577/1577
|
|
order_block_plan_result: 1375479/277667
|
|
order_box_block: 23457666/23457666
|
|
order_block_plan: 2934281/1968850
|
|
order: 3416759/3416759
|
|
machine: 19303/19303
|
|
order_scrap_board: 136096/136096
|
|
""";
|
|
|
|
var arr = input.Split('\n').Select(s =>
|
|
{
|
|
var x = s.Split(':');
|
|
var y = x[1].Split('/').Select(i => long.Parse(i)).ToArray();
|
|
return new {TABLE_NAME = x[0], INPUT = y[0], OUTPUT = y[1], FILTER = y[0] - y[1]};
|
|
}).OrderBy(s => s.TABLE_NAME);
|
|
|
|
_output.WriteLine(arr.ToMarkdownTable());
|
|
}
|
|
} |