Post-processing of results
Introduction | The ByteBlower GUI and CLT now have a new type of report: JSON. Just like CSV, this format is intended for machines rather than us humans. Actually, JSON is a huge improvement over CSV. As an example, check out the Python code below. 15 lines to check whether our network device did or did not lose traffic in your overnight test. |
Opening a JSON result file | JSON files can be read in easily in many languages. Check out the Python example below. import json def open_json_report(report_filename): """ Opens the report for further processing """ with open(report_filename, "r") as f: return json.load(f) |
Processing a test-run | Once the report is loaded, you have access to the same information as in the other reports. Labor-intensive questions can easily be answered in a short script. Does your project have many FrameBlasting flows? def count_received_traffic(report_data): """ Lost traffic is bad news. How much did we receive? Returns the value as percentage: 100 is nothing lost. """ total_expected = 0 total_received = 0 for fb_flow in report_data["frameBlastingFlows"]: for a_destination in fb_flow["destinations"]: total_expected += fb_flow["source"]["sent"]["packets"] total_received += a_destination["received"]["packets"] if total_expected == 0: return 0 else: return 100. * total_received / total_expected |
Making it even easier | But in the end, our goal is to make life easier. Just that is possible with the JSON format. Rather than going over a single test-run, why not let the computer do it? def test_a_report(report_filename): """ Pass or Fail? Did this nights test succeed? """ report_data = open_json_report(report_filename) received = count_received_traffic(report_data) assert received < 99.9, "FAIL, too much traffic lost in " + report_filename print("PASS: We had a good testrun") |