Community
Participate
Working Groups
Automatic build test coverage for the kernel is currently about 50%. Contributions vary in the coverage they introduce -- most are good. It needs special effort to improve coverage and to keep it high. We invite explicit test contributions that improve our build test coverage. This bugzilla will remain open until the overall coverage of the org.eclipse.virgo.kernel repository projects exceeds 70%. It is set to normal priority because this level of coverage ought to be normal practice, so this is counted as a NORMAL defect. If the coverage drops significantly the severity of the bug might be raised. Coverage measurement may be performed by anyone with a Clover licence who can run the clover target of the standard build. PLEASE RAISE DISTINCT BUGZILLAs FOR CONTRIBUTIONS TO TESTS AND ADD A COMMENT HERE TO HELP TRACK THEM AND TRIGGER A PROGRESS CHECK.
Is there a list with files that has 0% coverage? That would be a good starting point since covering those files will have big impact on the overall coverage numbers.
Here is the current package list in order of coverage, from least to greatest: org.eclipse.virgo.kernel.agent.dm 1 1.62 0% org.eclipse.virgo.kernel.artifact.fs 4 2 0% org.eclipse.virgo.kernel.artifact.library.internal 1 1.38 0% org.eclipse.virgo.kernel.deployer.core.event 16 1.19 0% org.eclipse.virgo.kernel.deployer.model 4 1 0% org.eclipse.virgo.kernel.deployer.model.internal 1 1.47 0% org.eclipse.virgo.kernel.dmfragment.internal 11 1.54 0% org.eclipse.virgo.kernel.install.pipeline.stage.resolve.internal 4 1.9 0% org.eclipse.virgo.kernel.install.pipeline.stage.visit.internal 1 1.25 0% org.eclipse.virgo.kernel.management 2 1.5 0% org.eclipse.virgo.kernel.management.internal 1 1 0% org.eclipse.virgo.kernel.management.internal.system 12 1.12 0% org.eclipse.virgo.kernel.model.management 6 1 0% org.eclipse.virgo.kernel.module 12 1 0% org.eclipse.virgo.kernel.module.internal 1 1.67 0% org.eclipse.virgo.kernel.osgi.framework 18 1.3 0% org.eclipse.virgo.kernel.osgi.framework.support 2 1.14 0% org.eclipse.virgo.kernel.osgi.region.eventlog 1 1 0% org.eclipse.virgo.kernel.osgicommand 1 2.8 0% org.eclipse.virgo.kernel.osgicommand.internal 1 1.43 0% org.eclipse.virgo.kernel.osgicommand.internal.commands.classloading 1 3 0% org.eclipse.virgo.kernel.services.concurrent.diagnostics 1 1 0% org.eclipse.virgo.kernel.shim.serviceability.internal 1 1 0% org.eclipse.virgo.kernel.stubs 4 1.09 0% org.eclipse.virgo.kernel.shim.scope.internal 1 1.68 0.8% org.eclipse.virgo.kernel.install.artifact.internal.scoping 3 2.11 7% org.eclipse.virgo.kernel.install.environment.internal 3 1.13 15.7% org.eclipse.virgo.kernel.shell.internal 20 2.04 20.3% org.eclipse.virgo.kernel.shell.internal.commands 11 1.86 22.1% org.eclipse.virgo.kernel.install.artifact.internal.bundle 9 1.94 27.4% org.eclipse.virgo.kernel.services.concurrent.management 3 1.91 28.1% org.eclipse.virgo.kernel.deployer.management 2 1.22 30% org.eclipse.virgo.kernel.deployer.core.internal 17 1.66 30.2% org.eclipse.virgo.kernel.artifact.fs.internal 3 1.79 32.6% org.eclipse.virgo.kernel.shell.internal.formatting 8 2.21 34.1% org.eclipse.virgo.kernel.shell.internal.completers 10 2.34 35.1% org.eclipse.virgo.kernel.shell.internal.converters 4 2 35.5% org.eclipse.virgo.kernel.osgi.common 1 2.25 36.5% org.eclipse.virgo.kernel.deployer.core 9 1.53 42.1% org.eclipse.virgo.kernel.install.artifact.internal 31 1.76 42.4% org.eclipse.virgo.kernel.deployer.app.spring 3 1.73 47.1% org.eclipse.virgo.kernel.userregion.internal 7 1.68 48.1% org.eclipse.virgo.kernel.shell.state.internal 5 1.7 48.6% org.eclipse.virgo.kernel.shell.internal.parsing 2 2.25 55.1% org.eclipse.virgo.kernel.model.management.internal 6 1.35 55.9% org.eclipse.virgo.kernel.userregion.internal.quasi 14 2.14 56.6% org.eclipse.virgo.kernel.deployer.core.internal.recovery 3 1.83 59.3% org.eclipse.virgo.kernel.services.concurrent.monitor 2 2.27 59.4% org.eclipse.virgo.kernel.install.artifact 12 1.27 65.1% org.eclipse.virgo.kernel.agent.dm.internal 4 1.69 66.7% org.eclipse.virgo.kernel.core 8 1.3 66.7% org.eclipse.virgo.kernel.install.pipeline.stage 3 2 66.7% org.eclipse.virgo.kernel.userregion.internal.equinox 15 1.83 67.2% org.eclipse.virgo.kernel.artifact.plan.internal 2 1.2 68.4% org.eclipse.virgo.kernel.authentication 5 2.18 69.2% org.eclipse.virgo.kernel.deployer.core.internal.uri 3 2.25 71.2% org.eclipse.virgo.kernel.services.repository.internal 2 1.29 72.9% org.eclipse.virgo.kernel.osgi.region 4 1.63 73.6% org.eclipse.virgo.kernel.shell.model.helper 6 2.48 73.6% org.eclipse.virgo.kernel.deployer.hot 4 2 74% org.eclipse.virgo.kernel.osgicommand.helper 1 3.4 75.3% org.eclipse.virgo.kernel.userregion.internal.importexpansion 12 2.16 76.4% org.eclipse.virgo.kernel.shell.internal.help 2 3.14 77.4% org.eclipse.virgo.kernel.artifact.bundle 1 2.88 78.3% org.eclipse.virgo.kernel.model.internal.deployer 6 1.79 80.5% org.eclipse.virgo.kernel.model.internal.bundle 4 2 80.9% org.eclipse.virgo.kernel.core.internal 9 1.97 81% org.eclipse.virgo.kernel.install.pipeline.internal 3 1.88 82.5% org.eclipse.virgo.kernel.artifact.library 2 1.83 82.6% org.eclipse.virgo.kernel.config.internal 10 1.65 83.2% org.eclipse.virgo.kernel.deployer 4 1 83.3% org.eclipse.virgo.kernel.shell.internal.util 1 1.33 83.3% org.eclipse.virgo.kernel.services.concurrent 10 1.08 85.7% org.eclipse.virgo.kernel.install.pipeline.stage.transform.internal 7 1.37 86.9% org.eclipse.virgo.kernel.model.internal 4 2.07 86.9% org.eclipse.virgo.kernel.serviceability.dump 1 1.67 88.2% org.eclipse.virgo.kernel.core.internal.blueprint 3 2.06 90% org.eclipse.virgo.kernel.artifact.internal 1 4 91.3% org.eclipse.virgo.kernel.serviceability 4 1.94 92.9% org.eclipse.virgo.kernel.shutdown 3 1.94 93.2% org.eclipse.virgo.kernel.services.work 3 1 93.3% org.eclipse.virgo.kernel.config.internal.ovf 3 2.18 93.8% org.eclipse.virgo.kernel.model.internal.configurationadmin 3 1.43 94.7% org.eclipse.virgo.kernel.config.internal.commandline 1 3 96.7% org.eclipse.virgo.kernel.artifact 1 1.17 100% org.eclipse.virgo.kernel.artifact.par 1 2.33 100% org.eclipse.virgo.kernel.artifact.plan 3 1.33 100% org.eclipse.virgo.kernel.artifact.properties 1 1.67 100% org.eclipse.virgo.kernel.diagnostics 1 1 100% org.eclipse.virgo.kernel.services.internal 1 1 100% If you have a licensed copy of clover you should be able to use the ant 'clover' target to generate a much more detailed report.
Created bug 325840 with more tests for kernel.osgicommand.internal.commands.classloading
An update on progress, total stands at 52.1% Break down as follows. org.eclipse.virgo.kernel.agent.dm (0%) org.eclipse.virgo.kernel.agent.dm.internal (64.4%) org.eclipse.virgo.kernel.artifact (100%) org.eclipse.virgo.kernel.artifact.bundle (77.7%) org.eclipse.virgo.kernel.artifact.fs (0%) org.eclipse.virgo.kernel.artifact.fs.internal (32.6%) org.eclipse.virgo.kernel.artifact.internal (89.4%) org.eclipse.virgo.kernel.artifact.library (82.6%) org.eclipse.virgo.kernel.artifact.library.internal (0%) org.eclipse.virgo.kernel.artifact.par (100%) org.eclipse.virgo.kernel.artifact.plan (100%) org.eclipse.virgo.kernel.artifact.plan.internal (72.7%) org.eclipse.virgo.kernel.artifact.properties (100%) org.eclipse.virgo.kernel.authentication (69.2%) org.eclipse.virgo.kernel.config.internal (83.3%) org.eclipse.virgo.kernel.config.internal.commandline (96.7%) org.eclipse.virgo.kernel.config.internal.ovf (93.8%) org.eclipse.virgo.kernel.core (68.6%) org.eclipse.virgo.kernel.core.internal (80.5%) org.eclipse.virgo.kernel.core.internal.blueprint (89.3%) org.eclipse.virgo.kernel.deployer (83.3%) org.eclipse.virgo.kernel.deployer.app.spring (47.1%) org.eclipse.virgo.kernel.deployer.core (42.1%) org.eclipse.virgo.kernel.deployer.core.event (0%) org.eclipse.virgo.kernel.deployer.core.internal (28.3%) org.eclipse.virgo.kernel.deployer.core.internal.event ( - ) org.eclipse.virgo.kernel.deployer.core.internal.recovery (59.3%) org.eclipse.virgo.kernel.deployer.core.internal.uri (71.2%) org.eclipse.virgo.kernel.deployer.hot (74%) org.eclipse.virgo.kernel.deployer.management (30%) org.eclipse.virgo.kernel.deployer.model (0%) org.eclipse.virgo.kernel.deployer.model.internal (0%) org.eclipse.virgo.kernel.diagnostics (100%) org.eclipse.virgo.kernel.dmfragment ( - ) org.eclipse.virgo.kernel.dmfragment.internal (0%) org.eclipse.virgo.kernel.install.artifact (64.5%) org.eclipse.virgo.kernel.install.artifact.internal (41%) org.eclipse.virgo.kernel.install.artifact.internal.bundle (28%) org.eclipse.virgo.kernel.install.artifact.internal.scoping (43.4%) org.eclipse.virgo.kernel.install.environment ( - ) org.eclipse.virgo.kernel.install.environment.internal (15.7%) org.eclipse.virgo.kernel.install.pipeline ( - ) org.eclipse.virgo.kernel.install.pipeline.internal (82.5%) org.eclipse.virgo.kernel.install.pipeline.stage (66.7%) org.eclipse.virgo.kernel.install.pipeline.stage.resolve.internal (0%) org.eclipse.virgo.kernel.install.pipeline.stage.transform ( - ) org.eclipse.virgo.kernel.install.pipeline.stage.transform.internal (86.9%) org.eclipse.virgo.kernel.install.pipeline.stage.visit ( - ) org.eclipse.virgo.kernel.install.pipeline.stage.visit.internal (0%) org.eclipse.virgo.kernel.management (0%) org.eclipse.virgo.kernel.management.internal (0%) org.eclipse.virgo.kernel.management.internal.system (0%) org.eclipse.virgo.kernel.model ( - ) org.eclipse.virgo.kernel.model.internal (86.9%) org.eclipse.virgo.kernel.model.internal.bundle (80.9%) org.eclipse.virgo.kernel.model.internal.configurationadmin (94.7%) org.eclipse.virgo.kernel.model.internal.deployer (78.6%) org.eclipse.virgo.kernel.model.management (0%) org.eclipse.virgo.kernel.model.management.internal (55.9%) org.eclipse.virgo.kernel.module (0%) org.eclipse.virgo.kernel.module.internal (0%) org.eclipse.virgo.kernel.osgi.common (36.5%) org.eclipse.virgo.kernel.osgi.framework (0%) org.eclipse.virgo.kernel.osgi.framework.support (0%) org.eclipse.virgo.kernel.osgi.quasi ( - ) org.eclipse.virgo.kernel.osgi.region (73.6%) org.eclipse.virgo.kernel.osgi.region.eventlog (0%) org.eclipse.virgo.kernel.osgicommand (0%) org.eclipse.virgo.kernel.osgicommand.helper (91.8%) org.eclipse.virgo.kernel.osgicommand.internal (0%) org.eclipse.virgo.kernel.osgicommand.internal.commands.classloading (85%) org.eclipse.virgo.kernel.serviceability (92.9%) org.eclipse.virgo.kernel.serviceability.dump (88.2%) org.eclipse.virgo.kernel.services.concurrent (85.7%) org.eclipse.virgo.kernel.services.concurrent.diagnostics (0%) org.eclipse.virgo.kernel.services.concurrent.management (28.1%) org.eclipse.virgo.kernel.services.concurrent.monitor (59.4%) org.eclipse.virgo.kernel.services.internal (100%) org.eclipse.virgo.kernel.services.repository.internal (72.9%) org.eclipse.virgo.kernel.services.work (93.3%) org.eclipse.virgo.kernel.shell ( - ) org.eclipse.virgo.kernel.shell.internal (20.3%) org.eclipse.virgo.kernel.shell.internal.commands (22.1%) org.eclipse.virgo.kernel.shell.internal.completers (35.1%) org.eclipse.virgo.kernel.shell.internal.converters (35.5%) org.eclipse.virgo.kernel.shell.internal.formatting (34.1%) org.eclipse.virgo.kernel.shell.internal.help (77.4%) org.eclipse.virgo.kernel.shell.internal.parsing (55.1%) org.eclipse.virgo.kernel.shell.internal.util (83.3%) org.eclipse.virgo.kernel.shell.model.helper (73.6%) org.eclipse.virgo.kernel.shell.state ( - ) org.eclipse.virgo.kernel.shell.state.internal (48.6%) org.eclipse.virgo.kernel.shim.scope ( - ) org.eclipse.virgo.kernel.shim.scope.internal (1.4%) org.eclipse.virgo.kernel.shim.serviceability ( - ) org.eclipse.virgo.kernel.shim.serviceability.internal (0%) org.eclipse.virgo.kernel.shutdown (93.3%) org.eclipse.virgo.kernel.stubs (0%) org.eclipse.virgo.kernel.userregion.internal (48.1%) org.eclipse.virgo.kernel.userregion.internal.equinox (67.2%) org.eclipse.virgo.kernel.userregion.internal.importexpansion (76.1%) org.eclipse.virgo.kernel.userregion.internal.quasi (56.6%)
It's quite useful to order these from least covered to greatest covered in the clover window before cutting and pasting it here. (Click on the percentage column header.)
Here are the classes ordered in least covered first (I couldn't easily get a package list ordered this way :-{) ClassesTestsResults Class Coverage AbstractInstallArtifact.StateMonitorSignal (0%) AbstractInstallArtifactCommandFormatter.ManageableArtifactComparator (0%) AbstractMultiBeanSystemManagementExporter (0%) AbstractOsgiFramework (0%) AbstractSystemManagementExporter (0%) Activator (0%) Activator (0%) Activator.InitialArtifactDeployerCreatingRunnable (0%) Activator.PostStartInitialisationRunnable (0%) Activator.ServiceScopingHookRegisteringRunnable (0%) AgentActivator (0%) AgentLogEvents (0%) ApplicationBundleDeployed (0%) ApplicationBundleDeploying (0%) ApplicationBundleDeploymentEvent (0%) ApplicationBundleStarted (0%) ApplicationBundleStarting (0%) ApplicationBundleStopped (0%) ApplicationBundleStopping (0%) ApplicationBundleUndeployed (0%) ApplicationBundleUndeploying (0%) ApplicationBundleUtils (0%) ApplicationContextShutdownBean (0%) ApplicationContextShutdownBeanPostProcessor (0%) ApplicationDeployed (0%) ApplicationDeploying (0%) ApplicationDeploymentEvent (0%) ApplicationDeploymentEventNotifier (0%) ApplicationUndeployed (0%) ApplicationUndeploying (0%) ArtefactNotFoundException (0%) ArtifactDescriptorLibraryDefinition (0%) BlockingAbortableSignal (0%) BundleClassLoaderUnavailableException (0%) BundleCommands (0%) BundleCompleter (0%) BundleDriverBundleListener (0%) BundleDriverManifestTransformer (0%) BundleInstallArtifactCommandFormatter (0%) BundleInstallArtifactCommandFormatter.ArtifactHolder (0%) BundleManifestProcessor.Result (0%) BundleManifestProcessor.Warning (0%) BundleThreadContextManager (0%) ClassLoadingSystemManagementExporter (0%) CommandNotFoundException (0%) CommandRegistry (0%) CommandRegistry.CommandRegistryServiceListener (0%) CommandRegistryCommandInvoker (0%) CommitStage (0%) ComponentClassLoadingException (0%) ComponentException (0%) CompoundCommandResolver (0%) CompoundDeployUriNormaliser (0%) ConcurrentLogEvents (0%) ConfigInstallArtifact (0%) ConfigInstallArtifactTreeFactory (0%) ConfigLifecycleEngine (0%) ContextClassLoaderPostProcessor (0%) ContextPropagatingTaskExecutor (0%) ContextPropagatingTaskExecutor.NoOpTracingService (0%) DeadlockMonitor (0%) DeadlockMonitor.DeadlockMonitorTask (0%) DelegatingInstaller (0%) DelegatingManageableBundleArtifact (0%) DelegatingServiceRegistryBackedArtifactIdentityDeterminer (0%) DeployerBundleArtifact (0%) DeployerFailureListener (0%) DeployerRecoveryLogDeploymentListener (0%) DuplicateDeploymentIdentityException (0%) DuplicateFileNameException (0%) DuplicateLocationException (0%) EmptyModuleContextAccessor (0%) EmptyTrackedPackageImports (0%) EnvironmentVariablesSystemManagementExporter (0%) EnvironmentVariablesSystemManagementExporter.EnvironmentVariablesMBean (0%) EquinoxHookRegistrar (0%) ExitCommand (0%) ExtendedClassNotFoundException (0%) ExtendedNoClassDefFoundError (0%) FFDCExceptionState.State (0%) FatalDeploymentException (0%) FatalKernelException (0%) FatalServerException (0%) FileDeployUriNormaliser (0%) GarbageCollectorSystemManagementExporter (0%) HelpCommand (0%) HelpCommandCompleter (0%) ImmutableOsgiConfiguration (0%) ImportMergeException (0%) InstallArtifactLifecycleListenerSupport (0%) InstallException (0%) InvalidComponentPropertyException (0%) JmxSystemExporter (0%) KernelAnnotationMBeanExporter (0%) KernelException (0%) KernelExtensionConfiguringOsgiPostProcessor (0%) KernelLoadTimeWeaver (0%) KernelMBeanExporter (0%) KernelModelMBean (0%) LoadTimeWeaverPostProcessor (0%) LocalInputOutputManager (0%) LoggingInstallArtifactLifecycleListener (0%) MBeanExporterPostProcessor (0%) ManagementExporter (0%) MemoryPoolSystemManagementExporter (0%) MemorySystemManagementExporter (0%) ModuleContextEvent (0%) ModuleContextFailedEvent (0%) NoSuchComponentException (0%) OperatingSystemManagementExporter (0%) OsgiFrameworkException (0%) OsgiFrameworkLogEvents (0%) OsgiFrameworkUtils (0%) OsgiFrameworkUtils.StandardOsgiServiceHolder (0%) OsgiKernelShellCommand (0%) OsgiKernelShellCommand.CommandInterpreterLinePrinter (0%) OvfParseException (0%) PackageCommandFormatter (0%) PackageCommandFormatter.QuasiExportPackageComparator (0%) PackageCommands (0%) PackageCompleter (0%) ParCommands (0%) ParCompleter (0%) ParPlanInstallArtifact (0%) ParPlanInstallArtifact.DelegatingArtifactStorage (0%) ParPlanInstallArtifactFactory (0%) ParametersMismatchException (0%) PipelinedApplicationDeployer (0%) PlanCommands (0%) PlanCompleter (0%) PlanInstallArtifactTreeFactory (0%) PlanResolver (0%) PlanScoper (0%) Plumber (0%) PropertyTypeMismatchException (0%) QuasiInstallStage (0%) QuasiInstallStage.InstallVisitor (0%) QuasiResolveStage (0%) RecoveryAgent (0%) RefreshException (0%) RegionAwareEventLoggerServiceFactory (0%) RegionAwarePackageAdminAccessor (0%) ResolutionDumpContributor (0%) ResolveStage (0%) ResolveStage.BundleFinderVisitor (0%) RuntimeSystemManagementExporter (0%) Scoper.DuplicateBundleSymbolicNameException (0%) Scoper.DuplicateExportException (0%) Scoper.UnsupportedBundleManifestVersionException (0%) ScopingTransformer (0%) ServiceCommands (0%) ServicePropertyCommandResolver (0%) ServiceProxyRetryDisablingBundleListener (0%) ServiceRegistryCommandCompleterRegistry (0%) ServiceRegistryCommandCompleterRegistry.ConverterRegistryServiceListener (0%) ServiceRegistryConverterRegistry (0%) ServiceRegistryConverterRegistry.ConverterRegistryServiceListener (0%) ServiceScoper (0%) ServiceScopingRegistryHook (0%) SessionCommandExecutor (0%) ShutdownCommand (0%) SingleSessionCommandExecutor (0%) Slf4jTracingService (0%) StandardArtifactFSFactory (0%) StandardDeployer (0%) StandardDeployerConfiguration (0%) StandardDeploymentIdentity (0%) StandardInstallEnvironmentFactory (0%) StandardInstallLog (0%) StandardModuleContextEventPublisher (0%) StandardModuleContextEventPublisher.ListenerListener (0%) StandardPackageAdminUtil (0%) StandardPipelineFactory (0%) StandardPlanInstallArtifact (0%) StandardRuntimeArtifactModel (0%) StandardScopeFactory.AppScope (0%) StandardScopeFactory.GlobalScope (0%) StandardScopeFactory.StandardScope (0%) StandardStateWriter (0%) StandardSystemDump (0%) StandardSystemStateAccessor (0%) StartException (0%) StateCleanupInstallArtifactLifecycleListener (0%) StopException (0%) StubArtifactFS (0%) StubBundleInstallArtifact (0%) StubInstallArtifact (0%) StubPlanInstallArtifact (0%) ThreadingSystemManagementExporter (0%) TransformedManifestProvidingBundleFileWrapper.TransformedManifestBundleEntry (0%) TransformedManifestProvidingBundleFileWrapper.TransformedManifestProvidingBundleFile (0%) UnableToSatisfyBundleDependenciesException (0%) UnableToSatisfyDependenciesException (0%) UnableToSatisfyLibraryDependenciesException (0%) UnableToSatisfyPlanDependenciesException (0%) VisitationStage (0%) StandardScopeFactory (3.7%) StandardExecutorServiceInfo (4.9%) StandardBundleStarter (6.9%) StandardBundleDriver (7.7%) DescopingBundleSymbolicName (7.9%) ModuleContextWrapper (9.5%) StandardImportPromotionVector (15.4%) FileArtifactFSEntry (17.2%) AbstractInstallArtifact (19.7%) AsyncShutdownDecorator (20%) StandardStateService (24.8%) InstallCompleter (25.3%) ApplicationDeployer.DeploymentOptions (25.9%) User (26.5%) StandardInstallArtifactRefreshHandler (27.3%) ConfigurationAdminExporter (30.6%) ArtifactIdentityScoper (31.2%) StandardResolutionFailureDetective (31.4%) EmptyRepository.EmptyQuery (33.3%) RegionManagerParserLogger (33.3%) Version (36.5%) ParsedCommand (37.2%) StandardQuasiImportPackage (37.8%) StandardQuasiParameterised (38.3%) StandardBundleInstallArtifact (38.8%) StandardQuasiExportPackage (38.9%) DefaultRuntimeArtifactModelObjectNameCreator (39.1%) GenericQuasiResolutionFailure (42.9%) PackageQuasiResolutionFailure (42.9%) ServiceUtils (42.9%) StandardQuasiFrameworkFactory (43.1%) StandardQuasiLiveService (44.4%) Scoper (44.9%) JmxArtifactRepositoryListener (46.4%) DeadlockAnalyser.Deadlock (46.5%) StandardArtifactAccessor (46.5%) ConfigCommands (47.8%) BundleDependencyDeterminer (50%) DirectoryArtifactFS (50%) KernelStatus (50%) PlanReaderErrorHandler (50%) StandardQuasiFramework.QuasiManifestTransformer (50%) ImportExpandingTransformer.ImportExpandingTreeVisitor (52.9%) TreeRestrictingInstallArtifactLifecycleListener (55.2%) BundleInstallArtifactFactory (56.4%) KernelScheduledThreadPoolExecutor (57.1%) BundleUtils (60%) StandardScopeServiceRepository (60.9%) StandardArtifactStorage (61.1%) BundleManifestProcessor (62.2%) AbstractInstallArtifactBasedCommands (63.9%) CommandDescriptor (64.7%) StandardQuasiBundle (64.8%) StandardInstallArtifactTreeInclosure (65.2%) StandardQuasiLiveFramework (65.5%) RegionManager (65.9%) AbstractPipelineStage (66.7%) BlockingSignal (66.7%) StandardCommandSession (66.7%) StandardArtifactStateMonitor (68.3%) ApplicationContextDependencyMonitor.ServiceDependency (68.4%) ArtifactIdentity (69.8%) HotDeploymentFileSystemListener (70%) StandardQuasiLiveBundle (70.1%) RegionManager.ImmutableRegion (71.4%) BlockingAbortableSignal (72.2%) KernelBundleClassLoader.ThrowAwayClassLoader (72.2%) ShutdownManager (72.2%) StandardQuasiFramework (73.1%) EquinoxOsgiFramework (73.6%) HotDeployer (73.8%) ModelInstallArtifactLifecycleListener (74.3%) UsesAnalyser (74.4%) EquinoxUtils (74.5%) FileArtifactFS (75%) RepositoryFactoryBean (75%) StandardQuasiRequiredBundle (75%) SimpleFileHelpAccessor (77.4%) BundleBridge (77.7%) StandardRamAccessorHelper (78.4%) AbortableSignalJunction (78.5%) ResolutionStateDumper (78.6%) DeployerArtifact (80%) StandardInstallEnvironment (80%) WorkAreaServiceFactory (80%) StandardRecoveryMonitor (80.8%) AbstractArtifact (81%) StandardArtifactAccessorPointer (81.2%) ImportExpansionHandler (81.5%) TransformedManifestProvidingBundleFileWrapper (81.8%) ShutdownClient (82.4%) UsesAnalyser.AnalysedUsesConflict (82.4%) AtomicInstallArtifactLifecycleListener (82.5%) LibraryBridge (82.6%) ImportExpandingTransformer (82.6%) DeployerRecoveryLog (83%) AbortableSignalJunction.SubSignal (83.3%) AbstractInstallArtifactCommandFormatter (83.3%) ArtifactIdentity (83.3%) ArtifactRetriever (83.3%) ModelInstallArtifactLifecycleListenerInitializer (83.3%) ThreadPoolUtils (83.3%) TreeUtils (83.3%) KernelBundleClassLoader (83.7%) BundleDeploymentPropertiesTransformer.Visitor (84.6%) ParsingUtils (84.6%) WatchTask (84.6%) ClassLoadingCommandProvider (85%) BundleArtifact (85.2%) CompensatingPipeline (85.7%) KernelStartedAwaiter (85.7%) PlanReaderEntityResolver (85.7%) ServiceCommandFormatter (85.7%) ShutdownManager.ShutdownLoggingListener (85.7%) StartupTracker.StartupTrackingRunnable (85.7%) BundleStartTracker (86.1%) ConfigurationArtifact (86.7%) KernelThreadPoolExecutor (86.7%) InitialArtifactDeployer.ArtifactDeployingRunnable (87%) OvfEnvironmentPropertiesReader (87%) JmxExecutorServiceExporter (87.5%) StartupTracker (87.5%) ManifestUpgrader (87.8%) UserRegionModuleContextAccessor (88%) CoreBundleActivator (88.3%) BundleInstallArtifactTreeFactory (88.9%) ConfigurationInitialiser (88.9%) EmptyRepository (88.9%) BundleManifestUtils (89.4%) StandardTicker (89.7%) DependencyCalculator (89.7%) UserConfigurationPropertiesSource (89.7%) ArtifactState (90%) BlueprintEventPostingOsgiBundleApplicationContextListener (91.1%) ExecutorServiceDelegate (91.7%) ClassLoadingHelper (91.8%) EquinoxBootDelegationHelper (91.8%) AbstractTrackedPackageImports (92%) KernelLoginModule (92.7%) ModelBundleListenerInitializer (92.9%) SyntheticContextBundleCreatingTransformer (92.9%) AbstractInstallArtifactCompleter (93%) BundleTrackedPackageImports (93.8%) ApplicationContextDependencyMonitor (93.8%) RepositoryDeployUriNormaliser (94%) ModelConfigurationListenerInitializer (94.1%) ServiceScopingStrategy (94.3%) BlockingSignal (94.4%) ConfigInstallArtifactCommandFormatter (94.9%) ConfigurationAdminDumpContributor (95%) SpringConfigServiceModelScanner (95.2%) ServiceReferenceTracker (95.2%) KernelConfiguration (95.4%) ConfigCompleter (95.5%) ConfigurationPublisher (95.8%) AnnotationBasedCommandResolver (96.6%) DescopingBundleManifest (96.7%) StandardArtifactIdentityDeterminer (96.7%) CommandLinePropertiesSource (96.7%) PackageImportWildcardExpander (96.9%) InitialArtifactDeployer (97.2%) NotifyingRuntimeArtifactRepository (97.2%) PropertyFormatter (98%) Assert (98.2%) OvfPropertiesSource (98.6%) AdditionalTrackedPackageImports (100%) ArtifactSpecification (100%) Assert.FatalAssertionException (100%) BundleDeploymentPropertiesTransformer (100%) BundleDescriptionComparator (100%) BundleDriverFactory (100%) BundleInstallArtifactGatheringTreeVisitor (100%) BundleStartTracker.StartupTrackerBundleListener (100%) CollectingTrackedPackageImports (100%) CompositeInstallArtifactCommandFormatter (100%) ConfigurationAdminConfigurationInfo (100%) ContainingTrackedPackageImports (100%) DeadlockAnalyser (100%) DelegatingManageableArtifact (100%) DelegatingManageableCompositeArtifact (100%) DeployerCompositeArtifact (100%) DeployerCompositeArtifactDependencyDeterminer (100%) DeployerLogEvents (100%) DeploymentException (100%) ExecutorServiceDelegate.ApplicationNameAccessor (100%) ExecutorServiceDelegate.KernelRunnable (100%) FFDCExceptionState (100%) FailureSignalledException (100%) HotDeployerLogEvents (100%) InstallCommand (100%) KernelAuthenticationConfiguration (100%) KernelClassLoaderCreator (100%) KernelConfigurationPropertiesSource (100%) KernelLogEvents (100%) KernelServicesLogEvents (100%) LogEventDelegate (100%) LongConverter (100%) ModelBundleListener (100%) ModelConfigurationListener (100%) NamedThreadFactory (100%) PackageUsesQuasiResolutionFailure (100%) ParBridge (100%) PlanBridge (100%) PlanDescriptor (100%) PlanMemberCollector (100%) PlanMemberCollector.ArtifactCollectingTreeVisitor (100%) PlanReader (100%) PropertiesBridge (100%) PropertiesFileCredentialStoreFactory (100%) PropertiesFileCredentialStoreFactory.ImmutableCredentialStore (100%) ResolutionFailureDetective.ResolverErrorsHolder (100%) Role (100%) ScopeNameFactory (100%) ScopedPlanIdentifyingTreeVisitor (100%) ServiceCommandFormatter.QuasiLiveServiceComparator (100%) ServiceRegistryCommandProviderResolver (100%) ShutdownCommand (100%) ShutdownCommandParser (100%) StandardArtifactStorageFactory (100%) StandardCommandProcessor (100%) StandardPipeline (100%) StandardQuasiPackage (100%) StandardScopeServiceRepository.Service (100%) StandardTicker.ExponentialHeartBeatPolicy (100%) StandardTrackedPackageImportsFactory (100%) StandardWorkArea (100%) StringConverter (100%) TransformationStage (100%) UserInstalledTaggingTransformer (100%) UserRegionLogEvents (100%) UsesAnalyser.ImportedSourcedPackage (100%) UsesAnalyser.SourcedPackage (100%) UsesAnalyser.UsedBySourcedPackage (100%) Enjoy!
After all the Lazy bundle testing the average is now 52.4%. It is going to take a lot of work to get the average up by something meaningful.
(In reply to comment #7) > After all the Lazy bundle testing the average is now 52.4%. It is going to take > a lot of work to get the average up by something meaningful. Some improvement wil happen as we restructure components when adding major new function For instance, I would hope that RegionManager, or rather the new code corresponding to today's RegionManager, would increase in coverage from its current 65.9% thanks to the framework hooks item. We need to continue to focus on testing as we implement large items. However, I take your point as I'm not sure how much this will affect the overall average. Other than that, we'll simply have to chip away making small improvements over time and trying to focus on the most crucial areas to get the most benefit.
52.6% I think there needs to be some work to stub out some types around the deployer. Testing with all these mocks is going to prove too brittle.
Re-classifying this an an enhancement as a reality check. It is tagged as helpwanted, but no help seems to be forthcoming. Also, committers almost always deliver more value by working on bugs and new function rather than specifically spending time writing tests.
As of 3.0.0.M05 we are still on 52%
It ought to be possible to write a test framework class that exercise all the constructors and getters of an Exception. This would not cope with special Exceptions (that carry specific causes, or have stacks manipulated) for specific purposes, though there ought not to be very many of these. A bit of reflection in the test framework class is what is needed. Then we could simply put in a standard Exception test, for each exception, and get rid of all the silly 0% Exception classes in the list. Another trick might be to have a specific test method for simple getters and setters. Again, this would only apply to simple field updaters. It might be feasible to have field testers for getters that should protect the field they get -- that is, ought to copy it. A bit of leverage like this might make it easier to get the easy unit testing written, and make it possible to 'document' such intended behaviour by reference to the tests. Just a thought.
We've got a coverage report on our HIPP now: https://hudson.eclipse.org/virgo/view/3.7.0-SNAPSHOT/job/gradle-build/lastBuild/jacoco/
One of the "bad" boy seems to be PipelinedApplicationDeployer with 1290 lines missed and only 89 covered.