Skip to content

Commit

Permalink
Merge pull request #39 from davewalker5/BSR-103-Restart-After-Timeout
Browse files Browse the repository at this point in the history
BSR-103 Restart After Application Timeout
  • Loading branch information
davewalker5 committed Apr 8, 2024
2 parents 61557c8 + 862f458 commit 065e908
Show file tree
Hide file tree
Showing 14 changed files with 57 additions and 48 deletions.
18 changes: 0 additions & 18 deletions .github/workflows/dotnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,3 @@ jobs:
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: src/BaseStationReader.Tests/coverage/coverage.info
- name: Cache SonarCloud packages
uses: actions/cache@v1
with:
path: ~/sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Install SonarCloud scanners
run: |
dotnet tool install --global dotnet-sonarscanner
- name: Build and analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
run: |
dotnet-sonarscanner begin /k:"davewalker5_ADS-B-BaseStationReader" /o:"davewalker5" /d:sonar.login="${{ secrets.SONAR_TOKEN }}" /d:sonar.host.url="https://sonarcloud.io"
dotnet build --configuration Release src/BaseStationReader.sln
dotnet-sonarscanner end /d:sonar.login="${{ secrets.SONAR_TOKEN }}"
4 changes: 2 additions & 2 deletions src/BaseStationReader.Data/BaseStationReader.Data.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PackageId>BaseStationReader.Data</PackageId>
<PackageVersion>1.30.0.0</PackageVersion>
<PackageVersion>1.31.0.0</PackageVersion>
<Authors>Dave Walker</Authors>
<Copyright>Copyright (c) Dave Walker 2023</Copyright>
<Owners>Dave Walker</Owners>
Expand All @@ -17,7 +17,7 @@
<PackageProjectUrl>https://github.com/davewalker5/ADS-B-BaseStationReader</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<ReleaseVersion>1.30.0.0</ReleaseVersion>
<ReleaseVersion>1.31.0.0</ReleaseVersion>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PackageId>BaseStationReader.Entities</PackageId>
<PackageVersion>1.30.0.0</PackageVersion>
<PackageVersion>1.31.0.0</PackageVersion>
<Authors>Dave Walker</Authors>
<Copyright>Copyright (c) Dave Walker 2023</Copyright>
<Owners>Dave Walker</Owners>
Expand All @@ -17,7 +17,7 @@
<PackageProjectUrl>https://github.com/davewalker5/ADS-B-BaseStationReader</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<ReleaseVersion>1.30.0.0</ReleaseVersion>
<ReleaseVersion>1.31.0.0</ReleaseVersion>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ public enum CommandLineOptionType
Port,
SocketReadTimeout,
ApplicationTimeout,
RestartOnTimeout,
TimeToRecent,
TimeToStale,
TimeToRemoval,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public class TrackerApplicationSettings
public int Port { get; set; }
public int SocketReadTimeout { get; set; }
public int ApplicationTimeout { get; set; }
public bool RestartOnTimeout { get; set; }
public int TimeToRecent { get; set; }
public int TimeToStale { get; set; }
public int TimeToRemoval { get; set; }
Expand Down
4 changes: 2 additions & 2 deletions src/BaseStationReader.Logic/BaseStationReader.Logic.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PackageId>BaseStationReader.Logic</PackageId>
<PackageVersion>1.30.0.0</PackageVersion>
<PackageVersion>1.31.0.0</PackageVersion>
<Authors>Dave Walker</Authors>
<Copyright>Copyright (c) Dave Walker 2023</Copyright>
<Owners>Dave Walker</Owners>
Expand All @@ -17,7 +17,7 @@
<PackageProjectUrl>https://github.com/davewalker5/ADS-B-BaseStationReader</PackageProjectUrl>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<ReleaseVersion>1.30.0.0</ReleaseVersion>
<ReleaseVersion>1.31.0.0</ReleaseVersion>
</PropertyGroup>

<ItemGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ public class TrackerSettingsBuilder : ITrackerSettingsBuilder
parser.Add(CommandLineOptionType.Port, false, "--port", "-p", "Port to connect to for data stream", 1, 1);
parser.Add(CommandLineOptionType.SocketReadTimeout, false, "--read-timeout", "-t", "Timeout (ms) for socket read operations", 1, 1);
parser.Add(CommandLineOptionType.ApplicationTimeout, false, "--app-timeout", "-a", "Timeout (ms) after which the application will quit of no messages are recieved", 1, 1);
parser.Add(CommandLineOptionType.RestartOnTimeout, false, "--auto-restart", "-ar", "Automatically restart the tracker after a timeout", 1, 1);
parser.Add(CommandLineOptionType.TimeToRecent, false, "--recent", "-r", "Time (ms) to 'recent' staleness", 1, 1);
parser.Add(CommandLineOptionType.TimeToStale, false, "--stale", "-s", "Time (ms) to 'stale' staleness", 1, 1);
parser.Add(CommandLineOptionType.TimeToRemoval, false, "--remove", "-x", "Time (ms) to removal of stale records", 1, 1);
Expand Down Expand Up @@ -52,6 +53,9 @@ public class TrackerSettingsBuilder : ITrackerSettingsBuilder
values = parser.GetValues(CommandLineOptionType.ApplicationTimeout);
if (values != null) settings!.ApplicationTimeout = int.Parse(values[0]);

values = parser.GetValues(CommandLineOptionType.RestartOnTimeout);
if (values != null) settings!.RestartOnTimeout = bool.Parse(values[0]);

