def test_process_supervisor_stats():
    check = StormCheck(CHECK_NAME, {}, {})
    check.update_from_config(STORM_CHECK_CONFIG)

    results = defaultdict(list)

    def report_gauge(metric, value, tags, additional_tags):
        results[metric].append(value)

    check.report_gauge = report_gauge

    check.process_supervisor_stats(TEST_STORM_SUPERVISOR_SUMMARY)
    assert len(results) == 7

    # Check Supervisor Stats
    assert results['storm.supervisor.uptimeSeconds'][0] == 31559
    assert results['storm.supervisor.slotsTotal'][0] == 10
    assert results['storm.supervisor.slotsUsed'][0] == 6
    assert results['storm.supervisor.totalMem'][0] == 3072
    assert results['storm.supervisor.usedMem'][0] == 4992
    assert results['storm.supervisor.totalCpu'][0] == 900
    assert results['storm.supervisor.usedCpu'][0] == 0
def test_process_cluster_stats():
    check = StormCheck(CHECK_NAME, {}, {})

    check.update_from_config(STORM_CHECK_CONFIG)

    results = defaultdict(list)

    def report_gauge(metric, value, tags, additional_tags):
        results[metric].append(value)

    check.report_gauge = report_gauge

    check.process_cluster_stats(TEST_STORM_CLUSTER_SUMMARY)
    assert len(results) == 13

    # Check Cluster Stats
    assert results['storm.cluster.executorsTotal'][0] == 33
    assert results['storm.cluster.slotsTotal'][0] == 10
    assert results['storm.cluster.slotsFree'][0] == 4
    assert results['storm.cluster.topologies'][0] == 1
    assert results['storm.cluster.supervisors'][0] == 1
    assert results['storm.cluster.tasksTotal'][0] == 33
    assert results['storm.cluster.slotsUsed'][0] == 6
def test_process_nimbus_stats():
    check = StormCheck(CHECK_NAME, {}, {})
    check.update_from_config(STORM_CHECK_CONFIG)

    results = defaultdict(list)

    def report_gauge(metric, value, tags, additional_tags):
        results[metric].append(value)

    check.report_gauge = report_gauge

    check.process_nimbus_stats(TEST_STORM_NIMBUSES_SUMMARY)
    assert len(results) == 5

    # Check Leader Stats
    assert results['storm.nimbus.upTimeSeconds'][0] == 0
    assert results['storm.nimbus.upTimeSeconds'][1] == 25842

    # Check General Stats
    assert results['storm.nimbus.numLeaders'][0] == 1
    assert results['storm.nimbus.numFollowers'][0] == 0
    assert results['storm.nimbus.numOffline'][0] == 1
    assert results['storm.nimbus.numDead'][0] == 0