Ejemplo n.º 1
0
  def __init__(self, geradorDeChegadasDeEntidades,
                     geradorDeTempoEntreFalhasServidorUm,
                     geradorDeTempoEntreFalhasServidorDois,
                     geradorDeTempoDeFalhaServidorUm,
                     geradorDeTempoDeFalhaServidorDois,
                     geradorDeTempoDeServicoServidorUm, 
                     geradorDeTempoDeServicoServidorDois,
                     filaDoServidorUm,
                     filaDoServidorDois, 
                     loglist):
    
    init_sistema.iniciarContadores(self)
    init_sistema.iniciarCalculadoresDeMedia(self)
    init_sistema.iniciarSomadoresDeTempoTotal(self)
    init_sistema.iniciarComponentesDosServidores(self, filaDoServidorUm, filaDoServidorDois)
    self._relogio = Relogio()   
    self._listaDeEventosFuturos = ListaDeEventosFuturos()
    self._historicoDeChegadaDeEntidades = []
    self._historicoDeSaidaDeEntidades = []
    self._tempoRestanteDeSimulacao = 0

    self._geradorDeChegadasDeEntidades = geradorDeChegadasDeEntidades
    self._geradorDeTempoEntreFalhasServidorUm = geradorDeTempoEntreFalhasServidorUm
    self._geradorDeTempoEntreFalhasServidorDois = geradorDeTempoEntreFalhasServidorDois
    
    self._geradorDeTempoDeServicoServidorUm = geradorDeTempoDeServicoServidorUm
    self._geradorDeTempoDeServicoServidorDois = geradorDeTempoDeServicoServidorDois
    
    self._geradorDeTempoDeFalhaServidorUm   = geradorDeTempoDeFalhaServidorUm
    self._geradorDeTempoDeFalhaServidorDois = geradorDeTempoDeFalhaServidorDois
    self._loglist = loglist
    self._simulacaoAcabou = True
    self._tempoTotalDeSimulacao = 0
