Fix recording when timeouted
This commit is contained in:
parent
56a412108f
commit
4a12f1361e
12
ISPChk/.config/dotnet-tools.json
Normal file
12
ISPChk/.config/dotnet-tools.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"version": 1,
|
||||||
|
"isRoot": true,
|
||||||
|
"tools": {
|
||||||
|
"dotnet-ef": {
|
||||||
|
"version": "5.0.2",
|
||||||
|
"commands": [
|
||||||
|
"dotnet-ef"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net5.0</TargetFramework>
|
<TargetFramework>net5.0</TargetFramework>
|
||||||
|
<UserSecretsId>0f3cc2c5-5728-4cf6-b618-bda6124ebd51</UserSecretsId>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -15,11 +15,7 @@ namespace ISPChk
|
|||||||
private ISPChkContext _context;
|
private ISPChkContext _context;
|
||||||
|
|
||||||
public NetworkTest() {
|
public NetworkTest() {
|
||||||
var optionsBuilder = new DbContextOptionsBuilder<ISPChkContext>();
|
_context = CreateDbContext();
|
||||||
optionsBuilder.UseSqlite("Data Source=ispchk.db");
|
|
||||||
_context = new ISPChkContext(optionsBuilder.Options);
|
|
||||||
System.Diagnostics.Debug.WriteLine("NetworkTest instantiated.");
|
|
||||||
_context.Database.EnsureCreated();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void LoadHostsFromDatabase()
|
public async void LoadHostsFromDatabase()
|
||||||
@ -31,10 +27,25 @@ namespace ISPChk
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ISPChkContext CreateDbContext()
|
||||||
|
{
|
||||||
|
var optionsBuilder = new DbContextOptionsBuilder<ISPChkContext>();
|
||||||
|
optionsBuilder.UseSqlite("Data Source=ispchk.db");
|
||||||
|
var ctx = new ISPChkContext(optionsBuilder.Options);
|
||||||
|
System.Diagnostics.Debug.WriteLine("NetworkTest instantiated.");
|
||||||
|
ctx.Database.EnsureCreated();
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
private void StartPing(Host host)
|
private void StartPing(Host host)
|
||||||
{
|
{
|
||||||
var t = Task.Run(async () => {
|
var t = Task.Run(async () => {
|
||||||
|
|
||||||
|
// Do not use the outer context, not threadsafe?
|
||||||
|
var ctx = CreateDbContext();
|
||||||
|
var h = await ctx.Hosts.FindAsync(host.HostId);
|
||||||
|
ctx.Entry(h).Collection(hst => hst.PingItems).Load();
|
||||||
|
|
||||||
Ping pingSender = new Ping();
|
Ping pingSender = new Ping();
|
||||||
|
|
||||||
// Create a buffer of 32 bytes of data to be transmitted.
|
// Create a buffer of 32 bytes of data to be transmitted.
|
||||||
@ -42,7 +53,7 @@ namespace ISPChk
|
|||||||
byte[] buffer = Encoding.ASCII.GetBytes(data);
|
byte[] buffer = Encoding.ASCII.GetBytes(data);
|
||||||
|
|
||||||
// Wait 10 seconds for a reply.
|
// Wait 10 seconds for a reply.
|
||||||
int timeout = 5000;
|
int timeout = 3000;
|
||||||
|
|
||||||
// Set options for transmission:
|
// Set options for transmission:
|
||||||
// The data can go through 64 gateways or routers
|
// The data can go through 64 gateways or routers
|
||||||
@ -54,12 +65,13 @@ namespace ISPChk
|
|||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
int numPings = 5;
|
||||||
long min = timeout + 1;
|
long min = timeout + 1;
|
||||||
long max = 0;
|
long max = 0;
|
||||||
long avg = 0;
|
long avg = 0;
|
||||||
int successes = 0;
|
int successes = 0;
|
||||||
int failures = 0;
|
int failures = 0;
|
||||||
for (var i = 0; i < 5; ++i)
|
for (var i = 0; i < numPings; ++i)
|
||||||
{
|
{
|
||||||
// Send the request.
|
// Send the request.
|
||||||
PingReply reply = pingSender.Send(host.HostName, timeout, buffer, options);
|
PingReply reply = pingSender.Send(host.HostName, timeout, buffer, options);
|
||||||
@ -89,12 +101,18 @@ namespace ISPChk
|
|||||||
}
|
}
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
}
|
}
|
||||||
avg = avg / successes;
|
if(successes > 0)
|
||||||
|
avg = avg / successes;
|
||||||
|
// FIXME: This is dirty but I don't want the graph to explode
|
||||||
|
if (min > timeout)
|
||||||
|
min = 0;
|
||||||
System.Diagnostics.Debug.WriteLine("min:" + min + " max:" + max + " avg:" + avg);
|
System.Diagnostics.Debug.WriteLine("min:" + min + " max:" + max + " avg:" + avg);
|
||||||
PingItem pi = new PingItem { Date = DateTimeOffset.UtcNow, Min = min, Max = max, Avg = avg, Failures = failures };
|
PingItem pi = new PingItem { Date = DateTimeOffset.UtcNow, Min = min, Max = max, Avg = avg, Failures = failures };
|
||||||
host.PingItems.Add(pi);
|
h.PingItems.Add(pi);
|
||||||
_context.SaveChanges();
|
ctx.SaveChanges();
|
||||||
Thread.Sleep(5000);
|
// Throttle if everything is ok
|
||||||
|
if(successes == numPings)
|
||||||
|
Thread.Sleep(5000);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
BIN
ISPChk/ispchk.db
BIN
ISPChk/ispchk.db
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user