####################
Helium Build Metrics
####################

.. index::
  module: Helium Build Metrics


.. contents::

Introduction
============

This describes the types of build and release metrics that can be collected using Helium and a Diamonds installation and how they can be collected.

.. index::
  single: Diamonds

Diamonds Link for builds:
=========================
    Diamonds Homepage: <http://diamonds.nmp.nokia.com/diamonds>


Helium configuration
====================
To enable logging to diamonds from Helium one needs to ensure that:

* The properties *diamonds.host* and *diamonds.port* are set correctly.
* By default they are taken from *helium/tools/common/companyproperties.ant.xml*,
  but can be overridden by using:

  * **Command line**    
  
    For example, if the Diamonds server IP address changed to **new.diamonds.server:newport** then you would use:
    
    * *hlm.bat -Ddiamonds.host=new.diamonds.server -Ddiamonds.port=newport*

  * **ANT team file** 
   
    For example, if the Diamonds server IP address changed to **new.diamonds.server:newport** then you would put the following lines in your <team>.ant.xml: 

    * *<property name="diamonds.host" value="new.diamonds.server"/>*  
    * *<property name="diamonds.port" value="newport"/>*

* If you define the property skip.diamonds to 'true' diamonds is disabled.


.. index::
  single: Diamonds server configuration

Diamonds server configuration
=============================

    Config File: helium/config/diamonds_config.xml.ftl


Properties need to be defined for successful logging:
-----------------------------------------------------

 ==========================        ============
 Property name                     Description
 ==========================        ============ 
 diamonds.host                     Diamonds server address 
 diamonds.port                     Server port number
 diamonds.path                     Builds path in diamonds server
 build.family                      Category of product
 time-stamp                        Time stamp format
 stages                            Start and end target of a stages with logical stage name
 sysdef.configurations.list        System definition name list to log component faults
 build.name                        Name of product
 release.label                     Name of release
 publish                           Set this property to publish to network
 publish.dir                       Published build environment location
 release.grace.dir                 Published location
 disable.analysis.tool             Set this property to disable API Usage Metrics
 diamonds.build.tags               Set this property to send custom build tag(s) to Diamonds
 ==========================        ============


.. index::
  single: Metrics

Metrics
=======

    
Metrics name: Build duration
----------------------------

Description
~~~~~~~~~~~~
    Build duration in hours as a function of time.

Collection method
~~~~~~~~~~~~~~~~~~~
    The started time and finished time are uploaded to diamonds automatically from Helium. 
    
Location in Diamonds
~~~~~~~~~~~~~~~~~~~~~~
    In Diamonds, Builds->Summary.  
    
    For categorization by product programs, Build->Click "category" hyperlink. For 
    categorization by build accelerators, Build->Other->Click "Build system" hyperlink.
    
    
RVCT compiler warnings 
----------------------

Description
~~~~~~~~~~~
    Number of build warnings in SW build - RVCT compiler warnings to tell about the quality of the software.
    
Collection Method
~~~~~~~~~~~~~~~~~
    Number of RVCT bad warnings, warnings and errors are send to diamond aumatically from Helium after each build.

Location in Diamonds
~~~~~~~~~~~~~~~~~~~~~~
    In Diamonds, Builds->Summary->Compilation error summary.
    

Metrics name: "number of object files" and "number of generated files"
----------------------------------------------------------------------

Description
~~~~~~~~~~~~
    Number of object files and generated files for a build    

Collection method
~~~~~~~~~~~~~~~~~~~
    Necessary data are collected from build information automatically    

    Based on helium/config/diamonds_config.xml.ftl cofiguration, Helium automatically sends the start and end time of a stage to diamonds.

        
Location in Diamonds
~~~~~~~~~~~~~~~~~~~~~~
    In Diamonds, Builds->Others->Object files & Generated files.  
   
   
Metrics name: Build stage duration
----------------------------------

Description
~~~~~~~~~~~~
    Date and time of start and finish. A=Date and time of start B= Date and time of finish.
    Metric = B-A calculated for each build stages. In the graph only the 4 main stages are shown.\

        * *1. pre-build (Synergy check outs and snapshots, build area preparation)*
        * *2. build (main build)*
        * *3. post build (Post build, China, Japan, EE images, EE zip,  Localization, Localized roms)*
        * *4. release to channels (db, ftp, network disk)*

Collection method
~~~~~~~~~~~~~~~~~~~
    The started time and finished time are uploaded to diamonds automatically from Helium. 
    
Location in Diamonds
~~~~~~~~~~~~~~~~~~~~~~
    In Diamonds, Builds->Summary. Click "Stages>>"
    
    
Metrics name: API Usage
----------------------------------

Description
~~~~~~~~~~~~
    Types of api are private, internal, domain and sdk. Illegal API is (internal+private), if  any illegal api exists it will show the Illegal API's name with path.

Collection method
~~~~~~~~~~~~~~~~~~~
    If disable.analysis.tool is not set, data will be uploaded to diamonds automatically from Helium. 
    
Location in Diamonds
~~~~~~~~~~~~~~~~~~~~~~
    In Diamonds, Builds->Other->API usage  


Metrics name: Build tags
------------------------

Description
~~~~~~~~~~~~
    Build tags are used to group builds for metric collection purposes.

Collection method
~~~~~~~~~~~~~~~~~~~
    To send custom build tags to Diamonds the property diamonds.build.tags should be set as follows:
     * For a single build tag (e.g. "build_tag1") -> hlm -Ddiamonds.build.tags="build_tag1" 
     * For multiple build tags (e.g. "build_tag1" and "build_tagN") -> hlm -Ddiamonds.build.tags="build_tag1,build_tagN" 
    
    Note:
    * Build tags should not exceed 50 characters.
    * Duplicate build tags will be ignored. 
    * If an "Available Tag" is set, then in Diamonds it gets removed from that list and transferred to "Build's Tags" list.

Location in Diamonds
~~~~~~~~~~~~~~~~~~~~~~
    In Diamonds, Builds->Tags->Build's Tags.  
    
    For categorization by tags, Click Builds->"Navigation" pane->"Build Archives"->by tags 


Metrics name: Information about "base environment" 
--------------------------------------------------

Description
~~~~~~~~~~~~
    Information about what "base environment" is unzipped.
    
Collection method
~~~~~~~~~~~~~~~~~~~
    Necessary data are collected from build information automatically if currentRelease.xml exists in the environment. 
    
Location in Diamonds
~~~~~~~~~~~~~~~~~~~~~~
    In Diamonds, Builds->Content. See "Input" for s60.