Ejemplo n.º 2
0
class Simulador():
  
  def __init__(self, geradorDeChegadasDeEntidades,
                     geradorDeTempoEntreFalhasServidorUm,
                     geradorDeTempoEntreFalhasServidorDois,
                     geradorDeTempoDeFalhaServidorUm,
                     geradorDeTempoDeFalhaServidorDois,
                     geradorDeTempoDeServicoServidorUm, 
                     geradorDeTempoDeServicoServidorDois,
                     filaDoServidorUm,
                     filaDoServidorDois, 
                     loglist):
    
    init_sistema.iniciarContadores(self)
    init_sistema.iniciarCalculadoresDeMedia(self)
    init_sistema.iniciarSomadoresDeTempoTotal(self)
    init_sistema.iniciarComponentesDosServidores(self, filaDoServidorUm, filaDoServidorDois)
    self._relogio = Relogio()   
    self._listaDeEventosFuturos = ListaDeEventosFuturos()
    self._historicoDeChegadaDeEntidades = []
    self._historicoDeSaidaDeEntidades = []
    self._tempoRestanteDeSimulacao = 0

    self._geradorDeChegadasDeEntidades = geradorDeChegadasDeEntidades
    self._geradorDeTempoEntreFalhasServidorUm = geradorDeTempoEntreFalhasServidorUm
    self._geradorDeTempoEntreFalhasServidorDois = geradorDeTempoEntreFalhasServidorDois
    
    self._geradorDeTempoDeServicoServidorUm = geradorDeTempoDeServicoServidorUm
    self._geradorDeTempoDeServicoServidorDois = geradorDeTempoDeServicoServidorDois
    
    self._geradorDeTempoDeFalhaServidorUm   = geradorDeTempoDeFalhaServidorUm
    self._geradorDeTempoDeFalhaServidorDois = geradorDeTempoDeFalhaServidorDois
    self._loglist = loglist
    self._simulacaoAcabou = True
    self._tempoTotalDeSimulacao = 0
    
  def iniciarSimulacao(self, tempoTotalDeSimulacao):
    listaDeChegadas = self._geradorDeChegadasDeEntidades.obterListaDeChegadasDasEntidades(tempoTotalDeSimulacao, 0)
    self._simulacaoAcabou = False
    
    while (listaDeChegadas.possuiEvento()):
      evento = listaDeChegadas.obterProximoEvento()
      self._listaDeEventosFuturos.adcionarEvento(evento)
    
    self._tempoRestanteDeSimulacao += tempoTotalDeSimulacao
    self._tempoTotalDeSimulacao += tempoTotalDeSimulacao
    self.simulaUmPasso()
      
  def simulaUmPasso(self):
    if(self._simulacaoAcabou):
      return False
    
    proximoEvento = self._listaDeEventosFuturos.obterProximoEvento()    
    avancoDeTempo = 0
    
    if(proximoEvento != None):
      if(proximoEvento.obterTempoQueOcorre() > self._relogio.obterEmMinutos()):
        avancoDeTempo = proximoEvento.obterTempoQueOcorre() - self._relogio.obterEmMinutos()
    
    
    checa_servidores.checarSeServidorUmEntraEmFalha(self, avancoDeTempo)
    checa_servidores.checarSeServidorDoisEntraEmFalha(self, avancoDeTempo)
    checa_servidores.checarSeAlgumServidorSaiDaFalha(self, avancoDeTempo)
 
    checa_servidores.checarSeServidorUmTerminouOServico(self, avancoDeTempo)
    checa_servidores.checarSeServidorDoisTerminouOServico(self, avancoDeTempo)
    
    if(proximoEvento != None):
      if(proximoEvento.obterTipo() == TipoDoEvento.ENTRADA):
        self._historicoDeChegadaDeEntidades.append(proximoEvento)
        trata_eventos.tratarEventoDeEntrada(self, proximoEvento)
    
      elif(proximoEvento.obterTipo() == TipoDoEvento.SAIDA):
        trata_eventos.tratarEventoDeSaida(self, proximoEvento)
      
      elif(proximoEvento.obterTipo() == TipoDoEvento.FIM_DA_SIMULACAO):
        self._relogio.adiantarMinutos(avancoDeTempo)
        self._loglist.append(self._obterTempoFormatado() + 'Simulacao terminou.')
        self._simulacaoAcabou = True
        
      
    self._relogio.adiantarMinutos(avancoDeTempo)
    if(proximoEvento == None):
      self._tempoRestanteDeSimulacao -= 1
    
    self._tempoRestanteDeSimulacao -= avancoDeTempo
    if(self._tempoRestanteDeSimulacao < 0):
      self._listaDeEventosFuturos.adcionarEvento(Evento(TipoDoEvento.FIM_DA_SIMULACAO, self._relogio.obterEmMinutos()))  
    
    self._amostrasEntidadesEsperandoNaFilaUm.append(self._filaDoServidorUm.obterQuantasEntidadesPossui())
    self._amostrasEntidadesEsperandoNaFilaDois.append(self._filaDoServidorDois.obterQuantasEntidadesPossui())
    
    return True
     
     
  def _obterTempoFormatado(self):
    return 'Tempo no relogio: '+ str(self._relogio.obterEmMinutos()) + ' min '
  
  def gerarRelatorioDaSimulacao(self, nomeDoArquivoDoRelatorio):
    relatorio_sistema.gerarRelatorio(self, nomeDoArquivoDoRelatorio)

  def gerarRelatorioParcialDaSimulacao(self, nomeDoArquivoDoRelatorio):
    relatorio_sistema.gerarRelatorioParcial(self, nomeDoArquivoDoRelatorio)
