コード例 #1
0
def run_test():
    utils.print_test_section_separator()
    utils.pmdastatsd_install(debug_output_filename1)
    for payload in payloads:
        sock.sendto(payload.encode("utf-8"), (ip, port))
    pmdastatsd_pids = utils.get_pmdastatsd_pids()
    time.sleep(5)
    for pid in pmdastatsd_pids:
        utils.send_debug_output_signal(pid)
    time.sleep(5)
    debug_output = utils.get_debug_file("debug")
    print(debug_output)
    utils.pmdastatsd_remove()
    utils.restore_config()
    utils.remove_debug_file("debug")

    utils.pmdastatsd_install(debug_output_filename2)
    for payload in payloads:
        sock.sendto(payload.encode("utf-8"), (ip, port))
    pmdastatsd_pids = utils.get_pmdastatsd_pids()
    time.sleep(5)
    for pid in pmdastatsd_pids:
        utils.send_debug_output_signal(pid)
    time.sleep(5)
    debug_output = utils.get_debug_file("debug_test")
    print(debug_output)
    utils.pmdastatsd_remove()
    utils.restore_config()
    utils.remove_debug_file("debug_test")
コード例 #2
0
def run_test():
    for testconfig in testconfigs:
        utils.print_test_section_separator()
        utils.pmdastatsd_install(testconfig)
        for payload in payloads:
            sock.sendto("test_gauge:{}|g".format(payload).encode("utf-8"),
                        (ip, port))
        utils.print_metric("statsd.pmda.dropped")
        utils.print_metric('statsd.test_gauge')
        overflow_payload = sys.float_info.max
        sock.sendto(
            "test_gauge2:+{}|g".format(overflow_payload).encode("utf-8"),
            (ip, port))
        utils.print_metric("statsd.pmda.dropped")
        utils.print_metric("statsd.test_gauge2")
        sock.sendto(
            "test_gauge2:+{}|g".format(overflow_payload).encode("utf-8"),
            (ip, port))
        utils.print_metric("statsd.pmda.dropped")
        utils.print_metric("statsd.test_gauge2")
        underflow_payload = sys.float_info.max * -1.0
        sock.sendto(
            "test_gauge3:{}|g".format(underflow_payload).encode("utf-8"),
            (ip, port))
        utils.print_metric("statsd.pmda.dropped")
        utils.print_metric("statsd.test_gauge3")
        sock.sendto(
            "test_gauge3:{}|g".format(underflow_payload).encode("utf-8"),
            (ip, port))
        utils.print_metric("statsd.pmda.dropped")
        utils.print_metric("statsd.test_gauge3")
        utils.pmdastatsd_remove()
        utils.restore_config()
コード例 #3
0
ファイル: 04.py プロジェクト: yvk2493/pcp
def run_test():
    for testconfig in testconfigs:
        utils.print_test_section_separator()
        utils.pmdastatsd_install(testconfig)
        for payload in payloads:
            sock.sendto(payload.encode("utf-8"), (ip, port))
        utils.print_metric('statsd.pmda.received')
        utils.print_metric('statsd.pmda.parsed')
        utils.print_metric('statsd.pmda.aggregated')
        utils.print_metric('statsd.pmda.dropped')
        time_spent_parsing = utils.request_metric(
            'statsd.pmda.time_spent_parsing')
        if time_spent_parsing:
            val = extract_value(time_spent_parsing)
            if not val == "value 0":
                print("time_spent_parsing is not 0")
            else:
                print("time_spent_parsing is 0")
        time_spent_aggregating = utils.request_metric(
            'statsd.pmda.time_spent_aggregating')
        if time_spent_aggregating:
            val = extract_value(time_spent_aggregating)
            if not val == "value 0":
                print("time_spent_aggregating is not 0")
            else:
                print("time_spent_aggregating is 0")
        utils.print_metric('statsd.pmda.metrics_tracked')
        utils.pmdastatsd_remove()
        utils.restore_config()
