print test return None if __name__ == '__main__': if len(sys.argv) < 2: s = socket.socket(socket.AF_INET) s.connect(('www.fub.it', 80)) ip = s.getsockname()[0] s.close() nap = '193.104.137.133' TOT = 10 import sysmonitor dev = sysmonitor.getDev() t1 = Tester(dev, Host(ip = nap), 'nemesys', '4gc0m244') for i in range(1, TOT + 1): logger.info('Test Download %d/%d' % (i, TOT)) test = t1.testftpdown('/download/1000.rnd') logger.info(test) for i in range(1, TOT + 1): logger.info('Test Upload %d/%d' % (i, TOT)) test = t1.testftpup(2048, '/upload/r.raw') logger.info(test) for i in range(1, TOT + 1): logger.info('\nTest Ping %d/%d' % (i, TOT)) test = t1.testping()
print test return None if __name__ == '__main__': if len(sys.argv) < 2: s = socket.socket(socket.AF_INET) s.connect(('www.fub.it', 80)) ip = s.getsockname()[0] s.close() nap = '193.104.137.133' TOT = 10 import sysmonitor dev = sysmonitor.getDev() t1 = Tester(dev, Host(ip=nap), 'nemesys', '4gc0m244') for i in range(1, TOT + 1): logger.info('Test Download %d/%d' % (i, TOT)) test = t1.testftpdown('/download/1000.rnd') logger.info(test) for i in range(1, TOT + 1): logger.info('Test Upload %d/%d' % (i, TOT)) test = t1.testftpup(2048, '/upload/r.raw') logger.info(test) for i in range(1, TOT + 1): logger.info('\nTest Ping %d/%d' % (i, TOT)) test = t1.testping()
def _dotask(self, task): ''' Esegue il complesso di test prescritti dal task entro il tempo messo a disposizione secondo il parametro tasktimeout ''' # TODO Mischiare i test: down, up, ping, down, up, ping, ecc... if not self._isprobe and self._progress != None: made = self._progress.howmany(datetime.fromtimestamp(timestampNtp()).hour) if made >= MAX_MEASURES_PER_HOUR: self._updatestatus(status.PAUSE) return bandwidth_sem.acquire() # Acquisisci la risorsa condivisa: la banda logger.info('Inizio task di misura verso il server %s' % task.server) # Area riservata per l'esecuzione della misura # -------------------------------------------------------------------------- # TODO Inserire il timeout complessivo di task (da posticipare) try: self._updatestatus(status.PLAY) # Profilazione iniziale del sistema # ------------------------ base_error = 0 if self._profile_system() != 0: base_error = 50000 # ip = sysmonitor.getIp(task.server.ip, 21) dev = sysmonitor.getDev(task.server.ip, 21) t = Tester(dev = dev, host = task.server, timeout = self._testtimeout, username = self._client.username, password = self._client.password) # TODO Pensare ad un'altra soluzione per la generazione del progressivo di misura start = datetime.fromtimestamp(timestampNtp()) id = start.strftime('%y%m%d%H%M') m = Measure(id, task.server, self._client, __version__, start.isoformat()) # Set task timeout alarm # signal.alarm(self._tasktimeout) # Testa gli ftp down # ------------------------ i = 1; while (i <= task.download): self._updatestatus(status.Status(status.PLAY, "Esecuzione Test %d su %d" % (i, task.download + task.upload + task.ping))) try: # Profilazione del sistema error = self._profile_system(sysmonitor.CHECK_ALL); # Esecuzione del test logger.info('Starting ftp download test (%s) [%d]' % (task.ftpdownpath, i)) test = t.testftpdown(task.ftpdownpath) # Gestione degli errori nel test if error > 0 or base_error > 0: test.seterrorcode(error + base_error) # Analisi da contabit self._test_gating(test, DOWN) # Salvataggio della misura logger.debug('Download result: %.3f' % test.value) logger.debug('Download error: %d, %d, %d' % (base_error, error, test.errorcode)) m.savetest(test) i = i + 1 # Prequalifica della linea if (test.value > 0): bandwidth = int(round(test.bytes * 8 / test.value)) logger.debug('Banda ipotizzata in download: %d' % bandwidth) task.update_ftpdownpath(bandwidth) sleep(1) # Cattura delle eccezioni durante la misura except Exception as e: if not datetime.fromtimestamp(timestampNtp()).hour == start.hour: raise e else: logger.warning('Misura sospesa per eccezione %s' % e) self._updatestatus(status.Status(status.ERROR, 'Misura sospesa per errore: %s Aspetto %d secondi prima di proseguire la misura.' % (e, TIME_LAG))) sleep(TIME_LAG) logger.info('Misura in ripresa dopo sospensione. Test download %d di %d' % (i, task.download)) self._updatestatus(status.Status(status.PLAY, 'Proseguo la misura. Misura in esecuzione')) # Testa gli ftp up i = 1; while (i <= task.upload): self._updatestatus(status.Status(status.PLAY, "Esecuzione Test %d su %d" % (i + task.download, task.download + task.upload + task.ping))) try: # Profilazione del sistema error = self._profile_system(sysmonitor.CHECK_ALL); # Esecuzione del test logger.debug('Starting ftp upload test (%s) [%d]' % (task.ftpuppath, i)) test = t.testftpup(self._client.profile.upload * task.multiplier * 1000 / 8, task.ftpuppath) # Gestione degli errori nel test if error > 0 or base_error > 0: test.seterrorcode(error + base_error) # Analisi da contabit self._test_gating(test, UP) # Salvataggio del test nella misura logger.debug('Upload result: %.3f' % test.value) logger.debug('Upload error: %d, %d, %d' % (base_error, error, test.errorcode)) m.savetest(test) i = i + 1 # Prequalifica della linea if (test.value > 0): bandwidth = int(round(test.bytes * 8 / test.value)) logger.debug('Banda ipotizzata in upload: %d' % bandwidth) self._client.profile.upload = bandwidth sleep(1) # Cattura delle eccezioni durante la misura except Exception as e: if not datetime.fromtimestamp(timestampNtp()).hour == start.hour: raise e else: logger.warning('Misura sospesa per eccezione %s' % e) self._updatestatus(status.Status(status.ERROR, 'Misura sospesa per errore: %s Aspetto %d secondi prima di proseguire la misura.' % (e, TIME_LAG))) sleep(TIME_LAG) logger.info('Misura in ripresa dopo sospensione. Test upload %d di %d' % (i, task.upload)) self._updatestatus(status.Status(status.PLAY, 'Proseguo la misura. Misura in esecuzione')) # Testa i ping i = 1 while (i <= task.ping): self._updatestatus(status.Status(status.PLAY, "Esecuzione Test %d su %d" % (i + task.download + task.upload, task.download + task.upload + task.ping))) try: # Profilazione del sistema error = self._profile_system(sysmonitor.CHECK_MEDIUM); # Esecuzione del test logger.debug('Starting ping test [%d]' % i) test = t.testping() # Gestione degli errori nel test if error > 0 or base_error > 0: test.seterrorcode(error + base_error) # Salvataggio del test nella misura logger.debug('Ping result: %.3f' % test.value) logger.debug('Ping error: %d, %d, %d' % (base_error, error, test.errorcode)) m.savetest(test) i = i + 1 if ((i - 1) % task.nicmp == 0): sleep(task.delay) # Cattura delle eccezioni durante la misura except Exception as e: if not datetime.fromtimestamp(timestampNtp()).hour == start.hour: raise e else: logger.warning('Misura sospesa per eccezione %s' % e) self._updatestatus(status.Status(status.ERROR, 'Misura sospesa per errore: %s Aspetto 10 secondi prima di proseguire la misura.' % e)) sleep(10) logger.info('Misura in ripresa dopo sospensione. Test ping %d di %d' % (i, task.ping)) self._updatestatus(status.Status(status.PLAY, 'Proseguo la misura. Misura in esecuzione')) # Unset task timeout alarm # signal.alarm(0) # Spedisci il file al repository delle misure sec = datetime.fromtimestamp(timestampNtp()).strftime('%S') f = open('%s/measure_%s%s.xml' % (self._outbox, m.id, sec), 'w') f.write(str(m)) # Aggiungi la data di fine in fondo al file f.write('\n<!-- [finished] %s -->' % datetime.fromtimestamp(timestampNtp()).isoformat()) f.close() if (not self._local): upload = self._upload(f.name) if upload: self._updatestatus(status.Status(status.OK, 'Misura terminata con successo.')) else: self._updatestatus(status.Status(status.ERROR, 'Misura terminata ma un errore si è verificato durante il suo invio.')) else: self._updatestatus(status.Status(status.OK, 'Misura terminata.')) logger.info('Fine task di misura.') except RuntimeWarning: self._updatestatus(status.Status(status.ERROR, 'Misura interrotta per timeout.')) logger.warning('Timeout during task execution. Time elapsed > %1f seconds ' % self._tasktimeout) except Exception as e: logger.error('Task interrotto per eccezione durante l\'esecuzione di un test: %s' % e) self._updatestatus(status.Status(status.ERROR, 'Misura interrotta. %s Attendo %d secondi' % (e, self._polling))) bandwidth_sem.release() # Rilascia la risorsa condivisa: la banda