Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
97 changes: 97 additions & 0 deletions Lakshmi/Vsens.py
Original file line number Diff line number Diff line change
@@ -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:'''




81 changes: 81 additions & 0 deletions Lakshmi/Vsens_class_v4.py
Original file line number Diff line number Diff line change
@@ -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()



35 changes: 35 additions & 0 deletions Lakshmi/test_Vsens.py
Original file line number Diff line number Diff line change
@@ -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()