mirror of
				https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
				synced 2025-10-31 18:58:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			218 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			218 lines
		
	
	
		
			7.4 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 sys
 | |
| import os
 | |
| import importlib
 | |
| import matplotlib.pyplot as plt
 | |
| import matplotlib as mpl
 | |
| import numpy as np
 | |
| import pandas as pd
 | |
| import pdfkit
 | |
| import random
 | |
| 
 | |
|  
 | |
| sys.path.append(os.path.join(os.path.abspath(__file__ + "../../../")))
 | |
| 
 | |
| lf_report = importlib.import_module("py-scripts.lf_report")
 | |
| lf_report = lf_report.lf_report
 | |
| lf_graph = importlib.import_module("py-scripts.lf_graph")
 | |
| lf_bar_graph = lf_graph.lf_bar_graph
 | |
| lf_scatter_graph = lf_graph.lf_scatter_graph
 | |
| lf_stacked_graph = lf_graph.lf_stacked_graph
 | |
| lf_horizontal_stacked_graph = lf_graph.lf_horizontal_stacked_graph
 | |
| 
 | |
| 
 | |
| # 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,
 | |
|                          _legend_loc="best",
 | |
|                          _legend_box=(1,1),
 | |
|                          _legend_ncol=1,
 | |
|                          _legend_fontsize=None,
 | |
|                          _enable_csv=True)
 | |
| 
 | |
|     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()
 | |
|     if graph.enable_csv:
 | |
|         report.set_csv_filename(graph_png)
 | |
|         report.move_csv_file()
 | |
|     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()
 | 
