Files
wlan-lanforge-scripts/py-scripts/lf_report_test.py

199 lines
6.8 KiB
Python
Executable File

#!/usr/bin/env python3
'''
NAME: lf_report_test.py
PURPOSE:
Common file for testing lf_report and lf_graph Library generates html and pdf output
SETUP:
/lanforge/html-reports directory needs to be present or output generated in local file
EXAMPLE:
./lf_report_test.py : currently script does not accept input
COPYWRITE
Copyright 2021 Candela Technologies Inc
License: Free to distribute and modify. LANforge systems must be licensed.
INCLUDE_IN_README
'''
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import pandas as pd
import pdfkit
from lf_report import lf_report
from lf_graph import lf_bar_graph, lf_scatter_graph, lf_stacked_graph, lf_horizontal_stacked_graph
import random
# Unit Test
if __name__ == "__main__":
# Testing: generate data frame
dataframe = pd.DataFrame({
'product': ['CT521a-264-1ac-1n', 'CT521a-1ac-1ax', 'CT522-264-1ac2-1n', 'CT523c-2ac2-db-10g-cu',
'CT523c-3ac2-db-10g-cu', 'CT523c-8ax-ac10g-cu', 'CT523c-192-2ac2-1ac-10g'],
'radios': [1, 1, 2, 2, 6, 9, 3],
'MIMO': ['N', 'N', 'N', 'Y', 'Y', 'Y', 'Y'],
'stations': [200, 64, 200, 128, 384, 72, 192],
'1 mbps': [300, 300, 300, 10000, 10000, 10000, 10000]
})
print(dataframe)
# Testing: generate data frame
dataframe2 = pd.DataFrame({
'station': [1, 2, 3, 4, 5, 6, 7],
'time_seconds': [23, 78, 22, 19, 45, 22, 25]
})
# report = lf_report(_dataframe=dataframe)
report = lf_report()
report_path = report.get_path()
report_path_date_time = report.get_path_date_time()
print("path: {}".format(report_path))
print("path_date_time: {}".format(report_path_date_time))
report.set_title("Banner Title One")
report.build_banner()
# report.set_title("Banner Title Two")
# report.build_banner()
report.set_table_title("Title One")
report.build_table_title()
report.set_table_dataframe(dataframe)
report.build_table()
report.set_table_title("Title Two")
report.build_table_title()
report.set_table_dataframe(dataframe2)
report.build_table()
set_xaxis = []
y_set1 = []
y_set2 = []
y_set3 = []
for i in range(0, 30):
set_xaxis.append(i)
y_set1.append(random.randint(1, 50))
y_set2.append(random.randint(1, 50))
y_set3.append(random.randint(1, 50))
# test lf_graph in report
dataset = [y_set1, y_set2, y_set3]
x_axis_values = set_xaxis
report.set_graph_title("Graph Title")
report.build_graph_title()
graph = lf_bar_graph(_data_set=dataset,
_xaxis_name="stations",
_yaxis_name="Throughput 2 (Mbps)",
_xaxis_categories=x_axis_values,
_graph_image_name="Bi-single_radio_2.4GHz",
_label=["bi-downlink", "bi-uplink", 'uplink'],
_color=['darkorange', 'forestgreen','blueviolet'],
_color_edge='red',
_grp_title="Throughput for each clients",
_xaxis_step=5,
_show_bar_value=True,
_text_font=7,
_text_rotation=45,
_xticks_font=7)
graph_png = graph.build_bar_graph()
print("graph name {}".format(graph_png))
report.set_graph_image(graph_png)
# need to move the graph image to the results
report.move_graph_image()
report.build_graph()
set1 = [1, 2, 3, 4]
set2 = [[45, 67, 45, 34], [34, 56, 45, 34], [45, 78, 23, 45]]
graph2 = lf_scatter_graph(_x_data_set=set1, _y_data_set=set2, _xaxis_name="x-axis", _values=None,
_yaxis_name="y-axis",
_graph_image_name="image_name1",
_color=None,
_label=["s1", "s2", "s3"],
_enable_csv = False)
graph_png = graph2.build_scatter_graph()
print("graph name {}".format(graph_png))
report.set_graph_image(graph_png)
report.move_graph_image()
report.build_graph()
# this will generate graph which is independent,we can customize the value with different colors
graph2 = lf_scatter_graph(_x_data_set=set1, _y_data_set=[45, 67, 45, 34], _values=[0, 0, 0, 1],
_xaxis_name="x-axis",
_yaxis_name="y-axis",
_graph_image_name="image_name_map",
_color=None,
_label=["s1", "s2"],
_enable_csv = False)
graph_png = graph2.build_scatter_graph()
print("graph name {}".format(graph_png))
report.set_graph_image(graph_png)
report.move_graph_image()
report.build_graph()
dataset = [["1", "2", "3", "4"], [12, 45, 67, 34], [23, 67, 23, 12], [25, 45, 34, 23]]
graph = lf_stacked_graph(_data_set=dataset,
_xaxis_name="Stations",
_yaxis_name="Login PASS/FAIL",
_label=['Success', 'Fail', 'both'],
_graph_image_name="login_pass_fail1",
_color=None,
_enable_csv = False)
graph_png = graph.build_stacked_graph()
print("graph name {}".format(graph_png))
report.set_graph_image(graph_png)
report.move_graph_image()
report.build_graph()
graph = lf_horizontal_stacked_graph(_seg=2,
_yaxis_set=('A', 'B'),
_xaxis_set1=[12, 65],
_xaxis_set2=[23, 34],
_unit="",
_xaxis_name="Stations",
_label=['Success', 'Fail'],
_graph_image_name="image_name_pass_fail",
_color=["r", "g"],
_figsize=(9, 4),
_enable_csv = False)
graph_png = graph.build_horizontal_stacked_graph()
print("graph name {}".format(graph_png))
report.set_graph_image(graph_png)
report.move_graph_image()
report.build_graph()
# report.build_all()
html_file = report.write_html()
print("returned file {}".format(html_file))
print(html_file)
# try other pdf formats
# report.write_pdf()
# report.write_pdf(_page_size = 'A3', _orientation='Landscape')
# report.write_pdf(_page_size = 'A4', _orientation='Landscape')
report.write_pdf(_page_size='Legal', _orientation='Landscape')
# report.write_pdf(_page_size = 'Legal', _orientation='Portrait')
# report.generate_report()