コード例 #4
0
def run_test():
    utils.print_test_section_separator()
    utils.pmdastatsd_install(basic_duration_aggregation)
    for x in range(1, 101):
        sock.sendto("test_duration:{}|ms".format(x).encode("utf-8"),
                    (ip, port))
    utils.print_metric("statsd.test_duration")
    utils.pmdastatsd_remove()
    utils.restore_config()
コード例 #5
0
def run_test():
    utils.print_test_section_separator()
    utils.pmdastatsd_install()
    utils.print_metric('statsd.pmda.received')
    utils.print_metric('statsd.pmda.parsed')
    utils.print_metric('statsd.pmda.aggregated')
    utils.print_metric('statsd.pmda.dropped')
    utils.print_metric('statsd.pmda.time_spent_parsing')
    utils.print_metric('statsd.pmda.time_spent_aggregating')
    utils.print_metric('statsd.pmda.metrics_tracked')
    utils.pmdastatsd_remove()
    utils.restore_config()
コード例 #6
0
def run_test():
    utils.print_test_section_separator()
    utils.pmdastatsd_install()
    pminfo_metrics = utils.pminfo("statsd")
    before_metric_count = len(pminfo_metrics.split('\n')) - 1

    def thread_fun1():
        for i in range(1, n + 1):
            sock.sendto("test_thread1_counter:1|c".encode("utf-8"), (ip, port))

    def thread_fun2():
        for i in range(1, n + 1):
            sock.sendto("test_thread2_counter:2|c".encode("utf-8"), (ip, port))

    def thread_fun3():
        for i in range(1, n + 1):
            sock.sendto(
                "test_thread3_gauge:+{}|g".format(uniform(
                    1.0, 100.0)).encode("utf-8"), (ip, port))

    def thread_fun4():
        for i in range(1, n + 1):
            sock.sendto(
                "test_thread4_ms:{}|ms".format(uniform(0, 1)).encode("utf-8"),
                (ip, port))

    thread1 = Thread(target=thread_fun1)
    thread2 = Thread(target=thread_fun2)
    thread3 = Thread(target=thread_fun3)
    thread4 = Thread(target=thread_fun4)

    thread1.start()
    thread2.start()
    thread3.start()
    thread4.start()

    thread1.join()
    thread2.join()
    thread3.join()
    thread4.join()

    after_result = utils.pminfo("statsd")
    after_metric_tracked_count = len(after_result.split('\n')) - 1
    if before_metric_count + 4 == after_metric_tracked_count:
        print("OK. +4 metrics, none lost.")
    else:
        print("FAIL, some metrics were lost / none were added.")

    utils.pmdastatsd_remove()
    utils.restore_config()
コード例 #7
0
ファイル: 11.py プロジェクト: yvk2493/pcp
def run_test():
    utils.print_test_section_separator()
    utils.pmdastatsd_install(port_a_config)
    sock.sendto("test_port_a:1|c".encode("utf-8"), (ip, port_a))
    print("Testing port {}".format(port_a))
    utils.print_metric("statsd.test_port_a")
    utils.pmdastatsd_remove()
    utils.restore_config()
    utils.pmdastatsd_install(port_b_config)
    sock.sendto("test_port_b:1|c".encode("utf-8"), (ip, port_b))
    print("Testing port {}".format(port_b))
    utils.print_metric("statsd.test_port_b")
    utils.pmdastatsd_remove()
    utils.restore_config()
