javacore-analyser 2.1rc5__tar.gz → 2.2.0.dev24__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. javacore_analyser-2.2.0.dev24/.travis.yml +10 -0
  2. javacore_analyser-2.2.0.dev24/CHANGELOG.md +35 -0
  3. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/MAINTAINERS.md +1 -0
  4. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/PKG-INFO +26 -9
  5. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/README.md +23 -7
  6. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/pyproject.toml +9 -4
  7. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/requirements.txt +2 -0
  8. javacore_analyser-2.2.0.dev24/src/javacore_analyser/__main__.py +43 -0
  9. javacore_analyser-2.2.0.dev24/src/javacore_analyser/data/html/error.html +22 -0
  10. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/theme.blue.css +9 -3
  11. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/wait2scripts.js +4 -2
  12. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/style.css +32 -0
  13. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/xml/report.xsl +167 -20
  14. javacore_analyser-2.2.0.dev24/src/javacore_analyser/har_file.py +65 -0
  15. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/javacore_analyser_batch.py +29 -11
  16. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/javacore_analyser_web.py +7 -3
  17. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/javacore_set.py +19 -2
  18. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/verbose_gc.py +0 -1
  19. javacore_analyser-2.2.0.dev24/test/data/javacores/jazz.net_Archive [25-01-03 11-07-56].har +12608 -0
  20. javacore_analyser-2.2.0.dev24/test/test_har_file.py +40 -0
  21. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/test_javacore_analyser.py +4 -16
  22. javacore_analyser-2.1rc5/.travis.yml +0 -33
  23. javacore_analyser-2.1rc5/CHANGELOG.md +0 -12
  24. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  25. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  26. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/.github/dco.yml +0 -0
  27. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/.gitignore +0 -0
  28. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/CODE_OF_CONDUCT.md +0 -0
  29. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/CONTRIBUTING.md +0 -0
  30. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/Dockerfile +0 -0
  31. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/LICENSE +0 -0
  32. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/REQUIREMENTS.md +0 -0
  33. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/SECURITY.md +0 -0
  34. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/docs/ClassDiagram.png +0 -0
  35. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/docs/dom_example.py +0 -0
  36. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/__init__.py +0 -0
  37. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/abstract_snapshot_collection.py +0 -0
  38. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/code_snapshot_collection.py +0 -0
  39. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/constants.py +0 -0
  40. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/expand.js +0 -0
  41. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/html/processing_data.html +0 -0
  42. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/chart.js +0 -0
  43. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/chartjs-adapter-date-fns.bundle.min.js +0 -0
  44. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/jq.css +0 -0
  45. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/jquery.mark.min.js +0 -0
  46. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/jquery.min.js +0 -0
  47. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/jquery.tablesorter.min.js +0 -0
  48. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/jquery.tablesorter.widgets.min.js +0 -0
  49. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/search.js +0 -0
  50. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/sorting.js +0 -0
  51. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/jquery/theme.default.min.css +0 -0
  52. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/xml/index.xml +0 -0
  53. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/xml/javacores/javacore.xml +0 -0
  54. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/xml/javacores/javacore.xsl +0 -0
  55. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/xml/threads/thread.xml +0 -0
  56. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/data/xml/threads/thread.xsl +0 -0
  57. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/java_thread.py +0 -0
  58. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/javacore.py +0 -0
  59. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/logging_utils.py +0 -0
  60. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/snapshot_collection.py +0 -0
  61. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/snapshot_collection_collection.py +0 -0
  62. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/stack_trace.py +0 -0
  63. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/stack_trace_element.py +0 -0
  64. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/stack_trace_kind.py +0 -0
  65. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/templates/index.html +0 -0
  66. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/thread_snapshot.py +0 -0
  67. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/src/javacore_analyser/tips.py +0 -0
  68. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/__init__.py +0 -0
  69. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/archives/archive_without_javacores.zip +0 -0
  70. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/archives/javacores/aaa-javacore.20220606.114458.32888.0001.txt +0 -0
  71. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/archives/javacores/aaa-javacore.20220606.114502.32888.0002.txt +0 -0
  72. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/archives/javacores-corrupted.zip +0 -0
  73. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/archives/javacores-starting-aaa.zip +0 -0
  74. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/archives/javacores.7z +0 -0
  75. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/archives/javacores.tar.bz2 +0 -0
  76. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/archives/javacores.tar.gz +0 -0
  77. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/archives/javacores.tgz +0 -0
  78. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/archives/javacores.zip +0 -0
  79. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/archives/javacores_with_invalid_chars.zip +0 -0
  80. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/issue129/javacore.20230602.091848.83156.0001.txt +0 -0
  81. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/issue129/javacore.20230602.091853.83156.0002.txt +0 -0
  82. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114458.32888.0001.txt +0 -0
  83. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114502.32888.0002.txt +0 -0
  84. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114506.32888.0003.txt +0 -0
  85. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114513.32888.0004.txt +0 -0
  86. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114516.32888.0005.txt +0 -0
  87. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114900.32888.0006.txt +0 -0
  88. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114907.32888.0007.txt +0 -0
  89. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114912.32888.0008.txt +0 -0
  90. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114931.32888.0009.txt +0 -0
  91. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114947.32888.0010.txt +0 -0
  92. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114948.32888.0011.txt +0 -0
  93. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.20220606.114949.32888.0012.txt +0 -0
  94. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/javacore.wrong.corr +0 -0
  95. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/verbosegc.230105.19308.txt.001 +0 -0
  96. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/verbosegc.230413.19984.txt.001 +0 -0
  97. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/javacores/verbosegc.230420.33424.txt.001 +0 -0
  98. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/quotationMarks/javacore.20230830.134339.30220.0001.txt +0 -0
  99. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/quotationMarks/javacore.20230830.134339.30220.0002.txt +0 -0
  100. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/verboseGc/verbosegc.230105.19308.txt.001 +0 -0
  101. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/verboseGc/verbosegc.230413.19984.txt.001 +0 -0
  102. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/verboseGc/verbosegc.230420.33424.txt.001 +0 -0
  103. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/verboseGcJavacores/javacore.20230602.091848.83156.0001.txt +0 -0
  104. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/verboseGcJavacores/javacore.20230602.091853.83156.0002.txt +0 -0
  105. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/verboseGcJavacores/javacore.20230602.092423.83156.0003.txt +0 -0
  106. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/verboseGcJavacores/javacore.20230602.092537.83156.0004.txt +0 -0
  107. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/verboseGcJavacores/javacore.20230602.092604.83156.0005.txt +0 -0
  108. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/verboseGcJavacores/verbosegc.230602.61164.txt.001 +0 -0
  109. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/verboseGcJavacores/verbosegc.230602.83156.txt.001 +0 -0
  110. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/data/verboseGcJavacores.zip +0 -0
  111. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/test_code_snapshot_collection.py +0 -0
  112. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/test_gc_collection.py +0 -0
  113. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/test_java_thread.py +0 -0
  114. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/test_javacore.py +0 -0
  115. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/test_javacore_set.py +0 -0
  116. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/test_stack_trace.py +0 -0
  117. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/test_stack_trace_element.py +0 -0
  118. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/test_thread_snapshot.py +0 -0
  119. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/test_tips.py +0 -0
  120. {javacore_analyser-2.1rc5 → javacore_analyser-2.2.0.dev24}/test/test_verbose_gc_parser.py +0 -0
