Skip to content
Snippets Groups Projects
Commit cec66d0e authored by Michael Youkeim's avatar Michael Youkeim
Browse files

Added 3rd week's work

parent 0ee389fd
No related branches found
No related tags found
No related merge requests found
Showing
with 34297 additions and 56 deletions
This diff is collapsed.
This diff is collapsed.
Source diff could not be displayed: it is too large. Options to address this: view the blob.
Source diff could not be displayed: it is too large. Options to address this: view the blob.
File added
File added
{
"acdc": {
"num_clusters": 75,
"entity_count_per_cluster": {
"org.apache.hadoop.util.ss": 164,
"org.apache.hadoop.security.http.ss": 5,
"org.apache.hadoop.metrics2.sink.ss": 10,
"org.apache.hadoop.ipc.ss": 140,
"org.apache.hadoop.oncrpc.ss": 31,
"org.apache.hadoop.ha.ss": 61,
"org.apache.hadoop.http.ss": 41,
"org.apache.hadoop.fs.ss": 322,
"org.apache.hadoop.util.concurrent.ss": 6,
"org.apache.hadoop.security.authentication.server.ss": 4,
"org.apache.hadoop.fs.impl.prefetch.ss": 28,
"org.apache.hadoop.io.ss": 167,
"org.apache.hadoop.security.ss": 120,
"org.apache.hadoop.security.ssl.ss": 18,
"org.apache.hadoop.fs.viewfs.ss": 62,
"org.apache.hadoop.fs.store.audit.ss": 4,
"org.apache.hadoop.fs.crypto.ss": 4,
"org.apache.hadoop.io.serializer.ss": 13,
"org.apache.hadoop.fs.statistics.impl.ss": 24,
"org.apache.hadoop.http.lib.ss": 4,
"org.apache.hadoop.service.ss": 12,
"org.apache.hadoop.fs.sftp.ss": 6,
"org.apache.hadoop.metrics2.impl.ss": 50,
"org.apache.hadoop.security.token.delegation.ss": 17,
"org.apache.hadoop.metrics2.lib.ss": 54,
"org.apache.hadoop.crypto.key.kms.ss": 69,
"org.apache.hadoop.net.ss": 27,
"org.apache.hadoop.conf.ss": 41,
"org.apache.hadoop.fs.statistics.ss": 16,
"org.apache.hadoop.metrics2.sink.ganglia.ss": 9,
"org.apache.hadoop.ipc.protobuf.ss": 100,
"org.apache.hadoop.io.retry.ss": 49,
"org.apache.hadoop.oncrpc.security.ss": 10,
"org.apache.hadoop.util.curator.ss": 4,
"org.apache.hadoop.security.alias.ss": 33,
"org.apache.hadoop.ha.protocolPB.ss": 9,
"org.apache.hadoop.crypto.key.ss": 31,
"org.apache.hadoop.fs.shell.ss": 196,
"org.apache.hadoop.security.token.delegation.web.ss": 35,
"org.apache.hadoop.io.compress.bzip2.ss": 16,
"org.apache.hadoop.tracing.ss": 93,
"org.apache.hadoop.security.authorize.ss": 11,
"org.apache.hadoop.portmap.ss": 12,
"org.apache.hadoop.log.ss": 12,
"org.apache.hadoop.fs.impl.ss": 27,
"org.apache.hadoop.fs.store.ss": 16,
"org.apache.hadoop.io.erasurecode.rawcoder.ss": 16,
"org.apache.hadoop.io.compress.ss": 36,
"org.apache.hadoop.fs.audit.ss": 3,
"org.apache.hadoop.fs.shell.find.ss": 17,
"org.apache.hadoop.util.bloom.ss": 2,
"org.apache.hadoop.fs.local.ss": 3,
"org.apache.hadoop.io.erasurecode.codec.ss": 35,
"org.apache.hadoop.util.hash.ss": 3,
"org.apache.hadoop.crypto.ss": 6,
"org.apache.hadoop.net.unix.ss": 13,
"org.apache.hadoop.util.functional.ss": 21,
"org.apache.hadoop.security.token.ss": 20,
"org.apache.hadoop.ha.proto.ss": 82,
"org.apache.hadoop.metrics2.util.ss": 7,
"org.apache.hadoop.io.file.tfile.ss": 66,
"org.apache.hadoop.fs.http.ss": 3,
"org.apache.hadoop.metrics2.ss": 2,
"org.apache.hadoop.io.serializer.avro.ss": 8,
"org.apache.hadoop.fs.permission.ss": 9,
"org.apache.hadoop.fs.protocolPB.ss": 4,
"org.apache.hadoop.fs.ftp.ss": 6,
"org.apache.hadoop.service.launcher.ss": 17,
"org.apache.hadoop.io.compress.zlib.ss": 10,
"org.apache.hadoop.io.nativeio.ss": 17,
"org.apache.hadoop.io.erasurecode.ss": 21,
"org.apache.hadoop.metrics2.source.ss": 4,
"org.apache.hadoop.ipc.proto.ss": 43,
"org.apache.hadoop.tools.proto.ss": 20,
"org.apache.hadoop.security.proto.ss": 83
},
"a2a_metric": {
"result": 35.466210436270316
},
"cvg_metric": {
"result": 0.037037037037037035
}
},
"pkg": {
"num_clusters": 1,
"entity_count_per_cluster": {
"root": 3007
},
"a2a_metric": {
"result": 100.0
},
"cvg_metric": {
"result": 1.0
}
},
"wca_uem": {
"num_clusters": 50,
"entity_count_per_cluster": {
"0": 2704,
"1": 3,
"2": 3,
"3": 1,
"4": 1,
"5": 1,
"6": 1,
"7": 1,
"8": 1,
"9": 1,
"10": 1,
"11": 1,
"12": 1,
"13": 1,
"14": 1,
"15": 1,
"16": 1,
"17": 1,
"18": 1,
"19": 1,
"20": 1,
"21": 1,
"22": 1,
"23": 1,
"24": 1,
"25": 1,
"26": 1,
"27": 1,
"28": 1,
"29": 1,
"30": 1,
"31": 1,
"32": 3,
"33": 1,
"34": 1,
"35": 1,
"36": 1,
"37": 1,
"38": 1,
"39": 1,
"40": 1,
"41": 1,
"42": 1,
"43": 1,
"44": 2,
"45": 1,
"46": 1,
"47": 1,
"48": 1,
"49": 1
},
"a2a_metric": {
"result": 38.43905793364277
},
"cvg_metric": {
"result": 0.1
}
},
"cvg_acdc_pkg": 0.23755364806866952,
"cvg_acdc_wca_uem": 1.0,
"cvg_pkg_wca_uem": 0.23755364806866952
}
\ No newline at end of file
This diff is collapsed.
{
"6ee5a73e0e91a2ef27753a32c576835e951d8119": {
"java": "1.6",
"maven": "3.0.0",
"compatible": false
},
"a2b1aa947105f0a20fcc5aeed302f77a421fe708": {
"java": "1.6",
"maven": "3.0.0",
"compatible": false
},
"6c33846767599bc7565b187bea8420d850810fcf": {
"java": "1.6",
"maven": "3.0.0",
"compatible": false
},
"55d3dc50d16cd5b94f542f74e5329de4c30a8655": {
"java": "1.6",
"maven": "3.0.0",
"compatible": false
},
"d9c9fb913ef524f38df76875e7820b4260607a4a": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"3758710bffd41c20932be779d395a6cc1d1bb177": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"cbfe8fea0ee9753b1f79dd8bb9a2972d0539e9ec": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"42d1c9b251dcbdbcd1a867f5bae0d217f343584d": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"805c1280ce2773bc61ea718723b42b09d795688f": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"eacd9abf500a08e7717fca712067cc053b53f3ab": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"2db30031d2dafbfb380ce0977d568a9af56a44d5": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"d44513c3767bc0c6490273fc486c1c26d90ab3f4": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"8ad1fcb3c3e27c91935a4ef55a92d0bf244f8d08": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"743cbf6ef3f64593c141e7dd302ad2a2d2e3b197": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"8a9e63e468155f2a57bf19f82f920a7cc9d1d302": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"56f386b98d965cccdff852be5a3f762aeceb845f": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"0e7214933df369ba12561ded1e3bc04bebc100c7": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"3dd40a70ca7861d349f5750a2f865ffdfb464aaa": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"4bca22005f48f426b9bc7cf36d435ead470a2590": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"c959c1ac750d82fca1ddaf877e970a39ab0d2e4c": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"2115bd2ec753b16004fb307d211f34d6ac02b91b": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"f91a2cb14db2f43dedf0bb19a6f21992b7776341": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"53c598ab11d815fdd1bd67c6fc5cd3d9aef10b7a": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"a4f30ff53c10672ec9ad847b4892f39e94fb1bf8": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"70b1c5ca7562d2b21450bb80858f261092304597": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"20604b36a7d57a449b4a0d523ee9bbf1de18ea96": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"f569c8a2a5be66510ee958b1c3ec4ec1ddd957e2": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"9f551fa542d72b549518f6246d372b659a2447c4": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"85623a2d75c5f8855228f1c3cc46b4d5087f5833": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"8962f5ce88bba03d113c5849db8c464bfd1669a8": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"cda2564e1c7b37ba32dec9c54b9de3fbfb82da8b": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"8ef140d38b16a18050e9e7901e8aadd424aef20f": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"4d63b7a016232d3d816e9a0229a029a07a06757a": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"cdfc555eae5066d88075dbfe6e3379d9a54e4294": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"5f9b4c14a175873b4f82654513e289c657c694eb": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"b3a8d99817dcceb4d1125dec0c3ecbb0f15f6c76": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"febc5040b9aad24a6c9df9e7fe138965cf1c994b": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"569a9bd5f95085609894c1f07b75387c78659d6a": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"52f0259502de42e433588c299339bf5cd4ba1f8e": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"4402e2fceff56f2dbbf58df06a421c52344cfdc4": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"3caca924bc72fe4a0e5b1ea89adb098cc1eb7874": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"990e4945562974a285f31d8385230b03a9d557e7": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"e05ff82bd95dd802233e2424e8eafbd7ec6944c5": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"17d4fbbf0af9b93de9502afb274e91533140d1c6": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"15b9077c2d41f59c716582d8f7ae6e334630c0ac": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"b20180ffa6c89396d9fcfec8b029b9c600503c3d": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"c79728478caadd8374bce2bc3f466db1da1e3ad1": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"0d91576ec31f63402f2db6107a04155368e2632d": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"bfef9807a08435822546dd66dc72531465f34743": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"03c858dad46e440028c58a716630160338db4b14": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"ed642b5d8dd4cbe19518f0d36dc63700bc1bd7a9": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"4e7c4a6e1fd00767d966cd2482a364b2eacbd35b": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"be9c67930b57c516723d566625f9036a88a84055": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"e0a9e1bfb724b60af322666b8267c7a9121f84a7": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"b47ad1ccbaf6a75eecfbeddb17e539480a01aab3": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"48505679c03f953fd045cc8077e210ef191c51dd": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"86840834ed822527196a7eca117648be4df43292": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"d7200a4b59bac51076432634548c9b5a91e48f17": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"b0f0ef17f07c0140858bcb680f86fbbab3beccb8": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"d9a7404c389ea1adffe9c13f7178b54678577b56": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"2ca93d1fbf0fdcd6b4b5a151261052ac106ac9e1": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"59384dfb710f42d2a419c1b7db5a1a62a39be5f3": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"ac35e3464ff1b5bacf416fb78112681f0a9e7ed8": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"24d920b80eb3626073925a1d0b6dcf148add8cc0": {
"java": "1.6",
"maven": "3.0.2",
"compatible": false
},
"15b7076ad5f2ae92d231140b2f8cebc392a92c87": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"4ad484883f773c702a1874fc12816ef1a4a54136": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"b1ed28fa77cb2fab80c54f9dfeb5d8b7139eca34": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"06f4ac0ccdc623283106f258644148d5e003f75c": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"da77f423d142c4dda8810d4668edde3c7d2999e8": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"1bb31fb22e6f8e6df8e9ff4e94adf20308b4c743": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"c89a14a8a4fe58f01f0cba643f2bc203e1a8701e": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"a37e423e8407c42988577d87907d13ce0432dda1": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"a62637a413ad88c4273d3251892b8fc1c05afa34": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"b9e3eff62a7415d8666656a75db69ff3e43f8e7e": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"4838b735f0d472765f402fe6b1c8b6ce85b9fbf1": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"d6402fadedade4289949ba9f70f7a0bfb9bca140": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"2753185a010e70f8d9539f42151c79177781122d": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"687233f20d24c29041929dd0a99d963cec54b6df": {
"java": "1.7",
"maven": "3.0.2",
"compatible": true
},
"9581fb715cbc8a6ad28566e83c6d0242a7306688": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"2ed58c40e5dcbf5c5303c00e85096085b1055f85": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"d152557cf7f4d2288524c222fcbaf152bdc038b0": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"a5d5342228050a778b20e95adf7885bdba39985d": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"60f66a930626255d60dea7acc828975061ec37de": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"dbb28eb1f2125b4a2e43977d9add80a45f359c28": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"7d4431c93bf4faaa8ca54e2f9a219bf7e1d506b7": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"005f4528c7b0aa4a48cf62b11e837be886f267d3": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"a49b3be38ed97a27f215afb996c6db516f5857d7": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"846c5ceb3a929ad7b2dcea9bef07299af17bdc84": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"5707f88d8550346f167e45c2f8c4161eb3957e3a": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"d1443988f809fe6656f60dfed4ee4e0f4844ee5c": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"a57bba470b396c163baef7ac9447c063180ec15b": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"669d6f13ec48a90d4ba7e4ed1dd0e9687580f8f3": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"6c348c56918973fd988b110e79231324a8befe12": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"4bca385241c0fc8ff168c7b0f2984a7aed2c7492": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"5c61ad24887f76dfc5a5935b2c5dceb6bfd99417": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"3d94da1e00fc6238fad458e415219f87920f1fc3": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"e92a77099b91620cee84513cc879089907468075": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"0665c5f09afb2d6f59b6c4d4980f8b1ff9cbe620": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"e648b6e1382336af69434dfbf9161bced3caa244": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"0c01cf57987bcc7a17154a3538960b67f625a9e5": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"8e15e240597f821968e14893eabfea39815de207": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"064c8b25eca9bc825dc07a54d9147d65c9290a03": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"144f1cf76527e6c75aec77ef683a898580f3cc8d": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"bf3fb585aaf2b179836e139c041fc87920a3c886": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"855e0477b1706a2d5b0df6a2b0e461aeec8839c2": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"d670c3a4da7dd80dccf6c6308603bb3bb013b3b0": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"2843c688bcc21c65eb3538ffb3caeaffe440eda8": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"778d4edd9adbe9519c3d6df65e45ddc8bb0ab2da": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"4ec5acc70418a3f2327cf83ecae1789a057fdd99": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"621b43e254afaff708cd6fc4698b29628f6abc33": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"13eda5000304099d1145631f9be13ce8a00b600d": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"f19638333b11da6dcab9a964e73a49947b8390fd": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"9195a6e302028ed3921d1016ac2fa5754f06ebf0": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"6542d17ea460ec222137c4b275b13daf15d3fca3": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"b1e2704a3a7e64661085343ba0e8457cb4c9adcc": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"f044deedbbfee0812316d587139cb828f27172e9": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"1cf38a38da060ed06377099057a31f17d570c3c1": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"0def61482b7636161b0edcfee377c74f398953d3": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"046b8768af8a07a9e10ce43f538d6ac16e7fa5f3": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"4f752d442b437b3d297232cfdc8b04aa55c53c5e": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"1a25bbe9ec7155712a82b157a8379826f8c79d4b": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"b5db2383832881034d57d836a8135a07a2bd1cf4": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"cf4efcab3b66271745b7be5db30fdc5ae656d06c": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"56ebabd426757dd95c778535548abb8c01fbc1fb": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"c9ea344f98497b0f3e524bb3406f4ef8bc00fc89": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"34aa6137bd890a565ace26be278a50f81b3dda20": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"1448add08fcd4a23e59eab5f75ef46fca6b1c3d1": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"1ec5c67b5e994ae4a8fe2cf5599e23a1fe8274a5": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"93ad7c32f428b48d3499dfb3aa15249e8c5cc37d": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"f813554769606d59c23bcdc184d52249793d0f12": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"8d6a6869531abb3cda974358509f63ae61986a5c": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
},
"cb8c98fbb02847916e23ffaa60b0b54694d056d7": {
"java": "1.8",
"maven": "3.0.2",
"compatible": true
}
}
\ No newline at end of file
No preview for this file type
......@@ -6,9 +6,13 @@ setup(
packages=find_packages(where="src"),
package_dir={"": "src"},
install_requires=[
'pandas',
'numpy',
'pytest'
'packaging==24.0',
'pandas==2.2.2',
'PyDriller==2.6',
'pytest==8.1.1',
'requests==2.31.0',
'matplotlib==3.8.4',
'seaborn==0.13.2'
],
entry_points={
'console_scripts': [
......
......@@ -4,7 +4,8 @@ import re
from packaging import version
import os
import shutil
import sys
import json
from java_version_manager import switch_java_version
def parse_pom_xml(file_path):
......@@ -14,6 +15,7 @@ def parse_pom_xml(file_path):
enforcer_plugin = root.find(
".//maven:plugin[maven:artifactId='maven-enforcer-plugin']", ns
)
java_version = None
maven_version = None
......@@ -27,6 +29,17 @@ def parse_pom_xml(file_path):
java_version = java_version.text if java_version is not None else None
maven_version = maven_version.text if maven_version is not None else None
if not java_version:
java_version = root.find(
".//plugin[artifactId='maven-enforcer-plugin']//requireJavaVersion/version"
)
maven_version = root.find(
".//plugin[artifactId='maven-enforcer-plugin']//requireMavenVersion/version"
)
java_version = java_version.text if java_version is not None else None
maven_version = maven_version.text if maven_version is not None else None
return java_version, maven_version
......@@ -63,10 +76,11 @@ def version_is_compatible(required_version_range, installed_version):
return True
else:
required_version = required_version_range.strip("[]()")
if version.parse(normalized_installed_version) >= version.parse(
required_version
):
return True
required_ver = version.parse(required_version.split("_")[0])
installed_ver = version.parse(installed_version.split("_")[0])
return (required_ver.major == installed_ver.major) and (
required_ver.minor == installed_ver.minor
)
except version.InvalidVersion as e:
print(f"Error parsing version: {e}")
return False
......@@ -90,42 +104,49 @@ def copy_jar_files(source_dir, output_dir):
print(f"Copied: {source_file_path} to {destination_file_path}")
def process_commit_hashes(
commit_file,
repo_path,
output_dir,
java_required,
maven_required,
java_installed,
maven_installed,
):
with open(commit_file, "r") as file:
hashes = file.readlines()
def process_commit_hashes(commit_hashes, repo_path, output_dir):
java_versions = {}
for hash in hashes:
for hash in commit_hashes:
hash = hash.strip()
try:
result = subprocess.run(
f"cd {repo_path} && git checkout {hash}", shell=True, check=True
)
subprocess.run(["git", "reset", "--hard"], cwd=repo_path, check=True)
subprocess.run(["git", "clean", "-fdx"], cwd=repo_path, check=True)
# Checkout the specified hash
subprocess.run(["git", "checkout", hash], cwd=repo_path, check=True)
print(f"Checked out {hash}")
if version_is_compatible(
java_required, java_installed
) and version_is_compatible(maven_required, maven_installed):
subprocess.run(
f"cd {repo_path} && mvn clean package --projects :hadoop-common --also-make -DskipTests",
shell=True,
# Get repo requirements
java_required, maven_required = parse_pom_xml(
os.path.join(repo_path, "pom.xml")
)
copy_jar_files(
f"{repo_path}/hadoop-common-project/hadoop-common/target",
f"{output_dir}/{hash}",
norm_java_required = (
(normalize_version(java_required).split("_")[0])
.replace("[", "")
.replace(")", "")
.replace(",", "")
)
norm_maven_required = (
(normalize_version(maven_required).split("_")[0])
.replace("[", "")
.replace(")", "")
.replace(",", "")
)
except subprocess.CalledProcessError:
print(f"Commit {hash} not found or checkout failed.")
print("=" * 10)
print(f"Required Java Version : {norm_java_required}")
print(f"Required Maven Version : {norm_maven_required}\n")
java_versions[hash] = {
"java": norm_java_required,
"maven": norm_maven_required,
}
switch_java_version(norm_java_required)
def create_packages(repo_path, commit_file, output_dir):
java_required, maven_required = parse_pom_xml(f"{repo_path}/pom.xml")
java_installed = get_installed_version(
"java -version 2>&1 | head -n 1 | awk '{print $3}' | tr -d '\"'"
)
......@@ -133,12 +154,46 @@ def create_packages(repo_path, commit_file, output_dir):
"mvn -v | grep 'Apache Maven' | awk '{print $3}'"
)
process_commit_hashes(
commit_file,
repo_path,
output_dir,
java_required,
maven_required,
java_installed,
maven_installed,
print(
f"Installed Java Version : {normalize_version(java_installed).split('_')[0]}"
)
print(
f"Installed Maven Version : {normalize_version(maven_installed).split('_')[0]}"
)
print("=" * 10)
is_version_compatible = version_is_compatible(java_required, java_installed)
java_versions[hash]["compatible"] = is_version_compatible
# Proceed if versions are compatible
if (
is_version_compatible
): # and version_is_compatible(maven_required, maven_installed):
# Run Maven to build the project
subprocess.run(
f"cd {repo_path} && mvn clean package --projects :hadoop-common --also-make -DskipTests",
shell=True,
check=True,
)
# Copy the jar files to the specified output directory
copy_jar_files(
f"{repo_path}/hadoop-common-project/hadoop-common/target",
f"{output_dir}/{hash}",
)
else:
print(f"Incompatible java versions. Aborting ...\n\n")
except subprocess.CalledProcessError as e:
print(
f"Error: {e}. Command '{e.cmd}' returned non-zero exit status {e.returncode}."
)
with open(os.path.join(output_dir, "java_versions.json"), "w") as file:
json.dump(java_versions, file, indent=2)
def create_packages(repo_path, commit_info_file_path, output_dir):
# Open the file and load the data
with open(commit_info_file_path, "r") as file:
commit_hashes = list(json.load(file).keys())
process_commit_hashes(commit_hashes, repo_path, output_dir)
......@@ -66,7 +66,7 @@ def run_acdc(output_dir):
full_rsf_path = os.path.join(full_dir_path, rsf_file)
# Extract filename without extension for output naming
filename_without_ext = os.path.splitext(rsf_file)[0]
output_file_path = os.path.join(full_dir_path, f"{filename_without_ext}_acdc_ .rsf")
output_file_path = os.path.join(full_dir_path, f"{filename_without_ext}_acdc_output.rsf")
# Construct arguments for the ACDC JAR
args = [full_rsf_path, output_file_path]
......@@ -82,6 +82,11 @@ def run_acdc(output_dir):
print(f"Output generated: {output_file_path}")
def run_limbo(output_dir):
base_dir = os.path.dirname(os.path.abspath(__file__))
lib_dir = os.path.join(base_dir, "../../lib")
limbo_jar_path = os.path.join(lib_dir, "arcade_core-ACDC.jar")
def run_clusterer(output_dir):
base_dir = os.path.dirname(os.path.abspath(__file__))
......@@ -102,6 +107,7 @@ def run_clusterer(output_dir):
project_version = dir_name
output_log_uem = os.path.join(output_path, "clusterer_output_uem.log")
output_log_uemm = os.path.join(output_path, "clusterer_output_uemm.log")
output_log_limbo = os.path.join(output_path, "clusterer_output_limbo.log")
# Construct arguments for the first WCA execution
args1 = [
......@@ -127,19 +133,34 @@ def run_clusterer(output_dir):
f"algo=WCA"
]
args3 = [
f"-Xmx14024m",
f"deps={full_rsf_path}",
f"projpath={output_path}",
f"measure=UEM",
f"projname={project_name}",
f"projversion={project_version}",
f"language={language}",
f"algo=Limbo"
]
print(f"Running WCA on {full_rsf_path} with commit ID {project_version}...")
# Run WCA for UEM
print("Jar path:", clusterer_jar_path)
print("Project path:", full_dir_path)
print("RSF path:", full_rsf_path)
stdout1, stderr1 = run_jar(clusterer_jar_path, args=args1, cwd=output_path)
# Run WCA for UEMNM
stdout2, stderr2 = run_jar(clusterer_jar_path, args=args2, cwd=output_path)
# stdout1, stderr1 = run_jar(clusterer_jar_path, args=args1, cwd=output_path)
# # Run WCA for UEMNM
# stdout2, stderr2 = run_jar(clusterer_jar_path, args=args2, cwd=output_path)
# # Run Limbo for UEM
stdout3, stderr3 = run_jar(clusterer_jar_path, args=args3, cwd=output_path)
# Log outputs
with open(output_log_uem, "w") as log_file1, open(output_log_uemm, "w") as log_file2:
log_file1.write(stdout1 if stdout1 else stderr1)
log_file2.write(stdout2 if stdout2 else stderr2)
with open(output_log_uem, "w") as log_file1, open(output_log_uemm, "w") as log_file2, open(output_log_limbo, "w") as log_file3:
#log_file1.write(stdout1 if stdout1 else stderr1)
#log_file2.write(stdout2 if stdout2 else stderr2)
log_file3.write(stdout3 if stdout3 else stderr3)
print(f"Output for UEM saved to {output_log_uem}")
print(f"Output for UEMNM saved to {output_log_uemm}")
print(f"Output for UEMNM saved to {output_log_limbo}")
\ No newline at end of file
import subprocess
import os
import json
def run_java_metric(command):
output = subprocess.run(command, shell=True, capture_output=True, text=True)
if output.stderr:
return {"error": output.stderr}
try:
last_line = output.stdout.strip().split("\n")[-1]
number_str = last_line.split()[-1]
return {"result": float(number_str)}
except ValueError:
return {"error": f"Failed to convert output to float: {output.stdout}"}
def calculate_a2a_cvg_metrics(current_file, parent_file, a2a_jar_path, cvg_jar_path):
a2a_metric = run_java_metric(
f"java -jar {a2a_jar_path} {current_file} {parent_file}"
)
cvg_metric = run_java_metric(
f"java -jar {cvg_jar_path} {current_file} {parent_file}"
)
return a2a_metric, cvg_metric
def count_clusters_and_entities(cluster_file):
cluster_entities = {}
with open(cluster_file, "r") as file:
for line in file:
parts = line.strip().split()
if len(parts) < 3:
continue
cluster_id = parts[1]
entity = parts[2]
if cluster_id not in cluster_entities:
cluster_entities[cluster_id] = set()
cluster_entities[cluster_id].add(entity)
num_clusters = len(cluster_entities)
entity_count_per_cluster = {
cluster: len(entities) for cluster, entities in cluster_entities.items()
}
return num_clusters, entity_count_per_cluster
def parse_rsf_file(rsf_path):
clusters = {}
with open(rsf_path, "r") as file:
for line in file:
parts = line.strip().split()
if len(parts) < 3:
continue
cluster_id = parts[1]
entity = parts[2]
if cluster_id not in clusters:
clusters[cluster_id] = set()
clusters[cluster_id].add(entity)
return clusters
def calculate_cvg_metric(clusters1, clusters2):
set1 = set(entity for entities in clusters1.values() for entity in entities)
set2 = set(entity for entities in clusters2.values() for entity in entities)
intersection = set1.intersection(set2)
union = set1.union(set2)
return len(intersection) / len(union) if union else 0
def analyze_clustering_results(output_dir):
base_dir = os.path.dirname(os.path.abspath(__file__))
lib_dir = os.path.join(base_dir, "../../lib")
commit_hash = "bd1a08b2cfba7dcab89791ddba97e15bb2d2c0de"
commit_dir = os.path.join(output_dir, commit_hash)
parent_commit_hash = "6ccb223c9c98a448bdb46acfddeb0b351d5b196a"
parent_commit_dir = os.path.join(output_dir, parent_commit_hash)
results = {}
# Currently, we are just evaluating the clustering results for one commit
algorithm_configs = {
"acdc": {
"cluster_file": os.path.join(commit_dir, "out_acdc_output.rsf"),
"a2a_jar_path": os.path.join(lib_dir, "arcade_core_A2a.jar"),
"cvg_jar_path": os.path.join(lib_dir, "arcade_core_Cvg.jar"),
"current_file": os.path.join(commit_dir, "dependencies_acdc_output.rsf"),
"parent_file": os.path.join(
parent_commit_dir, "dependencies_acdc_output.rsf"
),
},
"pkg": {
"cluster_file": os.path.join(
commit_dir, f"hadoopcommon-{commit_hash}_PKG_1_clusters.rsf"
),
"a2a_jar_path": os.path.join(lib_dir, "arcade_core_A2a.jar"),
"cvg_jar_path": os.path.join(lib_dir, "arcade_core_Cvg.jar"),
"current_file": os.path.join(
commit_dir, f"hadoopcommon-{commit_hash}_PKG_1_clusters.rsf"
),
"parent_file": os.path.join(
parent_commit_dir,
f"hadoopcommon-{parent_commit_hash}_PKG_1_clusters.rsf",
),
},
"wca_uem": {
"cluster_file": os.path.join(
commit_dir, "/hadoopcommon-{commit_hash}_UEM_50_clusters.rsf"
),
"a2a_jar_path": os.path.join(lib_dir, "arcade_core_A2a.jar"),
"cvg_jar_path": os.path.join(lib_dir, "arcade_core_Cvg.jar"),
"current_file": os.path.join(
commit_dir, "/hadoopcommon-{commit_hash}_UEM_50_clusters.rsf"
),
"parent_file": os.path.join(
parent_commit_dir,
"/hadoopcommon-{parent_commit_hash}_UEM_50_clusters.rsf",
),
},
}
for algorithm, config in algorithm_configs.items():
num_clusters, entity_count_per_cluster = count_clusters_and_entities(
config["cluster_file"]
)
a2a_metric, cvg_metric = calculate_a2a_cvg_metrics(
config["current_file"],
config["parent_file"],
config["a2a_jar_path"],
config["cvg_jar_path"],
)
results[algorithm] = {
"num_clusters": num_clusters,
"entity_count_per_cluster": entity_count_per_cluster,
"a2a_metric": a2a_metric,
"cvg_metric": cvg_metric,
}
clustering_results_file_path = os.path.join(output_dir, "clustering_results.json")
# Save results to JSON file
with open(clustering_results_file_path, "w") as f:
json.dump(results, f, indent=4)
# Calculate and store CVG metrics between algorithms
clusters_dict = {
alg: parse_rsf_file(algorithm_configs[alg]["cluster_file"])
for alg in algorithm_configs
}
for i, alg1 in enumerate(algorithm_configs):
for alg2 in list(algorithm_configs)[i + 1 :]:
cvg = calculate_cvg_metric(clusters_dict[alg1], clusters_dict[alg2])
results[f"cvg_{alg1}_{alg2}"] = cvg
# Append updated results with CVG comparisons to the same JSON file
with open(clustering_results_file_path, "w") as f:
json.dump(results, f, indent=4)
import subprocess
import os
def list_java_versions():
"""Lists all available Java versions."""
try:
output = subprocess.check_output(
["update-java-alternatives", "--list"], text=True
)
print(output)
except subprocess.CalledProcessError as e:
print("Failed to list Java versions:", e)
def switch_java_version(java_version):
"""
Switches the Java version using update-java-alternatives and sets JAVA_HOME appropriately.
Args:
java_version (str): The name of the Java version to switch to, as listed by 'update-java-alternatives --list'.
"""
if java_version == "21":
target_version = "java-1.21.0-openjdk-amd64"
elif java_version == "1.8":
target_version = "java-1.8.0-openjdk-amd64"
elif java_version == "11":
target_version = "java-1.11.0-openjdk-amd64"
else:
return
try:
# Switch the Java version
subprocess.run(
["sudo", "update-java-alternatives", "-s", target_version], check=True
)
print(f"Switched to Java version: {target_version}")
# Get the JAVA_HOME for the selected Java version
result = subprocess.run(
["update-alternatives", "--query", "java"],
capture_output=True,
text=True,
check=True,
)
# Extract the JAVA_HOME path
lines = result.stdout.split("\n")
for line in lines:
if "Value: " in line:
java_path = line.split("Value: ")[1].strip()
java_home = os.path.dirname(os.path.dirname(java_path))
os.environ["JAVA_HOME"] = (
java_home # Set JAVA_HOME in the current environment
)
print(f"Set JAVA_HOME to {java_home}")
break
except subprocess.CalledProcessError as e:
print(f"Failed to switch Java version to {target_version}: {e}")
......@@ -8,8 +8,10 @@ from build_manager import create_packages
from issue_commit_linkage import link_issues_to_commits
from visualization import create_charts
from java_version_manager import switch_java_version
from dependency_analyzer import analyze_dependencies, get_rsf_file_paths
from clustering import run_pkg, run_acdc, run_clusterer
from clustering_result_analyzer import analyze_clustering_results
# Define default paths for input and output directories
DEFAULT_INPUT_DIR = "data/input"
......@@ -34,23 +36,24 @@ def main():
input_dir = os.path.join(base_dir, "../../data/input")
output_dir = os.path.join(base_dir, "../../data/output")
commit_file_path = os.path.join(input_dir, "commit_file")
issues_file_path = os.path.join(input_dir, "issues.json")
# Access the arguments
repo_path = args.repo_path
print(f"Using repository at: {repo_path}")
commit_info_file_path = os.path.join(output_dir, "detailed_commits_info.json")
# Analysis steps
switch_java_version("1.8")
link_issues_to_commits(repo_path, issues_file_path, output_dir)
create_packages(repo_path, commit_file_path, output_dir)
create_packages(repo_path, commit_info_file_path, output_dir)
# Visualization
commit_info_file_path = os.path.join(output_dir, "detailed_commits_info.json")
create_charts(commit_info_file_path, output_dir)
# Dependency Analysis
switch_java_version("21")
analyze_dependencies(output_dir)
# Clustering
......@@ -58,6 +61,9 @@ def main():
run_acdc(output_dir)
run_clusterer(output_dir)
# Analyzing the clustering results
analyze_clustering_results(output_dir)
if __name__ == "__main__":
main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment