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
118 changes: 118 additions & 0 deletions Sanjana/assignment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@

import json

class vSensCalculator:
def __init__(self,filename,time,acc_rate,temp_rate,battery_rate):
self.List = []
self.count=0
self.accelerometer_sensor=0
self.temperature_sensor=0
self.battery=0
self.total_disconnections=0
self.time_diff=0
self.actual_count=0
self.rate_seconds=0
self.filename = filename
self.Accelerometer_rate = acc_rate
self.temp_rate=temp_rate
self.battery_rate=battery_rate
self.total_time = time

def read_file(self):
with open(self.filename) as file:
for l in file:
self.List.append(json.loads(l.strip()))
return self.List

def total_packets_time(self):
flag = 0
index=0
for element in range(len(self.List)):
if(self.List[element]["PID"] =="998" ):
self.total_disconnections += 1
if(flag != 1):
flag=1
index=element
elif(self.List[element]["PID"] =="0"):
self.accelerometer_sensor += 1
elif(self.List[element]["PID"] =="1"):
self.temperature_sensor += 1
elif(self.List[element]["PID"] =="2"):
self.battery += 1
else:
if(flag==1):
self.time_diff = self.time_diff + (self.List[element]["TS"]-self.List[index]["TS"])
flag = 0
print("acceleromete count=",self.accelerometer_sensor)
print("temperature count=",self.temperature_sensor)
print("battery count=",self.battery)
print("disconnected time in milisec=",self.time_diff)
return self.total_disconnections,self.accelerometer_sensor, self.temperature_sensor,self.battery
self.accelerometer_sensor, self.temperature_sensor,self.battery

def get_time_seconds(self,disconnect_time):
self.time_seconds = round(disconnect_time / 1000 ,2)
#print("disconnected time in sec =",self.time_seconds)
return self.time_seconds

def get_connected_time(self,total_time,connected_time_sec):
self.connected_time = round(total_time - connected_time_sec,2)
#print("connected time=",self.connected_time)
return self.connected_time



def calculate_packetloss(self,expected_packet_count,rate,connect_time):
self.actual_count =float(connect_time* rate)
self.packet_loss = round(((self.actual_count - expected_packet_count)/self.actual_count)*100 ,2)
print("packet loss=",self.packet_loss)
return self.packet_loss

def get_packetloss(self):
self.List=self.read_file()
self.total_disconnections ,self.accelerometer_sensor, self.temperature_sensor,self.battery=self.total_packets_time()
#print(self.total_disconnections,self.accelerometer_sensor, self.temperature_sensor,self.battery)
self.time_seconds=self.get_time_seconds(self.time_diff)
self.connected_time=self.get_connected_time(self.total_time,self.time_seconds)
self.acc_packet_loss=self.calculate_packetloss(self.accelerometer_sensor,self.Accelerometer_rate,self.connected_time)
self.temp_packet_loss=self.calculate_packetloss(self.temperature_sensor,self.temp_rate,self.connected_time)
self.battery_packet_loss=self.calculate_packetloss(self.battery,self.battery_rate,self.connected_time)
print("\nTotal disconnections :",round(self.total_disconnections,2),"\nActual Connected time =",self.connected_time,"\nAccelerometer packet loss = ",self.acc_packet_loss,"\nTemperature packet loss = ",self.temp_packet_loss,"\nBattery packet loss = ",self.battery_packet_loss)

def input_testing(total_time,Accelerometer_rate,temp_rate,batterydata_rate):
if(total_time <= 0 ):
raise ValueError("Total time must be graeter than zero!!!!")
if(Accelerometer_rate <= 0):
Exception('lets see if this works')
if(temp_rate <= 0 ):
raise ValueError("temperature packet rate cannot be negative or zero")
if(batterydata_rate <=0):
raise ValueError("battery packet rate cannot be negative or zero")







total_disconnections=0
connected_time=0
acc_packet_loss=0
temp_packet_loss=0
battery_packet_loss=0

filename = input("enter log file path : ")
total_time = int(input("Enter the total time :"))


Accelerometer_rate = int(input("Enter rate at which accelerometr sends data per second : "))
temp_rate = float(input("temperature data packet rate per minute : "))
batterydata_rate = float(input("Battery data packet rate per minute : "))

input_testing(total_time,Accelerometer_rate,temp_rate,batterydata_rate)
temp_rate = temp_rate / 60
batterydata_rate = batterydata_rate/60

vSens = vSensCalculator(filename,total_time,Accelerometer_rate,temp_rate,batterydata_rate)
vSens.get_packetloss()

52 changes: 52 additions & 0 deletions Sanjana/test_assignment.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import assignment
import unittest



