Skip to content
This repository was archived by the owner on Aug 1, 2023. It is now read-only.
This repository was archived by the owner on Aug 1, 2023. It is now read-only.

Adding more nodes to tests #106

@koivunej

Description

@koivunej

Hello everyone! As we are now starting to work on rust implementation of a ipfs node/library per our grant and we want to begin by integrating some existing tests like js-interface-ipfs-core and interop (this repo). This will require some modifications so here I am asking for your existing ideas/discussions on how should the structure go, as I couldn't immediatedly find such discussions.

Having looked at the js-interface-ipfs-core it seems easier execute those tests, as they are mostly "spin up the tested ipfs and maybe accompanying go-ipfs to help", but in interop tests there are different kinds of tests. Some are structured like exchange-files.js where adding new node impls would require getting js-ipfsd-ctl to support spawn({ type: 'rust' }) but others such as cid-version-agnostic.js is built to support only the specific 4 nodes in question.

I prefer the look of exchange-files.js as a way of describing the tests between different nodes at a higher level, and it'd seem that for example cid-version-agnostic.js could be converted to similar structure testing all of the combinations:

  • "add v0, cat as v1" forall X
  • "add v1, cat as v0" forall X

Where X would be [[go0, go0], [js0, js0], [go0, go1], [js0, js1], [js0, go0], [go0, js0]]. This would need to be extended with [[rs0, rs0], [rs0, rs1], [go0, rs0], [rs0, go0]].

Would this approach sound reasonable, where applicable? I don't grasp yet all of the tests in this repo nor do we yet have a subset of interop tests we could theoretically pass in mind, but I'd assume once we have an idea of "extension path" we could start picking those out and issuing PR's against this repo for restructuring, and to then conditionally add rs to be tested.

EDIT: linked "we" and the grant.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions