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

feat: generates parts of the dashboard async, using ipfs/gateway-conformance #442

Open
7 of 13 tasks
Tracked by #120
laurentsenta opened this issue Aug 2, 2023 · 7 comments
Open
7 of 13 tasks
Tracked by #120
Assignees
Labels
effort/days Estimated to take multiple days, but less than a week exp/intermediate Prior experience is likely helpful

Comments

@laurentsenta
Copy link
Contributor

laurentsenta commented Aug 2, 2023

The ipfs/gateway-conformance has reached a point where we should be able to generate most of the info needed by our public gateway checker. Reusing the project should reduce maintenance and avoid the "Red Message Of Death" caused by the user's browser connecting with many gateways.

Interop

  • Agree on the output format we want to share between conformance and the frontend

conformance.json:

{
  "gateway.ipfs.io": {
    "metadata": { "timestamp": ...., "country": .... },
    "results": {
          "CORS": { "success": 12, "fail": 0, "skipped": 0 },
          "IPNS": ...,
    }
   },
  "another-gateway.link": ...
}

CI: Call the gateway conformance workflow - #450

@laurentsenta

  • Reuse the workflow from e2e production workflow
  • Make the list of gateways that live in gateways.ts available to the workflow
  • create a minimal output we can render in the CI
  • Extract the results in a format that can be reused here
    • Export TestGroups metadata
    • Aggregates results with a piece of js

CI: Generate metadata (country) on the server side - #451

Frontend: Render the results

Make the tests pass

  • likely we'll have issues with missing fixtures

Follow-ups

@laurentsenta laurentsenta added the need/triage Needs initial labeling and prioritization label Aug 2, 2023
@welcome
Copy link

welcome bot commented Aug 2, 2023

Thank you for submitting your first issue to this repository! A maintainer will be here shortly to triage and review.
In the meantime, please double-check that you have provided all the necessary information to make this process easy! Any information that can help save additional round trips is useful! We currently aim to give initial feedback within two business days. If this does not happen, feel free to leave a comment.
Please keep an eye on how this issue will be labeled, as labels give an overview of priorities, assignments and additional actions requested by the maintainers:

  • "Priority" labels will show how urgent this is for the team.
  • "Status" labels will show if this is ready to be worked on, blocked, or in progress.
  • "Need" labels will indicate if additional input or analysis is required.

Finally, remember to use https://discuss.ipfs.io if you just need general support.

@laurentsenta
Copy link
Contributor Author

(self-assigning, I'll take the responsibility of moving this work forward, but happy to collaborate)

@whizzzkid
Copy link
Contributor

whizzzkid commented Aug 3, 2023

Thanks for submitting this story @laurentsenta, excellent effort, we can pair on this if you'd like!

Can we mark these issues as duplicate/subtask of this issue (as I feel these can have a potential overlap):

CC: @SgtPooki

@whizzzkid whizzzkid added exp/intermediate Prior experience is likely helpful effort/days Estimated to take multiple days, but less than a week and removed need/triage Needs initial labeling and prioritization labels Aug 3, 2023
@laurentsenta
Copy link
Contributor Author

@SgtPooki @whizzzkid I updated the plan and prepared the PR for the CI side.

@lidel currently the gateway check looks like this:
CleanShot 2023-08-22 at 12 42 40@2x

the conformance test suite granularity is much finer:
CleanShot 2023-08-22 at 12 44 23@2x
(from CI)

Proposal: we define TestGroups metadata in conformance testing that will be used in project like this one.

Related PR: ipfs/gateway-conformance#130

@laurentsenta
Copy link
Contributor Author

note from call with @whizzzkid & @galargh

  • show a timestamp of the latest run time
  • take into account region-locked gateway, if any,
  • do we test badbits? could we test badbits in conformance?
    • important: identifying gateways that don't host malicious content
  • the grand vision: might be used as bootstrap nodes.
  • We'll need to retry gateway checks
  • metadata: we ping the gateway, then load the geolocation
    • output the IP out of the gway conformance or generate during ci
  • historical data: create automated issue when the gateway is failing to ping the author of the PR

@BigLep
Copy link

BigLep commented Aug 22, 2023

Thanks for updating @laurentsenta . A couplde of drive-by comments (don't block on me)...

In #442 (comment) you took a screenshot including Gateway implementations rather than gateway instances. I assume that was just for convenience right? This issue concerns conformance metadata for gateway instances right?

Lots of interesting ideas in #442 (comment). Which of these are we actually committing to? I want to make sure we don't move the goal post. Most (all?) those things seem like potential followups. I want us to get to a place where gateway checker red screen of death is gone and then we can evaluate what to do next. (I think at that point it will make sense to shift to higher impact areas.)

@laurentsenta
Copy link
Contributor Author

laurentsenta commented Sep 6, 2023

@BigLep apologies, I forgot to press "send" on my answer,

In #442 (comment) you took a screenshot including Gateway implementations rather than gateway instances. I assume that was just for convenience right? This issue concerns conformance metadata for gateway instances right?

Yes, this is in relation to a discussion regarding metadata in gateway conformance (comment). The screenshot points out the difference between gateway conformance details (10+ groups) vs gateway checker level of details (4 test groups). Yesterday we ack'd with @lidel the need for a "Taxonomie for End Users" that is different from the "Taxonomie for Specs Maintainers".

Lots of interesting ideas in #442 (comment). Which of these are we actually committing to? I want to make sure we don't move the goal post. Most (all?) those things seem like potential followups.

Definitely. I'm working on matching features with the current workflow, the rest is nice-to-have or follow-up

laurentsenta added a commit that referenced this issue Sep 29, 2023
Contributes to #442

- create a `gateways.txt` file we can import from Ci
- use the `report.json` in the frontend instead of `gateways.ts` (single source of truth)
- call the conformance workflow for every gateway
- gather results into a single job
- aggregates all these results into assets we can load in the frontend
- generate intermediate step output per gateway if possible
- define the "right" workflow to commit `report.json`
- generate a minimal output.md in the action
- find a way to "hide" the failure state on expected failure (not all tests passing)
- undo the dependency on gateway fork (needs the dashboard PR)
github-actions bot pushed a commit that referenced this issue Sep 29, 2023
## [1.8.0](v1.7.0...v1.8.0) (2023-09-29)

### Features

* generate results with gateway-conformance ([#450](#450)) ([e200e3a](e200e3a)), closes [#442](#442)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
effort/days Estimated to take multiple days, but less than a week exp/intermediate Prior experience is likely helpful
Projects
No open projects
Status: Needs Prep Work / Blocked
Development

No branches or pull requests

3 participants