Ejemplo n.º 3
0
class TesteRelogio(unittest.TestCase):
  
  def setUp(self):
    self.relogioEmZero = Relogio()
    self.umDiaEmMinutos = 1440.0
    self.umDiaEmHoras = 24.0
    self.umDiaEmSegundos = 86400.0
    
  def testSeNaoForPassadoUmTempoInicialIniciaEmZero(self):
    relogioInicial = Relogio()
    self.assertEqual(0.0, relogioInicial.obterEmMinutos())
    self.assertEqual(0.0, relogioInicial.obterEmDias())
    self.assertEqual(0.0, relogioInicial.obterEmHoras())
    self.assertEqual(0.0, relogioInicial.obterEmSegundos())
    
    
  def testAposAdiantadoOTempoAtualSeraOTempoAtualMaisOAdiantamento(self):
    self.relogioEmZero.adiantarMinutos(15.0)
    self.assertEqual(15.0, self.relogioEmZero.obterEmMinutos())
    self.relogioEmZero.adiantarMinutos(15.0)
    self.assertEqual(30.0, self.relogioEmZero.obterEmMinutos())
    self.relogioEmZero.adiantarMinutos(10.0)
    self.assertEqual(40.0, self.relogioEmZero.obterEmMinutos())
    self.relogioEmZero.adiantarMinutos(5.5)
    self.assertEqual(45.5, self.relogioEmZero.obterEmMinutos())
    
  def testPodeAdiantarEmMinutosEObterEmSegundos(self):
    self.relogioEmZero.adiantarMinutos(self.umDiaEmMinutos)
    self.assertEqual(self.umDiaEmSegundos, self.relogioEmZero.obterEmSegundos())
    
  def testPodeAdiantarEmMinutosEObterEmHoras(self):
    self.relogioEmZero.adiantarMinutos(self.umDiaEmMinutos)
    self.assertEqual(self.umDiaEmHoras, self.relogioEmZero.obterEmHoras())
    
  def testPodeAdiantarEmMinutosEObterEmDias(self):
    self.relogioEmZero.adiantarMinutos(self.umDiaEmMinutos)
    self.assertEqual(1.0, self.relogioEmZero.obterEmDias())
    
    
    
  def testPodeAdiantarEmSegundosEObterEmMinutos(self):
    self.relogioEmZero.adiantarSegundos(self.umDiaEmSegundos)
    self.assertEqual(self.umDiaEmMinutos, self.relogioEmZero.obterEmMinutos())
    
  def testPodeAdiantarEmSegundosEObterEmHoras(self):
    self.relogioEmZero.adiantarSegundos(self.umDiaEmSegundos)
    self.assertEqual(self.umDiaEmHoras, self.relogioEmZero.obterEmHoras())
    
  def testPodeAdiantarEmSegundosEObterEmDias(self):
    self.relogioEmZero.adiantarSegundos(self.umDiaEmSegundos)
    self.assertEqual(1.0, self.relogioEmZero.obterEmDias())
    
  
  
  def testPodeAdiantarEmHorasEObterEmMinutos(self):
    self.relogioEmZero.adiantarHoras(self.umDiaEmHoras)
    self.assertEqual(self.umDiaEmMinutos, self.relogioEmZero.obterEmMinutos())
    
  def testPodeAdiantarEmHorasEObterEmSegundos(self):
    self.relogioEmZero.adiantarHoras(self.umDiaEmHoras)
    self.assertEqual(self.umDiaEmSegundos, self.relogioEmZero.obterEmSegundos())
    
  def testPodeAdiantarEmHorasEObterEmDias(self):
    self.relogioEmZero.adiantarHoras(self.umDiaEmHoras)
    self.assertEqual(1.0, self.relogioEmZero.obterEmDias())
    
    
    
  def testPodeAdiantarEmDiasEObterEmMinutos(self):
    self.relogioEmZero.adiantarDias(1.0)
    self.assertEqual(self.umDiaEmMinutos, self.relogioEmZero.obterEmMinutos())
    
  def testPodeAdiantarEmDiasEObterEmSegundos(self):
    self.relogioEmZero.adiantarDias(1.0)
    self.assertEqual(self.umDiaEmSegundos, self.relogioEmZero.obterEmSegundos())
    
  def testPodeAdiantarEmDiasEObterEmHoras(self):
    self.relogioEmZero.adiantarDias(1.0)
    self.assertEqual(self.umDiaEmHoras, self.relogioEmZero.obterEmHoras())
Ejemplo n.º 4
0
 def setUp(self):
   self.relogioEmZero = Relogio()
   self.umDiaEmMinutos = 1440.0
   self.umDiaEmHoras = 24.0
   self.umDiaEmSegundos = 86400.0
Ejemplo n.º 5
0
 def testSeNaoForPassadoUmTempoInicialIniciaEmZero(self):
   relogioInicial = Relogio()
   self.assertEqual(0.0, relogioInicial.obterEmMinutos())
   self.assertEqual(0.0, relogioInicial.obterEmDias())
   self.assertEqual(0.0, relogioInicial.obterEmHoras())
   self.assertEqual(0.0, relogioInicial.obterEmSegundos())