@@ -0,0 +1,10 @@
1
+ language: python
2
+ python:
3
+ - "3.9"
4
+ install:
5
+ - pip install -r requirements.txt
6
+ env:
7
+ global:
8
+ - PYTHONPATH=src:test
9
+ script:
10
+ - python -m unittest test.test_javacore test.test_thread_snapshot test.test_javacore_set test.test_java_thread test.test_stack_trace test.test_javacore_analyser test.test_tips test.test_verbose_gc_parser test.test_gc_collection test.test_code_snapshot_collection
@@ -0,0 +1,35 @@
1
+ # Changelog
2
+
3
+ ## [2.1] - 2025-01-02
4
+ * Fixes #66 Move information about progress bar after information about number of threads by @kkazmierczyk in https://github.com/IBM/javacore-analyser/pull/67
5
+ * #27 there is no progress indicator on the web app by @kkazmierczyk in https://github.com/IBM/javacore-analyser/pull/59
6
+ * #57 Add more progress bars in the code by @kkazmierczyk in https://github.com/IBM/javacore-analyser/pull/58
7
+ * Expanding stack traces that contain search result by @PiotrAniola82 in https://github.com/IBM/javacore-analyser/pull/70
8
+ * Fixes #60 Switch to use cmd properties in web app by @kkazmierczyk in https://github.com/IBM/javacore-analyser/pull/72
9
+ * Fixed PEP warnings by @PiotrAniola82 in https://github.com/IBM/javacore-analyser/pull/75
10
+ * #20 generate docker image by @kkazmierczyk in https://github.com/IBM/javacore-analyser/pull/48
11
+ * Create _main_ class by @kkazmierczyk in https://github.com/IBM/javacore-analyser/pull/80
12
+ * Different time range on gc activity and cpu load graphs by @PiotrAniola82 in https://github.com/IBM/javacore-analyser/pull/76
13
+
14
+ [2.1]: https://github.com/IBM/javacore-analyser/releases/tag/2.1
15
+
16
+ ## [2.0] - 2024-12-03
17
+ * #10 extract api methods by @kkazmierczyk in https://github.com/IBM/javacore-analyser/pull/11
18
+ * #8 generate web application by @kkazmierczyk in https://github.com/IBM/javacore-analyser/pull/23
19
+ * System information xmx value is blank when xmx does not have units by @PiotrAniola82 in https://github.com/IBM/javacore-analyser/pull/36
20
+ * #18-GC-activity-chart-shows-wrong-values-when-xmx-has-no-units by @tjanasiewicz in https://github.com/IBM/javacore-analyser/pull/45
21
+ * #14 Implemented progressbars by @kkazmierczyk in https://github.com/IBM/javacore-analyser/pull/15
22
+ * #12 generate pip package by @kkazmierczyk in https://github.com/IBM/javacore-analyser/pull/37
23
+ * Tidied up the expensive operation message by @PiotrAniola82 in https://github.com/IBM/javacore-analyser/pull/56
24
+ * Switched the doc link to point to the public wiki on github by @PiotrAniola82 in https://github.com/IBM/javacore-analyser/pull/54
25
+ * Added search bar to thread.xsl and javacore.xsl by @PiotrAniola82 in https://github.com/IBM/javacore-analyser/pull/51
26
+ * Updated the input/output arguments of the javacore_analyser_batch. by @tjanasiewicz in https://github.com/IBM/javacore-analyser/pull/63
27
+
28
+ [2.0]: https://github.com/IBM/javacore-analyser/releases/tag/2.0
29
+
30
+ ## [1.0] - 2024-10-25
31
+
32
+ ### Added
33
+ - Initial product release
34
+
35
+ [1.0]: https://github.com/IBM/javacore-analyser/releases/tag/v1.0
@@ -1,5 +1,6 @@
1
1
  # MAINTAINERS
