-
Notifications
You must be signed in to change notification settings - Fork 3.3k
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
op-e2e: cleanup endpoints and dialing #11594
Conversation
Refactor looks good to me but CI is hanging for some reason it seems |
@tynes I accidentally quoted one client name. And the uptime check for closed op-geth was borked due to the in-process RPC not going down like HTTP/WS endpoint would. Also adjusted the proposer poll interval from 50ms to 500ms; at a 6 second proposer interval it's insane to poll 120 times per proposal, hope that improves op-e2e performance a bit. |
Changes in fff7059 look good to me |
Looks like its still hanging someplace |
44789b7
to
9b5d78f
Compare
@tynes sorry about that, it was hanging in only one run mode, when using HTTP. The L1 endpoint that is initialized during the System Start apparently needs to support subscriptions, an exception to the HTTP RPC rule. This caused the tests to fail, but one test would then deadlock when it failed before batcher startup, as it was waiting for the batcher to report back before allowing the test to shut down fully. Tests should be fixed now. Edit: forgot to remove some debug logs. Fixed. And also made the artifacts FS test run in parallel, I noticed it was not running in parallel like the other tests. |
9b5d78f
to
650981b
Compare
650981b
to
7a41528
Compare
Ugh, more tests failing, also in http mode, when RPC subscriptions are used in other test settings. Think I'll change it so that the HTTP-only part only applies to the node setup, not to the clients used by tests. |
* op-e2e: cleanup endpoints and dialing * op-e2e: fix accidental wrong dial, fix endpoint-test, adjust proposer poll interval * op-e2e: fix test deadlock, fix L1 RPC no-HTTP exception * op-e2e: any RPC for test, HTTP mode only applied to nodes * op-e2e: fix lint
Description
This cleans up the endpoint-dialing in op-e2e:
endpoint.RPC
(interface!), not a string.System
caches client RPC bindingsSystem
no longer pre-dials clients (unused clients = slow down of e2e)System
now will close all cached clients on shutdownGethInstance
type is moved into the geth package now, to bundle the node and backend parts of in-process geth.Opnode
type now encapsulates the op-e2e lifecycle idiosyncrasies of op-node.endpoint.RPC
type, allowing them to specify both the RPC and HTTP, as well as in-process attach (possible with geth, soon also op-node and other services).And I removed the
defer sys.Close()
statements, since theSystem
already registers asys.Close
on test-cleanup.In the future I hope we can refactor the op-batcher/op-proposer/op-node to all directly use the
endpoint
package, to configure their service. Then we can pass in the interface, rather than the string, and enjoy faster op-e2e testing (no system dials, websocket overhead, etc).Tests
Test infra refactor, no new features that aren't already covered.