github.com/asynkron/protoactor-go@v0.0.0-20240308120642-ef91a6abee75/cluster/cluster_test_tool/pubsub_default_registration_test.go (about)

     1  package cluster_test_tool
     2  
     3  import (
     4  	"strconv"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/suite"
     8  )
     9  
    10  type PubSubDefaultRegistrationTestSuite struct {
    11  	suite.Suite
    12  	fixture *PubSubClusterFixture
    13  }
    14  
    15  func (suite *PubSubDefaultRegistrationTestSuite) SetupTest() {
    16  	suite.fixture = NewPubSubClusterFixture(suite.T(), 1, true)
    17  	suite.fixture.Initialize()
    18  }
    19  
    20  func (suite *PubSubDefaultRegistrationTestSuite) TearDownTest() {
    21  	suite.fixture.ShutDown()
    22  }
    23  
    24  func (suite *PubSubDefaultRegistrationTestSuite) TestPubSubWorksWithDefaultTopicRegistration() {
    25  	subscriberIds := suite.fixture.SubscriberIds("topic-default", 20)
    26  	const topic = "topic-default-registration"
    27  	const numMessage = 100
    28  
    29  	suite.fixture.SubscribeAllTo(topic, subscriberIds)
    30  
    31  	for i := 0; i < numMessage; i++ {
    32  		data, err := suite.fixture.PublishData(topic, i)
    33  		suite.Assert().NoError(err, "message "+strconv.Itoa(i)+" should not has error")
    34  		suite.Assert().NotNil(data, "response "+strconv.Itoa(i)+" should not be nil")
    35  	}
    36  
    37  	suite.fixture.VerifyAllSubscribersGotAllTheData(subscriberIds, numMessage)
    38  }
    39  
    40  // In order for 'go test' to run this suite, we need to create
    41  // a normal test function and pass our suite to suite.Run
    42  func TestPubSubDefaultRegistrationTestSuite(t *testing.T) {
    43  	suite.Run(t, new(PubSubDefaultRegistrationTestSuite))
    44  }