internal void IsEnabled_Should_Not_Lock_If_Lock_None_Is_Provided(MaintenanceLockMode mode) { using (MaintenanceMode.Enable(MaintenanceLockMode.None)) { Assert.False(MaintenanceMode.IsEnabled(mode)); } }
internal void Should_Not_Allow_To_Lock_Twice(MaintenanceLockMode mode) { using (MaintenanceMode.Enable(mode)) { var e = Assert.Throws <MaintenanceModeEnabledException>(() => MaintenanceMode.Enable(mode)); Assert.Equal(HttpStatusCode.ServiceUnavailable, e.StatusCode); } }
/// <summary> /// Sets maintenance mode ON. The returned lock handle should be used /// to reset the maintenance state. /// </summary> /// <param name="mode">Lock mode, write only, or read and write</param> /// <exception cref="MaintenanceModeEnabledException">Maintenance mode already enabled somewhere else.</exception> public static MaintenanceLock Enable(MaintenanceLockMode mode) { if (_lock?.IsLocked != true) { lock (_mutex) { if (_lock?.IsLocked != true) { _lock = new MaintenanceLock(mode); return(_lock); } } } throw new MaintenanceModeEnabledException(); }
public MaintenanceLock(MaintenanceLockMode mode) => Mode = mode;
/// <summary> /// Whether maintenance mode is enabled. If <code>true</code> /// then all the data modifying requests should be responded /// with <code>503</code> HTTP status code. /// </summary> public static bool IsEnabled(MaintenanceLockMode mode) => _lock?.IsLocked == true && _lock.Mode >= mode;
public void Unlock() { Mode = MaintenanceLockMode.None; }
internal void IsEnabled_Should_Return_False_If_Maintenance_Mode_Is_Not_Enabled(MaintenanceLockMode mode) { Assert.False(MaintenanceMode.IsEnabled(mode)); }