From 2828d044f3b480b7d9b15305320769df18922be5 Mon Sep 17 00:00:00 2001 From: Damian Ramirez <damian.ramirez@lambdaclass.com> Date: Tue, 21 Jan 2025 17:05:12 -0300 Subject: [PATCH 1/4] Create test for SubscribeToNewPubkeyRegistrations --- .../clients/avsregistry/subscriber_test.go | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 chainio/clients/avsregistry/subscriber_test.go diff --git a/chainio/clients/avsregistry/subscriber_test.go b/chainio/clients/avsregistry/subscriber_test.go new file mode 100644 index 00000000..87809bf4 --- /dev/null +++ b/chainio/clients/avsregistry/subscriber_test.go @@ -0,0 +1,54 @@ +package avsregistry_test + +import ( + "context" + "testing" + "time" + + "github.com/Layr-Labs/eigensdk-go/crypto/bls" + "github.com/Layr-Labs/eigensdk-go/testutils" + "github.com/Layr-Labs/eigensdk-go/testutils/testclients" + "github.com/Layr-Labs/eigensdk-go/types" + "github.com/ethereum/go-ethereum/crypto" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestSubscriberAvsRegistry(t *testing.T) { + client, _ := testclients.BuildTestClients(t) + chainSubscriber := client.AvsRegistryChainSubscriber + chainWriter := client.AvsRegistryChainWriter + + pubKeyRegistrations, event, err := chainSubscriber.SubscribeToNewPubkeyRegistrations() + defer event.Unsubscribe() + require.NoError(t, err) + + // Emit a NewPubkeyRegistration event creating a new operator + keypair, err := bls.NewKeyPairFromString("0x01") + require.NoError(t, err, "Failed to create BLS key pair") + + ecdsaPrivateKey, err := crypto.HexToECDSA(testutils.ANVIL_FIRST_PRIVATE_KEY) + require.NoError(t, err, "Failed to parse ECDSA private key") + + quorumNumbers := types.QuorumNums{0} + + receipt, err := chainWriter.RegisterOperator( + context.Background(), + ecdsaPrivateKey, + keypair, + quorumNumbers, + "", + true, + ) + require.NoError(t, err) + require.NotNil(t, receipt) + + select { + case newPubkeyRegistration := <-pubKeyRegistrations: + expectedOperator := crypto.PubkeyToAddress(ecdsaPrivateKey.PublicKey) + assert.Equal(t, expectedOperator, newPubkeyRegistration.Operator) + case <-time.After(10 * time.Second): + // Throw an error if the event is not received within 10 seconds, making the test fail + t.Fatal("Timed out waiting for NewPubkeyRegistration event") + } +} From ad12dc388b7a19ae006685d294a82449fd718139 Mon Sep 17 00:00:00 2001 From: Damian Ramirez <damian.ramirez@lambdaclass.com> Date: Tue, 21 Jan 2025 17:26:31 -0300 Subject: [PATCH 2/4] Add test for SubscribeToOperatorSocketUpdates --- .../clients/avsregistry/subscriber_test.go | 86 ++++++++++++------- 1 file changed, 54 insertions(+), 32 deletions(-) diff --git a/chainio/clients/avsregistry/subscriber_test.go b/chainio/clients/avsregistry/subscriber_test.go index 87809bf4..464940ec 100644 --- a/chainio/clients/avsregistry/subscriber_test.go +++ b/chainio/clients/avsregistry/subscriber_test.go @@ -19,36 +19,58 @@ func TestSubscriberAvsRegistry(t *testing.T) { chainSubscriber := client.AvsRegistryChainSubscriber chainWriter := client.AvsRegistryChainWriter - pubKeyRegistrations, event, err := chainSubscriber.SubscribeToNewPubkeyRegistrations() - defer event.Unsubscribe() - require.NoError(t, err) - - // Emit a NewPubkeyRegistration event creating a new operator - keypair, err := bls.NewKeyPairFromString("0x01") - require.NoError(t, err, "Failed to create BLS key pair") - - ecdsaPrivateKey, err := crypto.HexToECDSA(testutils.ANVIL_FIRST_PRIVATE_KEY) - require.NoError(t, err, "Failed to parse ECDSA private key") - - quorumNumbers := types.QuorumNums{0} - - receipt, err := chainWriter.RegisterOperator( - context.Background(), - ecdsaPrivateKey, - keypair, - quorumNumbers, - "", - true, - ) - require.NoError(t, err) - require.NotNil(t, receipt) - - select { - case newPubkeyRegistration := <-pubKeyRegistrations: - expectedOperator := crypto.PubkeyToAddress(ecdsaPrivateKey.PublicKey) - assert.Equal(t, expectedOperator, newPubkeyRegistration.Operator) - case <-time.After(10 * time.Second): - // Throw an error if the event is not received within 10 seconds, making the test fail - t.Fatal("Timed out waiting for NewPubkeyRegistration event") - } + t.Run("subscribe to new pubkey registrations", func(t *testing.T) { + pubKeyRegistrationsC, event, err := chainSubscriber.SubscribeToNewPubkeyRegistrations() + defer event.Unsubscribe() + require.NoError(t, err) + + // Emit a NewPubkeyRegistration event creating a new operator + keypair, err := bls.NewKeyPairFromString("0x01") + require.NoError(t, err, "Failed to create BLS key pair") + + ecdsaPrivateKey, err := crypto.HexToECDSA(testutils.ANVIL_FIRST_PRIVATE_KEY) + require.NoError(t, err, "Failed to parse ECDSA private key") + + quorumNumbers := types.QuorumNums{0} + + receipt, err := chainWriter.RegisterOperator( + context.Background(), + ecdsaPrivateKey, + keypair, + quorumNumbers, + "", + true, + ) + require.NoError(t, err) + require.NotNil(t, receipt) + + select { + case newPubkeyRegistration := <-pubKeyRegistrationsC: + expectedOperator := crypto.PubkeyToAddress(ecdsaPrivateKey.PublicKey) + assert.Equal(t, expectedOperator, newPubkeyRegistration.Operator) + case <-time.After(10 * time.Second): + // Throw an error if the event is not received within 10 seconds, making the test fail + t.Fatal("Timed out waiting for NewPubkeyRegistration event") + } + }) + + t.Run("subscribe to operator socket updates", func(t *testing.T) { + socketC, event, err := chainSubscriber.SubscribeToOperatorSocketUpdates() + defer event.Unsubscribe() + require.NoError(t, err) + + // Emit a SocketUpdate event + socketUpdate := "socket-update" + receipt, err := chainWriter.UpdateSocket(context.Background(), types.Socket(socketUpdate), true) + require.NoError(t, err) + require.NotNil(t, receipt) + + select { + case operatorSocketUpdate := <-socketC: + assert.Equal(t, socketUpdate, operatorSocketUpdate.Socket) + case <-time.After(10 * time.Second): + // Throw an error if the event is not received within 10 seconds, making the test fail + t.Fatal("Timed out waiting for NewPubkeyRegistration event") + } + }) } From 500af3ceb014899d5cbea3e6b5a066622b1f56f6 Mon Sep 17 00:00:00 2001 From: Damian Ramirez <damian.ramirez@lambdaclass.com> Date: Tue, 21 Jan 2025 17:28:45 -0300 Subject: [PATCH 3/4] Move defer after error check --- chainio/clients/avsregistry/subscriber_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/chainio/clients/avsregistry/subscriber_test.go b/chainio/clients/avsregistry/subscriber_test.go index 464940ec..3d4448bf 100644 --- a/chainio/clients/avsregistry/subscriber_test.go +++ b/chainio/clients/avsregistry/subscriber_test.go @@ -21,15 +21,15 @@ func TestSubscriberAvsRegistry(t *testing.T) { t.Run("subscribe to new pubkey registrations", func(t *testing.T) { pubKeyRegistrationsC, event, err := chainSubscriber.SubscribeToNewPubkeyRegistrations() - defer event.Unsubscribe() require.NoError(t, err) + defer event.Unsubscribe() // Emit a NewPubkeyRegistration event creating a new operator keypair, err := bls.NewKeyPairFromString("0x01") - require.NoError(t, err, "Failed to create BLS key pair") + require.NoError(t, err) ecdsaPrivateKey, err := crypto.HexToECDSA(testutils.ANVIL_FIRST_PRIVATE_KEY) - require.NoError(t, err, "Failed to parse ECDSA private key") + require.NoError(t, err) quorumNumbers := types.QuorumNums{0} @@ -56,8 +56,8 @@ func TestSubscriberAvsRegistry(t *testing.T) { t.Run("subscribe to operator socket updates", func(t *testing.T) { socketC, event, err := chainSubscriber.SubscribeToOperatorSocketUpdates() - defer event.Unsubscribe() require.NoError(t, err) + defer event.Unsubscribe() // Emit a SocketUpdate event socketUpdate := "socket-update" @@ -70,7 +70,7 @@ func TestSubscriberAvsRegistry(t *testing.T) { assert.Equal(t, socketUpdate, operatorSocketUpdate.Socket) case <-time.After(10 * time.Second): // Throw an error if the event is not received within 10 seconds, making the test fail - t.Fatal("Timed out waiting for NewPubkeyRegistration event") + t.Fatal("Timed out waiting for operatorSocketUpdate event") } }) } From 0d5cecb0c3edeed166b4120ed152cfc692a8481b Mon Sep 17 00:00:00 2001 From: Damian Ramirez <damian.ramirez@lambdaclass.com> Date: Tue, 21 Jan 2025 17:46:38 -0300 Subject: [PATCH 4/4] Fix typo --- chainio/clients/avsregistry/subscriber_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chainio/clients/avsregistry/subscriber_test.go b/chainio/clients/avsregistry/subscriber_test.go index 3d4448bf..0cdf2aaa 100644 --- a/chainio/clients/avsregistry/subscriber_test.go +++ b/chainio/clients/avsregistry/subscriber_test.go @@ -70,7 +70,7 @@ func TestSubscriberAvsRegistry(t *testing.T) { assert.Equal(t, socketUpdate, operatorSocketUpdate.Socket) case <-time.After(10 * time.Second): // Throw an error if the event is not received within 10 seconds, making the test fail - t.Fatal("Timed out waiting for operatorSocketUpdate event") + t.Fatal("Timed out waiting for OperatorSocketUpdate event") } }) }