jzillmann / jmh-visualizer

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

Cannot use URL from openjdk code review server #52

Closed mcimadamore closed 5 months ago

mcimadamore commented 5 months ago

I work on OpenJDK, and I'm trying to publish a JMH report using your great tool. I've uploaded my JMH json files here:

https://cr.openjdk.org/~mcimadamore/jdk/8331865/

Ideally, I'd like to pass the two URLs to the visualizer, so that I can then share the resulting page. But I'm not having luck with using such URLs. Using gist works (or uploading locally) - but I wonder if there's a reason as to why the URL function doesn't seem to work? (and, maybe also making sure it's not an issue on our end, e.g. our code review server).

mcimadamore commented 5 months ago

See this comment: https://github.com/openjdk/jdk/pull/19251#issuecomment-2115361171

plokhotnyuk commented 5 months ago

I work on OpenJDK, and I'm trying to publish a JMH report using your great tool. I've uploaded my JMH json files here:

https://cr.openjdk.org/~mcimadamore/jdk/8331865/

Ideally, I'd like to pass the two URLs to the visualizer, so that I can then share the resulting page. But I'm not having luck with using such URLs. Using gist works (or uploading locally) - but I wonder if there's a reason as to why the URL function doesn't seem to work? (and, maybe also making sure it's not an issue on our end, e.g. our code review server).

I tried this URL and got following errors in the browser console:

image You can follow Learn More links to see a list of possible mitigations

mcimadamore commented 5 months ago

Many thanks for getting back to me. I've verified that indeed there are errors on the browser console, and raised the issue to our team in charge of the server configuration. I will update this issue once I know more. Thanks again.

jzillmann commented 5 months ago

Hey @mcimadamore , it's a CORS issue. Because JMH visualizer doesn't have a server and just runs in the browser, it cannot fetch content from servers with a restrictive content policy.

Workaround would be to use a proxy. You could manually wrap your urls into e.g. CorsProxy (https://corsproxy.io):

So https://cr.openjdk.org/~mcimadamore/jdk/8331865/loop_over_00_baseline.json will become https://corsproxy.io/?https://cr.openjdk.org/~mcimadamore/jdk/8331865/loop_over_00_baseline.json and that will be loadable with the visualizer https://jmh.morethan.io/?source=https://corsproxy.io/?https://cr.openjdk.org/~mcimadamore/jdk/8331865/loop_over_00_baseline.json

mcimadamore commented 5 months ago

So https://cr.openjdk.org/~mcimadamore/jdk/8331865/loop_over_00_baseline.json will become https://corsproxy.io/?https://cr.openjdk.org/~mcimadamore/jdk/8331865/loop_over_00_baseline.json and that will be loadable with the visualizer https://jmh.morethan.io/?source=https://corsproxy.io/?https://cr.openjdk.org/~mcimadamore/jdk/8331865/loop_over_00_baseline.json

Nice trick/workaround - thanks!

mcimadamore commented 5 months ago

Closing this issue as it seems related to the configuration of the openjdk server cr.openjdk.org more than anything else. The workaround using CorsProxy works.