summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 499cbd1)
raw | patch | inline | side by side (parent: 499cbd1)
author | Florian Forster <octo@collectd.org> | |
Sat, 17 Nov 2012 09:23:39 +0000 (10:23 +0100) | ||
committer | Florian Forster <octo@collectd.org> | |
Sat, 17 Nov 2012 09:23:39 +0000 (10:23 +0100) |
diff --git a/src/collectd-tg.c b/src/collectd-tg.c
index e5b2d1f14e93e14ca6e677e7a205872b33bb4ac6..9fec340214f4505cf96d9ab0d69fa3b1a800a81a 100644 (file)
--- a/src/collectd-tg.c
+++ b/src/collectd-tg.c
/**
* collectd-td - collectd traffic generator
- * Copyright (C) 2010 Florian octo Forster
+ * Copyright (C) 2010-2012 Florian octo Forster
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* Authors:
- * Florian Forster <ff at octo.it>
+ * Florian Forster <octo at collectd.org>
**/
#if HAVE_CONFIG_H
#define DEF_NUM_HOSTS 1000
#define DEF_NUM_PLUGINS 20
#define DEF_NUM_VALUES 100000
-#define DEF_INTERVAL 10
+#define DEF_INTERVAL 10.0
static int conf_num_hosts = DEF_NUM_HOSTS;
static int conf_num_plugins = DEF_NUM_PLUGINS;
static int conf_num_values = DEF_NUM_VALUES;
-static int conf_interval = DEF_INTERVAL;
+static double conf_interval = DEF_INTERVAL;
static const char *conf_destination = NET_DEFAULT_V6_ADDR;
static const char *conf_service = NET_DEFAULT_PORT;
" -n <number> Number of value lists. (Default: %i)\n"
" -H <number> Number of hosts to emulate. (Default: %i)\n"
" -p <number> Number of plugins to emulate. (Default: %i)\n"
- " -i <seconds> Interval of each value in seconds. (Default: %i)\n"
+ " -i <seconds> Interval of each value in seconds. (Default: %.3f)\n"
" -d <dest> Destination address of the network packets.\n"
" (Default: %s)\n"
" -D <port> Destination port of the network packets.\n"
" (Default: %s)\n"
" -h Print usage information (this output).\n"
"\n"
- "Copyright (C) 2010 Florian Forster\n"
+ "Copyright (C) 2010-2012 Florian Forster\n"
"Licensed under the GNU General Public License, version 2 (GPLv2)\n",
DEF_NUM_VALUES, DEF_NUM_HOSTS, DEF_NUM_PLUGINS,
DEF_INTERVAL,
host_num = get_boundet_random (0, conf_num_hosts);
vl->interval = conf_interval;
- vl->time = time (NULL) + (host_num % vl->interval) + 1;
+ vl->time = 1.0 + time (NULL)
+ + (host_num % (1 + (int) vl->interval));
if (get_boundet_random (0, 2) == 0)
vl->values_types[0] = LCC_TYPE_GAUGE;
return (0);
} /* }}} int get_integer_opt */
+static int get_double_opt (const char *str, double *ret_value) /* {{{ */
+{
+ char *endptr;
+ double tmp;
+
+ errno = 0;
+ endptr = NULL;
+ tmp = strtod (str, &endptr);
+ if (errno != 0)
+ {
+ fprintf (stderr, "Unable to parse option as a number: \"%s\": %s\n",
+ str, strerror (errno));
+ exit (EXIT_FAILURE);
+ }
+ else if (endptr == str)
+ {
+ fprintf (stderr, "Unable to parse option as a number: \"%s\"\n", str);
+ exit (EXIT_FAILURE);
+ }
+ else if (*endptr != 0)
+ {
+ fprintf (stderr, "Garbage after end of value: \"%s\"\n", str);
+ exit (EXIT_FAILURE);
+ }
+
+ *ret_value = tmp;
+ return (0);
+} /* }}} int get_double_opt */
+
static int read_options (int argc, char **argv) /* {{{ */
{
int opt;
break;
case 'i':
- get_integer_opt (optarg, &conf_interval);
+ get_double_opt (optarg, &conf_interval);
break;
case 'd':
index baf7a21bc3778a9dacd0cc308f19ca2d785c67ee..39e1e1ade605ec6643f2711fc9075fc30a85b25d 100644 (file)
libcollectdclient_la_SOURCES = client.c network.c network_buffer.c
libcollectdclient_la_CPPFLAGS = $(AM_CPPFLAGS)
-libcollectdclient_la_LDFLAGS = -version-info 0:0:0
+libcollectdclient_la_LDFLAGS = -version-info 1:0:0
libcollectdclient_la_LIBADD =
if BUILD_WITH_LIBGCRYPT
libcollectdclient_la_CPPFLAGS += $(GCRYPT_CPPFLAGS)
index 850edaaff45841d82c1a7536258e26a74d9229a1..726f25d424b2476f84ddaa3584d4e8f91cdf7476 100644 (file)
SSTRCATF (command, "PUTVAL %s",
lcc_strescape (ident_esc, ident_str, sizeof (ident_esc)));
- if (vl->interval > 0)
- SSTRCATF (command, " interval=%i", vl->interval);
+ if (vl->interval > 0.0)
+ SSTRCATF (command, " interval=%.3f", vl->interval);
- if (vl->time > 0)
- SSTRCATF (command, " %u", (unsigned int) vl->time);
+ if (vl->time > 0.0)
+ SSTRCATF (command, " %.3f", vl->time);
else
SSTRCAT (command, " N");
index 146f34246fcf9b0475fe21abc63b4f3523fd1183..6ae85984e95958afb6a9f1207cd38c42bcaea7e3 100644 (file)
value_t *values;
int *values_types;
size_t values_len;
- time_t time;
- int interval;
+ double time;
+ double interval;
lcc_identifier_t identifier;
};
typedef struct lcc_value_list_s lcc_value_list_t;
index 3da3b44f41542bf693cde8f530d69ee8d49b1020..c795a1017c3451792a7d5aa3c5934c4fbebbb1fd 100644 (file)
#define TYPE_HOST 0x0000
#define TYPE_TIME 0x0001
+#define TYPE_TIME_HR 0x0008
#define TYPE_PLUGIN 0x0002
#define TYPE_PLUGIN_INSTANCE 0x0003
#define TYPE_TYPE 0x0004
#define TYPE_TYPE_INSTANCE 0x0005
#define TYPE_VALUES 0x0006
#define TYPE_INTERVAL 0x0007
+#define TYPE_INTERVAL_HR 0x0009
/* Types to transmit notifications */
#define TYPE_MESSAGE 0x0100
return (0);
} /* }}} int nb_add_number */
+static int nb_add_time (char **ret_buffer, /* {{{ */
+ size_t *ret_buffer_len,
+ uint16_t type, double value)
+{
+ /* Convert to collectd's "cdtime" representation. */
+ uint64_t cdtime_value = (uint64_t) (value * 1073741824.0);
+ return (nb_add_number (ret_buffer, ret_buffer_len, type, cdtime_value));
+} /* }}} int nb_add_time */
+
static int nb_add_string (char **ret_buffer, /* {{{ */
size_t *ret_buffer_len,
uint16_t type, const char *str, size_t str_len)
if (nb->state.time != vl->time)
{
- if (nb_add_number (&buffer, &buffer_size, TYPE_TIME,
- (uint64_t) vl->time))
+ if (nb_add_time (&buffer, &buffer_size, TYPE_TIME_HR, vl->time))
return (-1);
nb->state.time = vl->time;
}
if (nb->state.interval != vl->interval)
{
- if (nb_add_number (&buffer, &buffer_size, TYPE_INTERVAL,
- (uint64_t) vl->interval))
+ if (nb_add_time (&buffer, &buffer_size, TYPE_INTERVAL_HR, vl->interval))
return (-1);
nb->state.interval = vl->interval;
}