Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[graal] Add support of Graal CoCom & CoLic Backend #672

Merged
merged 8 commits into from
Aug 23, 2019

Conversation

inishchith
Copy link
Contributor

@inishchith inishchith commented Jul 29, 2019

Address: inishchith/gsoc#9 & inishchith/gsoc#8


  • # PR related task
  • Updated all module docstrings
  • Updated all commit descriptions


This commit adds support for Graal's CoCom & CoLic Backend data enricher
along with their study implementation

Signed-off-by: inishchith <[email protected]>
This commit adds connectors for Graal's CoCom & CoLic Backend.
Segregates common methods into a separate utility file.

Signed-off-by: inishchith <[email protected]>
@inishchith inishchith changed the title Gsoc graal 2019 integration [graal] Add support of Graal CoCom & CoLic Backend Jul 29, 2019
@inishchith inishchith force-pushed the gsoc-graal-2019-integration branch 3 times, most recently from 955dbb9 to 8c64017 Compare July 30, 2019 09:49
@coveralls
Copy link

coveralls commented Jul 30, 2019

Pull Request Test Coverage Report for Build 1623

  • 0 of 0 changed or added relevant lines in 0 files are covered.
  • 84 unchanged lines in 2 files lost coverage.
  • Overall coverage increased (+1.0%) to 69.288%

Files with Coverage Reduction New Missed Lines %
/home/travis/build/chaoss/grimoirelab-elk/grimoire_elk/enriched/utils.py 35 45.95%
/home/travis/build/chaoss/grimoirelab-elk/grimoire_elk/utils.py 49 61.26%
Totals Coverage Status
Change from base Build 1618: 1.0%
Covered Lines: 5983
Relevant Lines: 8635

💛 - Coveralls

Copy link
Member

@valeriocos valeriocos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @inishchith for the PR. It's really in good shape!
If you want to add a test for the studies, you can have a look at the code here: https://github.com/chaoss/grimoirelab-elk/blob/master/tests/test_git.py#L134.