class UnitT(unittest.TestCase):

def setUp(self):
self.obj = assignment.vSensCalculator("data1.txt",58156,5,1,1)
self.test_read_file()


def test_read_file(self):
self.assertNotEqual(len(self.obj.read_file()),0)

def test_get_time_seconds(self):
ans=self.obj.get_time_seconds(1000)
self.assertEqual(ans,1)
ans=self.obj.get_time_seconds(10000)
self.assertEqual(ans,10)

def test_get_connected_time(self):
ans=self.obj.get_connected_time(1000,100)
self.assertEqual(ans,900)

def test_calculate_packetloss(self):
x=1/60
ans=self.obj.calculate_packetloss(882,x,52906.87)
self.assertEqual(ans,-0.02)

def test_calculate_packetloss(self):
ans=self.obj.calculate_packetloss(260030,5,52906.87)
self.assertEqual(ans,1.7)

def test_calculate_packetloss(self):
x=1/60
ans=self.obj.calculate_packetloss(883,x,52906.87)
self.assertEqual(ans,-0.14)

def test_total_packets_time(self):
disconnections,acc_count,temp_count,battery_count=self.obj.total_packets_time()
print(disconnections,acc_count,temp_count,battery_count)
self.assertEqual(disconnections,16)
self.assertEqual(temp_count,882)
self.assertEqual(battery_count,883)
self.assertEqual(acc_count,260030)

def test_input(self):
with self.assertRaises(Exception): assignment.input_testing(58156,0,1,1)

if __name__ == "__main__":
unittest.main()
85 changes: 85 additions & 0 deletions Sanjana/vSens Packet Loss calculator.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@

import json

class vSensCalculator:
def __init__(self,filename,time,acc_rate,temp_rate,battery_rate):
self.List = []
self.count=0
self.accelerometer_sensor=0
self.temperature_sensor=0
self.battery=0
self.total_disconnections=0
self.time_diff=0
self.actual_count=0
self.filename = filename
self.Accelerometer_rate = acc_rate
self.temp_rate=temp_rate
self.battery_rate=battery_rate
self.total_time = time

def read_file(self):
with open(self.filename) as file:
for l in file:
self.List.append(json.loads(l.strip()))

def total_packets_time(self):
flag = 0
index=0
for element in range(len(self.List)):
if(self.List[element]["PID"] =="998" ):
self.total_disconnections += 1
if(flag != 1):
flag=1
index=element
elif(self.List[element]["PID"] =="0"):
self.accelerometer_sensor += 1
elif(self.List[element]["PID"] =="1"):
self.temperature_sensor += 1
elif(self.List[element]["PID"] =="2"):
self.battery += 1
else:
if(flag==1):
self.time_diff = self.time_diff + (self.List[element]["TS"]-self.List[index]["TS"])
flag = 0

def get_time_seconds(self):
self.time_seconds = self.time_diff / 1000

def get_connected_time(self):
print(self.total_time,self.time_seconds)
self.connected_time = self.total_time - self.time_seconds

def calculate_packetloss(self,expected_packet_count,rate):
self.actual_count = float(self.connected_time * rate)
self.packet_loss = ((self.actual_count - expected_packet_count)/self.actual_count)*100
return self.packet_loss

def get_packetloss(self):
self.read_file()
self.total_packets_time()
self.get_time_seconds()
self.get_connected_time()
self.acc_packet_loss=self.calculate_packetloss(self.accelerometer_sensor,self.Accelerometer_rate)
self.temp_packet_loss=self.calculate_packetloss(self.temperature_sensor,self.temp_rate)
self.battery_packet_loss=self.calculate_packetloss(self.battery,self.battery_rate)
print("\nTotal disconnections :",self.total_disconnections,"\nActual Connected time =",self.connected_time,"\nAccelerometer packet loss = ",self.acc_packet_loss,"\nTemperature packet loss = ",self.temp_packet_loss,"\nBattery packet loss = ",self.battery_packet_loss)


total_disconnections=0
connected_time=0
acc_packet_loss=0
temp_packet_loss=0
battery_packet_loss=0

filename = input("enter log file path : ")
total_time = int(input("Enter the total time :"))
Accelerometer_rate = int(input("Enter rate at which accelerometr sends data per second : "))
temp_rate = float(input("temperature data packet rate per minute : "))
batterydata_rate = float(input("Battery data packet rate per minute : "))

temp_rate = temp_rate / 60
batterydata_rate = batterydata_rate/60

vSens = vSensCalculator(filename,total_time,Accelerometer_rate,temp_rate,batterydata_rate)
vSens.get_packetloss()