sábado, 1 de dezembro de 2007

Script em python para benchmark em sistemas de arquivos

O script abaixo foi idealizado como ferramenta de benchmark para testar a criação de arquivos de tamanhos de 1KB, 1MB ou 1GB em diferentes sistemas de arquivos.

# -*- coding: iso-8859-1 -*-
#Autor: George Kihoma de Britto Lopes
#mail:kyowa_at_bol.com.br
#imponderavel.blogspot.com

import time
import sys
import os


def limpa_tela():
if sys.platform != "win32":
os.system("clear")
else:
os.system("cls")

def criar_arquivo(arquivo,tamanho):
if tamanho == 'KB':
tam=1024
elif tamanho == 'MB':
tam=1024*1024
elif tamanho == 'GB':
tam=1024*1024*1024
i=0
tempo1=time.time()
arq=open(arquivo,"w")
while i < tam:
arq.write("0")
i=i+1
arq.close()
tempo2=time.time()
tempox=tempo2-tempo1
arq_log=open("touch.log","w")
arq_log.write("\t\t-=-=-=-RESULTS-=-=-=-\n"+"\t\tFile created = "+arquivo+"\n"+"\t\tSize of "+str(tam/1024)+" KB\n"+"\t\tTime spent = "+str(tempox)+" seconds\n"+"\t\t-=-=-=-=-=-=-=-=-=-=-=-\n\n")
arq_log.write("\t\t-=-=-=-RESULTADOS-=-=-=-\n"+"\t\tArquivo criado = "+arquivo+"\n"+"\t\tTamanho de "+str(tam/1024)+" KB\n"+"\t\tTempo gasto "+str(tempox)+ " segundos\n"+"\t\t-=-=-=-=-=-=-=-=-=-=-=-\n\n")
arq_log.close()
print "\n\n"
print "\t\t-=-=-=-RESULTS-=-=-=-\n"+"\t\tFile created = "+arquivo+"\n"+"\t\tSize of "+str(tam/1024)+" KB\n"+"\t\tTime spent = "+str(tempox)+" seconds\n"+"\t\t-=-=-=-=-=-=-=-=-=-=-=-\n\n"
print "\t\t-=-=-=-RESULTADOS-=-=-=-\n"+"\t\tArquivo criado = "+arquivo+"\n"+"\t\tTamanho de "+str(tam/1024)+" KB\n"+"\t\tTempo gasto "+str(tempox)+ " segundos\n"+"\t\t-=-=-=-=-=-=-=-=-=-=-=-\n\n"

def ajuda():
limpa_tela()
print "\n*********************************** HELP *************************************"
print "This program requires 2 parameters, the name of the file to be created and the\nsize of it (1 KB or 1MB or 1GB). At the end the program will create an output\nlog file named touch.log which contains the time taken in seconds to create\nthe test file. Each of these parameters must be separeted by a single space. \n\nEx: python touch-plus.py file.txt MB log.txt\n\nFor author info type python touch_plus.py about"
print "\n*********************************** AJUDA ************************************"
print "Este programa necessita de 2 parametros para seu correto funcionamento, o\nnome do arquivo a ser criado e o tamanho do arquivo a ser criado (1 KB ou 1MB\nou 1GB). Ao fnal do programa sera criado um arquivo de saida chamado touch.log,\no qual contem o tempo gasto em segundos para criar o arquivo de teste.Cada\nparametro deve ser separado por um espaco simples.\n\nEx: python touch-plus.py file.txt 4 MB log.txt\n\nPara info sobre o autor digite python touch_plus.py sobre"

def info():
limpa_tela()
print "\n*******************************************************************************"
print "* Autor: George Kihoma de Britto Lopes *"
print "* Mail:kyowa_at_bol.com.br *"
print "* Program Version 1.0 *"
print "*******************************************************************************"

try:
if ((sys.argv[1]=="help") or (sys.argv[1]=="--help") or (sys.argv[1]=="-h") or (sys.argv[1]=="h")):
ajuda();
elif ((sys.argv[1]=="sobre") or (sys.argv[1]=="about")):
info()
else:
criar_arquivo(sys.argv[1],sys.argv[2])
except:
ajuda()