示例#1
0
def test_load_facts_mismatch_version(tmpdir):
    """Test load facts when loaded nodes have different format versions."""
    version1 = 'version1'
    node1 = {'node1': 'foo'}
    version2 = 'version2'
    node2 = {'node2': 'foo'}
    tmpdir.join('node1.yml').write(_encapsulate_nodes_facts(node1, version1))
    tmpdir.join('node2.yml').write(_encapsulate_nodes_facts(node2, version2))
    with pytest.raises(ValueError) as e:
        load_facts(str(tmpdir))
    assert 'Input file version mismatch' in str(e)
示例#2
0
def test_load_facts_mismatch_version(tmpdir):
    """Test load facts when loaded nodes have different format versions."""
    version1 = "version1"
    node1 = {"node1": "foo"}
    version2 = "version2"
    node2 = {"node2": "foo"}
    tmpdir.join("node1.yml").write(_encapsulate_nodes_facts(node1, version1))
    tmpdir.join("node2.yml").write(_encapsulate_nodes_facts(node2, version2))
    with pytest.raises(ValueError) as e:
        load_facts(str(tmpdir))
    assert "Input file version mismatch" in str(e.value)
示例#3
0
def test_extract_facts(tmpdir, session):
    """Test extraction of facts for the current snapshot with a basic config."""
    out_dir = tmpdir.join('output')
    extracted_facts = session.extract_facts(nodes='basic',
                                            output_directory=str(out_dir))

    written_facts = load_facts(str(out_dir))
    expected_facts = load_facts(join(_this_dir, 'facts', 'expected_facts'))

    assert extracted_facts == expected_facts, 'Extracted facts match expected facts'
    assert written_facts == expected_facts, 'Facts written to disk match expected facts'
示例#4
0
def test_load_facts_bad_dir(tmpdir):
    """Test load facts when loading from bad directories."""
    # Empty input dir should throw ValueError
    with pytest.raises(ValueError) as e:
        load_facts(str(tmpdir))
    assert "No files present in specified dir" in str(e.value)

    f = tmpdir.join("file")
    f.write("foo")
    # File instead of dir should throw an exception about path not being a directory
    with pytest.raises(Exception) as e:
        load_facts(str(f))
    assert "Not a directory" in str(e.value)
示例#5
0
def test_extract_facts_specific_snapshot(tmpdir, session):
    """Test extraction of facts for a specific snapshot."""
    out_dir = tmpdir.join("output")
    extracted_facts = session.extract_facts(output_directory=str(out_dir),
                                            snapshot=_PREVIOUS_SNAPSHOT)

    written_facts = load_facts(str(out_dir))
    expected_facts = load_facts(join(_this_dir, "facts", "expected_facts2"))

    assert (validate_facts(
        expected_facts,
        extracted_facts) == {}), "Extracted facts match expected facts"
    assert (validate_facts(
        expected_facts,
        written_facts) == {}), "Written facts match expected facts"
示例#6
0
def test_extract_facts(tmpdir, session):
    """Test extraction of facts for the current snapshot with a basic config."""
    out_dir = tmpdir.join("output")
    extracted_facts = session.extract_facts(nodes="basic",
                                            output_directory=str(out_dir))

    written_facts = load_facts(str(out_dir))
    expected_facts = load_facts(join(_this_dir, "facts", "expected_facts"))

    assert (validate_facts(
        expected_facts,
        extracted_facts) == {}), "Extracted facts match expected facts"
    assert (validate_facts(
        expected_facts,
        written_facts) == {}), "Written facts match expected facts"
示例#7
0
def test_extract_facts_specific_snapshot(tmpdir, session):
    """Test extraction of facts for a specific snapshot."""
    out_dir = tmpdir.join('output')
    non_current_snapshot = session.list_snapshots()[-1]
    extracted_facts = session.extract_facts(output_directory=str(out_dir),
                                            snapshot=non_current_snapshot)

    written_facts = load_facts(str(out_dir))
    expected_facts = load_facts(join(_this_dir, 'facts', 'expected_facts2'))

    assert validate_facts(
        expected_facts,
        extracted_facts) == {}, 'Extracted facts match expected facts'
    assert validate_facts(
        expected_facts,
        written_facts) == {}, 'Written facts match expected facts'
示例#8
0
    def validate_facts(self, expected_facts):
        # type: (Text) -> Dict[Text, Any]
        """
        Return a dictionary of mismatched facts between the loaded expected facts and the actual facts.

        :param expected_facts: path to directory to read expected fact YAML files from
        :type expected_facts: Text
        :return: facts about the specified nodes on the current network snapshot
        :rtype: dict
        """
        actual_facts = get_facts(self)
        expected_facts_ = load_facts(expected_facts)
        return validate_facts(expected_facts_, actual_facts)
示例#9
0
def test_load_facts(tmpdir):
    """Test that load_facts correctly loads facts from a fact directory."""
    version = "fake_version"
    node1 = {"node1": "foo"}
    node2 = {"node2": "foo"}
    tmpdir.join("node1.yml").write(_encapsulate_nodes_facts(node1, version))
    tmpdir.join("node2.yml").write(_encapsulate_nodes_facts(node2, version))
    facts = load_facts(str(tmpdir))

    # Confirm facts were loaded from both files
    assert facts == _encapsulate_nodes_facts({
        "node1": "foo",
        "node2": "foo"
    }, version)
示例#10
0
def test_load_facts(tmpdir):
    """Test that load_facts correctly loads facts from a fact directory."""
    version = 'fake_version'
    node1 = {'node1': 'foo'}
    node2 = {'node2': 'foo'}
    tmpdir.join('node1.yml').write(_encapsulate_nodes_facts(node1, version))
    tmpdir.join('node2.yml').write(_encapsulate_nodes_facts(node2, version))
    facts = load_facts(str(tmpdir))

    # Confirm facts were loaded from both files
    assert facts == _encapsulate_nodes_facts({
        'node1': 'foo',
        'node2': 'foo'
    }, version)
示例#11
0
    def validate_facts(self, expected_facts, snapshot=None):
        # type: (Text, Optional[Text]) -> Dict[Text, Any]
        """
        Return a dictionary of mismatched facts between the loaded expected facts and the actual facts.

        :param expected_facts: path to directory to read expected fact YAML files from
        :type expected_facts: Text
        :param snapshot: name of the snapshot to validate facts for, defaults to the current snapshot
        :type snapshot: Text
        :return: facts about the specified nodes on the current network snapshot
        :rtype: dict
        """
        actual_facts = get_facts(self, snapshot=snapshot)
        expected_facts_ = load_facts(expected_facts)
        return validate_facts(expected_facts_, actual_facts)