As agreed, we can keep working on this PR and include the enhancements. We could close the old PRs (#664 #669), WDYT?

grimoire_elk/enriched/cocom.py Outdated Show resolved Hide resolved
grimoire_elk/enriched/cocom.py Outdated Show resolved Hide resolved
tests/data/cocom.json Show resolved Hide resolved
tests/test_cocom.py Outdated Show resolved Hide resolved
@inishchith inishchith force-pushed the gsoc-graal-2019-integration branch from 8c64017 to 20eb820 Compare July 31, 2019 12:33
@inishchith
Copy link
Contributor Author

If you want to add a test for the studies, you can have a look at the code here: https://github.com/chaoss/grimoirelab-elk/blob/master/tests/test_git.py#L134.

Thanks a lot. I'll work on the additions.

As agreed, we can keep working on this PR and include the enhancements. We could close the old PRs (#664 #669), WDYT?

Yes. Agree with you. Done!

@inishchith inishchith force-pushed the gsoc-graal-2019-integration branch 3 times, most recently from ef8e5d0 to 31e87d1 Compare August 1, 2019 18:27
Copy link
Member

@valeriocos valeriocos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your work @inishchith :)

I've tested the cocom analysis using the conf below (projects.json and setup.cfg):

"cocom": [
            "https://github.com/chaoss/wg-value",
            "https://github.com/chaoss/grimoirelab-elk",
            "https://github.com/chaoss/augur",
            "https://github.com/chaoss/grimoirelab-sirmordred",
            "https://github.com/chaoss/grimoirelab-graal",
            "https://github.com/chaoss/governance",
            "https://github.com/chaoss/wg-evolution",
            "https://github.com/chaoss/wg-common",
            "https://github.com/chaoss/website",
            "https://github.com/chaoss/augur-sbom",
            "https://github.com/chaoss/wg-diversity-inclusion",
            "https://github.com/chaoss/wg-risk",
            "https://github.com/chaoss/metrics",
            "https://github.com/chaoss/grimoirelab-perceval",
            "https://github.com/chaoss/grimoirelab-kingarthur",
            "https://github.com/chaoss/grimoirelab-tutorial",
            "https://github.com/chaoss/grimoirelab",
            "https://github.com/chaoss/grimoirelab-sigils",
            "https://github.com/chaoss/grimoirelab-perceval-mozilla",
            "https://github.com/chaoss/grimoirelab-perceval-opnfv",
            "https://github.com/chaoss/grimoirelab-perceval-puppet",
            "https://github.com/chaoss/grimoirelab-sortinghat",
            "https://github.com/chaoss/grimoirelab-toolkit",
            "https://github.com/chaoss/grimoirelab-kidash",
            "https://github.com/chaoss/grimoirelab-hatstall",
            "https://github.com/chaoss/grimoirelab-cereslib",
            "https://github.com/chaoss/grimoirelab-manuscripts",
            "https://github.com/chaoss/grimoirelab-bestiary",
            "https://github.com/chaoss/grimoirelab-kibiter",
            "https://github.com/chaoss/prospector",
            "https://github.com/chaoss/whitepaper"
        ]

[cocom]
raw_index = cocom_raw_chaoss_file_level
enriched_index = cocom_enrich_chaoss_file_level
category = code_complexity_lizard_file
studies = [enrich_repo_analysis]
branches = master

[enrich_repo_analysis]
out_index = cocom_enrich_chaoss_repo_level

The raw, enriched and study data is available on the incubator. I had to restart the process a couple of times due problems with the checkout step performed by graal (I guess they were connection problems, since I wasn't able to replicate the issue). The cocom_enrich_chaoss_file_level
seems right, the values of grimoirelab_creation_date are in line with last dates in the corresponding repos. On the other hand, cocom_enrich_chaoss_repo_level doesn't seem right, since the repos listed are less than the one in cocom_enrich_chaoss_file_level, you can check the following vizs:

Note that I also deleted the study index and relaunched the study, but the mismatch with the number of repos is still there.

To better understand what's going on, I would add some log info when processing the repos in the study, for instance before starting the study analysis and just after [1] [2]. WDYT?

Another comment is about the mapping of the study, we should probably make it explicit. For instance, before the CocomEnrich class declaration, we can add the object mapping:

class Mapping(BaseMapping):

    @staticmethod
    def get_elastic_mappings(es_major):
        """Get Elasticsearch mapping.

        Ensure data.message is string, since it can be very large

        :param es_major: major version of Elasticsearch, as string
        :returns:        dictionary with a key, 'items', with the mapping
        """

        mapping = '''
         {
            "dynamic":true,
            "properties": {
                "id" : {
                    "type" : "keyword"
                },
                "interval_months" : {
                    "type" : "long"
                },
                "origin" : {
                    "type" : "keyword"
                },
                "study_creation_date" : {
                    "type" : "date"
                },
                "total_blanks" : {
                    "type" : "long"
                },
                "total_blanks_per_loc" : {
                    "type" : "float"
                },
                "total_ccn" : {
                    "type" : "long"
                },
                "total_comments" : {
                    "type" : "long"
                },
                "total_comments_per_loc" : {
                    "type" : "float"
                },
                "total_files" : {
                    "type" : "long"
                },
                "total_loc" : {
                    "type" : "long"
                },
                "total_loc_per_function" : {
                    "type" : "float"
                },
                "total_num_funs" : {
                    "type" : "long"
                },
                "total_tokens" : {
                    "type" : "long"
                }
            }
        }
        '''

        return {"items": mapping}

This will require to add the import from grimoire_elk.elastic_mapping import Mapping as BaseMapping. Then in the method enrich_repo_analysis, the line where the es_out is initialized should be changed to es_out = ElasticSearch(enrich_backend.elastic.url, out_index, mappings=Mapping)

Finally, a really tiny comment is about the headers of the files incuded in the PR, the third paragraph should be changed to:

# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

@inishchith inishchith force-pushed the gsoc-graal-2019-integration branch from dd386b1 to ab9bc49 Compare August 13, 2019 19:59
@valeriocos
Copy link
Member

ok, ping me when the PR is ready to review @inishchith , thanks

@florentk
Copy link
Contributor

I try to use the last PRs of @inishchith , but I think that I have a trouble with configuration. Where put this code ?

[colic]
raw_index = colic_raw_chaoss_file_level
enriched_index = colic_enrich_chaoss_file_level
category = code_license_scancode_cli
studies = [enrich_colic_analysis]
exec-path = /home/slimbook/Escritorio/sources/graal-libs/scancode-toolkit/etc/scripts/scancli.py
branches = master

[enrich_colic_analysis]
out_index = colic_enrich_graal_repo
interval_months = [6]

@valeriocos write setup.cfg, but I am not sure, this is in grimoirelab-elk root repository ?

In addition of two PR in grimoirelab-elk and grimoirelab-sirmordred and modified the projects.json and setup.cfg files, not other modification is needed ?

NOTE : I have forked the the code on https://github.com/florentk to build a new docker-full image (see previous post chaoss/grimoirelab-graal#51 )

@inishchith
Copy link
Contributor Author

inishchith commented Aug 15, 2019

@florentk Sorry for the delayed response.

The code in reference is part of the configuration section used to execute the raw and enriched tasks of grimoirelab-elk via micro-mordred. You can check out the link for more info. on how to execute it.

This PR addresses the implementation of raw and enrich tasks( along with study) on Graal's CoCom & CoLic Backends.

I'm currently working on documentation which can help reproduce results or else for time being you can check out my blog-posts, the initial ones are based on the execution of micro-mordred :)

Let me know if you have more questions.

Thanks!

@valeriocos
Copy link
Member

Hi @florentk , sorry for the late reply.

We are currently using micro-mordred to work on the graal integration. You just need to use the docker-compose at: https://github.com/chaoss/grimoirelab-sirmordred#source-code-and-docker (we omitted the mariadb section, since we have a mysql instance installed locally). The advantage of using micro-mordred is that you can focus on a single data source.

@valeriocos
Copy link
Member

almost the same timing @inishchith :)

@florentk
Copy link
Contributor

florentk commented Aug 16, 2019

thanks @inishchith and @valeriocos for your quick responce.
I run the docker full with RUN_MORDRED=NO, and I get a shell in the container to run micro.py.

I have adapted existing setup.cfg (user/password, htttps->http, database name ...) and I add these lines :

[cocom]
raw_index = cocom_raw_chaoss_file_level
enriched_index = cocom_enrich_chaoss_file_level
category = code_complexity_lizard_file
studies = [enrich_cocom_analysis]
branches = master

[enrich_cocom_analysis]
out_index = cocom_enrich_chaoss_repo_level

and I use this minimal projects.json :

{
    "grimoire": {
        "git": [
            "https://github.com/chaoss/grimoirelab-perceval"
        ],
        "cocom": [
            "https://github.com/chaoss/grimoirelab-perceval"
        ],
        "*github": [
            "https://github.com/chaoss/grimoirelab-perceval"
        ],
        "*github:pull": [
            "https://github.com/chaoss/grimoirelab-perceval"
        ],
        "github:repo": [
            "https://github.com/chaoss/grimoirelab-perceval"
        ],
        "jenkins": [
           "https://build.opnfv.org/ci"
        ],
        "gitlab:issue": [
            "https://gitlab.com/gitlab-org/gitlab-ce"
        ],
        "gitlab:merge": [
            "https://gitlab.com/gitlab-org/gitlab-ce"
        ]
    }
}

I run theses commands :

micro.py --raw --enrich --cfg ./setup.cfg --backends git cocom
micro.py --panels --cfg ./setup.cfg 

But on Kibiter I don't find the index patterns relative to cocom.

I got this error :
AttributeError: 'CoComCommand' object has no attribute 'backend'

The complete log :

2019-08-16 14:35:27,371 Reading projects data from  ./projects.json 
2019-08-16 14:35:27,372 [cocom] collection phase starts
Collection for cocom: starting...
2019-08-16 14:35:27,372 [cocom] collection starts for https://github.com/chaoss/grimoirelab-perceval
2019-08-16 14:35:27,372 Feeding Ocean from cocom (cocom_raw_chaoss_file_level)
2019-08-16 14:35:27,374 Error feeding ocean from 'NoneType' object has no attribute 'rfind'
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/grimoire_elk/elk.py", line 150, in feed_backend
    backend_cmd.backend = backend_cmd.BACKEND(**init_args)
  File "/usr/local/lib/python3.5/dist-packages/graal/backends/core/cocom.py", line 82, in __init__
    tag=tag, archive=archive)
  File "/usr/local/lib/python3.5/dist-packages/graal/graal.py", line 110, in __init__
    self.worktreepath = os.path.join(worktreepath, os.path.split(self.gitpath)[1])
  File "/usr/lib/python3.5/posixpath.py", line 103, in split
    i = p.rfind(sep) + 1
