forked from ddrilling/AsbCloudServer
140 lines
4.0 KiB
C#
140 lines
4.0 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using ClosedXML.Excel;
|
|
using ClosedXML.Excel.Drawings;
|
|
using AsbCloudApp.Data;
|
|
using AsbCloudDb.Model;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using AsbCloudInfrastructure.Services.Cache;
|
|
using AsbCloudInfrastructure.Services;
|
|
using System.Threading.Tasks;
|
|
using System.Threading;
|
|
|
|
namespace ConsoleApp1
|
|
{
|
|
//var options = new DbContextOptionsBuilder<AsbCloudDbContext>()
|
|
// .UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True")
|
|
// .Options;
|
|
//var context = new AsbCloudDbContext(options);
|
|
|
|
class Program
|
|
{
|
|
static object lockObject = new();
|
|
static int inc = 0;
|
|
static void RefreshMonitor()
|
|
{
|
|
if (Monitor.TryEnter(lockObject))
|
|
{
|
|
Task.Delay(2_000);
|
|
Interlocked.Increment(ref inc);
|
|
}
|
|
else
|
|
Monitor.Wait(lockObject);
|
|
|
|
}
|
|
|
|
//static Mutex mutex = new Mutex();
|
|
//static void RefreshMutex()
|
|
//{
|
|
// if(Mutex.TryOpenExisting()
|
|
// {
|
|
|
|
// }
|
|
|
|
// Interlocked.Increment(ref inc);
|
|
//}
|
|
|
|
static bool isUnLocked = true;
|
|
static void RefreshBool() {
|
|
if(isUnLocked)
|
|
{
|
|
isUnLocked = false;
|
|
Console.WriteLine(".");
|
|
Task.Delay(50).Wait();
|
|
inc++;
|
|
isUnLocked = true;
|
|
}
|
|
while(!isUnLocked)
|
|
Task.Delay(10).Wait();
|
|
}
|
|
|
|
static readonly SemaphoreSlim semaphore = new(1);
|
|
static void Refresh()
|
|
{
|
|
var wasFree = semaphore.CurrentCount > 0;
|
|
semaphore.Wait();
|
|
if (wasFree)
|
|
{
|
|
Console.WriteLine(".");
|
|
Task.Delay(500).Wait();
|
|
inc++;
|
|
}
|
|
semaphore.Release();
|
|
}
|
|
|
|
static async Task RefreshAsync()
|
|
{
|
|
var wasFree = semaphore.CurrentCount == 1;
|
|
await semaphore.WaitAsync();
|
|
if (wasFree)
|
|
{
|
|
Console.WriteLine(".");
|
|
await Task.Delay(500);
|
|
inc++;
|
|
}else
|
|
Console.Write(",");
|
|
semaphore.Release();
|
|
}
|
|
|
|
static void Main(/*string[] args*/)
|
|
{
|
|
|
|
Console.WriteLine(DateTime.Now.ToString("mm:ss.fff"));
|
|
//semaphore.Release();
|
|
Refresh();
|
|
for (int i= 0; i < 4; i++)
|
|
{
|
|
var ts = new List<Task>(100);
|
|
for (int j = 0; j < 20; j++)
|
|
{
|
|
ts.Add(
|
|
Task.Run( RefreshAsync));
|
|
}
|
|
Task.WaitAll(ts.ToArray());
|
|
Console.WriteLine("*");
|
|
}
|
|
|
|
Console.WriteLine("_");
|
|
Console.ReadKey();
|
|
Console.WriteLine(inc);
|
|
return;
|
|
|
|
|
|
var options = new DbContextOptionsBuilder<AsbCloudDbContext>()
|
|
.UseNpgsql("Host=localhost;Database=postgres;Username=postgres;Password=q;Persist Security Info=True")
|
|
.Options;
|
|
using var db = new AsbCloudDbContext(options);
|
|
|
|
var cacheDb = new CacheDb();
|
|
var telemetryService = new TelemetryService(db, cacheDb);
|
|
var analyticsService = new TelemetryAnalyticsService(db,
|
|
telemetryService, cacheDb);
|
|
var sw = new System.Diagnostics.Stopwatch();
|
|
sw.Start();
|
|
analyticsService.AnalyzeAndSaveTelemetriesAsync().Wait();
|
|
sw.Stop();
|
|
Console.WriteLine(sw.ElapsedMilliseconds);
|
|
return;
|
|
var ts = new TelemetryService(db, new CacheDb());
|
|
var groups = ts.GetRedundentRemoteUids();
|
|
foreach(var g in groups)
|
|
ts.Merge(g.Ids);
|
|
|
|
Console.WriteLine("Done. Press any key to quit.");
|
|
Console.ReadKey();
|
|
}
|
|
}
|
|
}
|