コード例 #1
0
  @Override
  public void onException(Exception exception) {
    if (!feed.isConnected()) {
      if (log.isTraceEnabled())
        log.trace(
            "Read of {} in {} gave exception (while not connected or not yet connected): {}",
            new Object[] {this, getBriefDescription(), exception});
    } else {
      logProblem("exception", exception);
    }

    if (config.hasExceptionHandler()) {
      try {
        setSensor(config.getOnException().apply(exception));
      } catch (Exception e) {
        if (feed.isConnected()) {
          log.warn("unable to compute " + getBriefDescription() + "; on exception=" + exception, e);
        } else {
          if (log.isDebugEnabled())
            log.debug(
                "unable to compute "
                    + getBriefDescription()
                    + "; exception="
                    + exception
                    + " (when inactive)",
                e);
        }
      }
    }
  }
コード例 #2
0
  /** Tests change in processing property when processing starts and finishes. */
  public void testProcessingPC() {
    listener
        .expects(once())
        .method("propertyChanged")
        .with(same(feed), eq(AbstractFeed.PROP_PROCESSING), eq(false), eq(true))
        .id("started");
    listener
        .expects(once())
        .method("propertyChanged")
        .with(same(feed), eq(AbstractFeed.PROP_PROCESSING), eq(true), eq(false))
        .after("started")
        .id("finished");
    listener
        .expects(once())
        .method("propertyChanged")
        .with(same(feed), eq(AbstractFeed.PROP_PROCESSING), eq(true), eq(false))
        .after("finished");

    feed.processingStarted();
    feed.processingStarted();
    feed.processingFinished();
    feed.processingFinished();

    disableLogging();
    feed.processingFinished();
    enableLogging();

    listener.verify();
  }
コード例 #3
0
  @SuppressWarnings("unchecked")
  @Override
  public void onFailure(V val) {
    if (!config.hasFailureHandler()) {
      onException(
          new Exception(
              "checkSuccess of "
                  + this
                  + " from "
                  + entity
                  + " was false but poller has no failure handler"));
    } else {
      logProblem("failure", val);

      try {
        Object v = coerce(config.getOnFailure().apply(val));
        if (v != PollConfig.UNSET) {
          entity.setAttribute(sensor, v);
        }
      } catch (Exception e) {
        if (feed.isConnected()) {
          log.warn("Error computing " + entity + "->" + sensor + "; val=" + val + ": " + e, e);
        } else {
          if (log.isDebugEnabled())
            log.debug(
                "Error computing " + entity + " ->" + sensor + "; val=" + val + " (when inactive)",
                e);
        }
      }
    }
  }
コード例 #4
0
  @SuppressWarnings("unchecked")
  @Override
  public void onSuccess(V val) {
    if (lastWasProblem) {
      if (currentProblemLoggedAsWarning) {
        log.info("Success (following previous problem) reading " + entity + "->" + sensor);
      } else {
        log.debug("Success (following previous problem) reading " + entity + "->" + sensor);
      }
      lastWasProblem = false;
      currentProblemStartTime = null;
      currentProblemLoggedAsWarning = false;
    }
    lastSuccessTime = System.currentTimeMillis();
    if (log.isTraceEnabled())
      log.trace("poll for {}->{} got: {}", new Object[] {entity, sensor, val});

    try {
      Object v = transformValue(val);
      if (v != PollConfig.UNSET) {
        entity.setAttribute(sensor, v);
      }
    } catch (Exception e) {
      if (feed.isConnected()) {
        log.warn("unable to compute " + entity + "->" + sensor + "; on val=" + val, e);
      } else {
        if (log.isDebugEnabled())
          log.debug(
              "unable to compute " + entity + " ->" + sensor + "; val=" + val + " (when inactive)",
              e);
      }
    }
  }