AttributeError: 'NoneType' object has no attribute 'rfind'
2019-08-16 14:35:27,375 Done cocom 
2019-08-16 14:35:27,375 [cocom] collection finished for https://github.com/chaoss/grimoirelab-perceval
2019-08-16 14:35:27,375 [cocom] collection phase finished in 00:00:00
Collection for cocom: finished after 00:00:00 hours
2019-08-16 14:35:27,382 Loading raw data finished!
2019-08-16 14:35:27,382 Reading projects data from  ./projects.json 
2019-08-16 14:35:37,410 [cocom] enrichment phase starts
2019-08-16 14:35:37,427 [cocom] enrichment starts for https://github.com/chaoss/grimoirelab-perceval
2019-08-16 14:35:37,432 Error enriching ocean 'NoneType' object has no attribute 'rfind'
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/grimoire_elk/elk.py", line 901, in init_backend
    backend_cmd.backend
AttributeError: 'CoComCommand' object has no attribute 'backend'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/grimoire_elk/elk.py", line 580, in enrich_backend
    backend_cmd = init_backend(klass(*backend_params))
  File "/usr/local/lib/python3.5/dist-packages/grimoire_elk/elk.py", line 906, in init_backend
    backend_cmd.backend = backend_cmd.BACKEND(**init_args)
  File "/usr/local/lib/python3.5/dist-packages/graal/backends/core/cocom.py", line 82, in __init__
    tag=tag, archive=archive)
  File "/usr/local/lib/python3.5/dist-packages/graal/graal.py", line 110, in __init__
    self.worktreepath = os.path.join(worktreepath, os.path.split(self.gitpath)[1])
  File "/usr/lib/python3.5/posixpath.py", line 103, in split
    i = p.rfind(sep) + 1
