From d9f546aa742942762844b6b3ccab33c1f17be6dc Mon Sep 17 00:00:00 2001 From: dbuechel Date: Fri, 19 Jul 2019 10:56:32 +0200 Subject: [PATCH] SEBWIN-320: Made mutex names application-wide constants and fixed unit test for lockdown operation. --- SafeExamBrowser.Client/App.cs | 3 ++- .../SafeExamBrowser.Configuration.csproj | 1 - .../Configuration/AppConfig.cs | 15 +++++++++++++++ .../Procedure/Initialization.cs | 5 +++-- SafeExamBrowser.Runtime/App.cs | 3 ++- .../Operations/LockdownOperationTests.cs | 4 ++-- 6 files changed, 24 insertions(+), 7 deletions(-) diff --git a/SafeExamBrowser.Client/App.cs b/SafeExamBrowser.Client/App.cs index 149c2fb4..880f1b26 100644 --- a/SafeExamBrowser.Client/App.cs +++ b/SafeExamBrowser.Client/App.cs @@ -9,12 +9,13 @@ using System; using System.Threading; using System.Windows; +using SafeExamBrowser.Contracts.Configuration; namespace SafeExamBrowser.Client { public class App : Application { - private static readonly Mutex Mutex = new Mutex(true, "safe_exam_browser_client_mutex"); + private static readonly Mutex Mutex = new Mutex(true, AppConfig.CLIENT_MUTEX_NAME); private CompositionRoot instances = new CompositionRoot(); [STAThread] diff --git a/SafeExamBrowser.Configuration/SafeExamBrowser.Configuration.csproj b/SafeExamBrowser.Configuration/SafeExamBrowser.Configuration.csproj index b266185d..83ff44e4 100644 --- a/SafeExamBrowser.Configuration/SafeExamBrowser.Configuration.csproj +++ b/SafeExamBrowser.Configuration/SafeExamBrowser.Configuration.csproj @@ -50,7 +50,6 @@ - diff --git a/SafeExamBrowser.Contracts/Configuration/AppConfig.cs b/SafeExamBrowser.Contracts/Configuration/AppConfig.cs index 9e6ff7e7..b1c85ebe 100644 --- a/SafeExamBrowser.Contracts/Configuration/AppConfig.cs +++ b/SafeExamBrowser.Contracts/Configuration/AppConfig.cs @@ -26,11 +26,26 @@ namespace SafeExamBrowser.Contracts.Configuration /// public const string BASE_ADDRESS = "net.pipe://localhost/safeexambrowser"; + /// + /// The name of the synchronization primitive for the client component. + /// + public const string CLIENT_MUTEX_NAME = "safe_exam_browser_client_mutex"; + + /// + /// The name of the synchronization primitive for the runtime component. + /// + public const string RUNTIME_MUTEX_NAME = "safe_exam_browser_runtime_mutex"; + /// /// The communication address of the service component. /// public const string SERVICE_ADDRESS = BASE_ADDRESS + "/service"; + /// + /// The name of the synchronization primitive for the service component. + /// + public const string SERVICE_MUTEX_NAME = "safe_exam_browser_reset_mutex"; + /// /// The file path of the local client configuration for the active user. /// diff --git a/SafeExamBrowser.ResetUtility/Procedure/Initialization.cs b/SafeExamBrowser.ResetUtility/Procedure/Initialization.cs index 892a5a96..f902a1d2 100644 --- a/SafeExamBrowser.ResetUtility/Procedure/Initialization.cs +++ b/SafeExamBrowser.ResetUtility/Procedure/Initialization.cs @@ -9,12 +9,13 @@ using System; using System.Security.Principal; using System.Threading; +using SafeExamBrowser.Contracts.Configuration; namespace SafeExamBrowser.ResetUtility.Procedure { internal class Initialization : ProcedureStep { - private static readonly Mutex mutex = new Mutex(true, "safe_exam_browser_reset_mutex"); + private static readonly Mutex mutex = new Mutex(true, AppConfig.SERVICE_MUTEX_NAME); public Initialization(ProcedureContext context) : base(context) { @@ -77,7 +78,7 @@ namespace SafeExamBrowser.ResetUtility.Procedure private bool SebNotRunning() { - var isRunning = Mutex.TryOpenExisting("safe_exam_browser_runtime_mutex", out _); + var isRunning = Mutex.TryOpenExisting(AppConfig.RUNTIME_MUTEX_NAME, out _); if (isRunning) { diff --git a/SafeExamBrowser.Runtime/App.cs b/SafeExamBrowser.Runtime/App.cs index ff9180ca..fc62fca6 100644 --- a/SafeExamBrowser.Runtime/App.cs +++ b/SafeExamBrowser.Runtime/App.cs @@ -10,12 +10,13 @@ using System; using System.Threading; using System.Threading.Tasks; using System.Windows; +using SafeExamBrowser.Contracts.Configuration; namespace SafeExamBrowser.Runtime { public class App : Application { - private static readonly Mutex Mutex = new Mutex(true, "safe_exam_browser_runtime_mutex"); + private static readonly Mutex Mutex = new Mutex(true, AppConfig.RUNTIME_MUTEX_NAME); private CompositionRoot instances = new CompositionRoot(); [STAThread] diff --git a/SafeExamBrowser.Service.UnitTests/Operations/LockdownOperationTests.cs b/SafeExamBrowser.Service.UnitTests/Operations/LockdownOperationTests.cs index 7e419612..6064b299 100644 --- a/SafeExamBrowser.Service.UnitTests/Operations/LockdownOperationTests.cs +++ b/SafeExamBrowser.Service.UnitTests/Operations/LockdownOperationTests.cs @@ -51,7 +51,7 @@ namespace SafeExamBrowser.Service.UnitTests.Operations public void Perform_MustSetConfigurationsCorrectly() { var configuration = new Mock(); - var count = typeof(IFeatureConfigurationFactory).GetMethods().Where(m => m.Name.StartsWith("Create")).Count(); + var count = typeof(IFeatureConfigurationFactory).GetMethods().Where(m => m.Name.StartsWith("Create") && m.Name != nameof(IFeatureConfigurationFactory.CreateAll)).Count(); configuration.SetReturnsDefault(true); factory.SetReturnsDefault(configuration.Object); @@ -105,7 +105,7 @@ namespace SafeExamBrowser.Service.UnitTests.Operations public void Perform_MustImmediatelyAbortOnFailure() { var configuration = new Mock(); - var count = typeof(IFeatureConfigurationFactory).GetMethods().Where(m => m.Name.StartsWith("Create")).Count(); + var count = typeof(IFeatureConfigurationFactory).GetMethods().Where(m => m.Name.StartsWith("Create") && m.Name != nameof(IFeatureConfigurationFactory.CreateAll)).Count(); var counter = 0; var offset = 3;