コード例 #5
0
  @Override
  public void onSuccess(V val) {
    if (lastWasProblem) {
      if (currentProblemLoggedAsWarning) {
        log.info("Success (following previous problem) reading " + getBriefDescription());
      } else {
        log.debug("Success (following previous problem) reading " + getBriefDescription());
      }
      lastWasProblem = false;
      currentProblemStartTime = null;
      currentProblemLoggedAsWarning = false;
    }
    lastSuccessTime = System.currentTimeMillis();
    if (log.isTraceEnabled())
      log.trace("poll for {} got: {}", new Object[] {getBriefDescription(), val});

    try {
      setSensor(transformValueOnSuccess(val));
    } catch (Exception e) {
      if (feed.isConnected()) {
        log.warn("unable to compute " + getBriefDescription() + "; on val=" + val, e);
      } else {
        if (log.isDebugEnabled())
          log.debug(
              "unable to compute " + getBriefDescription() + "; val=" + val + " (when inactive)",
              e);
      }
    }
  }
コード例 #6
0
  @Override
  public void onFailure(V val) {
    if (!config.hasFailureHandler()) {
      onException(
          new Exception(
              "checkSuccess of "
                  + this
                  + " for "
                  + getBriefDescription()
                  + " was false but poller has no failure handler"));
    } else {
      logProblem("failure", val);

      try {
        setSensor(config.hasFailureHandler() ? config.getOnFailure().apply((V) val) : val);
      } catch (Exception e) {
        if (feed.isConnected()) {
          log.warn("Error computing " + getBriefDescription() + "; val=" + val + ": " + e, e);
        } else {
          if (log.isDebugEnabled())
            log.debug(
                "Error computing " + getBriefDescription() + "; val=" + val + " (when inactive)",
                e);
        }
      }
    }
  }
コード例 #7
0
  protected void setUp() throws Exception {
    super.setUp();

    listener = new Mock(IFeedListener.class);

    feed = new DummyNetworkFeed();
    feed.addListener((IFeedListener) listener.proxy());
  }
コード例 #8
0
  @SuppressWarnings("unchecked")
  @Override
  public void onException(Exception exception) {
    if (!feed.isConnected()) {
      if (log.isDebugEnabled())
        log.debug(
            "Read of {} from {} gave exception (while not connected or not yet connected): {}",
            new Object[] {this, entity, exception});
    } else {
      logProblem("exception", exception);
    }

    if (config.hasExceptionHandler()) {
      try {
        Object v = transformError(exception);
        if (v != PollConfig.UNSET) {
          entity.setAttribute(sensor, v);
        }
      } catch (Exception e) {
        if (feed.isConnected()) {
          log.warn(
              "unable to compute " + entity + "->" + sensor + "; on exception=" + exception, e);
        } else {
          if (log.isDebugEnabled())
            log.debug(
                "unable to compute "
                    + entity
                    + " ->"
                    + sensor
                    + "; exception="
                    + exception
                    + " (when inactive)",
                e);
        }
      }
    }
  }
コード例 #9
0
  /** Tests firing propery change events on invalidness reasons changes. */
  public void testInvalidnessReasonPC() {
    listener
        .expects(once())
        .method("propertyChanged")
        .with(same(feed), eq(AbstractFeed.PROP_INVALIDNESS_REASON), NULL, eq("r1"))
        .id("1");
    listener
        .expects(once())
        .method("propertyChanged")
        .with(same(feed), eq(AbstractFeed.PROP_INVALIDNESS_REASON), eq("r1"), eq("r2"))
        .after("1")
        .id("2");
    listener
        .expects(once())
        .method("propertyChanged")
        .with(same(feed), eq(AbstractFeed.PROP_INVALIDNESS_REASON), eq("r2"), NULL)
        .after("2");

    feed.setInvalidnessReason("r1");
    feed.setInvalidnessReason("r2");
    feed.setInvalidnessReason(null);

    listener.verify();
  }
コード例 #10
0
  /** Tests that events for identical values aren't fired. */
  public void testSkipIdenticalPropertyValues() {
    feed.firePropertyChanged("test", null, null);
    feed.firePropertyChanged("test", "a", "a");

    listener.verify();
  }