Esempio n. 1
0
def from_yaml_str(yaml_str, vars=None, *args, **kwargs):
  """Construct a Scenario from a YAML string.

  Args:
    yaml_str (basestring): YAML-formatted scenario description.
    *args: Arguments passed to Scenario __init__.
    **kwargs: Arguments passed to Scenario __init__.

  Returns:
    Scenario: A new scenario instance.
  """
  data = load_with_variables(yaml_str, variables=vars)
  scenario = Scenario(*args, **kwargs)
  scenario.yaml_str = yaml.dump(data, Dumper=yaml.CSafeDumper)
  if data.get("id"):
    scenario.id = data.get("id")
  scenario.name = _get(data, "name").strip()
  scenario.display_name = _get(data, "display_name").strip()
  scenario.summary = _get(data, "summary").strip()
  scenario.description = _get(data, "description").strip()
  scenario.estimated_runtime = _get(data, "estimated_runtime")
  scenario.tags = _get(data, "tags", [])
  scenario.vm_groups = _parse_section(scenario, data, "vms", VMGroup)
  scenario.workloads = _parse_section(scenario, data, "workloads", Workload)
  scenario.results_map = _parse_section(scenario, data, "results", BaseResult)
  scenario.vars = _get(data, "vars", {})
  for step, phase in _parse_steps(scenario, data):
    scenario.add_step(step, phase)
  return scenario
Esempio n. 2
0
 def test_scenario_target_config(self):
   scenario = Scenario(name="Fake Scenario")
   scenario.cluster = mock_cluster()
   scenario.cluster.name.return_value = "fake_cluster"
   vm_group = VMGroup(scenario, "nasty\nvg?nm /\t#$\\")
   mock_vms = [mock.Mock(spec=Vm) for _ in xrange(3)]
   mock_vms[0].vm_name.return_value = "mock_vm_0"
   mock_vms[1].vm_name.return_value = "mock_vm_1"
   mock_vms[2].vm_name.return_value = "mock_vm_2"
   mock_vms[0].vm_ip.return_value = "fake_addr_0"
   mock_vms[1].vm_ip.return_value = "fake_addr_1"
   mock_vms[2].vm_ip.return_value = None
   scenario.vm_groups = {"fake_vm_group": vm_group}
   with mock.patch.object(vm_group, "get_vms") as mock_get_vms:
     mock_get_vms.return_value = mock_vms
     ret = prometheus.scenario_target_config(scenario)
   expected = [
     {
       "labels": {
         "cluster_name": "fake_cluster",
         "instance": "mock_vm_0",
         "job": "xray",
         "scenario_display_name": "Fake Scenario",
         "scenario_id": str(scenario.id),
         "scenario_name": "Fake Scenario",
         "vm_group": "nasty\nvg?nm /\t#$\\",
       },
       "targets": [
         "fake_addr_0:9100",
       ],
     },
     {
       "labels": {
         "cluster_name": "fake_cluster",
         "instance": "mock_vm_1",
         "job": "xray",
         "scenario_display_name": "Fake Scenario",
         "scenario_id": str(scenario.id),
         "scenario_name": "Fake Scenario",
         "vm_group": "nasty\nvg?nm /\t#$\\",
       },
       "targets": [
         "fake_addr_1:9100",
       ],
     }
   ]
   self.assertEqual(ret, expected)
Esempio n. 3
0
  def test_power_on_with_cluster_using_only_a_subset_of_nodes(self):
    with open(gflags.FLAGS.cluster_config_path) as f:
      config = json.load(f)
    config["nodes"] = config["nodes"][:1]  # Keep only the first node.
    cluster = util.cluster_from_metis_config(config)
    cluster.update_metadata(False)
    scenario = Scenario(
      cluster=cluster,
      output_directory=environment.test_output_dir(self),
      goldimages_directory=gflags.FLAGS.curie_vmdk_goldimages_dir)

    scenario.vm_groups = {
      self.group_name: VMGroup(scenario, self.group_name,
                               template="ubuntu1604",
                               template_type="DISK",
                               count_per_cluster=1)}
    vms = steps.vm_group.CloneFromTemplate(scenario, self.group_name)()
    steps.vm_group.PowerOn(scenario, self.group_name)()
    for vm in self.cluster.find_vms([vm.vm_name() for vm in vms]):
      self.assertTrue(vm.is_powered_on())
      self.assertTrue(vm.is_accessible())