def get_migration_statistic(vm): last_transfer_mem = 0 transfered_mem = 0 mig_stat = utils.Statistic() for _ in range(30): o = vm.monitor.info("migrate") warning_msg = ("Migration already ended. Migration speed is" " probably too high and will block vm while" " filling its memory.") fail_msg = ("Could not determine the transferred memory from" " monitor data: %s" % o) if isinstance(o, str): if "status: active" not in o: raise error.TestWarn(warning_msg) try: transfered_mem = int(get_mig_speed.search(o).groups()[0]) except (IndexError, ValueError): raise error.TestFail(fail_msg) else: if o.get("status") != "active": raise error.TestWarn(warning_msg) try: transfered_mem = o.get("ram").get("transferred") / (1024) except (IndexError, ValueError): raise error.TestFail(fail_msg) real_mig_speed = (transfered_mem - last_transfer_mem) / 1024 last_transfer_mem = transfered_mem logging.debug("Migration speed: %s MB/s" % (real_mig_speed)) mig_stat.record(real_mig_speed) time.sleep(1) return mig_stat
def test_simple_functionality(self): stat = utils.Statistic() stat.record(5) stat.record(15) stat.record(10) self.assertEqual(10, stat.get_average()) self.assertEqual(5, stat.get_min()) self.assertEqual(15, stat.get_max())