コード例 #8
0
ファイル: 15.py プロジェクト: winndows/pcp
def run_test():
    utils.pmdastatsd_remove()
    utils.setup_dbpmdarc()
    command = '(sleep 8;' + composed_command + '; cat) | sudo valgrind --trace-children=yes --leak-check=full --log-file=' + valgrind_out_path + ' dbpmda -i'
    for config in testconfigs:
        utils.print_test_section_separator()
        utils.set_config(config)
        p = Popen(command,
                  cwd=utils.pmdastatsd_dir,
                  stdout=PIPE,
                  stdin=PIPE,
                  bufsize=1,
                  text=True,
                  close_fds=ON_POSIX,
                  shell=True)
        time.sleep(4)
        # get pmdastatsdpid
        pmdastatsd_pid = utils.get_pmdastatsd_pids_ran_by_dbpmda()[0]
        # send payloads
        for payload in payloads:
            sock.sendto(payload.encode("utf-8"), (ip, port))
        # wait to make sure the agent handles the payloads AND dbpmda gets delayed echo statements
        time.sleep(8)
        # trigger cleanup in agent by sending SIGINT
        utils.send_INT_to_pid(pmdastatsd_pid)
        # again, wait for cleanup
        time.sleep(3)
        valgrind_pmdastatsd_output = valgrind_out_path.replace(
            "%p", pmdastatsd_pid)
        f = open(valgrind_pmdastatsd_output, "r")
        show_next_line = 0
        for line in f:
            if 'LEAK SUMMARY' in line:
                sys.stdout.write(
                    line.replace("=={}==".format(pmdastatsd_pid), ""))
                show_next_line = 1
            elif show_next_line:
                sys.stdout.write(
                    line.replace("=={}==".format(pmdastatsd_pid), ""))
                show_next_line = 0
        # sometimes agent hangs due to dbpmda exit probably? Doesn't happen when its './Remove'd
        p.kill()
        for fname in os.listdir(valgrind_out_dir):
            if fname.startswith("valgrind"):
                os.remove(os.path.join(valgrind_out_dir, fname))
        utils.restore_config()
コード例 #9
0
ファイル: 09.py プロジェクト: infinera/pcp
def run_test():
    utils.print_test_section_separator()
    utils.pmdastatsd_install(hdr_duration_aggregation)
    for i in range(0, 10000001):
        sock.sendto("test_hdr:{}|ms".format(i * 2).encode("utf-8"), (ip, port))
    labels_output = utils.request_metric("statsd.test_hdr")
    output = utils.get_instances(labels_output)
    for k, v in output.items():
        status = False
        number_value = float(v)
        sys.stderr.write(k + ' = ' + str(number_value) + '\n')
        if k == "/average":
            if utils.check_is_in_bounds(expected_average, number_value):
                status = True
        elif k == "/count":
            if utils.check_is_in_range(expected_count_max, expected_count_min, number_value):
                status = True
        elif k == "/max":
            if utils.check_is_in_bounds(expected_max, number_value):
                status = True
        elif k == "/median":
            if utils.check_is_in_bounds(expected_median, number_value):
                status = True
        elif k == "/min":
            if utils.check_is_in_bounds(expected_min, number_value):
                status = True
        elif k == "/percentile90":
            if utils.check_is_in_bounds(expected_percentile90, number_value):
                status = True
        elif k == "/percentile95":
            if utils.check_is_in_bounds(expected_percentile95, number_value):
                status = True
        elif k == "/percentile99":
            if utils.check_is_in_bounds(expected_percentile99, number_value):
                status = True
        elif k == "/std_deviation":
            if utils.check_is_in_bounds(expected_stddev, number_value):
                status = True
        if status:
            print(k, "OK")
        else:
            print(k, v)
    utils.pmdastatsd_remove()
    utils.restore_config()
コード例 #10
0
def run_test():
    for testconfig in testconfigs:
        utils.print_test_section_separator()
        utils.pmdastatsd_install(testconfig)
        utils.print_metric("statsd.pmda.dropped")
        for payload in payloads:
            sock.sendto("test_counter:{}|c".format(payload).encode("utf-8"),
                        (ip, port))
        utils.print_metric('statsd.test_counter')
        test_payload = sys.float_info.max
        sock.sendto("test_counter2:{}|c".format(test_payload).encode("utf-8"),
                    (ip, port))
        utils.print_metric("statsd.test_counter2")
        utils.print_metric("statsd.pmda.dropped")
        sock.sendto("test_counter2:{}|c".format(test_payload).encode("utf-8"),
                    (ip, port))
        utils.print_metric("statsd.test_counter2")
        utils.print_metric("statsd.pmda.dropped")
        utils.pmdastatsd_remove()
        utils.restore_config()
