'''
Created on 03/01/2012
@author: R. Valin
'''
import matplotlib.pyplot as plt
import time
#import os
import random
from exp.ea import experiment_type as expt
from exp.ea import ea_bonfire as ea
"""############################################
#Generacion aleatoria de experimentos #
##############################################"""
#Lectura de datos del histograma de envio
#
dire='/home/cesga/bonfire/workspace/Bonfire/exp/dis'
print (dire + '/submit_time.csv')
file1 = open(dire + '/submit_time_norm.csv', 'r')
#Leemos ficheros estadisticas
sub_prob = file1.readlines()
file1.close()
#Crea una lista con los valores que lee del fichero
submit_prob = []
for a in sub_prob:
submit_prob.append(float(a.split(',')[1]))
#print(submit_prob)
#Semilla para random si no pones nada en seed coge el tiempo del sistema
random.seed()
print len(sub_prob)
#Prueba de que la lectura de datos es correcta
#b=0
#for a in submit_prob:
# b=b+a
#print ('Prob total', b)
#Asignacion del numero de trabajos cada media hora
jobs = 0
i = 0
#Inicializa prob
prob = 0
#Trabajos totales que quieres enviar
total_jobs = 100
envio = [0 for x in range(len(submit_prob))]
for a in range(total_jobs):
#Probabilidad de envio en una hora dada
prob_envio = random.random()
#Con este algoritmo determinamos la hora (o el bin del histograma)
while (prob < prob_envio and prob_envio > prob + submit_prob[i + 1]):
i = i + 1
#print (i)
prob = prob + submit_prob[i]
#Vector de trabajos a enviar por hora
if (i <= len(submit_prob)):
envio[i] = envio[i] + 1
else:
print('Me paso de indice')
#print prob_envio, prob, prob+submit_prob[i+1]
#Inicializamos variables para la siguiente iteracion
i = 0
prob = submit_prob[0]
#plt.bar(range(1,49), envio, 1)
#plt.show()
file2=open('sub.csv', 'w')
for sub in envio:
file2.write(str(sub)+'\n')
file2.close()
"""################################################################
# Envio de experimentos #
###################################################################"""
#Descripcion del trabajo en Json
#exp={'description': 'Experiment description',
# 'duration': 120,
# 'name': 'My Experiment',
# 'resources': [{'compute': {'name': 'JSON-COMPUTE-TEST',
# 'description': 'A description of the compute.',
# 'instanceType': 'small',
# 'locations': ['fr-inria'],
# 'resources':[{'storage': '@BonFIRE Debian Squeeze v3'},{'network':'@BonFIRE WAN'}]}}]}
#Indicamos la lista de sites a la que queremos enviar, la duracion de los experimentos
# y nos devuelve una lista con stings en json con la definicion del experimento
#locations=['be-ibbt','fr-inria','uk-hplabs','uk-uedin']
#duration = 120
#locations = ['uk-uedin']
#exp, info_instance, info_storage, info_location = expt.json_exp(locations, duration)
#
#multi = 10
#
#for i in exp:
# print i
# m=str(i)
# for j in range(10):
# save(locations)
# location=info_location[m]
# instance=info_instance[m]
# store=info_storage[m]
# ea.ea_bf(i,instance,store,location)
#time.sleep(float(130))