mobile-offloading/energy_model/file_organizer.py

103 lines
3.2 KiB
Python

import sys
import os
import re
import subprocess
import collections
from energy_analyzer import *
sys.path.append("modules")
try:
from analyzer import *
except:
raise
def fetchfile(foldername):
subprocess.call(
'./pullTarsFromPhone.sh {0}'.format(foldername), shell=True)
def load_folder(
mydict,
foldername,
folderbase):
rootfolder = '{0}/{1}'.format(folderbase, foldername)
folders = [f for f in os.listdir(rootfolder)
if os.path.isdir('{0}/{1}'.format(rootfolder, f))]
while len(folders) > 0:
folder = folders.pop()
folder_path = '{0}/{1}'.format(rootfolder, folder)
thrpt_folders = [f for f in os.listdir(folder_path)
if os.path.isdir('{0}/{1}'.format(folder_path, f))]
for thrpt in thrpt_folders:
thrpt_folder_path = '{0}/{1}'.format(folder_path, thrpt)
files = [f for f in os.listdir(thrpt_folder_path)
if '.tar.gz' in f]
mydict[folder][thrpt] = files
# reorganize files
files = os.listdir(rootfolder)
files = sorted([file for file in files if '.tar.gz' in file])
for file in files:
# print file
tmp = file.split('_')
mode = tmp[0]
method = '{0}_{1}'.format(tmp[1], tmp[2])
filesize = tmp[3]
repeats = tmp[4][:-7]
thrpt = tmp[6]
mydict[method][thrpt].append(file)
for method in mydict.keys():
method_folder = '{0}/{1}'.format(rootfolder, method)
if not os.path.isdir(method_folder):
os.mkdir(method_folder)
for thrpt in mydict[method].keys():
thrpt_folder = '{0}/{1}'.format(method_folder, thrpt)
if not os.path.isdir(thrpt_folder):
os.mkdir(thrpt_folder)
subprocess.call('rm {0}/*.csv'.format(thrpt_folder),
shell=True)
for file in mydict[method][thrpt]:
if os.path.isfile('{0}/{1}'.format(rootfolder, file)):
subprocess.call(
'mv {0}/{1} {2}'.format(
rootfolder, file, thrpt_folder),
shell=True)
subprocess.call(
'cd {0} && tar -xzf {0}/{1}'.format(
thrpt_folder, file),
shell=True)
# construct dict
mydict = collections.defaultdict(lambda: collections.defaultdict(list))
# folder name
foldername = 'initial_comparison'
folderbase = '/Users/yanzi/GDrive/UCSB/Projects/Offloading_2017/Data/'
# get files
# fetchfile(foldername)
# load
load_folder(mydict, foldername, folderbase)
DEBUG = False
logger = EmptyLogger("App", isDebugging=DEBUG, printout=True)
# remoteIP = '128.111.68.220'
remoteIP = '192.168.2.1'
# sizeOptions = [1, 5, 10, 20, 50, 100] # MB
sizeOptions = [None] # MB
myAnalyzer = EnergyAnalyzer(
"shamu", isDebugging=DEBUG, unit="mW", logger=logger)
for method in mydict.keys():
for thrpt in mydict[method].keys():
folder = '{0}/{1}/{2}/{3}'.format(
folderbase, foldername, method, thrpt)
# analyzer obj
myAnalyzer.output_path = folder
analyzeit(logger, folder, myAnalyzer, remoteIP, sizeOptions)