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

Create example of app.go for users, test in real configuration, fix IBC-Go test suite to handle it #58

Closed
9 tasks done
mpoke opened this issue Apr 21, 2022 · 9 comments
Closed
9 tasks done
Assignees
Labels
scope: docs Improvements or additions to documentation

Comments

@mpoke
Copy link
Contributor

mpoke commented Apr 21, 2022

@mpoke mpoke moved this to Todo in Replicated Security Apr 21, 2022
@jtremback jtremback changed the title Create example of app.go for users Create example of app.go for users, test in real configuration Apr 22, 2022
@jtremback jtremback changed the title Create example of app.go for users, test in real configuration Create example of app.go for users, test in real configuration, fix IBC-Go test suite to handle it Apr 22, 2022
@jtremback
Copy link
Contributor

jtremback commented Apr 22, 2022

In the short term, there will be 3 different users of our app.go example.

  • First, the Cosmos Hub team at IG will need to install the CCV provider module into the Cosmos Hub's app.go.
  • Then we, and the Ethernal team will need to install the CCV consumer module into the CosmWasm consumer chain.
  • Also, teams with custom consumer chains will need to install the CCV consumer module as well.

I think it will be important have separate app.go files for provider and consumer chains. This is because the functioning of the consumer chain depends on certain modules being disabled. Even if we fixed this somehow, we would still want separate app.gos because the Hub will not want to pull in the consumer module and increase the attack surface.

For this to happen some changes will need to be made to the IBC-Go test suite to allow it to test two chains with separate app.gos.

As I just discussed with @danwt I think the time has come for us to fork the IBC-Go test framework into it's own repo. Dealing with a test framework that needs frequent modifications but also is bundled with one of our core dependencies is a pain.

Alternately, we could just keep modifying the IBC-Go test framework in our forked IBC-Go repo, but I'm not sure that has a lot of benefits.

@jtremback jtremback assigned jtremback and danwt and unassigned jtremback Apr 22, 2022
@danwt
Copy link
Contributor

danwt commented Apr 22, 2022

fork the IBC-Go test framework into it's own repo.

I think it's a good idea. The ultimate goal would be to have a general tool for testing ibc apps across heterogeneous chains so the name could be something like 'ibc-tester'. It must be built for our needs first though, without premature generalization.

@danwt
Copy link
Contributor

danwt commented Apr 26, 2022

This issue is relevant for understanding current ibc-go testing limitations

@danwt
Copy link
Contributor

danwt commented Apr 26, 2022

From speaking with @jtremback we decided this has high priority. I will tackle this first.

@mpoke mpoke added scope: docs Improvements or additions to documentation scope: testing Code review, testing, making sure the code is following the specification. labels Apr 26, 2022
@mpoke mpoke moved this from Todo to In Progress in Replicated Security Apr 27, 2022
@danwt
Copy link
Contributor

danwt commented May 3, 2022

With some small slightly hacky changes (1,2) the ibc-go testing can support multiple app.go's.

Now I'm wondering if I need to create completely separate /app packages or I can somehow share the contents of /app between an app_parent.go and an app_child.go

Figured it out

@danwt
Copy link
Contributor

danwt commented May 3, 2022

This issue is quite related to

@danwt
Copy link
Contributor

danwt commented May 3, 2022

Two PRs solve the basics of this issue

Now there are two copies of the app.go that contains both provider and consumer logic so I should additionally strip the provider-only logic from the consumer and the consumer-only logic from the provider. That might fall better under either of

Additionally I need to make sure the docker integration tests work with the new apps

@danwt danwt added ccv and removed scope: testing Code review, testing, making sure the code is following the specification. labels May 6, 2022
@danwt
Copy link
Contributor

danwt commented May 6, 2022

Hi @alexanderbez. We spoke on slack. Here's my understanding

The ultimate goal is to have two separate app's that people can use as a basis. The provider can be like gaia and the consumer should be minimal but with democracy and/or cosmwasm. As I understand democracy is needed to enable cosmwasm in practice. Ethernal are working on cosmwasm and they are having problems with conflicting sdk versions ect. There is some uncertainty about the best way to structure the repo(s) to make all this possible.

The PR #84 doesn't do much. It simply splits the apps and updates the tests (in-memory and integration) to use two different apps.

@danwt
Copy link
Contributor

danwt commented May 20, 2022

Can we close this?

@mpoke mpoke closed this as completed May 22, 2022
Repository owner moved this from In Progress to Done in Replicated Security May 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
scope: docs Improvements or additions to documentation
Projects
No open projects
Status: Done
Development

Successfully merging a pull request may close this issue.

3 participants