2
2
 
3
+ ## Project commiters
3
4
  * Krzysztof Kazmierczyk <kazm@ibm.com>
4
5
  * Piotr Aniola <Piotr.Aniola@ibm.com>
5
6
  * Tadeusz Janasiewicz <t.janasiewicz@ibm.com>
@@ -1,10 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: javacore_analyser
3
- Version: 2.1rc5
3
+ Version: 2.2.0.dev24
4
4
  Summary: The tool to review IBM Javacore files
5
5
  Project-URL: Homepage, https://github.com/IBM/javacore-analyser
6
6
  Project-URL: Issues, https://github.com/IBM/javacore-analyser/issues
7
- Project-URL: Changelog, https://github.com/IBM/javacore-analyser/CHANGELOG.md
7
+ Project-URL: Changelog, https://github.com/IBM/javacore-analyser/blob/main/CHANGELOG.md
8
8
  Project-URL: Source, https://github.com/IBM/javacore-analyser
9
9
  Author-email: Krzysztof Kazmierczyk <kazm@ibm.com>, Piotr Aniola <Piotr.Aniola@ibm.com>, Tadeusz Janasiewicz <t.janasiewicz@ibm.com>
10
10
  License: Apache License
@@ -228,6 +228,7 @@ Classifier: Programming Language :: Python :: 3.12
228
228
  Classifier: Programming Language :: Python :: 3.13
229
229
  Requires-Python: >=3.9
230
230
  Requires-Dist: flask
231
+ Requires-Dist: haralyzer
231
232
  Requires-Dist: importlib-resources
232
233
  Requires-Dist: lxml
233
234
  Requires-Dist: py7zr
@@ -239,8 +240,18 @@ Description-Content-Type: text/markdown
239
240
  <!-- This should be the location of the title of the repository, normally the short name -->
240
241
  # Javacore Analyser
241
242
 