AttributeError: 'NoneType' object has no attribute 'rfind'
2019-08-16 14:35:37,434 Done cocom 
2019-08-16 14:35:37,434 [cocom] enrichment finished for https://github.com/chaoss/grimoirelab-perceval
2019-08-16 14:35:37,434 [cocom] enrichment phase finished in 00:00:00
2019-08-16 14:35:37,435 [cocom] data retention start
2019-08-16 14:35:37,446 [cocom] data retention end
2019-08-16 14:35:37,446 [cocom] identities retention end
2019-08-16 14:35:37,447 [cocom] autorefresh start
2019-08-16 14:35:37,481 Refreshing identities fields in enriched index cocom
2019-08-16 14:35:37,493 No results found from http://localhost:9200/cocom_enrich_chaoss_file_level
2019-08-16 14:35:37,493 Total eitems refreshed for identities fields 0
2019-08-16 14:35:37,498 No results found from http://localhost:9200/cocom_enrich_chaoss_file_level
2019-08-16 14:35:37,498 Total eitems refreshed for identities fields 0
2019-08-16 14:35:37,498 [cocom] autorefresh end
2019-08-16 14:35:37,498 [cocom] studies start
Executing for cocom the studies ['enrich_cocom_analysis']
2019-08-16 14:35:39,543 Starting study: enrich_cocom_analysis, params {'out_index': 'cocom_enrich_chaoss_repo_level'}
2019-08-16 14:35:39,543 [enrich-cocom-analysis] Start enrich_cocom_analysis study
2019-08-16 14:35:39,548 GET http://localhost:9200/cocom_enrich_chaoss_file_level/_search [status:200 request:0.004s]
2019-08-16 14:35:39,548 [enrich-cocom-analysis] 0 repositories to process
2019-08-16 14:35:39,548 [enrich-cocom-analysis] End enrich_cocom_analysis study
2019-08-16 14:35:39,555 [cocom] studies end
2019-08-16 14:35:39,555 [cocom] autorefresh for studies start
2019-08-16 14:35:39,555 [cocom] autorefresh for studies end
2019-08-16 14:35:39,556 Loading enriched data finished!