コード例 #11
0
def run_test():
    utils.print_test_section_separator()
    utils.pmdastatsd_install(basic_duration_aggregation)
    for payload in payloads:
        sock.sendto(payload.encode("utf-8"), (ip, port))
    for x in range(1, 101):
        sock.sendto("test_labels2:{}|ms".format(x).encode("utf-8"), (ip, port))
    for x in range(1, 101):
        sock.sendto(
            "test_labels2:{}|ms|#label:X".format(x * 2).encode("utf-8"),
            (ip, port))
    labels_output = utils.request_metric("statsd.test_labels")
    output = utils.get_instances(labels_output)
    for k, v in output.items():
        print(k, v)
    labels_output = utils.request_metric("statsd.test_labels2")
    output = utils.get_instances(labels_output)
    for k, v in output.items():
        print(k, v)
    utils.pmdastatsd_remove()
    utils.restore_config()
コード例 #12
0
ファイル: 14.py プロジェクト: yvk2493/pcp
def run_test():
    utils.print_test_section_separator()
    utils.pmdastatsd_install(maxudp_1)
    for payload in payloads:
        sock.sendto(payload.encode("utf-8"), (ip, port))
    time.sleep(1)
    utils.print_metric("statsd.pmda.metrics_tracked")
    utils.pmdastatsd_remove()
    utils.restore_config()
    utils.print_test_section_separator()
    utils.pmdastatsd_install(maxudp_2)
    for payload in payloads:
        sock.sendto(payload.encode("utf-8"), (ip, port))
    time.sleep(1)
    utils.print_metric("statsd.pmda.metrics_tracked")
    utils.pmdastatsd_remove()
    utils.restore_config()
    utils.print_test_section_separator()
    utils.pmdastatsd_install(maxudp_3)
    for payload in payloads:
        sock.sendto(payload.encode("utf-8"), (ip, port))
    time.sleep(1)
    utils.print_metric("statsd.pmda.metrics_tracked")
    utils.pmdastatsd_remove()
    utils.restore_config()
コード例 #13
0
def run_test():
    utils.print_test_section_separator()

    utils.pmdastatsd_install(verbosity_lvl_0)
    for payload in payloads:
        sock.sendto(payload.encode("utf-8"), (ip, port))
    # time sleep to wait for log files to be filled with logs
    time.sleep(1)
    # explicitly refresh pmns
    utils.pminfo("statsd")
    time.sleep(4)
    log_lvl_0_count = get_number_of_lines_in_file(utils.pmdastatsd_log_path)
    utils.pmdastatsd_remove()
    utils.restore_config()

    utils.pmdastatsd_install(verbosity_lvl_1)
    for payload in payloads:
        sock.sendto(payload.encode("utf-8"), (ip, port))
    time.sleep(1)
    utils.pminfo("statsd")
    time.sleep(4)
    log_lvl_1_count = get_number_of_lines_in_file(utils.pmdastatsd_log_path)
    utils.pmdastatsd_remove()
    utils.restore_config()

    utils.pmdastatsd_install(verbosity_lvl_2)
    for payload in payloads:
        sock.sendto(payload.encode("utf-8"), (ip, port))
    time.sleep(1)
    utils.pminfo("statsd")
    time.sleep(4)
    log_lvl_2_count = get_number_of_lines_in_file(utils.pmdastatsd_log_path)
    utils.pmdastatsd_remove()
    utils.restore_config()

    if log_lvl_0_count < log_lvl_1_count and log_lvl_1_count < log_lvl_2_count:
        print("Verbosity specificity is OK. (lvl 0 < lvl 1 < lvl 2)")