/// <inheritdoc /> protected override void RunTest(StatusBuilder statusBuilder) { foreach (var nodeName in NodeNames) { statusBuilder.MessageBuilder.AppendLine($"Node: \"{nodeName}\":"); RunTest(nodeName, statusBuilder); } }
/// <summary> /// Wraps call to protected method RunTest(). Handles exceptions and execution timer. /// </summary> /// <returns>Status object for RunTest()-call</returns> public Status GetStatus(bool isPrivileged = true) { var statusBuilder = new StatusBuilder(this, isPrivileged); try { RunTest(statusBuilder); } catch (Exception e) { statusBuilder.Passed = false; statusBuilder.Exception = e; HandleException(e, statusBuilder); } return(statusBuilder.Status); }
/// <summary> /// Wraps call to protected method RunTest(nodeName). Handles exceptions and execution timer. /// </summary> /// <returns>Status object for RunTest(nodeName)-call</returns> public Status GetStatus(string nodeName, bool isPrivileged = true) { if (!NodeNames.Contains(nodeName)) { throw new KeyNotFoundException($"No node name : {nodeName}"); } var statusBuilder = new StatusBuilder(this, isPrivileged); try { RunTest(nodeName, statusBuilder); } catch (Exception e) { statusBuilder.Passed = false; statusBuilder.Exception = e; HandleException(e, statusBuilder); } return(statusBuilder.Status); }
/// <summary> /// Must be implemented by derived classes. May throw exceptions. Should merge status in statusBuilder. /// </summary> protected abstract void RunTest(string node, StatusBuilder statusBuilder);
/// <summary> /// Must be implemented by derived classes. May throw exceptions. /// </summary> protected abstract void RunTest(StatusBuilder statusBuilder);
/// <summary> /// Optionally implemented by derived classes to handle exceptions thrown during GetStatus(). /// </summary> protected virtual void HandleException(Exception ex, StatusBuilder statusBuilder) { }