github.com/ari-anchor/sei-tendermint@v0.0.0-20230519144642-dc826b7b56bb/test/e2e/generator/generate_test.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"math/rand"
     6  	"testing"
     7  
     8  	"github.com/stretchr/testify/require"
     9  
    10  	e2e "github.com/ari-anchor/sei-tendermint/test/e2e/pkg"
    11  )
    12  
    13  func TestGenerator(t *testing.T) {
    14  	manifests, err := Generate(rand.New(rand.NewSource(randomSeed)), Options{})
    15  	require.NoError(t, err)
    16  	require.True(t, len(manifests) >= 24, "insufficient combinations %d", len(manifests))
    17  
    18  	// this just means that the numbers reported by the test
    19  	// failures map to the test cases that you'd see locally.
    20  	e2e.SortManifests(manifests, false /* ascending */)
    21  
    22  	for idx, m := range manifests {
    23  		t.Run(fmt.Sprintf("Case%04d", idx), func(t *testing.T) {
    24  			numStateSyncs := 0
    25  			for name, node := range m.Nodes {
    26  				if node.StateSync != e2e.StateSyncDisabled {
    27  					numStateSyncs++
    28  				}
    29  				t.Run(name, func(t *testing.T) {
    30  					t.Run("StateSync", func(t *testing.T) {
    31  						if node.StartAt > m.InitialHeight+5 && !node.Stateless() {
    32  							require.NotEqual(t, node.StateSync, e2e.StateSyncDisabled)
    33  						}
    34  						if node.StateSync != e2e.StateSyncDisabled {
    35  							require.Zero(t, node.Seeds, node.StateSync)
    36  							require.True(t, len(node.PersistentPeers) >= 2 || len(node.PersistentPeers) == 0,
    37  								"peers: %v", node.PersistentPeers)
    38  						}
    39  					})
    40  					if e2e.Mode(node.Mode) != e2e.ModeLight {
    41  						t.Run("PrivvalProtocol", func(t *testing.T) {
    42  							require.NotZero(t, node.PrivvalProtocol)
    43  						})
    44  					}
    45  				})
    46  			}
    47  			require.True(t, numStateSyncs <= 2)
    48  		})
    49  	}
    50  }