summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYifan Hong2017-08-23 16:46:44 -0500
committerYifan Hong2017-08-24 12:16:04 -0500
commit45e5f72a1433f385afcda5ebf28c38a4010f8fda (patch)
tree7d0803c3f6242ab0c205c88298c214345e57ebb7
parent734a3394faffd042b99c520963f78d3084f2e56e (diff)
downloadplatform-system-libvintf-45e5f72a1433f385afcda5ebf28c38a4010f8fda.tar.gz
platform-system-libvintf-45e5f72a1433f385afcda5ebf28c38a4010f8fda.tar.xz
platform-system-libvintf-45e5f72a1433f385afcda5ebf28c38a4010f8fda.zip
Add tests for kernel config fragments in fwk comp mat.
Test: libvintf_test Bug: 64124223 Change-Id: I04f3332c84ec9e9c025079f6f83e2573dab27a81 Merged-In: I04f3332c84ec9e9c025079f6f83e2573dab27a81
-rw-r--r--test/main.cpp367
1 files changed, 367 insertions, 0 deletions
diff --git a/test/main.cpp b/test/main.cpp
index d8cfaf3..94a4d8e 100644
--- a/test/main.cpp
+++ b/test/main.cpp
@@ -100,6 +100,7 @@ public:
100 bool isValid(const ManifestHal &mh) { 100 bool isValid(const ManifestHal &mh) {
101 return mh.isValid(); 101 return mh.isValid();
102 } 102 }
103 std::vector<MatrixKernel>& getKernels(CompatibilityMatrix& cm) { return cm.framework.mKernels; }
103 104
104 std::map<std::string, HalInterface> testHalInterfaces() { 105 std::map<std::string, HalInterface> testHalInterfaces() {
105 HalInterface intf; 106 HalInterface intf;
@@ -709,6 +710,12 @@ TEST_F(LibVintfTest, RuntimeInfo) {
709 } 710 }
710 711
711 { 712 {
713 MatrixKernel kernel(KernelVersion{3, 18, 60}, KernelConfigs(configs));
714 CompatibilityMatrix cm = testMatrix(std::move(kernel));
715 EXPECT_FALSE(ki.checkCompatibility(cm)) << "Kernel version shouldn't match";
716 }
717
718 {
712 MatrixKernel kernel(KernelVersion{3, 18, 22}, KernelConfigs(configs)); 719 MatrixKernel kernel(KernelVersion{3, 18, 22}, KernelConfigs(configs));
713 CompatibilityMatrix cm = testMatrix(std::move(kernel)); 720 CompatibilityMatrix cm = testMatrix(std::move(kernel));
714 EXPECT_TRUE(ki.checkCompatibility(cm, &error)) << error; 721 EXPECT_TRUE(ki.checkCompatibility(cm, &error)) << error;
@@ -1534,6 +1541,366 @@ TEST_F(LibVintfTest, NetutilsWrapperManifest) {
1534#endif // LIBVINTF_HOST 1541#endif // LIBVINTF_HOST
1535} 1542}
1536 1543
1544TEST_F(LibVintfTest, KernelConfigConditionTest) {
1545 std::string xml =
1546 "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
1547 " <kernel version=\"3.18.22\"/>\n"
1548 " <kernel version=\"3.18.22\">\n"
1549 " <conditions>\n"
1550 " <config>\n"
1551 " <key>CONFIG_ARM</key>\n"
1552 " <value type=\"tristate\">y</value>\n"
1553 " </config>\n"
1554 " </conditions>\n"
1555 " <config>\n"
1556 " <key>CONFIG_FOO</key>\n"
1557 " <value type=\"tristate\">y</value>\n"
1558 " </config>\n"
1559 " </kernel>\n"
1560 " <sepolicy>\n"
1561 " <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
1562 " <sepolicy-version>25.0</sepolicy-version>\n"
1563 " </sepolicy>\n"
1564 " <avb>\n"
1565 " <vbmeta-version>2.1</vbmeta-version>\n"
1566 " </avb>\n"
1567 "</compatibility-matrix>\n";
1568
1569 CompatibilityMatrix cm;
1570 EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
1571 << gCompatibilityMatrixConverter.lastError();
1572 const auto& kernels = getKernels(cm);
1573 ASSERT_GE(kernels.size(), 2u);
1574 ASSERT_TRUE(kernels[0].conditions().empty());
1575 const auto& kernel = kernels[1];
1576 const auto& cond = kernel.conditions();
1577 ASSERT_FALSE(cond.empty());
1578 EXPECT_EQ("CONFIG_ARM", cond.begin()->first);
1579 EXPECT_EQ(KernelConfigTypedValue(Tristate::YES), cond.begin()->second);
1580 EXPECT_FALSE(kernel.configs().empty());
1581
1582 EXPECT_EQ(xml, gCompatibilityMatrixConverter(cm));
1583}
1584
1585TEST_F(LibVintfTest, KernelConfigConditionEmptyTest) {
1586 std::string xml =
1587 "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
1588 " <kernel version=\"4.4.0\"/>\n"
1589 " <kernel version=\"3.18.22\">\n"
1590 " <conditions>\n"
1591 " <config>\n"
1592 " <key>CONFIG_ARM</key>\n"
1593 " <value type=\"tristate\">y</value>\n"
1594 " </config>\n"
1595 " </conditions>\n"
1596 " </kernel>\n"
1597 "</compatibility-matrix>\n";
1598
1599 CompatibilityMatrix cm;
1600 EXPECT_FALSE(gCompatibilityMatrixConverter(&cm, xml))
1601 << "Should not accept first kernel version with non-empty conditions";
1602 EXPECT_EQ(
1603 "First <kernel> for version 3.18 must have empty <conditions> "
1604 "for backwards compatibility.",
1605 gCompatibilityMatrixConverter.lastError());
1606}
1607
1608TEST_F(LibVintfTest, KernelConfigConditionMatch) {
1609 RuntimeInfo runtime = testRuntimeInfo();
1610 std::string error;
1611 std::string xml;
1612 CompatibilityMatrix cm;
1613
1614 xml =
1615 "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
1616 " <kernel version=\"3.18.22\"/>\n"
1617 " <kernel version=\"3.18.22\">\n"
1618 " <conditions>\n"
1619 " <config>\n"
1620 " <key>CONFIG_64BIT</key>\n"
1621 " <value type=\"tristate\">y</value>\n"
1622 " </config>\n"
1623 " </conditions>\n"
1624 " <config>\n"
1625 " <key>CONFIG_ARCH_MMAP_RND_BITS</key>\n"
1626 " <value type=\"int\">24</value>\n"
1627 " </config>\n"
1628 " </kernel>\n"
1629 " <sepolicy>\n"
1630 " <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
1631 " </sepolicy>\n"
1632 " <avb><vbmeta-version>2.1</vbmeta-version></avb>\n"
1633 "</compatibility-matrix>\n";
1634
1635 EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
1636 << gCompatibilityMatrixConverter.lastError();
1637 EXPECT_TRUE(runtime.checkCompatibility(cm, &error)) << error;
1638
1639 xml =
1640 "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
1641 " <kernel version=\"3.18.22\"/>\n"
1642 " <kernel version=\"3.18.22\">\n"
1643 " <conditions>\n"
1644 " <config>\n"
1645 " <key>CONFIG_64BIT</key>\n"
1646 " <value type=\"tristate\">y</value>\n"
1647 " </config>\n"
1648 " </conditions>\n"
1649 " <config>\n"
1650 " <key>CONFIG_ARCH_MMAP_RND_BITS</key>\n"
1651 " <value type=\"int\">26</value>\n"
1652 " </config>\n"
1653 " </kernel>\n"
1654 " <sepolicy>\n"
1655 " <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
1656 " </sepolicy>\n"
1657 " <avb><vbmeta-version>2.1</vbmeta-version></avb>\n"
1658 "</compatibility-matrix>\n";
1659
1660 EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
1661 << gCompatibilityMatrixConverter.lastError();
1662 EXPECT_FALSE(runtime.checkCompatibility(cm, &error))
1663 << "conditions met, so CONFIG_ARCH_MMAP_RND_BITS should not match";
1664
1665 xml =
1666 "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
1667 " <kernel version=\"3.18.22\"/>\n"
1668 " <kernel version=\"3.18.22\">\n"
1669 " <conditions>\n"
1670 " <config>\n"
1671 " <key>CONFIG_64BIT</key>\n"
1672 " <value type=\"tristate\">n</value>\n"
1673 " </config>\n"
1674 " </conditions>\n"
1675 " <config>\n"
1676 " <key>CONFIG_ARCH_MMAP_RND_BITS</key>\n"
1677 " <value type=\"int\">26</value>\n"
1678 " </config>\n"
1679 " </kernel>\n"
1680 " <sepolicy>\n"
1681 " <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
1682 " </sepolicy>\n"
1683 " <avb><vbmeta-version>2.1</vbmeta-version></avb>\n"
1684 "</compatibility-matrix>\n";
1685
1686 EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
1687 << gCompatibilityMatrixConverter.lastError();
1688 EXPECT_TRUE(runtime.checkCompatibility(cm, &error)) << error;
1689 xml =
1690 "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
1691 " <kernel version=\"3.18.22\"/>\n"
1692 " <kernel version=\"3.18.22\">\n"
1693 " <conditions>\n"
1694 " <config>\n"
1695 " <key>CONFIG_64BIT</key>\n"
1696 " <value type=\"tristate\">y</value>\n"
1697 " </config>\n"
1698 " <config>\n"
1699 " <key>CONFIG_ARCH_MMAP_RND_BITS</key>\n"
1700 " <value type=\"int\">24</value>\n"
1701 " </config>\n"
1702 " </conditions>\n"
1703 " <config>\n"
1704 " <key>CONFIG_ILLEGAL_POINTER_VALUE</key>\n"
1705 " <value type=\"int\">0xdead000000000000</value>\n"
1706 " </config>\n"
1707 " </kernel>\n"
1708 " <sepolicy>\n"
1709 " <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
1710 " </sepolicy>\n"
1711 " <avb><vbmeta-version>2.1</vbmeta-version></avb>\n"
1712 "</compatibility-matrix>\n";
1713
1714 EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
1715 << gCompatibilityMatrixConverter.lastError();
1716 EXPECT_TRUE(runtime.checkCompatibility(cm, &error));
1717
1718 xml =
1719 "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
1720 " <kernel version=\"3.18.22\"/>\n"
1721 " <kernel version=\"3.18.22\">\n"
1722 " <conditions>\n"
1723 " <config>\n"
1724 " <key>CONFIG_64BIT</key>\n"
1725 " <value type=\"tristate\">y</value>\n"
1726 " </config>\n"
1727 " <config>\n"
1728 " <key>CONFIG_ARCH_MMAP_RND_BITS</key>\n"
1729 " <value type=\"int\">24</value>\n"
1730 " </config>\n"
1731 " </conditions>\n"
1732 " <config>\n"
1733 " <key>CONFIG_ILLEGAL_POINTER_VALUE</key>\n"
1734 " <value type=\"int\">0xbeaf000000000000</value>\n"
1735 " </config>\n"
1736 " </kernel>\n"
1737 " <sepolicy>\n"
1738 " <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
1739 " </sepolicy>\n"
1740 " <avb><vbmeta-version>2.1</vbmeta-version></avb>\n"
1741 "</compatibility-matrix>\n";
1742
1743 EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
1744 << gCompatibilityMatrixConverter.lastError();
1745 EXPECT_FALSE(runtime.checkCompatibility(cm, &error))
1746 << "conditions have 'and' relationship, so CONFIG_ILLEGAL_POINTER_VALUE should not match";
1747
1748 xml =
1749 "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
1750 " <kernel version=\"3.18.22\"/>\n"
1751 " <kernel version=\"3.18.22\">\n"
1752 " <conditions>\n"
1753 " <config>\n"
1754 " <key>CONFIG_64BIT</key>\n"
1755 " <value type=\"tristate\">y</value>\n"
1756 " </config>\n"
1757 " <config>\n"
1758 " <key>CONFIG_ARCH_MMAP_RND_BITS</key>\n"
1759 " <value type=\"int\">26</value>\n"
1760 " </config>\n"
1761 " </conditions>\n"
1762 " <config>\n"
1763 " <key>CONFIG_ILLEGAL_POINTER_VALUE</key>\n"
1764 " <value type=\"int\">0xbeaf000000000000</value>\n"
1765 " </config>\n"
1766 " </kernel>\n"
1767 " <sepolicy>\n"
1768 " <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
1769 " </sepolicy>\n"
1770 " <avb><vbmeta-version>2.1</vbmeta-version></avb>\n"
1771 "</compatibility-matrix>\n";
1772
1773 EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
1774 << gCompatibilityMatrixConverter.lastError();
1775 EXPECT_TRUE(runtime.checkCompatibility(cm, &error)) << error;
1776
1777 xml =
1778 "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
1779 " <kernel version=\"3.18.22\">\n"
1780 " <config>\n"
1781 " <key>CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES</key>\n"
1782 " <value type=\"string\"/>\n"
1783 " </config>\n"
1784 " </kernel>\n"
1785 " <kernel version=\"3.18.22\">\n"
1786 " <conditions>\n"
1787 " <config>\n"
1788 " <key>CONFIG_64BIT</key>\n"
1789 " <value type=\"tristate\">y</value>\n"
1790 " </config>\n"
1791 " </conditions>\n"
1792 " <config>\n"
1793 " <key>CONFIG_ILLEGAL_POINTER_VALUE</key>\n"
1794 " <value type=\"int\">0xdead000000000000</value>\n"
1795 " </config>\n"
1796 " </kernel>\n"
1797 " <kernel version=\"3.18.22\">\n"
1798 " <conditions>\n"
1799 " <config>\n"
1800 " <key>CONFIG_ARCH_MMAP_RND_BITS</key>\n"
1801 " <value type=\"int\">24</value>\n"
1802 " </config>\n"
1803 " </conditions>\n"
1804 " <config>\n"
1805 " <key>CONFIG_ANDROID_BINDER_DEVICES</key>\n"
1806 " <value type=\"string\">binder,hwbinder</value>\n"
1807 " </config>\n"
1808 " </kernel>\n"
1809 " <sepolicy>\n"
1810 " <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
1811 " </sepolicy>\n"
1812 " <avb><vbmeta-version>2.1</vbmeta-version></avb>\n"
1813 "</compatibility-matrix>\n";
1814
1815 EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
1816 << gCompatibilityMatrixConverter.lastError();
1817 EXPECT_TRUE(runtime.checkCompatibility(cm, &error)) << error;
1818
1819 xml =
1820 "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
1821 " <kernel version=\"3.18.22\">\n"
1822 " <config>\n"
1823 " <key>CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES</key>\n"
1824 " <value type=\"string\"/>\n"
1825 " </config>\n"
1826 " </kernel>\n"
1827 " <kernel version=\"3.18.22\">\n"
1828 " <conditions>\n"
1829 " <config>\n"
1830 " <key>CONFIG_64BIT</key>\n"
1831 " <value type=\"tristate\">y</value>\n"
1832 " </config>\n"
1833 " </conditions>\n"
1834 " <config>\n"
1835 " <key>CONFIG_ILLEGAL_POINTER_VALUE</key>\n"
1836 " <value type=\"int\">0xbeaf000000000000</value>\n"
1837 " </config>\n"
1838 " </kernel>\n"
1839 " <kernel version=\"3.18.22\">\n"
1840 " <conditions>\n"
1841 " <config>\n"
1842 " <key>CONFIG_ARCH_MMAP_RND_BITS</key>\n"
1843 " <value type=\"int\">24</value>\n"
1844 " </config>\n"
1845 " </conditions>\n"
1846 " <config>\n"
1847 " <key>CONFIG_ANDROID_BINDER_DEVICES</key>\n"
1848 " <value type=\"string\">binder,hwbinder</value>\n"
1849 " </config>\n"
1850 " </kernel>\n"
1851 " <sepolicy>\n"
1852 " <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
1853 " </sepolicy>\n"
1854 " <avb><vbmeta-version>2.1</vbmeta-version></avb>\n"
1855 "</compatibility-matrix>\n";
1856
1857 EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
1858 << gCompatibilityMatrixConverter.lastError();
1859 EXPECT_FALSE(runtime.checkCompatibility(cm, &error)) << "all fragments should be used.";
1860
1861 xml =
1862 "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
1863 " <kernel version=\"3.18.22\">\n"
1864 " <config>\n"
1865 " <key>CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES</key>\n"
1866 " <value type=\"string\"/>\n"
1867 " </config>\n"
1868 " </kernel>\n"
1869 " <kernel version=\"3.18.22\">\n"
1870 " <conditions>\n"
1871 " <config>\n"
1872 " <key>CONFIG_64BIT</key>\n"
1873 " <value type=\"tristate\">y</value>\n"
1874 " </config>\n"
1875 " </conditions>\n"
1876 " <config>\n"
1877 " <key>CONFIG_ILLEGAL_POINTER_VALUE</key>\n"
1878 " <value type=\"int\">0xdead000000000000</value>\n"
1879 " </config>\n"
1880 " </kernel>\n"
1881 " <kernel version=\"3.18.22\">\n"
1882 " <conditions>\n"
1883 " <config>\n"
1884 " <key>CONFIG_ARCH_MMAP_RND_BITS</key>\n"
1885 " <value type=\"int\">24</value>\n"
1886 " </config>\n"
1887 " </conditions>\n"
1888 " <config>\n"
1889 " <key>CONFIG_ANDROID_BINDER_DEVICES</key>\n"
1890 " <value type=\"string\">binder</value>\n"
1891 " </config>\n"
1892 " </kernel>\n"
1893 " <sepolicy>\n"
1894 " <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
1895 " </sepolicy>\n"
1896 " <avb><vbmeta-version>2.1</vbmeta-version></avb>\n"
1897 "</compatibility-matrix>\n";
1898
1899 EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
1900 << gCompatibilityMatrixConverter.lastError();
1901 EXPECT_FALSE(runtime.checkCompatibility(cm, &error)) << "all fragments should be used";
1902}
1903
1537// Run KernelConfigParserInvalidTest on processComments = {true, false} 1904// Run KernelConfigParserInvalidTest on processComments = {true, false}
1538class KernelConfigParserInvalidTest : public ::testing::TestWithParam<bool> {}; 1905class KernelConfigParserInvalidTest : public ::testing::TestWithParam<bool> {};
1539 1906