Example #1
0
 internal void IsEnabled_Should_Not_Lock_If_Lock_None_Is_Provided(MaintenanceLockMode mode)
 {
     using (MaintenanceMode.Enable(MaintenanceLockMode.None))
     {
         Assert.False(MaintenanceMode.IsEnabled(mode));
     }
 }
Example #2
0
 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);
     }
 }
Example #3
0
 /// <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();
 }
Example #4
0
 public MaintenanceLock(MaintenanceLockMode mode) => Mode = mode;
Example #5
0
 /// <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;
Example #6
0
 public void Unlock()
 {
     Mode = MaintenanceLockMode.None;
 }
Example #7
0
 internal void IsEnabled_Should_Return_False_If_Maintenance_Mode_Is_Not_Enabled(MaintenanceLockMode mode)
 {
     Assert.False(MaintenanceMode.IsEnabled(mode));
 }