243
+ ![GitHub License](https://img.shields.io/github/license/IBM/javacore-analyser)
244
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/javacore-analyser)
245
+ ![GitHub contributors](https://img.shields.io/github/contributors/IBM/javacore-analyser)
242
246
  <!-- Build Status, is a great thing to have at the top of your repository, it shows that you take your CI/CD as first class citizens -->
243
247
  [![Build Status](https://app.travis-ci.com/IBM/javacore-analyser.svg?token=w3i4X11XppEi2tJQsxDb&branch=main)](https://app.travis-ci.com/IBM/javacore-analyser)
248
+ ![GitHub last commit](https://img.shields.io/github/last-commit/IBM/javacore-analyser)
249
+ ![GitHub Release Date](https://img.shields.io/github/release-date/IBM/javacore-analyser)
250
+ ![GitHub commit activity](https://img.shields.io/github/commit-activity/t/IBM/javacore-analyser)
251
+ ![GitHub Issues or Pull Requests](https://img.shields.io/github/issues-pr/IBM/javacore-analyser)
252
+ ![GitHub Issues or Pull Requests](https://img.shields.io/github/issues-pr-closed/IBM/javacore-analyser)
253
+ ![PyPI - Downloads](https://img.shields.io/pypi/dm/javacore-analyser)
254
+
244
255
 
245
256
  <!-- Not always needed, but a scope helps the user understand in a short sentance like below, why this repo exists -->
246
257
  ## Scope
@@ -267,7 +278,7 @@ Steps:
267
278
  3. Run the following command:
268
279
  `pip install javacore-analyser`
269
280
  OR
270
- `pip install --extra-index-url https://test.pypi.org/simple/ javacore-analyser` - if you want an experimental version
281
+ `pip install --pre --extra-index-url https://test.pypi.org/simple/ javacore-analyser` - if you want an experimental version
271
282
 
272
283
  #### Installing from sources
273
284
  This is recommended for geeks only:
@@ -281,23 +292,29 @@ This is recommended for geeks only:
281
292
  #### Running cmd application:
282
293
  1. Install application if not done yet
283
294
  2. Activate your created virtual environment according to activate Virtual Environment according to [Creating virtual environments](https://docs.python.org/3/tutorial/venv.html#creating-virtual-environments)
284
- 3. Run the following command from cmd: `javacore-analyser-batch <input-data> <generated-reports-dir>`
295
+ 3. Run the following command from cmd:
296
+ `javacore-analyser-batch <input-data> <generated-reports-dir>`
297
+ or
298
+ `python -m javacore_analyser batch <input-data> <generated-reports-dir>`
299
+
285
300
  Where `<input-data>` is one of the following:
286
301
  * The directory containing javacores and optionally verbose gc
287
302
  * Archive (7z, zip, tar.gz, tar.bz2) containing the same
288
303
  * List of the javacores separated by `;` character. Optionally you can add `--separator` option to define your own separator.
289
304
  You can type the following command to obtain the help:
290
- `javacore-analyser-batch --help`
305
+ `javacore-analyser-batch --help` or `python -m javacore_analyser batch --help`
291
306
 
292
307
  #### Running web application:
293
308
  1. Repeat steps 1-3 from cmd application
294
309
  2. Execute the following command from cmd:
295
- `javacore_analyser_web --port=500 --reports-dir=/data/reports_dir`
310
+ `javacore_analyser_web --port=5000 --reports-dir=/data/reports_dir`
311
+ or
312
+ `python -m javacore_analyser web --port=5000 --reports-dir=/data/reports_dir`
296
313
 
297
- The first parameter set the port to use by application. If not specified, 5000 will be used.
298
- The second parameter sets where the reports need to be stored. If not set, then the `reports` dir will be created in current location.
314
+ The first parameter set the port to use by application. If not specified, 5000 will be used.
315
+ The second parameter sets where the reports need to be stored. If not set, then the `reports` dir will be created in current location.
299
316
 
300
- Now you can type (http://localhost:5000/).
317
+ Now you can type (http://localhost:5000/).
301
318
 
302
319
  ### Running container image
303
320
  There is an unofficial Docker/Podman container managed by one of projects developers. Use the following command
@@ -1,8 +1,18 @@
1
1
  <!-- This should be the location of the title of the repository, normally the short name -->
2
2
  # Javacore Analyser
3
3
 
4
+ ![GitHub License](https://img.shields.io/github/license/IBM/javacore-analyser)
5
+ ![PyPI - Python Version](https://img.shields.io/pypi/pyversions/javacore-analyser)
6
+ ![GitHub contributors](https://img.shields.io/github/contributors/IBM/javacore-analyser)
4
7
  <!-- Build Status, is a great thing to have at the top of your repository, it shows that you take your CI/CD as first class citizens -->
5
8
  [![Build Status](https://app.travis-ci.com/IBM/javacore-analyser.svg?token=w3i4X11XppEi2tJQsxDb&branch=main)](https://app.travis-ci.com/IBM/javacore-analyser)
9
+ ![GitHub last commit](https://img.shields.io/github/last-commit/IBM/javacore-analyser)
10
+ ![GitHub Release Date](https://img.shields.io/github/release-date/IBM/javacore-analyser)
11
+ ![GitHub commit activity](https://img.shields.io/github/commit-activity/t/IBM/javacore-analyser)
12
+ ![GitHub Issues or Pull Requests](https://img.shields.io/github/issues-pr/IBM/javacore-analyser)
13
+ ![GitHub Issues or Pull Requests](https://img.shields.io/github/issues-pr-closed/IBM/javacore-analyser)
14
+ ![PyPI - Downloads](https://img.shields.io/pypi/dm/javacore-analyser)
15
+
6
16
 
7
17
  <!-- Not always needed, but a scope helps the user understand in a short sentance like below, why this repo exists -->
8
18
  ## Scope
@@ -29,7 +39,7 @@ Steps:
29
39
  3. Run the following command:
30
40
  `pip install javacore-analyser`
31
41
  OR
32
- `pip install --extra-index-url https://test.pypi.org/simple/ javacore-analyser` - if you want an experimental version
42
+ `pip install --pre --extra-index-url https://test.pypi.org/simple/ javacore-analyser` - if you want an experimental version
33
43
 
34
44
  #### Installing from sources
35
45
  This is recommended for geeks only:
@@ -43,23 +53,29 @@ This is recommended for geeks only:
43
53
  #### Running cmd application:
44
54
  1. Install application if not done yet
45
55
  2. Activate your created virtual environment according to activate Virtual Environment according to [Creating virtual environments](https://docs.python.org/3/tutorial/venv.html#creating-virtual-environments)
46
- 3. Run the following command from cmd: `javacore-analyser-batch <input-data> <generated-reports-dir>`
56
+ 3. Run the following command from cmd:
57
+ `javacore-analyser-batch <input-data> <generated-reports-dir>`
58
+ or
59
+ `python -m javacore_analyser batch <input-data> <generated-reports-dir>`
60
+
47
61
  Where `<input-data>` is one of the following:
48
62
  * The directory containing javacores and optionally verbose gc
49
63
  * Archive (7z, zip, tar.gz, tar.bz2) containing the same
50
64
  * List of the javacores separated by `;` character. Optionally you can add `--separator` option to define your own separator.
51
65
  You can type the following command to obtain the help:
52
- `javacore-analyser-batch --help`
66
+ `javacore-analyser-batch --help` or `python -m javacore_analyser batch --help`
53
67
 
54
68
  #### Running web application:
55
69
  1. Repeat steps 1-3 from cmd application
56
70
  2. Execute the following command from cmd:
57
- `javacore_analyser_web --port=500 --reports-dir=/data/reports_dir`
71
+ `javacore_analyser_web --port=5000 --reports-dir=/data/reports_dir`
72
+ or
73
+ `python -m javacore_analyser web --port=5000 --reports-dir=/data/reports_dir`
58
74
 
59
- The first parameter set the port to use by application. If not specified, 5000 will be used.
60
- The second parameter sets where the reports need to be stored. If not set, then the `reports` dir will be created in current location.
75
+ The first parameter set the port to use by application. If not specified, 5000 will be used.
76
+ The second parameter sets where the reports need to be stored. If not set, then the `reports` dir will be created in current location.
61
77
 
62
- Now you can type (http://localhost:5000/).
78
+ Now you can type (http://localhost:5000/).
63
79
 
64
80
  ### Running container image
65
81
  There is an unofficial Docker/Podman container managed by one of projects developers. Use the following command
@@ -1,5 +1,5 @@
1
1
  #
2
- # Copyright IBM Corp. 2024 - 2024
2
+ # Copyright IBM Corp. 2024 - 2025
3
3
  # SPDX-License-Identifier: Apache-2.0
4
4
  #
5
5
 
@@ -21,7 +21,6 @@ readme = "README.md"
21
21
  license = {file = "LICENSE"}
22
22
  requires-python = ">=3.9"
23
23
  classifiers = [
24
- "Programming Language :: Python :: 3",
25
24
  "Programming Language :: Python :: 3",
26
25
  "Programming Language :: Python :: 3.9",
27
26
  "Programming Language :: Python :: 3.10",
@@ -46,7 +45,8 @@ dependencies = [
46
45
  "importlib-resources",
47
46
  "flask",
48
47
  "waitress",
49
- "tqdm"
48
+ "tqdm",
49
+ "haralyzer"
50
50
  ]
51
51
 
52
52
  [project.scripts]
@@ -56,9 +56,14 @@ javacore_analyser_web="javacore_analyser.javacore_analyser_web:main"
56
56
  [project.urls]
57
57
  Homepage = "https://github.com/IBM/javacore-analyser"
58
58
  Issues = "https://github.com/IBM/javacore-analyser/issues"
59
- Changelog = "https://github.com/IBM/javacore-analyser/CHANGELOG.md"
59
+ Changelog = "https://github.com/IBM/javacore-analyser/blob/main/CHANGELOG.md"
60
60
  Source = "https://github.com/IBM/javacore-analyser"
61
61
 
62
+ #[tool.hatch.build.targets.sdist]
63
+ #exclude = [
64
+ # "/test",
65
+ #]
66
+
62
67
  [tool.hatch.version]
63
68
  source = "versioningit"
64
69
 
@@ -5,3 +5,5 @@ importlib-resources
5
5
  waitress # Production WSGI server
6
6
  flask # WSGI server for development the code
7
7
  tqdm
8
+ haralyzer
9
+
@@ -0,0 +1,43 @@
1
+ #
2
+ # Copyright IBM Corp. 2024 - 2024
3
+ # SPDX-License-Identifier: Apache-2.0
4
+ #
5
+ import argparse
6
+
7
+ from javacore_analyser import javacore_analyser_batch, constants, javacore_analyser_web
8
+
9
+
10
+ def main():
11
+ parser = argparse.ArgumentParser(prog="python -m javacore_analyser")
12
+ subparsers = parser.add_subparsers(dest="type", help="Application type", required=True)
13
+
14
+ batch = subparsers.add_parser("batch", description="Run batch application")
15
+ batch.add_argument("input", help="Input file(s) or directory")
16
+ batch.add_argument("output", help="Destination report directory")
17
+ batch.add_argument("--separator", default=constants.DEFAULT_FILE_DELIMITER)
18
+
19
+ web = subparsers.add_parser("web", description="Run web application")
20
+ web.add_argument("--debug", help="Debug mode. Use True only for app development", default=False)
21
+ web.add_argument("--port", help="Application port", default=constants.DEFAULT_PORT)
22
+ web.add_argument("--reports-dir", help="Directory to store reports data",
23
+ default=constants.DEFAULT_REPORTS_DIR)
24
+
25
+ args = parser.parse_args()
26
+
27
+ app_type: str = args.type
28
+
29
+ if app_type.lower() == "web":
30
+ print("Running web application")
31
+ javacore_analyser_web.run_web(args.debug, args.port, args.reports_dir)
32
+ elif app_type.lower() == "batch":
33
+ print("Running batch application")
34
+ javacore_analyser_batch.batch_process(args.input, args.output, args.separator)
35
+ else:
36
+ print('Invalid application type. Available types: "batch" or "web"')
37
+
38
+
39
+ if __name__ == '__main__':
40
+ # This is the code to be able to run the app from command line.
41
+ # Try this:
42
+ # python -m javacore_analyser -h
43
+ main()
@@ -0,0 +1,22 @@
1
+ <!DOCTYPE html>
2
+
3
+ <!--
4
+ # Copyright IBM Corp. 2024 - 2025
5
+ # SPDX-License-Identifier: Apache-2.0
6
+ -->
7
+
8
+ <html lang="en">
9
+ <head>
10
+ <meta charset="UTF-8">
11
+ <title>Processing failed</title>
12
+ </head>
13
+ <body>
14
+ <p>
15
+ Processing failed with an error. Check the log file. If the issue is a product defect, rais it on
16
+ <a href="https://github.com/IBM/javacore-analyser/issues/new?template=bug_report.md">Bug report</a> page.
17
+ </p>
18
+ <p>Please attach the stack trace</p>
19
+ <p>Stack trace: </p>
20
+ <code> {stacktrace} </code>
21
+ </body>
22
+ </html>
@@ -1,6 +1,8 @@
1
- /*************
2
- Blue Theme
3
- *************/
1
+ /*
2
+ Copyright IBM Corp. 2024 - 2025
3
+ SPDX-License-Identifier: Apache-2.0
4
+ */
5
+
4
6
  /* overall */
5
7
  .tablesorter-blue {
6
8
  width: 100%;
@@ -109,6 +111,10 @@
109
111
  background-color: red
110
112
  }
111
113
 
114
+ .tablesorter-blue td.http_failure {
115
+ background-color: red
116
+ }
117
+
112
118
  /* hovered row colors
113
119
  you'll need to add additional lines for
114
120
  rows with more than 2 child rows
@@ -99,7 +99,9 @@ const loadChartGC = function() {
99
99
  }
100
100
 
101
101
  const sysResourceE3Elem = document.getElementById('systemresources_myChartGC');
102
- sysResourceE3Elem.classList.remove('hide');
102
+ if (sysResourceE3Elem) {
103
+ sysResourceE3Elem.classList.remove('hide');
104
+ }
103
105
 
104
106
  const ctx = document.getElementById('myChartGC');
105
107
 
@@ -125,7 +127,7 @@ const loadChartGC = function() {
125
127
  startingPoint = timestamp;
126
128
 
127
129
  if(endingPoint < timestamp)
128
- endingPoint > timestamp;
130
+ endingPoint = timestamp;
129
131
  }
130
132
 
131
133
  coresTimeRange['startTime'] = startingPoint;
@@ -1,3 +1,8 @@
1
+ /*
2
+ Copyright IBM Corp. 2024 - 2025
3
+ SPDX-License-Identifier: Apache-2.0
4
+ */
5
+
1
6
  table.heading {
2
7
  border: none;
3
8
  width: 100%;
@@ -100,6 +105,28 @@ td {
100
105
  text-align: left;
101
106
  }
102
107
 
108
+ .info {
109
+ position: relative;
110
+ display: inline-block;
111
+ border-bottom: 1px dotted black; /* If you want dots under the hoverable text */
112
+ color: orange
113
+ }
114
+
115
+ /* Tooltip text */
116
+ .info .infotooltip {
117
+ visibility: hidden;
118
+ width: 120px;
119
+ background-color: black;
120
+ color: #fff;
121
+ text-align: center;
122
+ padding: 5px 0;
123
+ border-radius: 6px;
124
+
125
+ /* Position the tooltip text - see examples below! */
126
+ position: absolute;
127
+ z-index: 1;
128
+ }
129
+
103
130
  .warning {
104
131
  position: relative;
105
132
  display: inline-block;
@@ -142,6 +169,11 @@ mark.current {
142
169
  background: orange;
143
170
  }
144
171
 
172
+ /* Show the tooltip text when you mouse over the tooltip container */
173
+ .info:hover .infotooltip {
174
+ visibility: visible;
175
+ }
176
+
145
177
  /* Show the tooltip text when you mouse over the tooltip container */
146
178
  .warning:hover .warningtooltip {
147
179
  visibility: visible;
@@ -1,7 +1,7 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
 
3
3
  <!--
4
- # Copyright IBM Corp. 2024 - 2024
4
+ # Copyright IBM Corp. 2024 - 2025
5
5
  # SPDX-License-Identifier: Apache-2.0
6
6
  -->
7
7
 
@@ -59,6 +59,15 @@
59
59
  },
60
60
  });
61
61
 
62
+ $('#har_files_table').tablesorter({
63
+ theme : 'blue',
64
+ headers: {
65
+ 0: { sorter: false },
66
+ 1: { sorter: false },
67
+ 2: { sorter: false }
68
+ },
69
+ });
70
+
62
71
  $('#java_arguments_table').tablesorter({
63
72
  theme : 'blue',
64
73
  widgets : ['zebra', 'columns'],
@@ -122,6 +131,21 @@
122
131
  sortReset : true,
123
132
  sortRestart : true
124
133
  });
134
+
135
+ $('#HttpCallTable').tablesorter({
136
+ theme : 'blue',
137
+ widgets : ['zebra', 'columns'],
138
+ sortList: [
139
+ [2, 1]
140
+ ],
141
+ sortInitialOrder: 'asc',
142
+ headers : {
143
+ 0 : { sortInitialOrder: 'asc' }
144
+ },
145
+ usNumberFormat : false,
146
+ sortReset : true,
147
+ sortRestart : true
148
+ });
125
149
  });
126
150
  </script>
127
151
  </head>
@@ -262,6 +286,49 @@
262
286
  </xsl:when>
263
287
  <xsl:otherwise> No verbose GC files </xsl:otherwise>
264
288
  </xsl:choose>
289
+ <xsl:choose>
290
+ <xsl:when test="doc/har_files">
291
+ <h4>HAR files</h4>
292
+ <a id="togglehardoc" href="javascript:expand_it(hardoc,togglehardoc)" class="expandit">
293
+ What does this table tell me?</a>
294
+ <div id="hardoc" style="display:none;">
295
+ This table shows all the HAR files that are included in the data set.
296
+ <ul>
297
+ <li>
298
+ <strong>File Name</strong>
299
+ is the name of the HAR file.
300
+ </li>
301
+ <li>
302
+ <strong>Hostname</strong>
303
+ is the name of the server machine for which the HAR file was collected.
304
+ </li>
305
+ <li>
306
+ <strong>Browser</strong>
307
+ contains information about the browser that was used to collect the HAR file.
308
+ </li>
309
+ </ul>
310
+ </div>
311
+ <table id="har_files_table">
312
+ <thead>
313
+ <tr>
314
+ <th class="sixty">File Name</th>
315
+ <th class="ten">Hostname</th>
316
+ <th class="ten">Browser</th>
317
+ </tr>
318
+ </thead>
319
+ <tbody>
320
+ <xsl:for-each select="doc/har_files/har_file">
321
+ <tr>
322
+ <td class="left"><xsl:value-of select="@filename"/></td>
323
+ <td class="left"><xsl:value-of select="@hostname"/></td>
324
+ <td class="left"><xsl:value-of select="@browser"/></td>
325
+ </tr>
326
+ </xsl:for-each>
327
+ </tbody>
328
+ </table>
329
+ </xsl:when>
330
+ <!-- xsl:otherwise> No HAR files </xsl:otherwise -->
331
+ </xsl:choose>
265
332
  </div>
266
333
  <h3><a id="toggle_system_properties"
267
334
  href="javascript:expand_it(system_properties, toggle_system_properties)"
@@ -355,25 +422,41 @@
355
422
  <h4>Garbage Collection Activity</h4>
356
423
  <a id="togglememusagedoc" href="javascript:expand_it(memusagedoc,togglememusagedoc)" class="expandit">
357
424
  What does this chart tell me?</a>
358
- <div id="memusagedoc" style="display:none;">
359
- This chart shows all the garbage collections that happened between the time
360
- of the first and the last javacore in the data set.
361
- Garbage collections that happened before the first
362
- or after the last javacore generation time are not included.
363
- <ul>
364
- <li><strong>Heap Usage</strong>
365
- is the available Java heap memory over time,
366
- based on the garbage collection data from the verbose GC log files.
367
- </li>
368
- <li><strong>Total Heap</strong>
369
- is the maximum size of the Java heap, configured by using the Xmx Java argument,
370
- expressed in megabytes.
371
- </li>
372
- </ul>
373
- </div>
374
- <div id="systemresources_myChartGC" class="chart-container hide">
375
- <canvas id="myChartGC" height="200"></canvas>
376
- </div>
425
+ <xsl:choose>
426
+ <xsl:when test="doc/report_info/verbose_gc_list/verbose_gc">
427
+ <xsl:choose>
428
+ <xsl:when test="//verbose_gc_list/@total_collects_in_time_limits = 0">
429
+ <br/>
430
+ There were no garbage collections withing the javacore time limits
431
+ </xsl:when>
432
+ <xsl:otherwise>
433
+ <div id="memusagedoc" style="display:none;">
434
+ This chart shows all the garbage collections that happened between the time
435
+ of the first and the last javacore in the data set.
436
+ Garbage collections that happened before the first
437
+ or after the last javacore generation time are not included.
438
+ <ul>
439
+ <li><strong>Heap Usage</strong>
440
+ is the available Java heap memory over time,
441
+ based on the garbage collection data from the verbose GC log files.
442
+ </li>
443
+ <li><strong>Total Heap</strong>
444
+ is the maximum size of the Java heap, configured by using the Xmx Java argument,
445
+ expressed in megabytes.
446
+ </li>
447
+ </ul>
448
+ </div>
449
+ <div id="systemresources_myChartGC" class="chart-container hide">
450
+ <canvas id="myChartGC" height="200"></canvas>
451
+ </div>
452
+ </xsl:otherwise>
453
+ </xsl:choose>
454
+ </xsl:when>
455
+ <xsl:otherwise>
456
+ <br/>
457
+ No verbosegc logs were provided
458
+ </xsl:otherwise>
459
+ </xsl:choose>
377
460
  <h4>CPU Load</h4>
378
461
  <a id="togglecpuloaddoc" href="javascript:expand_it(cpuloaddoc,togglecpuloaddoc)" class="expandit">
379
462
  What does this chart tell me?</a>
@@ -746,6 +829,70 @@
746
829
  </table>
747
830
  </div>
748
831
 
832
+ <xsl:choose>
833
+ <xsl:when test="doc/har_files">
834
+ <h3><a id="toggle_http_calls" href="javascript:expand_it(http_calls,toggle_http_calls)" class="expandit">HTTP calls</a></h3>
835
+ <div id="http_calls" style="display:none;" >
836
+ <a id="togglehttpcallsdoc" href="javascript:expand_it(httpcallsdoc,togglehttpcallsdoc)" class="expandit">
837
+ What does this table tell me?</a>
838
+ <div id="httpcallsdoc" style="display:none;">
839
+ The table shows the HTTP calls that are included in the HAR files from the data set.
840
+ The table can be sorted by clicking on a column header.
841
+ <ul>
842
+ <li><strong>URL</strong>
843
+ is the URL of the HTTP request.
844
+ </li>
845
+ <li><strong>Status</strong>
846
+ is the HTTP response code.
847
+ </li>
848
+ <li><strong>Start time</strong>
849
+ is the time when the HTTP request was made.
850
+ </li>
851
+ <li><strong>Duration</strong>
852
+ is the amount of time it took to complete the HTTP call, in milliseconds.
853
+ </li>
854
+ <li><strong>Size</strong>
855
+ is size of the response body, in bytes.
856
+ </li>
857
+ </ul>
858
+ </div>
859
+ <table id="HttpCallTable" class="tablesorter">
860
+ <thead>
861
+ <tr>
862
+ <th class="sixty">URL</th>
863
+ <th>Status</th>
864
+ <th>Start Time</th>
865
+ <th>Duration</th>
866
+ <th>Size</th>
867
+ </tr>
868
+ </thead>
869
+ <tbody>
870
+ <xsl:for-each select="//http_call">
871
+ <tr>
872
+ <td class="left"><xsl:value-of select="@url"/></td>
873
+ <td>
874
+ <xsl:choose>
875
+ <xsl:when test="@success='False'">
876
+ <xsl:attribute name="class">http_failure</xsl:attribute>
877
+ </xsl:when>
878
+ </xsl:choose>
879
+ <xsl:value-of select="@status"/>
880
+ </td>
881
+ <td><xsl:value-of select="@start_time"/></td>
882
+ <td>
883
+ <div class="info"><xsl:value-of select="@duration"/>
884
+ <span class="infotooltip"><xsl:value-of select="@timings"/></span>
885
+ </div>
886
+ </td>
887
+ <td><xsl:value-of select="@size"/></td>
888
+ </tr>
889
+ </xsl:for-each>
890
+ </tbody>
891
+ </table>
892
+ </div>
893
+ </xsl:when>
894
+ </xsl:choose>
895
+
749
896
  <p></p>
750
897
  <div class="margined">
751
898
  <a href="https://github.com/IBM/javacore-analyser/wiki" target="_blank">Documentation</a>