jzillmann / jmh-visualizer

Visually explore your JMH Benchmarks
https://jmh.morethan.io
GNU Affero General Public License v3.0
294 stars 22 forks source link

Support for Docker Image #49

Closed anuragagarwal561994 closed 1 year ago

anuragagarwal561994 commented 1 year ago

We can add support for docker image so that this project is deployable and usable easily for the end user in any environment.

jzillmann commented 1 year ago

How is this helpful ? Where do you generate the reports ? On the docker instance ?

anuragagarwal561994 commented 1 year ago

So for now, this can allow the user to just self host jmh-visualizer.

But the scope of the visualizer can be further extended after this to make it more worth installing via docker. For example one can mention a directory to find the reports (say data). The UI can display the directory structure and display reports in the UI.

This can then become self sufficient where the benchmarks can be run in docker environment and results are published in a shared volume. jmh-visualizer can then read the directory structure of this shared volume and help the user visualise the data.

As of now I am using similar setup in a docker-compose.yaml way where my benchmark runs and puts the result in a volume. Now that volume is shared the visualizer container. Since visualizer container has nginx to host the UI, I can access the report at lets say: http://localhost?source=http://localhost/reports.json and this is pretty seamless.

A little bit unrelated, but I feel that this project is very simple and does just what's needed very nicely. A nice to have feature keeping in mind the above extensibility would be to expose it as a react component, that would allow users to integrate it at more places and even in their UI applications. One use case I can think of here is to fetch the reports from mongo and use the React Component in my App to display the reports.

jzillmann commented 1 year ago

Thanks for the answer and sorry for the delay in response... It is merged now.

Regarding the React component... Currently don't do active development of the project. If you want to implement this, feel free. If it's not too crazy I will merge it ;)