예제 #1
0
def test_transformation_cases(tmpdir):
  print("Starting transformation test cases")
  for test_case in list(glob.glob('topology/input/*yml')):
    print("Test case: %s" % test_case)
    topology = run_test(test_case)

    if topology.defaults.get("inventory"):
      print("Writing inventory... %s" % topology.defaults.inventory)
      ansible.ansible_inventory(topology,tmpdir+"/extra/hosts.yml",topology.defaults.get("inventory").replace("dump",""))
      ansible.ansible_config(tmpdir+"/ansible.cfg",tmpdir+"/hosts.yml")
      if topology.defaults.inventory == "dump":
        ansible.dump(topology)

    if topology.defaults.get("Output"):
      for output_format in topology.defaults.get("Output"):
        output_module = _TopologyOutput.load(output_format,topology.defaults.outputs[output_format])
        if output_module:
          output_module.write(Box(topology))
        else:
          common.error('Unknown output format %s' % output_format,common.IncorrectValue,'create')

    result = utils.transformation_results_yaml(topology)
    exp_test_case = "topology/expected/"+os.path.basename(test_case)
    expected = pathlib.Path(exp_test_case).read_text()
    if result != expected:
      print("Test case: %s FAILED" % test_case)
      sys.stdout.writelines(
        difflib.unified_diff(
          expected.splitlines(keepends=True),
          result.splitlines(keepends=True),
          fromfile='expected',tofile='result'))

    assert result == expected
    print("... succeeded, string length = %d" % len(result))
예제 #2
0
def test_transformation_cases(tmpdir):
  print("Starting transformation test cases")
  for test_case in list(glob.glob('topology/input/*yml')):
    print("Test case: %s" % test_case)
    topology = run_test(test_case)

    if topology.defaults.get("inventory"):
      print("Writing inventory... %s" % topology.defaults.inventory)
      ansible.ansible_inventory(topology,tmpdir+"/extra/hosts.yml",topology.defaults.get("inventory").replace("dump",""))
      ansible.ansible_config(tmpdir+"/ansible.cfg",tmpdir+"/hosts.yml")
      if topology.defaults.inventory == "dump":
        ansible.dump(topology)

    result = utils.transformation_results_yaml(topology)
    exp_test_case = "topology/expected/"+os.path.basename(test_case)
    expected = pathlib.Path(exp_test_case).read_text()
    if result != expected:
      sys.stdout.writelines(
        difflib.context_diff(
          expected.splitlines(keepends=True),
          result.splitlines(keepends=True),
          fromfile='expected',tofile='result'))

    assert result == expected
    print("... succeeded, string length = %d" % len(result))
예제 #3
0
def test_transformation_cases():
    print("Starting transformation test cases")
    for test_case in list(glob.glob('topology*yml')):
        print("Test case: %s" % test_case)
        topology = run_test(test_case)

        result = utils.transformation_results_yaml(topology)
        expected = pathlib.Path('exp-' + test_case).read_text()
        assert result == expected
        print("... succeeded, string length = %d" % len(result))
예제 #4
0
def main():
    args = parse()
    topology = read_topology.load(args.topology, None, args.defaults)
    common.exit_on_error()
    augment.main.transform(topology)
    common.exit_on_error()

    result = utils.transformation_results_yaml(topology)
    expected = pathlib.Path('exp-' + args.topology).read_text()
    if result == expected:
        print("Results match")
    else:
        print('\n'.join(
            list(
                difflib.unified_diff(expected.split('\n'),
                                     result.split('\n'),
                                     fromfile='expected',
                                     tofile='actual'))))
예제 #5
0
def create_expected_results_file(topology, fname):
    with open(fname, "w") as output:
        output.write(utils.transformation_results_yaml(topology))
        output.close()
        print("Created expected transformed topology: %s" % fname)