make csv_to_influx work and make test_ipv4_variable_time work properly

Signed-off-by: Matthew Stidham <stidmatt@protonmail.com>
This commit is contained in:
Matthew Stidham
2021-04-15 16:58:24 -07:00
parent 7feda49d15
commit c3b3f8a161
2 changed files with 48 additions and 33 deletions

27
py-scripts/csv_to_influx.py Normal file → Executable file
View File

@@ -32,7 +32,8 @@ class CSVtoInflux(Realm):
_proxy_str=None, _proxy_str=None,
_capture_signal_list=[], _capture_signal_list=[],
influxdb=None, influxdb=None,
df=None): #_influx_tag=[],
target_csv=None):
super().__init__(lfclient_host=lfclient_host, super().__init__(lfclient_host=lfclient_host,
lfclient_port=lfclient_port, lfclient_port=lfclient_port,
debug_=debug, debug_=debug,
@@ -41,14 +42,18 @@ class CSVtoInflux(Realm):
_proxy_str=_proxy_str, _proxy_str=_proxy_str,
_capture_signal_list=_capture_signal_list) _capture_signal_list=_capture_signal_list)
self.influxdb = influxdb self.influxdb = influxdb
self.df = df self.target_csv = target_csv
#self.influx_tag = _influx_tag
# Submit data to the influx db if configured to do so. # Submit data to the influx db if configured to do so.
def post_to_influx(self): def post_to_influx(self):
dates = list(set(self.df['Date'])) df = pd.read_csv(self.target_csv, sep='\t')
scriptname=self.df['test-id'][0] df['Date'] = pd.to_datetime(df['Date'], unit='s')
df['Date'] = [str(timestamp.isoformat()) for timestamp in df['Date']]
dates = list(set(df['Date']))
scriptname=df['test-id'][0]
for date in dates: for date in dates:
kpi2 = self.df[self.df['Date'] == date][['Date', 'test details', 'numeric-score','test-id']] kpi2 = df[df['Date'] == date][['Date', 'test details', 'numeric-score', 'test-id']]
metrics = list(set(kpi2['test details'])) metrics = list(set(kpi2['test details']))
targets = dict() targets = dict()
for k in metrics: for k in metrics:
@@ -57,6 +62,8 @@ class CSVtoInflux(Realm):
targets targets
tags = dict() tags = dict()
tags['script'] = scriptname tags['script'] = scriptname
#for item in self.influx_tag:
#tags[item[0]] = item[1]
for k in targets.keys(): for k in targets.keys():
self.influxdb.post_to_influx(k, targets[k], tags, date) self.influxdb.post_to_influx(k, targets[k], tags, date)
@@ -109,6 +116,7 @@ python3 csv_to_influx.py --influx_host localhost --influx_org Candela --influx_t
parser.add_argument('--influx_token', help='Token for the Influx database') parser.add_argument('--influx_token', help='Token for the Influx database')
parser.add_argument('--influx_bucket', help='Name of the Influx bucket') parser.add_argument('--influx_bucket', help='Name of the Influx bucket')
parser.add_argument('--target_csv', help='CSV file to record to influx database', required=True) parser.add_argument('--target_csv', help='CSV file to record to influx database', required=True)
parser.add_argument('--influx_tag', action='append', nargs=2, help='--influx_tag <key> <val> Can add more than one of these.')
args = parser.parse_args() args = parser.parse_args()
@@ -122,12 +130,11 @@ python3 csv_to_influx.py --influx_host localhost --influx_org Candela --influx_t
_influx_org=args.influx_org, _influx_org=args.influx_org,
_influx_token=args.influx_token, _influx_token=args.influx_token,
_influx_bucket=args.influx_bucket) _influx_bucket=args.influx_bucket)
df = pd.read_csv(args.target_csv) #_influx_tag=args.influx_tag)
csvtoinflux = CSVtoInflux(args=args, csvtoinflux = CSVtoInflux(influxdb=influxdb,
influxdb=influxdb, target_csv=args.target_csv)
df=df) csvtoinflux.post_to_influx()
csvtoinflux.record_kpi()
if __name__ == "__main__": if __name__ == "__main__":

View File

@@ -269,6 +269,7 @@ python3 ./test_ipv4_variable_time.py
parser.add_argument('--influx_bucket', help='Password for your Influx database') parser.add_argument('--influx_bucket', help='Password for your Influx database')
parser.add_argument('--influx_org', help='Name of your Influx database') parser.add_argument('--influx_org', help='Name of your Influx database')
parser.add_argument('--influx_port', help='Port where your influx database is located', default=8086) parser.add_argument('--influx_port', help='Port where your influx database is located', default=8086)
parser.add_argument('--influx_tag', action='append', nargs=2, help='--influx_tag <key> <val> Can add more than one of these.')
args = parser.parse_args() args = parser.parse_args()
@@ -386,25 +387,6 @@ python3 ./test_ipv4_variable_time.py
"The time string provided for monitor_interval argument is invalid. Please see supported time stamp increments and inputs for monitor_interval in --help. ")) "The time string provided for monitor_interval argument is invalid. Please see supported time stamp increments and inputs for monitor_interval in --help. "))
exit(1) exit(1)
ip_var_test.start(False, False) ip_var_test.start(False, False)
ip_var_test.l3cxprofile.monitor(layer3_cols=layer3_cols,
sta_list=station_list,
# port_mgr_cols=port_mgr_cols,
report_file=report_f,
systeminfopath=systeminfopath,
duration_sec=Realm.parse_time(args.test_duration).total_seconds(),
monitor_interval_ms=monitor_interval,
created_cx=layer3connections,
output_format=output,
compared_report=compared_rept,
script_name='test_ipv4_variable_time',
arguments=args,
debug=args.debug)
ip_var_test.stop()
if not ip_var_test.passes():
print(ip_var_test.get_fail_message())
ip_var_test.exit_fail()
LFUtils.wait_until_ports_admin_up(port_list=station_list)
if args.influx_org is not None: if args.influx_org is not None:
from influx2 import RecordInflux from influx2 import RecordInflux
@@ -416,10 +398,36 @@ python3 ./test_ipv4_variable_time.py
devices=[station.split('.')[-1] for station in station_list] devices=[station.split('.')[-1] for station in station_list]
tags=dict() tags=dict()
tags['script']='test_ipv4_variable_time' tags['script']='test_ipv4_variable_time'
grapher.monitor_port_data(longevity=5, try:
devices=devices, for k in args.influx_tag:
monitor_interval=2, tags[k[0]] = k[1]
tags=tags) except:
pass
grapher.monitor_port_data(longevity=Realm.parse_time(args.test_duration).total_seconds(),
devices=devices,
monitor_interval=Realm.parse_time(args.monitor_interval).total_seconds(),
tags=tags)
else:
ip_var_test.l3cxprofile.monitor(layer3_cols=layer3_cols,
sta_list=station_list,
# port_mgr_cols=port_mgr_cols,
report_file=report_f,
systeminfopath=systeminfopath,
duration_sec=Realm.parse_time(args.test_duration).total_seconds(),
monitor_interval_ms=monitor_interval,
created_cx=layer3connections,
output_format=output,
compared_report=compared_rept,
script_name='test_ipv4_variable_time',
arguments=args,
debug=args.debug)
ip_var_test.stop()
if not ip_var_test.passes():
print(ip_var_test.get_fail_message())
ip_var_test.exit_fail()
LFUtils.wait_until_ports_admin_up(port_list=station_list)
ip_var_test.cleanup() ip_var_test.cleanup()
if ip_var_test.passes(): if ip_var_test.passes():
ip_var_test.success() ip_var_test.success()