@florentk
Copy link
Contributor

I used the grimoirelab-graal repos of chaoss, maybe I need to use that of inishchith ?

@valeriocos
Copy link
Member

valeriocos commented Aug 16, 2019

@florentk we can try to setup the same environment @inishchith and myself are using to work on this feature. Please try following (please @inishchith check if I forgot something).

micro.py --raw --enrich --cfg ./setup.cfg --backends git cocom
micro.py --panels --cfg ./setup.cfg

Optionally, you can create a configuration in PyCharm to speed up the executions (Run -> Edit configuration -> +). The final results should be something like:
captura_24

Let us know if you encounter any problem :)

@valeriocos valeriocos self-requested a review August 16, 2019 22:42
Copy link
Member

@valeriocos valeriocos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A couple of minor fixes to make the data being visible in the dashboards, thanks :)

grimoire_elk/enriched/cocom.py Outdated Show resolved Hide resolved
grimoire_elk/enriched/colic.py Outdated Show resolved Hide resolved
grimoire_elk/enriched/cocom.py Show resolved Hide resolved
@inishchith inishchith force-pushed the gsoc-graal-2019-integration branch from ab9bc49 to 5373bfd Compare August 17, 2019 04:30
@inishchith
Copy link
Contributor Author

@valeriocos Thanks for having a look.
I've updated the PR with necessary changes

@florentk
Copy link
Contributor

florentk commented Aug 17, 2019

It's ok for me, maybe a no blocking bug in one of our repositories :

