Giter Club home page Giter Club logo

peeps's Introduction

PegaSys End to End Product test Suite

CircleCI License

Governance

Purpose

PEEPS is a product integration test suite. Tests are written levering a custom DSL that provides concise fluent language at an appropriate level of abstraction from the implementation details.

Conceptually PEEPS consists of two parts:

  • A DSL (domain specific language) to easily author end to end tests. This layer providing the binding between the abstract language and specific implementations for each product.
  • End to End suite. Test cases that leverage the DSL to produce concise tests, at the appropriate level of abstraction for easy understanding by most.

Architecture

End To End Tests

The module end-to-end-tests contains the product end to end tests and their resources.

NetworkTest is intended as the abstract base class for all tests that require the Network primative as part of their testing, where a Network is connection between products (Ethereum nodes, Privacy Managers and Signers ...which should be every end to end test in PEEPS).

DSL

The module dsl contains the domain specific language syntax and semantic objects, in addition to the binding code the underlying products.

When writing tests, the only reason to extend the DSL would be when adding a new product, or exposing a new service of the product, yet unexposed.

The point of orchestration for the DSL is the Network class.

peeps's People

Contributors

achraf17 avatar ajsutton avatar antonydenyer avatar cjhare avatar jframe avatar macfarla avatar rain-on avatar siladu avatar usmansaleem avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

peeps's Issues

New test for legacy privacy transactions

Add a privacy test using legacy privateFrom instead of privacy groups.

Acceptance Criteria

  • Test that submits a private transaction deploying a contract without privacy groups similar to the existing PrivacyContractDeploymentTest.
  • Test must use EthSigner, Besu and Tessera

PEEPS nightly build is failing

PEEPS nightly build is failing https://app.circleci.com/pipelines/github/ConsenSys/PEEPS/956/workflows/c6dc6c52-69e8-47ea-a5f4-e018fc1d2dc3/jobs/2260

Looks like the cause is that EthSigner is failing to start in docker.

org.testcontainers.containers.ContainerLaunchException: Container startup failed at app//org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:330) at app//org.testcontainers.containers.GenericContainer.start(GenericContainer.java:311) at app//tech.pegasys.peeps.signer.EthSigner.start(EthSigner.java:90) at [email protected]/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183) at [email protected]/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1655) at [email protected]/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at [email protected]/java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290) at [email protected]/java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:746) at [email protected]/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) at [email protected]/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) at [email protected]/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) at [email protected]/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) at [email protected]/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) Caused by: org.rnorth.ducttape.RetryCountExceededException: Retry limit hit with exception at app//org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:88) at app//org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:323) ... 12 more Caused by: org.testcontainers.containers.ContainerLaunchException: Could not create/start container at app//org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:497) at app//org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:325) at app//org.rnorth.ducttape.unreliables.Unreliables.retryUntilSuccess(Unreliables.java:81) ... 13 more Caused by: java.lang.IllegalStateException: Container exited with code 1 at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:469) ... 15 more

IBFT consensus test failing on peering

The IbftConsensusTest is failing. Looks like it Besu and Quorum are unable to peer with each other.

Example of a recent build failure:
https://app.circleci.com/pipelines/github/ConsenSys/PEEPS/983/workflows/666812f6-6a66-45d4-80bb-5d82c6a302b2/jobs/2316/tests#failed-test-0

I enabled trace level logging locally and found that the peer connection is being rejected.

Quorum
goquorum: TRACE[09-12|02:46:50.563] Rejected peer id=c4103c9338687014 addr=172.20.0.3:45770 conn=inbound err="useless peer"

Besu
nioEventLoopGroup-3-1 | DEBUG | EthPeer | handleDisconnect - EthPeer PeerId 0x450064e3bec5e40a4c548ad879c92beba33487a96beec9aae93abacf9e2fa540dd89945e7157b2737db9d75dfb5470edb0aa8f5dadf0b017a77a056e546b6094, reputation PeerReputation 100, validated? true, disconnected? true, client: Geth/goquorum/v1.10.3-stable-957349b1(quorum-v22.7.1)/linux-amd64/go1.16.15, connection 2005954816, enode enode://450064e3bec5e40a4c548ad879c92beba33487a96beec9aae93abacf9e2fa540dd89945e7157b2737db9d75dfb5470edb0aa8f5dadf0b017a77a056e546b6094@172.20.0.2:30303 nioEventLoopGroup-3-1 | DEBUG | EthPeers | Disconnected EthPeer PeerId 0x450064e3bec5e40a4c548ad879c92beba33487a96beec9aae93abacf9e2fa540dd89945e7157b2737db9d75dfb5470edb0aa8f5dadf0b017a77a056e546b6094, reputation PeerReputation 100, validated? true, disconnected? true, client: Geth/goquorum/v1.10.3-stable-957349b1(quorum-v22.7.1)/linux-amd64/go1.16.15, connection 2005954816, enode enode://450064e3bec5e40a4c548ad879c92beba33487a96beec9aae93abacf9e2fa540dd89945e7157b2737db9d75dfb5470edb0aa8f5dadf0b017a77a056e546b6094@172.20.0.2:30303 nioEventLoopGroup-3-1 | DEBUG | EthProtocolManager | Disconnect - Inbound - 0x03 USELESS_PEER - PeerInfo{version=5, clientId='Geth/goquorum/v1.10.3-stable-957349b1(quorum-v22.7.1)/linux-amd64/go1.16.15', capabilities=[eth/65, eth/66, istanbul/64, istanbul/99, istanbul/100, snap/1], port=0, nodeId=0x450064e3bec5e40a4c548ad879c92beba33487a96beec9aae93abacf9e2fa540dd89945e7157b2737db9d75dfb5470edb0aa8f5dadf0b017a77a056e546b6094} - 0 peers left nioEventLoopGroup-3-1 | DEBUG | AbstractPeerConnection | Terminating connection 2005954816, reason 0x01 TCP_SUBSYSTEM_ERROR nioEventLoopGroup-3-1 | DEBUG | AbstractPeerConnection | Terminating connection 2005954816, reason 0x03 USELESS_PEER

New test for privacy transactions with nonce

Add a privacy test using that uses nonces. The existing test doesn't use a nonce.

Acceptance Criteria

  • Test that submits a private transaction deploying a contract similar to the existing PrivacyContractDeploymentTest but with a nonce
  • Test must use EthSigner, Besu and the Tessera

Get PEEPS Working for Interop

It has come to the stage that Pegasys must start performing various manners of interop testing with various products:

  • Besu
  • Orion
  • EthSigner
  • GoQuorum
  • Tessera

And PEEPS is to be extended to support all possible combinations thereof (maybe).

Things that need to be done:

  1. Have all existing tests working/passing - also on CIRCLE_CI
  2. Introduce GoQuorum as a Node type
  3. Introduce Tessera as a Privacy Node type
  4. Write basic tests to ensure it all works:
    4.1 GoQuorum ONLY clique network
    4.2 GoQuorum & Besu Client Network
    4.3 GoQuorum & Besu IBFT-1 network
    4.4. GoQuorum/Besu interop privacy
    4.5 GoQuorum/Besu interop Permissioning
    4.6 Cross-version operation (Quorum/Besu/Orion/Tessera)
    4.7 GoQuorum/Besu QBFT network (mines blocks, does round changes etc..etc. This alone is 2-3 SP)
    4.8 GoQuorum/Besu IBFT --> 2/3 IBFT network
    4.9 GoQuorum/Besu IBFT --> 2/3 IBFT --> QBFT Network
    4.10 GoQuorum/Besu IBFT --> QBFT Network

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.