def test_append(self): with mock.patch('coffea.builder.JavaClass') as JavaClass: instance = JavaClass.return_value instance.package = 'com.example' instance.package_dependencies.return_value = ['com.example.service'] builder = Builder() builder.model.merge = mock.MagicMock() with tempfile.NamedTemporaryFile(suffix='.class') as f: builder.append(f.name) self.assertTrue(builder.model.merge.called)
def test_append(self): with mock.patch('coffea.builder.JavaClass') as JavaClass: instance = JavaClass.return_value instance.package = 'com.example' instance.package_dependencies.return_value = [ 'com.example.service' ] builder = Builder() builder.model.merge = mock.MagicMock() with tempfile.NamedTemporaryFile(suffix='.class') as f: builder.append(f.name) self.assertTrue(builder.model.merge.called)
### Analysys ### from coffea.builder import Builder, PackageNodeFactory from coffea.analyzer import Writer from coffea.model import NodeIdFilter, NodeIdMapper # Build a package dependency model using code size as weight b = Builder(PackageNodeFactory(size_property="code")) # Drop packages that don't belong to the org.glassfish namespace b.model.node_filters.append(NodeIdFilter(lambda it: it.startswith('org.glassfish.'))) # Drop the org.glassfish prefix for clarity b.model.node_filters.append(NodeIdMapper(lambda it: it.replace('org.glassfish.', ''))) # Reduce all child packages to the top level package (eg. "ejb.xyz" and "ejb.abc.pqr" will be merged into "ejb") b.model.node_filters.append(NodeIdMapper(lambda it: it.split('.')[0])) # Remove unimportant packages #b.model.node_filters.append(NodeIdFilter(lambda it: it not in ['logging'])) # Run the analysis b.append(glassfish_home) print 'Nodes: ', len(b.model.nodes) ### Export data ### writer = Writer(b.model) writer.write(output_file, data_format=output_format)
from coffea.model import NodeIdFilter, NodeIdMapper # Build a package dependency model using code size as weight b = Builder(PackageNodeFactory(size_property="code")) # Drop packages that don't belong to the org.jboss namespace b.model.node_filters.append(NodeIdFilter(lambda it: it.startswith('org.jboss.'))) # Drop the org.jboss prefix for clarity b.model.node_filters.append(NodeIdMapper(lambda it: it.replace('org.jboss.', ''))) # Reduce all child packages to the top level package (eg. "as.xyz" and "as.abc.pqr" will be merged into "as") b.model.node_filters.append(NodeIdMapper(lambda it: it.split('.')[0])) # Remove unimportant packages b.model.node_filters.append(NodeIdFilter(lambda it: it not in ['logging'])) # Run the analysis b.append(jboss7_mods) print 'Nodes: ', len(b.model.nodes) p = Plotter(b.model) # Plot using matplotlib p.plot(calc_node_size=True) # Plot to a file #p.plot(filename='/tmp/jboss7_module_dependencies.png')