2019-08-17 08:43:51,370 Analysis failed at 5c7cf2756aed68171f7350bb8d80a0fed37162e9
2019-08-17 08:43:51,370 Error feeding ocean from cocom (https://github.com/kiwix/web): invalid literal for int() with base 10: 'File'
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/grimoire_elk/elk.py", line 228, in feed_backend
    ocean_backend.feed(**params)
  File "/usr/local/lib/python3.5/dist-packages/grimoire_elk/raw/elastic.py", line 228, in feed
    self.feed_items(items)
  File "/usr/local/lib/python3.5/dist-packages/grimoire_elk/raw/elastic.py", line 244, in feed_items
    for item in items:
  File "/usr/local/lib/python3.5/dist-packages/perceval/backend.py", line 161, in fetch
    for item in self.fetch_items(category, **kwargs):
  File "/usr/local/lib/python3.5/dist-packages/graal/graal.py", line 183, in fetch_items
    raise e
  File "/usr/local/lib/python3.5/dist-packages/graal/graal.py", line 176, in fetch_items
    commit['analysis'] = self._analyze(commit)
  File "/usr/local/lib/python3.5/dist-packages/graal/backends/core/cocom.py", line 189, in _analyze
    file_info = self.analyzer.analyze(local_path)
  File "/usr/local/lib/python3.5/dist-packages/graal/backends/core/cocom.py", line 242, in analyze
    cloc_analysis = self.cloc.analyze(**kwargs)
  File "/usr/local/lib/python3.5/dist-packages/graal/backends/core/analyzers/cloc.py", line 128, in analyze
    results = self.__analyze_file(message)
  File "/usr/local/lib/python3.5/dist-packages/graal/backends/core/analyzers/cloc.py", line 58, in __analyze_file
    blank_lines = int(info_file[2])
ValueError: invalid literal for int() with base 10: 'File'

or :

2019-08-17 10:43:35,881 Analysis failed at c6ee59a8e1acf65b7931534c9613bf6c5c23909c
2019-08-17 10:43:35,881 Error feeding ocean from cocom (https://github.com/kiwix/kiwix-android): invalid literal for int() with base 10: 'Shell'
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/grimoire_elk/elk.py", line 228, in feed_backend
    ocean_backend.feed(**params)
  File "/usr/local/lib/python3.5/dist-packages/grimoire_elk/raw/elastic.py", line 228, in feed
    self.feed_items(items)
  File "/usr/local/lib/python3.5/dist-packages/grimoire_elk/raw/elastic.py", line 244, in feed_items
    for item in items:
  File "/usr/local/lib/python3.5/dist-packages/perceval/backend.py", line 161, in fetch
    for item in self.fetch_items(category, **kwargs):
  File "/usr/local/lib/python3.5/dist-packages/graal/graal.py", line 183, in fetch_items
    raise e
  File "/usr/local/lib/python3.5/dist-packages/graal/graal.py", line 176, in fetch_items
    commit['analysis'] = self._analyze(commit)
  File "/usr/local/lib/python3.5/dist-packages/graal/backends/core/cocom.py", line 189, in _analyze
    file_info = self.analyzer.analyze(local_path)
  File "/usr/local/lib/python3.5/dist-packages/graal/backends/core/cocom.py", line 242, in analyze
    cloc_analysis = self.cloc.analyze(**kwargs)
  File "/usr/local/lib/python3.5/dist-packages/graal/backends/core/analyzers/cloc.py", line 128, in analyze
    results = self.__analyze_file(message)
  File "/usr/local/lib/python3.5/dist-packages/graal/backends/core/analyzers/cloc.py", line 58, in __analyze_file
    blank_lines = int(info_file[2])
ValueError: invalid literal for int() with base 10: 'Shell'

@valeriocos
Copy link
Member

Thank you @florentk for reporting this issue, would you mind to open an issue in graal repo? thanks

@valeriocos
Copy link
Member

Thank you @inishchith , I'm going to perform a test and report.

@valeriocos
Copy link
Member

@inishchith everything looks good. We should decide what to do with the default interval_months filter.

@inishchith
Copy link
Contributor Author

@valeriocos Thanks for testing the integration.

We should decide what to do with the default interval_months filter.

Sure. I'll get back to you on this, later today :)

Copy link
Member

@valeriocos valeriocos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry to ask you to modify the PR. When performing a full-chain test, I see that the index patterns weren't using the grimoirelab_creation_date time field. Can you please add it? Thanks

grimoire_elk/enriched/cocom.py Show resolved Hide resolved
grimoire_elk/enriched/colic.py Show resolved Hide resolved
Add appropriate logs for the enrichers
Update CoCom Study method name
Fix Tests

Signed-off-by: inishchith <[email protected]>
@inishchith inishchith force-pushed the gsoc-graal-2019-integration branch from 5373bfd to effc887 Compare August 20, 2019 08:32
@inishchith
Copy link
Contributor Author

@valeriocos Thanks.
I've updated the PR with the changes

@valeriocos
Copy link
Member

Thanks @inishchith

Copy link
Member

@valeriocos valeriocos left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks @inishchith

@valeriocos
Copy link
Member

@sduenas feel free to have a look at it

Copy link
Member

@sduenas sduenas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@valeriocos valeriocos merged commit 640ac44 into chaoss:master Aug 23, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants