diff --git a/Lakshmi/Vsens.py b/Lakshmi/Vsens.py new file mode 100644 index 0000000..7244d7b --- /dev/null +++ b/Lakshmi/Vsens.py @@ -0,0 +1,97 @@ +import json + +class Vsens: + + def __init__(self,path,expected_time_from_user,Accelerometer_packets,Temperature_packets,Battery_packets): + self.path = path + self.data_list = [] + self.Accelerometer_packets = Accelerometer_packets + self.Temperature_packets = Temperature_packets + self.Battery_packets = Battery_packets + self.acc_count = 0 + self.temp_count = 0 + self.battery_count = 0 + self.disconnected_count = 0 + self.PID_998 = [] + self.PID_999 = [] + self.expected_time_from_user = expected_time_from_user + self.sum_of_diff_time = 0 + self.Actual_test_time = 0 + + def Readfile(self): + new_list = [] + with open(self.path,'r') as f: + for i in f: + self.data_list.append(json.loads(i)) + new_list = self.data_list + return new_list + + def Count_packets(self): + self.diff_time =0 + self.index = 0 + self.flag = 0 + for i in range(len(self.data_list)): + + if self.data_list[i]['PID'] == '0': + self.acc_count += 1 + elif self.data_list[i]['PID'] == '1': + self.temp_count += 1 + elif self.data_list[i]['PID'] == '2': + self.battery_count += 1 + elif self.data_list[i]['PID'] == '998': + self.disconnected_count += 1 + if self.flag == 0: + self.index = i + self.flag = 1 + elif self.data_list[i]['PID'] == '999' and self.flag == 1: + self.PID_999.append(self.data_list[i]) + self.diff_time = self.data_list[i]['TS'] - self.data_list[self.index]['TS'] + self.sum_of_diff_time = self.sum_of_diff_time + self.diff_time + self.flag = 0 + + return self.acc_count,self.temp_count,self.battery_count,self.disconnected_count + + def Convert_seconds(self,sum_diff): + self.time_in_sec = sum_diff/1000 + return self.time_in_sec + + def Actual_time_calculate(self,expected_t_user,t_sec): + if expected_t_user <= 0: + raise ValueError("Expected time cannot be neagative number") + self.Actual_test_time = float(expected_t_user) - t_sec + return self.Actual_test_time + + def Calculate_packet_loss(self,expected_packets,actual_count,actual_test_time): + + self.Actual_packets_recieved = actual_test_time*float(expected_packets) + self.packet_loss = round(((self.Actual_packets_recieved - actual_count)/self.Actual_packets_recieved)*100,2) + return self.packet_loss + + def Function_call(self): + self.Readfile() + self.Count_packets() + self.Convert_seconds(self.sum_of_diff_time) + self.Actual_time_calculate(self.expected_time_from_user,self.time_in_sec) + Acc_packet_loss = self.Calculate_packet_loss(self.Accelerometer_packets,self.acc_count,self.Actual_test_time) + self.Temperature_packets = (float(self.Temperature_packets)*(1/60)) + Temp_packet_loss = self.Calculate_packet_loss(self.Temperature_packets,self.temp_count,self.Actual_test_time) + self.Battery_packets = (float(self.Battery_packets)*(1/60)) + Battery_packet_loss = self.Calculate_packet_loss(self.Battery_packets,self.battery_count,self.Actual_test_time) + print('***************OUTPUT*************') + print('Actual time is : ',self.Actual_test_time,'\n','Disconnected count : ',self.disconnected_count,'\n','Packet loss for accelerometer : ',Acc_packet_loss,'\n','Packet loss for temperature : ',Temp_packet_loss,'\n','Packet loss for battery : ',Battery_packet_loss) + + +path = input("Enter file path : ") +expected_time_from_user = float(input("Enter the expected time in seconds : ")) +Accelerometer_packets = int(input("Enter expected accelerometer packets : ")) +Temperature_packets = int(input("Enter expected tempreature packets : ")) +Battery_packets = int(input("Enter expected battery packets : ")) +sensor = Vsens(path,expected_time_from_user,Accelerometer_packets,Temperature_packets,Battery_packets) +sensor.Function_call() + +'''def User_choice(choice): + if choice == 1:''' + + + + \ No newline at end of file diff --git a/Lakshmi/Vsens_class_v4.py b/Lakshmi/Vsens_class_v4.py new file mode 100644 index 0000000..fc1962f --- /dev/null +++ b/Lakshmi/Vsens_class_v4.py @@ -0,0 +1,81 @@ +import json + +class Vsens: + + def __init__(self,path,expected_time_from_user,Accelerometer_packets,Temperature_packets,Battery_packets): + self.path = path + self.data_list = [] + self.Accelerometer_packets = Accelerometer_packets + self.Temperature_packets = Temperature_packets + self.Battery_packets = Battery_packets + self.acc_count = 0 + self.temp_count = 0 + self.battery_count = 0 + self.disconnected_count = 0 + self.PID_998 = [] + self.PID_999 = [] + self.expected_time_from_user = expected_time_from_user + self.sum_of_diff_time = 0 + self.Actual_test_time = 0 + + def Readfile(self): + with open(self.path,'r') as f: + for i in f: + self.data_list.append(json.loads(i)) + return self.data_list + + def Count_packets(self): + self.diff_time =0 + self.index = 0 + self.flag = 0 + for i in range(len(self.data_list)): + + if self.data_list[i]['PID'] == '0': + self.acc_count += 1 + elif self.data_list[i]['PID'] == '1': + self.temp_count += 1 + elif self.data_list[i]['PID'] == '2': + self.battery_count += 1 + elif self.data_list[i]['PID'] == '998': + self.disconnected_count += 1 + if self.flag == 0: + self.index = i + self.flag = 1 + elif self.data_list[i]['PID'] == '999' and self.flag == 1: + self.PID_999.append(self.data_list[i]) + self.diff_time = self.data_list[i]['TS'] - self.data_list[self.index]['TS'] + self.sum_of_diff_time = self.sum_of_diff_time + self.diff_time + self.flag = 0 + + def Actual_time_calculate(self): + self.time_in_sec = self.sum_of_diff_time/1000 + self.Actual_test_time = float(self.expected_time_from_user) - self.time_in_sec + + def Calculate_packet_loss(self): + self.Actual_accelerometer_packets_recieved = self.Actual_test_time*float(self.Accelerometer_packets) + self.packet_loss_acc = ((self.Actual_accelerometer_packets_recieved - self.acc_count)/self.Actual_accelerometer_packets_recieved)*100 + + self.Temperature_packets = (float(self.Temperature_packets)*(1/60)) + self.Actual_temp_packets_recieved = self.Actual_test_time*float(self.Temperature_packets) + self.packet_loss_temp = ((self.Actual_temp_packets_recieved - self.temp_count)/self.Actual_temp_packets_recieved)*100 + + self.Battery_packets = (float(self.Battery_packets)*(1/60)) + self.Actual_battery_packets_recieved = self.Actual_test_time*float(self.Battery_packets) + self.packet_loss_battery = ((self.Actual_battery_packets_recieved - self.battery_count)/self.Actual_battery_packets_recieved)*100 + + print('*************************OUTPUT*******************************') + print('Actual time is : ',self.Actual_test_time,'\n','Disconnected count : ',self.disconnected_count,'\n','Packet loss for accelerometer : ',self.packet_loss_acc,'\n','Packet loss for temperature : ',self.packet_loss_temp,'\n','Packet loss for battery : ',self.packet_loss_battery) + + def Function_call(self): + self.Readfile() + self.Count_packets() + self.Actual_time_calculate() + self.Calculate_packet_loss() + +path = input("Enter file path : ") +expected_time_from_user,Accelerometer_packets,Temperature_packets,Battery_packets = input("Enter the expected time in seconds ,expected accelerometer packets per second,expected temperature packets per minute,expected battery packets per minute separeted by comma : ").split(',') +sensor = Vsens(path,expected_time_from_user,Accelerometer_packets,Temperature_packets,Battery_packets) +sensor.Function_call() + + + \ No newline at end of file diff --git a/Lakshmi/test_Vsens.py b/Lakshmi/test_Vsens.py new file mode 100644 index 0000000..7df8915 --- /dev/null +++ b/Lakshmi/test_Vsens.py @@ -0,0 +1,35 @@ +import Vsens +import unittest + +class Test_Vsens(unittest.TestCase): + + def setUp(self): + self.obj = Vsens.Vsens(Vsens.path,Vsens.expected_time_from_user,Vsens.Accelerometer_packets,Vsens.Temperature_packets,Vsens.Battery_packets) + self.test_Readfile() + def test_Readfile(self): + self.assertNotEqual(len(self.obj.Readfile()),0) + + def test_Count_packets(self): + a_count,t_count,b_count,d_count = self.obj.Count_packets() + self.assertEqual(a_count,260030) + self.assertEqual(t_count,882) + self.assertEqual(b_count,883) + self.assertEqual(d_count,16) + + def test_Convert_seconds(self): + self.assertEqual(self.obj.Convert_seconds(1000),1) + + def test_input_values(self): + self.assertRaises(ValueError,self.obj.Actual_time_calculate,-58156,5249.13) + + def test_Actual_time_calculate(self): + self.assertEqual(self.obj.Actual_time_calculate(-5,2),-7,3) + + + def test_Calculate_packet_loss(self): + self.assertAlmostEqual(self.obj.Calculate_packet_loss(5,260030,52906.87),1.7) + + + +if __name__ == '__main__': + unittest.main()