values = parser.GetValues(CommandLineOptionType.TimeToRecent);
if (values != null) settings!.TimeToRecent = int.Parse(values[0]);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ReleaseVersion>1.30.0.0</ReleaseVersion>
<FileVersion>1.30.0.0</FileVersion>
<ProductVersion>1.30.0</ProductVersion>
<ReleaseVersion>1.31.0.0</ReleaseVersion>
<FileVersion>1.31.0.0</FileVersion>
<ProductVersion>1.31.0</ProductVersion>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ReleaseVersion>1.30.0.0</ReleaseVersion>
<FileVersion>1.30.0.0</FileVersion>
<ProductVersion>1.30.0</ProductVersion>
<ReleaseVersion>1.31.0.0</ReleaseVersion>
<FileVersion>1.31.0.0</FileVersion>
<ProductVersion>1.31.0</ProductVersion>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
Expand Down
40 changes: 25 additions & 15 deletions src/BaseStationReader.Terminal/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,20 +50,24 @@ public static async Task Main(string[] args)
_wrapper.AircraftUpdated += OnAircraftUpdated;
_wrapper.AircraftRemoved += OnAircraftRemoved;

// Configure the table
var trackerIndexManager = new TrackerIndexManager();
_tableManager = new TrackerTableManager(trackerIndexManager, _settings!.Columns, _settings!.MaximumRows);
_tableManager.CreateTable(title);

// Construct the live view
await AnsiConsole.Live(_tableManager.Table!)
.AutoClear(true)
.Overflow(VerticalOverflow.Ellipsis)
.Cropping(VerticalOverflowCropping.Bottom)
.StartAsync(async ctx =>
{
await ShowTrackingTable(ctx);
});
do
{
// Configure the table
var trackerIndexManager = new TrackerIndexManager();
_tableManager = new TrackerTableManager(trackerIndexManager, _settings!.Columns, _settings!.MaximumRows);
_tableManager.CreateTable(title);

// Construct the live view
await AnsiConsole.Live(_tableManager.Table!)
.AutoClear(true)
.Overflow(VerticalOverflow.Ellipsis)
.Cropping(VerticalOverflowCropping.Bottom)
.StartAsync(async ctx =>
{
await ShowTrackingTable(ctx);
});
}
while (_settings!.RestartOnTimeout);
}

/// <summary>
Expand All @@ -73,8 +77,11 @@ await AnsiConsole.Live(_tableManager.Table!)
/// <returns></returns>
private static async Task ShowTrackingTable(LiveDisplayContext ctx)
{
// Continously update the table
// Reset the elapsed time since the last update
int elapsed = 0;
_lastUpdate = DateTime.Now;

// Start the wrapper and continuously update the table
_wrapper!.Start();
while (elapsed <= _settings!.ApplicationTimeout)
{
Expand All @@ -87,6 +94,9 @@ private static async Task ShowTrackingTable(LiveDisplayContext ctx)
elapsed = (int)(DateTime.Now - _lastUpdate).TotalMilliseconds;
#pragma warning restore S6561
}

// Stop the wrapper
_wrapper.Stop();
}

/// <summary>
Expand Down
1 change: 1 addition & 0 deletions src/BaseStationReader.Terminal/appsettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"Port": 30003,
"SocketReadTimeout": 60000,
"ApplicationTimeout": 600000,
"RestartOnTimeout": true,
"TimeToRecent": 60000,
"TimeToStale": 120000,
"TimeToRemoval": 180000,
Expand Down
9 changes: 9 additions & 0 deletions src/BaseStationReader.Tests/TrackerSettingsBuilderTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ public void DefaultConfigTest()
Assert.AreEqual(30003, settings?.Port);
Assert.AreEqual(60000, settings?.SocketReadTimeout);
Assert.AreEqual(600000, settings?.ApplicationTimeout);
Assert.IsTrue(settings?.RestartOnTimeout);
Assert.AreEqual(60000, settings?.TimeToRecent);
Assert.AreEqual(120000, settings?.TimeToStale);
Assert.AreEqual(180000, settings?.TimeToRemoval);
Expand Down Expand Up @@ -68,6 +69,14 @@ public void OverrideApplicationTimeoutTest()
Assert.AreEqual(45198, settings?.ApplicationTimeout);
}

[TestMethod]
public void OverrideRestartOnTimeoutTest()
{
var args = new string[] { "--auto-restart", "false" };
var settings = new TrackerSettingsBuilder().BuildSettings(args, "trackersettings.json");
Assert.IsFalse(settings?.RestartOnTimeout);
}

[TestMethod]
public void OverrideTimeToRecentTest()
{
Expand Down
1 change: 1 addition & 0 deletions src/BaseStationReader.Tests/trackersettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"Port": 30003,
"SocketReadTimeout": 60000,
"ApplicationTimeout": 600000,
"RestartOnTimeout": true,
"TimeToRecent": 60000,
"TimeToStale": 120000,
"TimeToRemoval": 180000,
Expand Down
6 changes: 3 additions & 3 deletions src/BaseStationReader.UI/BaseStationReader.UI.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ReleaseVersion>1.30.0.0</ReleaseVersion>
<FileVersion>1.30.0.0</FileVersion>
<ProductVersion>1.30.0</ProductVersion>
<ReleaseVersion>1.31.0.0</ReleaseVersion>
<FileVersion>1.31.0.0</FileVersion>
<ProductVersion>1.31.0</ProductVersion>
<Nullable>enable</Nullable>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<ApplicationManifest>app.manifest</ApplicationManifest>
Expand Down

0 comments on commit 065e908

Please sign in to comment.