diff options
-rw-r--r-- | registry/registry.c | 29 | ||||
-rw-r--r-- | tests/ebpf/ebpf_thread_function.sh | 52 |
2 files changed, 63 insertions, 18 deletions
diff --git a/registry/registry.c b/registry/registry.c index c861e569e1..743b1e8a4e 100644 --- a/registry/registry.c +++ b/registry/registry.c @@ -58,7 +58,7 @@ static inline void registry_set_person_cookie(struct web_client *w, REGISTRY_PER static inline void registry_json_header(RRDHOST *host, struct web_client *w, const char *action, const char *status) { buffer_flush(w->response.data); w->response.data->content_type = CT_APPLICATION_JSON; - buffer_json_initialize(w->response.data, "\"", "\"", 0, true, true); + buffer_json_initialize(w->response.data, "\"", "\"", 0, true, false); buffer_json_member_add_string(w->response.data, "action", action); buffer_json_member_add_string(w->response.data, "status", status); buffer_json_member_add_string(w->response.data, "hostname", rrdhost_registry_hostname(host)); @@ -190,25 +190,18 @@ int registry_request_hello_json(RRDHOST *host, struct web_client *w) { buffer_json_member_add_boolean(w->response.data, "anonymous_statistics", netdata_anonymous_statistics_enabled); buffer_json_member_add_array(w->response.data, "nodes"); - { + RRDHOST *h; + dfe_start_read(rrdhost_root_index, h) { buffer_json_add_array_item_object(w->response.data); - buffer_json_member_add_string(w->response.data, "machine_guid", host->machine_guid); - buffer_json_member_add_string(w->response.data, "hostname", rrdhost_registry_hostname(host)); + buffer_json_member_add_string(w->response.data, "machine_guid", h->machine_guid); + + if(h->node_id) + buffer_json_member_add_uuid(w->response.data, "node_id", h->node_id); + + buffer_json_member_add_string(w->response.data, "hostname", rrdhost_registry_hostname(h)); + buffer_json_object_close(w->response.data); } - buffer_json_object_close(w->response.data); // nodes - -// RRDHOST *h; -// dfe_start_read(rrdhost_root_index, h) { -// buffer_json_add_array_item_object(w->response.data); -// buffer_json_member_add_string(w->response.data, "machine_guid", h->machine_guid); -// -// if(h->node_id) -// buffer_json_member_add_uuid(w->response.data, "node_id", h->node_id); -// -// buffer_json_member_add_string(w->response.data, "hostname", rrdhost_registry_hostname(h)); -// buffer_json_object_close(w->response.data); -// } -// dfe_done(h); + dfe_done(h); buffer_json_array_close(w->response.data); registry_json_footer(w); diff --git a/tests/ebpf/ebpf_thread_function.sh b/tests/ebpf/ebpf_thread_function.sh new file mode 100644 index 0000000000..dd1e7b6ee0 --- /dev/null +++ b/tests/ebpf/ebpf_thread_function.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +netdata_ebpf_test_functions() { + echo "QUERYING: ${1}" + curl -k -o /tmp/ebpf_netdata_test_functions.txt "${1}" + TEST=$? + if [ $TEST -ne 0 ]; then + echo "Cannot request run a for ${1}. See '/tmp/ebpf_netdata_test_functions.txt' for more details." + exit 1 + fi + + grep "${2}" /tmp/ebpf_netdata_test_functions.txt >/dev/null + TEST=$? + if [ $TEST -ne 0 ]; then + echo "Cannot find ${2} in the output. See '/tmp/ebpf_netdata_test_functions.txt' for more details.." + exit 1 + fi + + rm /tmp/ebpf_netdata_test_functions.txt +} + +MURL="http://127.0.0.1:19999" +INTERVAL=60 + +if [ -n "$1" ]; then + MURL="$1" +fi + +# Check function loaded +netdata_ebpf_test_functions "${MURL}/api/v1/functions" "ebpf_thread" + +# Check function help +netdata_ebpf_test_functions "${MURL}/api/v1/function?function=ebpf_thread%20help" "allows user to control eBPF threads" + +#Test default request +netdata_ebpf_test_functions "${MURL}/api/v1/function?function=ebpf_thread" "columns" + +#Test thread requests . The mdflush is not enabled, because it is not present in all distributions by default. +#Socket is not in the list, because it will have a complete refactory with next PR +for THREAD in "cachestat" "dc" "disk" "fd" "filesystem" "hardirq" "mount" "oomkill" "process" "shm" "softirq" "sync" "swap" "vfs" ; +do + echo "TESTING ${THREAD}" + netdata_ebpf_test_functions "${MURL}/api/v1/function?function=ebpf_thread%20enable:${THREAD}:${INTERVAL}%20thread:${THREAD}" + sleep 17 + netdata_ebpf_test_functions "${MURL}/api/v1/function?function=ebpf_thread%20thread:${THREAD}" "running" + sleep 17 + netdata_ebpf_test_functions "${MURL}/api/v1/function?function=ebpf_thread%20disable:${THREAD}" + sleep 6 + netdata_ebpf_test_functions "${MURL}/api/v1/function?function=ebpf_thread%20thread:${THREAD}" "stopped" + sleep 6 +done + |