def test_add(self): d = BannedLibDict() d.add('libfoo.so', 'test', BA_WARN) x = d.get('libfoo.so') self.assertIsNotNone(x) self.assertEqual('libfoo.so', x.name) self.assertEqual('test', x.reason) self.assertEqual(BA_WARN, x.action)
def test_is_banned(self): d = BannedLibDict.create_default() self.assertTrue(d.is_banned('/system/lib/libbinder.so')) self.assertTrue(d.is_banned('/system/lib/libselinux.so')) self.assertTrue(d.is_banned('/system/lib64/libbinder.so')) self.assertTrue(d.is_banned('/system/lib64/libselinux.so')) self.assertFalse(d.is_banned('/system/lib64/libc.so'))
def test_compute_vndk_cap(self): gb = GraphBuilder() # Add LL-NDK libraries. gb.add_multilib(PT_SYSTEM, 'libc') gb.add_multilib(PT_SYSTEM, 'libdl') gb.add_multilib(PT_SYSTEM, 'liblog') gb.add_multilib(PT_SYSTEM, 'libm') gb.add_multilib(PT_SYSTEM, 'libstdc++') gb.add_multilib(PT_SYSTEM, 'libz') # Add SP-NDK libraries. gb.add_multilib(PT_SYSTEM, 'libEGL') gb.add_multilib(PT_SYSTEM, 'libGLES_v2') # Add banned libraries. gb.add_multilib(PT_SYSTEM, 'libbinder') gb.add_multilib(PT_SYSTEM, 'libselinux') # Add good examples. gb.add_multilib(PT_SYSTEM, 'libgood_a', dt_needed=['libc.so']) gb.add_multilib(PT_SYSTEM, 'libgood_b', dt_needed=['libEGL.so']) gb.add_multilib(PT_SYSTEM, 'libgood_c', dt_needed=['libGLES_v2.so']) # Add bad examples. gb.add_multilib(PT_SYSTEM, 'libbad_a', dt_needed=['libbinder.so']) gb.add_multilib(PT_SYSTEM, 'libbad_b', dt_needed=['libselinux.so']) gb.add_multilib(PT_SYSTEM, 'libbad_c', dt_needed=['libbad_a.so']) gb.add_multilib(PT_SYSTEM, 'libbad_d', dt_needed=['libbad_c.so']) gb.add_multilib(PT_VENDOR, 'libbad_e', dt_needed=['libc.so']) gb.resolve() # Compute VNDK cap. banned_libs = BannedLibDict.create_default() vndk_cap = gb.graph.compute_vndk_cap(banned_libs) vndk_cap = set(lib.path for lib in vndk_cap) # Check the existence of good examples. self.assertIn('/system/lib/libgood_a.so', vndk_cap) self.assertIn('/system/lib/libgood_b.so', vndk_cap) self.assertIn('/system/lib/libgood_c.so', vndk_cap) self.assertIn('/system/lib64/libgood_a.so', vndk_cap) self.assertIn('/system/lib64/libgood_b.so', vndk_cap) self.assertIn('/system/lib64/libgood_c.so', vndk_cap) # Check the absence of bad examples. self.assertNotIn('/system/lib/libbad_a.so', vndk_cap) self.assertNotIn('/system/lib/libbad_b.so', vndk_cap) self.assertNotIn('/system/lib/libbad_c.so', vndk_cap) self.assertNotIn('/system/lib/libbad_d.so', vndk_cap) self.assertNotIn('/vendor/lib/libbad_e.so', vndk_cap) self.assertNotIn('/system/lib64/libbad_a.so', vndk_cap) self.assertNotIn('/system/lib64/libbad_b.so', vndk_cap) self.assertNotIn('/system/lib64/libbad_c.so', vndk_cap) self.assertNotIn('/system/lib64/libbad_d.so', vndk_cap) self.assertNotIn('/vendor/lib64/libbad_e.so', vndk_cap) # Check the absence of banned libraries. self.assertNotIn('/system/lib/libbinder.so', vndk_cap) self.assertNotIn('/system/lib/libselinux.so', vndk_cap) self.assertNotIn('/system/lib64/libbinder.so', vndk_cap) self.assertNotIn('/system/lib64/libselinux.so', vndk_cap) # Check the absence of NDK libraries. Although LL-NDK and SP-NDK # libraries are not banned, they are not VNDK libraries either. self.assertNotIn('/system/lib/libEGL.so', vndk_cap) self.assertNotIn('/system/lib/libOpenGLES_v2.so', vndk_cap) self.assertNotIn('/system/lib/libc.so', vndk_cap) self.assertNotIn('/system/lib/libdl.so', vndk_cap) self.assertNotIn('/system/lib/liblog.so', vndk_cap) self.assertNotIn('/system/lib/libm.so', vndk_cap) self.assertNotIn('/system/lib/libstdc++.so', vndk_cap) self.assertNotIn('/system/lib/libz.so', vndk_cap) self.assertNotIn('/system/lib64/libEGL.so', vndk_cap) self.assertNotIn('/system/lib64/libOpenGLES_v2.so', vndk_cap) self.assertNotIn('/system/lib64/libc.so', vndk_cap) self.assertNotIn('/system/lib64/libdl.so', vndk_cap) self.assertNotIn('/system/lib64/liblog.so', vndk_cap) self.assertNotIn('/system/lib64/libm.so', vndk_cap) self.assertNotIn('/system/lib64/libstdc++.so', vndk_cap) self.assertNotIn('/system/lib64/libz.so', vndk_cap)
def test_get(self): d = BannedLibDict.create_default() self.assertIsNotNone(d.get('libbinder.so')) self.assertIsNotNone(d.get('libselinux.so')) self.assertIsNone(d.get('libc.so'))