X-Git-Url: https://git.octo.it/?p=collectd.git;a=blobdiff_plain;f=src%2Fwrite_riemann_threshold.c;h=35f3814a5f26b8c4d64bf47867f658fce80ac05b;hp=f2ba9dc8c9609c2b26961cda2698ab391e90e1b1;hb=7111bb6df7628edce3a8e538b386fbe27633a191;hpb=c7d859191d8fbfc129dea8cfaf9e13e78fd6642c diff --git a/src/write_riemann_threshold.c b/src/write_riemann_threshold.c index f2ba9dc8..35f3814a 100644 --- a/src/write_riemann_threshold.c +++ b/src/write_riemann_threshold.c @@ -51,69 +51,65 @@ * appropriate. * Does not fail. */ -static int ut_check_one_data_source (const data_set_t *ds, - const value_list_t __attribute__((unused)) *vl, - const threshold_t *th, - const gauge_t *values, - int ds_index) -{ /* {{{ */ +static int ut_check_one_data_source( + const data_set_t *ds, const value_list_t __attribute__((unused)) * vl, + const threshold_t *th, const gauge_t *values, int ds_index) { /* {{{ */ const char *ds_name; int is_warning = 0; int is_failure = 0; int prev_state = STATE_OKAY; /* check if this threshold applies to this data source */ - if (ds != NULL) - { + if (ds != NULL) { ds_name = ds->ds[ds_index].name; - if ((th->data_source[0] != 0) - && (strcmp (ds_name, th->data_source) != 0)) - return (STATE_OKAY); + if ((th->data_source[0] != 0) && (strcmp(ds_name, th->data_source) != 0)) + return STATE_OKAY; } - if ((th->flags & UT_FLAG_INVERT) != 0) - { + if ((th->flags & UT_FLAG_INVERT) != 0) { is_warning--; is_failure--; } /* XXX: This is an experimental code, not optimized, not fast, not reliable, * and probably, do not work as you expect. Enjoy! :D */ - if ( (th->hysteresis > 0) && ((prev_state = uc_get_state(ds,vl)) != STATE_OKAY) ) - { - switch(prev_state) - { - case STATE_ERROR: - if ( (!isnan (th->failure_min) && ((th->failure_min + th->hysteresis) < values[ds_index])) || - (!isnan (th->failure_max) && ((th->failure_max - th->hysteresis) > values[ds_index])) ) - return (STATE_OKAY); - else - is_failure++; - case STATE_WARNING: - if ( (!isnan (th->warning_min) && ((th->warning_min + th->hysteresis) < values[ds_index])) || - (!isnan (th->warning_max) && ((th->warning_max - th->hysteresis) > values[ds_index])) ) - return (STATE_OKAY); - else - is_warning++; - } - } - else { /* no hysteresis */ - if ((!isnan (th->failure_min) && (th->failure_min > values[ds_index])) - || (!isnan (th->failure_max) && (th->failure_max < values[ds_index]))) + if ((th->hysteresis > 0) && + ((prev_state = uc_get_state(ds, vl)) != STATE_OKAY)) { + switch (prev_state) { + case STATE_ERROR: + if ((!isnan(th->failure_min) && + ((th->failure_min + th->hysteresis) < values[ds_index])) || + (!isnan(th->failure_max) && + ((th->failure_max - th->hysteresis) > values[ds_index]))) + return STATE_OKAY; + else + is_failure++; + case STATE_WARNING: + if ((!isnan(th->warning_min) && + ((th->warning_min + th->hysteresis) < values[ds_index])) || + (!isnan(th->warning_max) && + ((th->warning_max - th->hysteresis) > values[ds_index]))) + return STATE_OKAY; + else + is_warning++; + } + } else { /* no hysteresis */ + if ((!isnan(th->failure_min) && (th->failure_min > values[ds_index])) || + (!isnan(th->failure_max) && (th->failure_max < values[ds_index]))) is_failure++; - if ((!isnan (th->warning_min) && (th->warning_min > values[ds_index])) - || (!isnan (th->warning_max) && (th->warning_max < values[ds_index]))) + if ((!isnan(th->warning_min) && (th->warning_min > values[ds_index])) || + (!isnan(th->warning_max) && (th->warning_max < values[ds_index]))) is_warning++; - } + } if (is_failure != 0) - return (STATE_ERROR); + return STATE_ERROR; if (is_warning != 0) - return (STATE_WARNING); + return STATE_WARNING; - return (STATE_OKAY); + return STATE_OKAY; } /* }}} int ut_check_one_data_source */ /* @@ -124,63 +120,57 @@ static int ut_check_one_data_source (const data_set_t *ds, * which is `okay' if nothing has failed. * Returns less than zero if the data set doesn't have any data sources. */ -static int ut_check_one_threshold (const data_set_t *ds, - const value_list_t *vl, - const threshold_t *th, - const gauge_t *values, - int *statuses) -{ /* {{{ */ +static int ut_check_one_threshold(const data_set_t *ds, const value_list_t *vl, + const threshold_t *th, const gauge_t *values, + int *statuses) { /* {{{ */ int ret = -1; int status; gauge_t values_copy[ds->ds_num]; - memcpy (values_copy, values, sizeof (values_copy)); + memcpy(values_copy, values, sizeof(values_copy)); - if ((th->flags & UT_FLAG_PERCENTAGE) != 0) - { + if ((th->flags & UT_FLAG_PERCENTAGE) != 0) { int num = 0; - gauge_t sum=0.0; + gauge_t sum = 0.0; - if (ds->ds_num == 1) - { - WARNING ("ut_check_one_threshold: The %s type has only one data " + if (ds->ds_num == 1) { + WARNING( + "ut_check_one_threshold: The %s type has only one data " "source, but you have configured to check this as a percentage. " "That doesn't make much sense, because the percentage will always " - "be 100%%!", ds->type); + "be 100%%!", + ds->type); } /* Prepare `sum' and `num'. */ for (size_t i = 0; i < ds->ds_num; i++) - if (!isnan (values[i])) - { + if (!isnan(values[i])) { num++; - sum += values[i]; + sum += values[i]; } - if ((num == 0) /* All data sources are undefined. */ + if ((num == 0) /* All data sources are undefined. */ || (sum == 0.0)) /* Sum is zero, cannot calculate percentage. */ { for (size_t i = 0; i < ds->ds_num; i++) values_copy[i] = NAN; - } - else /* We can actually calculate the percentage. */ + } else /* We can actually calculate the percentage. */ { for (size_t i = 0; i < ds->ds_num; i++) values_copy[i] = 100.0 * values[i] / sum; } } /* if (UT_FLAG_PERCENTAGE) */ - for (size_t i = 0; i < ds->ds_num; i++) - { - status = ut_check_one_data_source (ds, vl, th, values_copy, i); + for (size_t i = 0; i < ds->ds_num; i++) { + status = ut_check_one_data_source(ds, vl, th, values_copy, i); if (status != -1) { - ret = 0; - if (statuses[i] < status) - statuses[i] = status; + ret = 0; + if (statuses[i] < status) + statuses[i] = status; } } /* for (ds->ds_num) */ - return (ret); + return ret; } /* }}} int ut_check_one_threshold */ /* @@ -192,50 +182,44 @@ static int ut_check_one_threshold (const data_set_t *ds, * Returns zero on success and if no threshold has been configured. Returns * less than zero on failure. */ -int write_riemann_threshold_check (const data_set_t *ds, const value_list_t *vl, - int *statuses) -{ /* {{{ */ +int write_riemann_threshold_check(const data_set_t *ds, const value_list_t *vl, + int *statuses) { /* {{{ */ threshold_t *th; gauge_t *values; int status; - assert (vl->values_len > 0); + assert(vl->values_len > 0); memset(statuses, 0, vl->values_len * sizeof(*statuses)); if (threshold_tree == NULL) - return 0; + return 0; /* Is this lock really necessary? So far, thresholds are only inserted at * startup. -octo */ - pthread_mutex_lock (&threshold_lock); - th = threshold_search (vl); - pthread_mutex_unlock (&threshold_lock); + pthread_mutex_lock(&threshold_lock); + th = threshold_search(vl); + pthread_mutex_unlock(&threshold_lock); if (th == NULL) - return (0); + return 0; - DEBUG ("ut_check_threshold: Found matching threshold(s)"); + DEBUG("ut_check_threshold: Found matching threshold(s)"); - values = uc_get_rate (ds, vl); + values = uc_get_rate(ds, vl); if (values == NULL) - return (0); - - while (th != NULL) - { - status = ut_check_one_threshold (ds, vl, th, values, statuses); - if (status < 0) - { - ERROR ("ut_check_threshold: ut_check_one_threshold failed."); - sfree (values); - return (-1); + return 0; + + while (th != NULL) { + status = ut_check_one_threshold(ds, vl, th, values, statuses); + if (status < 0) { + ERROR("ut_check_threshold: ut_check_one_threshold failed."); + sfree(values); + return -1; } th = th->next; } /* while (th) */ - sfree (values); + sfree(values); - return (0); + return 0; } /* }}} int ut_check_threshold */ - - -/* vim: set sw=2 ts=8 sts=2 tw=78 et fdm=marker : */