From 352adfe2210ba5923a80810861ebcd14450dcd44 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Wed, 14 Aug 2024 13:47:31 -0300 Subject: [PATCH 01/23] check cr service is started --- .../chain_reader_interface_tests.go | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index 14cecf7db..55511a381 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -48,6 +48,7 @@ const ( AnySecondContractName = "Not" + AnyContractName ) +var ErrServiceNotStarted = errors.New("service not started") var AnySliceToReadWithoutAnArgument = []uint64{3, 4} const AnyExtraValue = 3 @@ -70,6 +71,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain tester.SetTestStructLatestValue(t, &secondItem) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) actual := &TestStruct{} @@ -88,6 +91,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) var prim uint64 @@ -101,6 +106,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) var returnVal1 uint64 @@ -140,6 +147,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) bindings := tester.GetBindings(t) seenAddrs := map[string]bool{} for _, binding := range bindings { @@ -160,6 +169,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) var slice []uint64 @@ -176,6 +187,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain testStruct.BigField = nil testStruct.Account = nil cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) actual := &TestStructWithExtraField{} @@ -194,6 +207,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts) @@ -212,6 +227,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts1 := CreateTestStruct[T](2, tester) tester.TriggerEvent(t, &ts1) @@ -242,6 +259,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result := &TestStruct{} @@ -254,6 +273,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts0 := CreateTestStruct(0, tester) tester.TriggerEvent(t, &ts0) @@ -296,6 +317,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -318,6 +341,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) @@ -340,6 +365,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) @@ -366,6 +393,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -390,6 +419,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -422,6 +453,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -454,6 +487,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -485,6 +520,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -515,6 +552,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) @@ -529,6 +568,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.Error(t, ErrServiceNotStarted) + require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts1 := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts1) From 173eca4d23eb2610bc6b10d5a65de08c52430ce4 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Thu, 15 Aug 2024 10:19:33 -0300 Subject: [PATCH 02/23] small refactor --- .../chain_reader_interface_tests.go | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index 55511a381..374c6c56e 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -71,8 +71,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain tester.SetTestStructLatestValue(t, &secondItem) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) actual := &TestStruct{} @@ -91,8 +91,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) var prim uint64 @@ -106,8 +106,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) var returnVal1 uint64 @@ -147,8 +147,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + bindings := tester.GetBindings(t) seenAddrs := map[string]bool{} for _, binding := range bindings { @@ -169,8 +169,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) var slice []uint64 @@ -187,8 +187,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain testStruct.BigField = nil testStruct.Account = nil cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) actual := &TestStructWithExtraField{} @@ -207,8 +207,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts) @@ -227,8 +227,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts1 := CreateTestStruct[T](2, tester) tester.TriggerEvent(t, &ts1) @@ -259,8 +259,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result := &TestStruct{} @@ -273,8 +273,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts0 := CreateTestStruct(0, tester) tester.TriggerEvent(t, &ts0) @@ -317,7 +317,6 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) @@ -341,8 +340,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) @@ -365,8 +364,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) @@ -393,8 +392,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -419,8 +418,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -453,8 +452,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -487,8 +486,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -520,8 +519,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -552,7 +551,6 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) @@ -568,8 +566,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.Error(t, ErrServiceNotStarted) require.NoError(t, cr.Start(ctx)) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts1 := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts1) From 0d8a1b0cb62dd10eb3f6b022aaee548c7d94238b Mon Sep 17 00:00:00 2001 From: Farber98 Date: Thu, 15 Aug 2024 10:23:38 -0300 Subject: [PATCH 03/23] remove unused error --- pkg/types/interfacetests/chain_reader_interface_tests.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index 374c6c56e..e7ca88708 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -48,7 +48,6 @@ const ( AnySecondContractName = "Not" + AnyContractName ) -var ErrServiceNotStarted = errors.New("service not started") var AnySliceToReadWithoutAnArgument = []uint64{3, 4} const AnyExtraValue = 3 From af1fabfb7af8fbba49655307b2ccb4850b361f7f Mon Sep 17 00:00:00 2001 From: Farber98 Date: Thu, 15 Aug 2024 11:23:10 -0300 Subject: [PATCH 04/23] bind before start --- .../chain_reader_interface_tests.go | 54 +++++++------------ 1 file changed, 20 insertions(+), 34 deletions(-) diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index e7ca88708..e05b0a173 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -70,9 +70,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain tester.SetTestStructLatestValue(t, &secondItem) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) actual := &TestStruct{} params := &LatestParams{I: 1} @@ -90,9 +89,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -105,9 +103,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) var returnVal1 uint64 callArgs := ExpectedGetLatestValueArgs{ @@ -146,16 +143,14 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - bindings := tester.GetBindings(t) seenAddrs := map[string]bool{} for _, binding := range bindings { assert.False(t, seenAddrs[binding.Address]) seenAddrs[binding.Address] = true } - require.NoError(t, cr.Bind(ctx, bindings)) + require.NoError(t, cr.Start(ctx)) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnySecondContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -168,9 +163,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) var slice []uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64Slice, primitives.Unconfirmed, nil, &slice)) @@ -186,9 +180,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain testStruct.BigField = nil testStruct.Account = nil cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) actual := &TestStructWithExtraField{} require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningSeenStruct, primitives.Unconfirmed, testStruct, actual)) @@ -206,9 +199,9 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts) ts = CreateTestStruct[T](1, tester) @@ -226,9 +219,9 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts1 := CreateTestStruct[T](2, tester) tester.TriggerEvent(t, &ts1) @@ -258,9 +251,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) result := &TestStruct{} err := cr.GetLatestValue(ctx, AnyContractName, EventName, primitives.Unconfirmed, nil, &result) @@ -272,9 +264,9 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts0 := CreateTestStruct(0, tester) tester.TriggerEvent(t, &ts0) ts1 := CreateTestStruct(1, tester) @@ -316,9 +308,9 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -339,9 +331,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -363,9 +354,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -391,9 +381,9 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -417,9 +407,9 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -451,9 +441,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -485,9 +474,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -518,9 +506,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -550,9 +537,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) - require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.NoError(t, cr.Start(ctx)) logs, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) @@ -565,9 +551,9 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) require.NoError(t, cr.Start(ctx)) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts1 := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts1) ts2 := CreateTestStruct[T](1, tester) From 4dcb052471508c808f37163d8ceed64f33522400 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Thu, 15 Aug 2024 12:42:03 -0300 Subject: [PATCH 05/23] add comments to tests --- .../chain_reader_interface_tests.go | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index e05b0a173..05bbe39da 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -94,7 +94,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) - assert.Equal(t, AnyValueToReadWithoutAnArgument, prim) }, }, @@ -115,14 +114,19 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ReturnVal: &returnVal1, } - var prim1 uint64 + // Set value with unconfirmed confidence level tester.SetUintLatestValue(t, 10, callArgs) + + // Attempt to get the value with a higher confidence level (Finalized) before it's finalized + var prim1 uint64 require.Error(t, cr.GetLatestValue(ctx, callArgs.ContractName, callArgs.ReadName, primitives.Finalized, callArgs.Params, &prim1)) + // Generate blocks to reach the finalized confidence level tester.GenerateBlocksTillConfidenceLevel(t, AnyContractName, MethodReturningAlterableUint64, primitives.Finalized) require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningAlterableUint64, primitives.Finalized, nil, &prim1)) assert.Equal(t, uint64(10), prim1) + // Test with a different value and confidence level var returnVal2 uint64 callArgs2 := ExpectedGetLatestValueArgs{ ContractName: AnyContractName, @@ -154,7 +158,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnySecondContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) - assert.Equal(t, AnyDifferentValueToReadWithoutAnArgument, prim) }, }, @@ -168,7 +171,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain var slice []uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64Slice, primitives.Unconfirmed, nil, &slice)) - assert.Equal(t, AnySliceToReadWithoutAnArgument, slice) }, }, @@ -185,12 +187,10 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain actual := &TestStructWithExtraField{} require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningSeenStruct, primitives.Unconfirmed, testStruct, actual)) - expected := &TestStructWithExtraField{ ExtraField: AnyExtraValue, TestStruct: CreateTestStruct(0, tester), } - assert.Equal(t, expected, actual) }, }, @@ -222,24 +222,31 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) require.NoError(t, cr.Start(ctx)) + // Trigger the first event ts1 := CreateTestStruct[T](2, tester) tester.TriggerEvent(t, &ts1) + // Attempt to get the event with Finalized confidence level before it is finalized result := &TestStruct{} assert.Eventually(t, func() bool { err := cr.GetLatestValue(ctx, AnyContractName, EventName, primitives.Finalized, nil, &result) return err != nil && assert.ErrorContains(t, err, types.ErrNotFound.Error()) }, tester.MaxWaitTimeForEvents(), time.Millisecond*10) + // Generate blocks to finalize the first event tester.GenerateBlocksTillConfidenceLevel(t, AnyContractName, EventName, primitives.Finalized) + + // Trigger the second event ts2 := CreateTestStruct[T](3, tester) tester.TriggerEvent(t, &ts2) + // Get the first event with Finalized confidence level assert.Eventually(t, func() bool { err := cr.GetLatestValue(ctx, AnyContractName, EventName, primitives.Finalized, nil, &result) return err == nil && reflect.DeepEqual(result, &ts1) }, tester.MaxWaitTimeForEvents(), time.Millisecond*10) + // Get the second event with Unconfirmed confidence level assert.Eventually(t, func() bool { err := cr.GetLatestValue(ctx, AnyContractName, EventName, primitives.Unconfirmed, nil, &result) return err == nil && reflect.DeepEqual(result, &ts2) @@ -272,13 +279,17 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ts1 := CreateTestStruct(1, tester) tester.TriggerEvent(t, &ts1) + // Define filter parameters based on ts0's field filterParams := &FilterEventParams{Field: *ts0.Field} + + // Assert that ts1 is not returned when filtering by ts0's field assert.Never(t, func() bool { result := &TestStruct{} err := cr.GetLatestValue(ctx, AnyContractName, EventWithFilterName, primitives.Unconfirmed, filterParams, &result) return err == nil && reflect.DeepEqual(result, &ts1) }, tester.MaxWaitTimeForEvents(), time.Millisecond*10) - // get the result one more time to verify it. + + // Get the result one more time to verify that ts0 is returned with the filter applied // Using the result from the Never statement by creating result outside the block is a data race result := &TestStruct{} err := cr.GetLatestValue(ctx, AnyContractName, EventWithFilterName, primitives.Unconfirmed, filterParams, &result) From 4d966e6c42dcbc0423509d2f2ec640e590d97df0 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Thu, 15 Aug 2024 12:45:26 -0300 Subject: [PATCH 06/23] startChainReader method --- .../chainreader/chain_reader_test.go | 10 +++-- .../chain_reader_interface_tests.go | 41 ++++++++++--------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go index af93c6889..6e2cf15c8 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go @@ -287,6 +287,8 @@ func (it *fakeChainReaderInterfaceTester) GetChainReader(_ *testing.T) types.Con return it.impl } +func (it *fakeChainReaderInterfaceTester) StartChainReader(_ *testing.T) {} + func (it *fakeChainReaderInterfaceTester) GetBindings(_ *testing.T) []types.BoundContract { return []types.BoundContract{ {Name: AnyContractName, Address: AnyContractName}, @@ -340,11 +342,11 @@ type eventConfidencePair struct { type fakeChainReader struct { fakeTypeProvider - vals []valConfidencePair - triggers []eventConfidencePair - stored []TestStruct + vals []valConfidencePair + triggers []eventConfidencePair + stored []TestStruct batchStored BatchCallEntry - lock sync.Mutex + lock sync.Mutex } func (f *fakeChainReader) Start(_ context.Context) error { return nil } diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index 05bbe39da..5d0ad0924 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -16,6 +16,7 @@ import ( type ChainReaderInterfaceTester[T TestingT[T]] interface { BasicTester[T] + StartChainReader(t T) GetChainReader(t T) types.ContractReader // SetTestStructLatestValue is expected to return the same bound contract and method in the same test // Any setup required for this should be done in Setup. @@ -71,7 +72,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) actual := &TestStruct{} params := &LatestParams{I: 1} @@ -90,7 +91,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -103,7 +104,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) var returnVal1 uint64 callArgs := ExpectedGetLatestValueArgs{ @@ -154,7 +155,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain seenAddrs[binding.Address] = true } require.NoError(t, cr.Bind(ctx, bindings)) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnySecondContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -167,7 +168,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) var slice []uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64Slice, primitives.Unconfirmed, nil, &slice)) @@ -183,7 +184,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain testStruct.Account = nil cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) actual := &TestStructWithExtraField{} require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningSeenStruct, primitives.Unconfirmed, testStruct, actual)) @@ -200,7 +201,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) ts := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts) @@ -220,7 +221,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) // Trigger the first event ts1 := CreateTestStruct[T](2, tester) @@ -259,7 +260,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) result := &TestStruct{} err := cr.GetLatestValue(ctx, AnyContractName, EventName, primitives.Unconfirmed, nil, &result) @@ -272,7 +273,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) ts0 := CreateTestStruct(0, tester) tester.TriggerEvent(t, &ts0) @@ -320,7 +321,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -343,7 +344,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -366,7 +367,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -393,7 +394,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -419,7 +420,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -453,7 +454,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -486,7 +487,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -518,7 +519,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -549,7 +550,7 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) logs, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) @@ -563,7 +564,7 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.NoError(t, cr.Start(ctx)) + tester.StartChainReader(t) ts1 := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts1) From 5006bec7b3657933b1a9909c14a70d3c926759de Mon Sep 17 00:00:00 2001 From: Farber98 Date: Thu, 15 Aug 2024 23:35:56 -0300 Subject: [PATCH 07/23] check methods return error when called without starting service --- .../chain_reader_interface_tests.go | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index 5d0ad0924..19c75d91a 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -61,6 +61,15 @@ func RunChainReaderInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfac func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTester[T]) { tests := []testcase[T]{ + { + name: "Get latest value without starting service returns error", + test: func(t T) { + ctx := tests.Context(t) + cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.Error(t, cr.GetLatestValue(ctx, AnyContractName, MethodTakingLatestParamsReturningTestStruct, primitives.Unconfirmed, nil, nil)) + }, + }, { name: "Gets the latest value", test: func(t T) { @@ -333,6 +342,19 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester assert.Equal(t, &firstItem, returnValue) }, }, + { + name: "BatchGetLatestValues without starting service returns error", + test: func(t T) { + batchGetLatestValueRequest := make(types.BatchGetLatestValuesRequest) + batchGetLatestValueRequest[AnyContractName] = []types.BatchRead{{ReadName: MethodTakingLatestParamsReturningTestStruct, Params: nil, ReturnVal: nil}} + ctx := tests.Context(t) + cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + + _, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) + require.Error(t, err) + }, + }, { name: "BatchGetLatestValues works without arguments and with primitive return", test: func(t T) { @@ -558,6 +580,17 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe assert.Len(t, logs, 0) }, }, + { + name: "QueryKey without starting service returns error", + test: func(t T) { + ctx := tests.Context(t) + cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + + _, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) + require.Error(t, err) + }, + }, { name: "QueryKey returns sequence data properly", test: func(t T) { From cc3066b638e35e7e1478f2be107de84699f92534 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Fri, 16 Aug 2024 00:03:30 -0300 Subject: [PATCH 08/23] Revert "check methods return error when called without starting service" This reverts commit 5006bec7b3657933b1a9909c14a70d3c926759de. --- .../chain_reader_interface_tests.go | 33 ------------------- 1 file changed, 33 deletions(-) diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index 19c75d91a..5d0ad0924 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -61,15 +61,6 @@ func RunChainReaderInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfac func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTester[T]) { tests := []testcase[T]{ - { - name: "Get latest value without starting service returns error", - test: func(t T) { - ctx := tests.Context(t) - cr := tester.GetChainReader(t) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.Error(t, cr.GetLatestValue(ctx, AnyContractName, MethodTakingLatestParamsReturningTestStruct, primitives.Unconfirmed, nil, nil)) - }, - }, { name: "Gets the latest value", test: func(t T) { @@ -342,19 +333,6 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester assert.Equal(t, &firstItem, returnValue) }, }, - { - name: "BatchGetLatestValues without starting service returns error", - test: func(t T) { - batchGetLatestValueRequest := make(types.BatchGetLatestValuesRequest) - batchGetLatestValueRequest[AnyContractName] = []types.BatchRead{{ReadName: MethodTakingLatestParamsReturningTestStruct, Params: nil, ReturnVal: nil}} - ctx := tests.Context(t) - cr := tester.GetChainReader(t) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - - _, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) - require.Error(t, err) - }, - }, { name: "BatchGetLatestValues works without arguments and with primitive return", test: func(t T) { @@ -580,17 +558,6 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe assert.Len(t, logs, 0) }, }, - { - name: "QueryKey without starting service returns error", - test: func(t T) { - ctx := tests.Context(t) - cr := tester.GetChainReader(t) - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - - _, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) - require.Error(t, err) - }, - }, { name: "QueryKey returns sequence data properly", test: func(t T) { From b697ce2134a0bfe22d3252e99a77b86367045308 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Fri, 16 Aug 2024 10:36:12 -0300 Subject: [PATCH 09/23] service started checked working for both get latest value methods --- .../chainreader/chain_reader_test.go | 31 +++++++++++++++-- .../chain_reader_interface_tests.go | 33 +++++++++++++++++++ 2 files changed, 61 insertions(+), 3 deletions(-) diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go index 6e2cf15c8..b5de28269 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go @@ -287,7 +287,11 @@ func (it *fakeChainReaderInterfaceTester) GetChainReader(_ *testing.T) types.Con return it.impl } -func (it *fakeChainReaderInterfaceTester) StartChainReader(_ *testing.T) {} +func (it *fakeChainReaderInterfaceTester) StartChainReader(t *testing.T) { + fake, ok := it.impl.(*fakeChainReader) + assert.True(t, ok) + require.NoError(t, fake.Start(context.Background())) +} func (it *fakeChainReaderInterfaceTester) GetBindings(_ *testing.T) []types.BoundContract { return []types.BoundContract{ @@ -347,11 +351,20 @@ type fakeChainReader struct { stored []TestStruct batchStored BatchCallEntry lock sync.Mutex + isStarted bool } -func (f *fakeChainReader) Start(_ context.Context) error { return nil } +var errServiceNotStarted = errors.New("ContractReader service not started") -func (f *fakeChainReader) Close() error { return nil } +func (f *fakeChainReader) Start(_ context.Context) error { + f.isStarted = true + return nil +} + +func (f *fakeChainReader) Close() error { + f.isStarted = false + return nil +} func (f *fakeChainReader) Ready() error { panic("unimplemented") } @@ -385,6 +398,10 @@ func (f *fakeChainReader) SetBatchLatestValues(batchCallEntry BatchCallEntry) { } func (f *fakeChainReader) GetLatestValue(_ context.Context, contractName, method string, confidenceLevel primitives.ConfidenceLevel, params, returnVal any) error { + if !f.isStarted { + return errServiceNotStarted + } + if method == MethodReturningAlterableUint64 { r := returnVal.(*uint64) for i := len(f.vals) - 1; i >= 0; i-- { @@ -457,6 +474,10 @@ func (f *fakeChainReader) GetLatestValue(_ context.Context, contractName, method } func (f *fakeChainReader) BatchGetLatestValues(_ context.Context, request types.BatchGetLatestValuesRequest) (types.BatchGetLatestValuesResult, error) { + if !f.isStarted { + return nil, errServiceNotStarted + } + result := make(types.BatchGetLatestValuesResult) for requestContractName, requestContractBatch := range request { storedContractBatch := f.batchStored[requestContractName] @@ -505,6 +526,10 @@ func (f *fakeChainReader) BatchGetLatestValues(_ context.Context, request types. } func (f *fakeChainReader) QueryKey(_ context.Context, _ string, filter query.KeyFilter, limitAndSort query.LimitAndSort, _ any) ([]types.Sequence, error) { + if !f.isStarted { + return nil, errServiceNotStarted + } + if filter.Key == EventName { f.lock.Lock() defer f.lock.Unlock() diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index 5d0ad0924..ad34557ed 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -61,6 +61,15 @@ func RunChainReaderInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfac func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTester[T]) { tests := []testcase[T]{ + { + name: "Get latest value without starting service returns error", + test: func(t T) { + ctx := tests.Context(t) + cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.Error(t, cr.GetLatestValue(ctx, AnyContractName, MethodTakingLatestParamsReturningTestStruct, primitives.Unconfirmed, nil, nil)) + }, + }, { name: "Gets the latest value", test: func(t T) { @@ -304,6 +313,20 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTester[T]) { testCases := []testcase[T]{ + { + name: "BatchGetLatestValues without starting service returns error", + test: func(t T) { + // setup call data + batchGetLatestValueRequest := make(types.BatchGetLatestValuesRequest) + batchGetLatestValueRequest[AnyContractName] = []types.BatchRead{{ReadName: MethodTakingLatestParamsReturningTestStruct, Params: nil, ReturnVal: nil}} + + ctx := tests.Context(t) + cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + _, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) + require.Error(t, err) + }, + }, { name: "BatchGetLatestValues works", test: func(t T) { @@ -544,6 +567,16 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTester[T]) { tests := []testcase[T]{ + /* { + name: "QueryKey without starting service returns error", + test: func(t T) { + ctx := tests.Context(t) + cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + _, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) + require.Error(t, err) + }, + }, */ { name: "QueryKey returns not found if sequence never happened", test: func(t T) { From 855b38c199faf4af3a392bbb31f5d42953ba3d02 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Fri, 16 Aug 2024 15:46:46 -0300 Subject: [PATCH 10/23] close chain reader after tests --- .../chainreader/chain_reader_test.go | 6 ++++ .../chain_reader_interface_tests.go | 34 +++++++++++++++++-- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go index b5de28269..66ea076ec 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go @@ -293,6 +293,12 @@ func (it *fakeChainReaderInterfaceTester) StartChainReader(t *testing.T) { require.NoError(t, fake.Start(context.Background())) } +func (it *fakeChainReaderInterfaceTester) CloseChainReader(t *testing.T) { + fake, ok := it.impl.(*fakeChainReader) + assert.True(t, ok) + require.NoError(t, fake.Close()) +} + func (it *fakeChainReaderInterfaceTester) GetBindings(_ *testing.T) []types.BoundContract { return []types.BoundContract{ {Name: AnyContractName, Address: AnyContractName}, diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index ad34557ed..4b7389685 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -17,6 +17,7 @@ import ( type ChainReaderInterfaceTester[T TestingT[T]] interface { BasicTester[T] StartChainReader(t T) + CloseChainReader(t T) GetChainReader(t T) types.ContractReader // SetTestStructLatestValue is expected to return the same bound contract and method in the same test // Any setup required for this should be done in Setup. @@ -82,6 +83,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) actual := &TestStruct{} params := &LatestParams{I: 1} @@ -101,6 +103,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -114,6 +117,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) var returnVal1 uint64 callArgs := ExpectedGetLatestValueArgs{ @@ -165,6 +169,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain } require.NoError(t, cr.Bind(ctx, bindings)) tester.StartChainReader(t) + defer tester.CloseChainReader(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnySecondContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -178,6 +183,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) var slice []uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64Slice, primitives.Unconfirmed, nil, &slice)) @@ -194,6 +200,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) actual := &TestStructWithExtraField{} require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningSeenStruct, primitives.Unconfirmed, testStruct, actual)) @@ -211,6 +218,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) ts := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts) @@ -231,6 +239,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) // Trigger the first event ts1 := CreateTestStruct[T](2, tester) @@ -270,6 +279,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) result := &TestStruct{} err := cr.GetLatestValue(ctx, AnyContractName, EventName, primitives.Unconfirmed, nil, &result) @@ -283,6 +293,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) ts0 := CreateTestStruct(0, tester) tester.TriggerEvent(t, &ts0) @@ -316,9 +327,16 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester { name: "BatchGetLatestValues without starting service returns error", test: func(t T) { + // setup test data + firstItem := CreateTestStruct(1, tester) + batchCallEntry := make(BatchCallEntry) + batchCallEntry[AnyContractName] = ContractBatchEntry{{Name: MethodTakingLatestParamsReturningTestStruct, ReturnValue: &firstItem}} + tester.SetBatchLatestValues(t, batchCallEntry) + // setup call data + params, actual := &LatestParams{I: 1}, &TestStruct{} batchGetLatestValueRequest := make(types.BatchGetLatestValuesRequest) - batchGetLatestValueRequest[AnyContractName] = []types.BatchRead{{ReadName: MethodTakingLatestParamsReturningTestStruct, Params: nil, ReturnVal: nil}} + batchGetLatestValueRequest[AnyContractName] = []types.BatchRead{{ReadName: MethodTakingLatestParamsReturningTestStruct, Params: params, ReturnVal: actual}} ctx := tests.Context(t) cr := tester.GetChainReader(t) @@ -345,6 +363,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -368,6 +387,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -391,6 +411,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -418,6 +439,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -444,6 +466,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -478,6 +501,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -511,6 +535,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -543,6 +568,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -567,7 +593,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTester[T]) { tests := []testcase[T]{ - /* { + { name: "QueryKey without starting service returns error", test: func(t T) { ctx := tests.Context(t) @@ -576,7 +602,7 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe _, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) require.Error(t, err) }, - }, */ + }, { name: "QueryKey returns not found if sequence never happened", test: func(t T) { @@ -584,6 +610,7 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) logs, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) @@ -598,6 +625,7 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) tester.StartChainReader(t) + defer tester.CloseChainReader(t) ts1 := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts1) From 0cf190ee471bde86f593a6bd631f002dd3557b09 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Thu, 22 Aug 2024 08:38:05 -0300 Subject: [PATCH 11/23] remove duplicate fields --- .../relayer/pluginprovider/chainreader/chain_reader_test.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go index 5c574597f..a65abac67 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go @@ -355,9 +355,6 @@ type fakeChainReader struct { vals []valConfidencePair triggers []eventConfidencePair stored []TestStruct - vals []valConfidencePair - triggers []eventConfidencePair - stored []TestStruct batchStored BatchCallEntry lock sync.Mutex isStarted bool From 8e1388bc2819bbd99eed8831e18286e9ad49860f Mon Sep 17 00:00:00 2001 From: Farber98 Date: Fri, 23 Aug 2024 11:56:13 -0300 Subject: [PATCH 12/23] rename interface tester new methods --- .../chainreader/chain_reader_test.go | 4 +- .../chain_reader_interface_tests.go | 84 +++++++++---------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go index a65abac67..7fcf6d733 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go @@ -287,13 +287,13 @@ func (it *fakeChainReaderInterfaceTester) GetChainReader(_ *testing.T) types.Con return it.impl } -func (it *fakeChainReaderInterfaceTester) StartChainReader(t *testing.T) { +func (it *fakeChainReaderInterfaceTester) Start(t *testing.T) { fake, ok := it.impl.(*fakeChainReader) assert.True(t, ok) require.NoError(t, fake.Start(context.Background())) } -func (it *fakeChainReaderInterfaceTester) CloseChainReader(t *testing.T) { +func (it *fakeChainReaderInterfaceTester) Close(t *testing.T) { fake, ok := it.impl.(*fakeChainReader) assert.True(t, ok) require.NoError(t, fake.Close()) diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index 4b7389685..156e7a60a 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -16,8 +16,8 @@ import ( type ChainReaderInterfaceTester[T TestingT[T]] interface { BasicTester[T] - StartChainReader(t T) - CloseChainReader(t T) + Start(t T) + Close(t T) GetChainReader(t T) types.ContractReader // SetTestStructLatestValue is expected to return the same bound contract and method in the same test // Any setup required for this should be done in Setup. @@ -82,8 +82,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) actual := &TestStruct{} params := &LatestParams{I: 1} @@ -102,8 +102,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -116,8 +116,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) var returnVal1 uint64 callArgs := ExpectedGetLatestValueArgs{ @@ -168,8 +168,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain seenAddrs[binding.Address] = true } require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnySecondContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -182,8 +182,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) var slice []uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64Slice, primitives.Unconfirmed, nil, &slice)) @@ -199,8 +199,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain testStruct.Account = nil cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) actual := &TestStructWithExtraField{} require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningSeenStruct, primitives.Unconfirmed, testStruct, actual)) @@ -217,8 +217,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) ts := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts) @@ -238,8 +238,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) // Trigger the first event ts1 := CreateTestStruct[T](2, tester) @@ -278,8 +278,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) result := &TestStruct{} err := cr.GetLatestValue(ctx, AnyContractName, EventName, primitives.Unconfirmed, nil, &result) @@ -292,8 +292,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) ts0 := CreateTestStruct(0, tester) tester.TriggerEvent(t, &ts0) @@ -362,8 +362,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -386,8 +386,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -410,8 +410,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -438,8 +438,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -465,8 +465,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -500,8 +500,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -534,8 +534,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -567,8 +567,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -609,8 +609,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) logs, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) @@ -624,8 +624,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.Start(t) + defer tester.Close(t) ts1 := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts1) From 215fb70b764ba3ff8fd0eee82682291ffb4cac5e Mon Sep 17 00:00:00 2001 From: Farber98 Date: Fri, 23 Aug 2024 13:54:54 -0300 Subject: [PATCH 13/23] make start and close safe for concurrent use --- .../relayer/pluginprovider/chainreader/chain_reader_test.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go index 7fcf6d733..0e7399d9e 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go @@ -363,11 +363,15 @@ type fakeChainReader struct { var errServiceNotStarted = errors.New("ContractReader service not started") func (f *fakeChainReader) Start(_ context.Context) error { + f.lock.Lock() + defer f.lock.Unlock() f.isStarted = true return nil } func (f *fakeChainReader) Close() error { + f.lock.Lock() + defer f.lock.Unlock() f.isStarted = false return nil } From 585ccc9d8ba5d013b0cb532b5d29357316f0021e Mon Sep 17 00:00:00 2001 From: Farber98 Date: Fri, 23 Aug 2024 22:28:35 -0300 Subject: [PATCH 14/23] use atomic bool for isStarted flag --- .../chainreader/chain_reader_test.go | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go index 0e7399d9e..230086721 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go @@ -8,6 +8,7 @@ import ( "reflect" "sort" "sync" + "sync/atomic" "testing" "time" @@ -357,22 +358,18 @@ type fakeChainReader struct { stored []TestStruct batchStored BatchCallEntry lock sync.Mutex - isStarted bool + isStarted atomic.Bool } var errServiceNotStarted = errors.New("ContractReader service not started") func (f *fakeChainReader) Start(_ context.Context) error { - f.lock.Lock() - defer f.lock.Unlock() - f.isStarted = true + f.isStarted.Store(true) return nil } func (f *fakeChainReader) Close() error { - f.lock.Lock() - defer f.lock.Unlock() - f.isStarted = false + f.isStarted.Store(false) return nil } @@ -408,7 +405,7 @@ func (f *fakeChainReader) SetBatchLatestValues(batchCallEntry BatchCallEntry) { } func (f *fakeChainReader) GetLatestValue(_ context.Context, contractName, method string, confidenceLevel primitives.ConfidenceLevel, params, returnVal any) error { - if !f.isStarted { + if !f.isStarted.Load() { return errServiceNotStarted } @@ -484,7 +481,7 @@ func (f *fakeChainReader) GetLatestValue(_ context.Context, contractName, method } func (f *fakeChainReader) BatchGetLatestValues(_ context.Context, request types.BatchGetLatestValuesRequest) (types.BatchGetLatestValuesResult, error) { - if !f.isStarted { + if !f.isStarted.Load() { return nil, errServiceNotStarted } @@ -536,7 +533,7 @@ func (f *fakeChainReader) BatchGetLatestValues(_ context.Context, request types. } func (f *fakeChainReader) QueryKey(_ context.Context, _ string, filter query.KeyFilter, limitAndSort query.LimitAndSort, _ any) ([]types.Sequence, error) { - if !f.isStarted { + if !f.isStarted.Load() { return nil, errServiceNotStarted } From 1830e25c98e3518852f9087e4b7cee52afc191bf Mon Sep 17 00:00:00 2001 From: Farber98 Date: Mon, 26 Aug 2024 14:35:00 -0300 Subject: [PATCH 15/23] remove start as only closed is needed --- .../chainreader/chain_reader_test.go | 9 +--- .../chain_reader_interface_tests.go | 44 ++----------------- 2 files changed, 5 insertions(+), 48 deletions(-) diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go index 230086721..c2b1fe07b 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go @@ -275,12 +275,13 @@ type fakeChainReaderInterfaceTester struct { impl types.ContractReader } -func (it *fakeChainReaderInterfaceTester) Setup(_ *testing.T) { +func (it *fakeChainReaderInterfaceTester) Setup(t *testing.T) { fake, ok := it.impl.(*fakeChainReader) if ok { fake.vals = []valConfidencePair{} fake.triggers = []eventConfidencePair{} fake.stored = []TestStruct{} + require.NoError(t, fake.Start(context.Background())) } } @@ -288,12 +289,6 @@ func (it *fakeChainReaderInterfaceTester) GetChainReader(_ *testing.T) types.Con return it.impl } -func (it *fakeChainReaderInterfaceTester) Start(t *testing.T) { - fake, ok := it.impl.(*fakeChainReader) - assert.True(t, ok) - require.NoError(t, fake.Start(context.Background())) -} - func (it *fakeChainReaderInterfaceTester) Close(t *testing.T) { fake, ok := it.impl.(*fakeChainReader) assert.True(t, ok) diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index 156e7a60a..719d1e114 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -16,7 +16,6 @@ import ( type ChainReaderInterfaceTester[T TestingT[T]] interface { BasicTester[T] - Start(t T) Close(t T) GetChainReader(t T) types.ContractReader // SetTestStructLatestValue is expected to return the same bound contract and method in the same test @@ -68,6 +67,7 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.Close(t) require.Error(t, cr.GetLatestValue(ctx, AnyContractName, MethodTakingLatestParamsReturningTestStruct, primitives.Unconfirmed, nil, nil)) }, }, @@ -82,8 +82,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) actual := &TestStruct{} params := &LatestParams{I: 1} @@ -102,8 +100,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -116,8 +112,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) var returnVal1 uint64 callArgs := ExpectedGetLatestValueArgs{ @@ -168,8 +162,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain seenAddrs[binding.Address] = true } require.NoError(t, cr.Bind(ctx, bindings)) - tester.Start(t) - defer tester.Close(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnySecondContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -182,8 +174,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) var slice []uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64Slice, primitives.Unconfirmed, nil, &slice)) @@ -199,8 +189,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain testStruct.Account = nil cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) actual := &TestStructWithExtraField{} require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningSeenStruct, primitives.Unconfirmed, testStruct, actual)) @@ -217,8 +205,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) ts := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts) @@ -238,8 +224,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) // Trigger the first event ts1 := CreateTestStruct[T](2, tester) @@ -278,8 +262,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) result := &TestStruct{} err := cr.GetLatestValue(ctx, AnyContractName, EventName, primitives.Unconfirmed, nil, &result) @@ -292,8 +274,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) ts0 := CreateTestStruct(0, tester) tester.TriggerEvent(t, &ts0) @@ -341,6 +321,7 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.Close(t) _, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.Error(t, err) }, @@ -362,8 +343,6 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -386,8 +365,6 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -410,8 +387,6 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -438,8 +413,6 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -465,8 +438,6 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -500,8 +471,6 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -534,8 +503,6 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -567,8 +534,6 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -599,6 +564,7 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.Close(t) _, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) require.Error(t, err) }, @@ -609,8 +575,6 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) logs, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) @@ -624,8 +588,6 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Start(t) - defer tester.Close(t) ts1 := CreateTestStruct[T](0, tester) tester.TriggerEvent(t, &ts1) From 208ef0231a64e2e40dec25e2194d364735b2864e Mon Sep 17 00:00:00 2001 From: Farber98 Date: Tue, 3 Sep 2024 23:13:11 -0300 Subject: [PATCH 16/23] add start method to the interface. add start and close calls where needed --- .../chainreader/chain_reader_test.go | 7 ++- .../chain_reader_interface_tests.go | 44 +++++++++++++++++-- 2 files changed, 47 insertions(+), 4 deletions(-) diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go index c2b1fe07b..3c3eb5741 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go @@ -281,7 +281,6 @@ func (it *fakeChainReaderInterfaceTester) Setup(t *testing.T) { fake.vals = []valConfidencePair{} fake.triggers = []eventConfidencePair{} fake.stored = []TestStruct{} - require.NoError(t, fake.Start(context.Background())) } } @@ -289,6 +288,12 @@ func (it *fakeChainReaderInterfaceTester) GetChainReader(_ *testing.T) types.Con return it.impl } +func (it *fakeChainReaderInterfaceTester) Start(t *testing.T) { + fake, ok := it.impl.(*fakeChainReader) + assert.True(t, ok) + require.NoError(t, fake.Start(context.Background())) +} + func (it *fakeChainReaderInterfaceTester) Close(t *testing.T) { fake, ok := it.impl.(*fakeChainReader) assert.True(t, ok) diff --git a/pkg/types/interfacetests/chain_reader_interface_tests.go b/pkg/types/interfacetests/chain_reader_interface_tests.go index 719d1e114..45a766a34 100644 --- a/pkg/types/interfacetests/chain_reader_interface_tests.go +++ b/pkg/types/interfacetests/chain_reader_interface_tests.go @@ -16,6 +16,7 @@ import ( type ChainReaderInterfaceTester[T TestingT[T]] interface { BasicTester[T] + Start(t T) Close(t T) GetChainReader(t T) types.ContractReader // SetTestStructLatestValue is expected to return the same bound contract and method in the same test @@ -67,7 +68,6 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Close(t) require.Error(t, cr.GetLatestValue(ctx, AnyContractName, MethodTakingLatestParamsReturningTestStruct, primitives.Unconfirmed, nil, nil)) }, }, @@ -81,6 +81,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain tester.SetTestStructLatestValue(t, &secondItem) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) actual := &TestStruct{} @@ -99,6 +101,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) var prim uint64 @@ -111,6 +115,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) var returnVal1 uint64 @@ -155,6 +161,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) bindings := tester.GetBindings(t) seenAddrs := map[string]bool{} for _, binding := range bindings { @@ -173,6 +181,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) var slice []uint64 @@ -188,6 +198,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain testStruct.BigField = nil testStruct.Account = nil cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) actual := &TestStructWithExtraField{} @@ -204,6 +216,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts := CreateTestStruct[T](0, tester) @@ -223,6 +237,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) // Trigger the first event @@ -261,6 +277,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result := &TestStruct{} @@ -273,6 +291,8 @@ func runChainReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Chain test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts0 := CreateTestStruct(0, tester) @@ -321,7 +341,6 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Close(t) _, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.Error(t, err) }, @@ -342,6 +361,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -364,6 +385,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) @@ -386,6 +409,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) @@ -412,6 +437,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -437,6 +464,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -470,6 +499,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -502,6 +533,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -533,6 +566,8 @@ func runChainReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -564,7 +599,6 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.Close(t) _, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) require.Error(t, err) }, @@ -574,6 +608,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) logs, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) @@ -587,6 +623,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainReaderInterfaceTe test: func(t T) { ctx := tests.Context(t) cr := tester.GetChainReader(t) + tester.Start(t) + defer tester.Close(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) ts1 := CreateTestStruct[T](0, tester) From 0d7af208943315dc0740676fdd25b1ae64e75fce Mon Sep 17 00:00:00 2001 From: Farber98 Date: Thu, 5 Sep 2024 10:16:29 -0300 Subject: [PATCH 17/23] fix conflicts with chain components pr --- .../chainreader/chain_reader_test.go | 4 +- .../chain_components_interface_tests.go | 83 +++++++++++++++++++ 2 files changed, 85 insertions(+), 2 deletions(-) diff --git a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go index 587b785cd..5e5a4071c 100644 --- a/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/chainreader/chain_reader_test.go @@ -297,13 +297,13 @@ func (it *fakeChainReaderInterfaceTester) GetChainWriter(_ *testing.T) types.Cha func (it *fakeChainReaderInterfaceTester) DirtyContracts() {} -func (it *fakeChainReaderInterfaceTester) Start(t *testing.T) { +func (it *fakeChainReaderInterfaceTester) StartChainReader(t *testing.T) { fake, ok := it.impl.(*fakeChainReader) assert.True(t, ok) require.NoError(t, fake.Start(context.Background())) } -func (it *fakeChainReaderInterfaceTester) Close(t *testing.T) { +func (it *fakeChainReaderInterfaceTester) CloseChainReader(t *testing.T) { fake, ok := it.impl.(*fakeChainReader) assert.True(t, ok) require.NoError(t, fake.Close()) diff --git a/pkg/types/interfacetests/chain_components_interface_tests.go b/pkg/types/interfacetests/chain_components_interface_tests.go index 5eee02eb6..384879097 100644 --- a/pkg/types/interfacetests/chain_components_interface_tests.go +++ b/pkg/types/interfacetests/chain_components_interface_tests.go @@ -16,6 +16,8 @@ import ( type ChainComponentsInterfaceTester[T TestingT[T]] interface { BasicTester[T] + StartChainReader(t T) + CloseChainReader(t T) GetChainReader(t T) types.ContractReader GetChainWriter(t T) types.ChainWriter GetBindings(t T) []types.BoundContract @@ -58,6 +60,15 @@ func RunContractReaderInterfaceTests[T TestingT[T]](t T, tester ChainComponentsI func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfaceTester[T], mockRun bool) { tests := []testcase[T]{ + { + name: "Get latest value without starting service returns error", + test: func(t T) { + ctx := tests.Context(t) + cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + require.Error(t, cr.GetLatestValue(ctx, AnyContractName, MethodTakingLatestParamsReturningTestStruct, primitives.Unconfirmed, nil, nil)) + }, + }, { name: "Gets the latest value", test: func(t T) { @@ -73,6 +84,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) actual := &TestStruct{} params := &LatestParams{I: 1} @@ -91,6 +104,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -104,6 +119,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) var returnVal1 uint64 callArgs := ExpectedGetLatestValueArgs{ @@ -147,6 +164,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch } require.NoError(t, cr.Bind(ctx, bindings)) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, AnySecondContractName, MethodReturningUint64, primitives.Unconfirmed, nil, &prim)) @@ -160,6 +179,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) var slice []uint64 require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningUint64Slice, primitives.Unconfirmed, nil, &slice)) @@ -176,6 +197,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch testStruct.Account = nil cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) actual := &TestStructWithExtraField{} require.NoError(t, cr.GetLatestValue(ctx, AnyContractName, MethodReturningSeenStruct, primitives.Unconfirmed, testStruct, actual)) @@ -194,6 +217,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) contracts := tester.GetBindings(t) ts := CreateTestStruct[T](0, tester) @@ -215,6 +240,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) contracts := tester.GetBindings(t) ts1 := CreateTestStruct[T](2, tester) @@ -249,6 +276,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) result := &TestStruct{} err := cr.GetLatestValue(ctx, AnyContractName, EventName, primitives.Unconfirmed, nil, &result) @@ -261,6 +290,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) ts0 := CreateTestStruct(0, tester) contracts := tester.GetBindings(t) @@ -288,6 +319,28 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfaceTester[T], mockRun bool) { testCases := []testcase[T]{ + { + name: "BatchGetLatestValues without starting service returns error", + test: func(t T) { + // setup test data + firstItem := CreateTestStruct(1, tester) + batchCallEntry := make(BatchCallEntry) + batchCallEntry[AnyContractName] = ContractBatchEntry{{Name: MethodTakingLatestParamsReturningTestStruct, ReturnValue: &firstItem}} + batchChainWrite(t, tester, batchCallEntry, mockRun) + + // setup call data + params, actual := &LatestParams{I: 1}, &TestStruct{} + batchGetLatestValueRequest := make(types.BatchGetLatestValuesRequest) + batchGetLatestValueRequest[AnyContractName] = []types.BatchRead{{ReadName: MethodTakingLatestParamsReturningTestStruct, Params: params, ReturnVal: actual}} + + ctx := tests.Context(t) + cr := tester.GetChainReader(t) + + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + _, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) + require.Error(t, err) + }, + }, { name: "BatchGetLatestValues works", test: func(t T) { @@ -306,6 +359,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -327,6 +382,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -349,6 +406,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -375,6 +434,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -399,6 +460,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -431,6 +494,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -463,6 +528,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -494,6 +561,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -517,6 +586,16 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfaceTester[T]) { tests := []testcase[T]{ + { + name: "QueryKey without starting service returns error", + test: func(t T) { + ctx := tests.Context(t) + cr := tester.GetChainReader(t) + require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + _, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) + require.Error(t, err) + }, + }, { name: "QueryKey returns not found if sequence never happened", test: func(t T) { @@ -524,6 +603,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfa cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) logs, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) @@ -537,6 +618,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfa ctx := tests.Context(t) cr := tester.GetChainReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) + tester.StartChainReader(t) + defer tester.CloseChainReader(t) contracts := tester.GetBindings(t) ts1 := CreateTestStruct[T](0, tester) _ = SubmitTransactionToCW(t, tester, MethodTriggeringEvent, ts1, contracts[0], types.Unconfirmed) From 489fd0a47f8eb3b2966849402c946322ba0df688 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Thu, 12 Sep 2024 15:36:24 -0300 Subject: [PATCH 18/23] fix pr conflicts --- .../contractreader/contract_reader_test.go | 38 +++++- .../chain_components_interface_tests.go | 120 ++++++++---------- 2 files changed, 87 insertions(+), 71 deletions(-) diff --git a/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go index 43bf3baf8..4c7e10ed0 100644 --- a/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go @@ -9,6 +9,7 @@ import ( "sort" "strings" "sync" + "sync/atomic" "testing" "time" @@ -311,6 +312,18 @@ func (it *fakeContractReaderInterfaceTester) GetChainWriter(_ *testing.T) types. func (it *fakeContractReaderInterfaceTester) DirtyContracts() {} +func (it *fakeContractReaderInterfaceTester) StartContractReader(t *testing.T) { + fake, ok := it.impl.(*fakeContractReader) + assert.True(t, ok) + require.NoError(t, fake.Start(context.Background())) +} + +func (it *fakeContractReaderInterfaceTester) CloseContractReader(t *testing.T) { + fake, ok := it.impl.(*fakeContractReader) + assert.True(t, ok) + require.NoError(t, fake.Close()) +} + func (it *fakeContractReaderInterfaceTester) GetBindings(_ *testing.T) []types.BoundContract { return []types.BoundContract{ {Name: AnyContractName, Address: AnyContractName}, @@ -345,8 +358,11 @@ type fakeContractReader struct { stored []TestStruct batchStored BatchCallEntry lock sync.Mutex + isStarted atomic.Bool } +var errServiceNotStarted = errors.New("ContractReader service not started") + type fakeChainWriter struct { types.ChainWriter cr *fakeContractReader @@ -393,9 +409,15 @@ func (f *fakeChainWriter) GetFeeComponents(ctx context.Context) (*types.ChainFee return &types.ChainFeeComponents{}, nil } -func (f *fakeContractReader) Start(_ context.Context) error { return nil } +func (f *fakeContractReader) Start(_ context.Context) error { + f.isStarted.Store(true) + return nil +} -func (f *fakeContractReader) Close() error { return nil } +func (f *fakeContractReader) Close() error { + f.isStarted.Store(false) + return nil +} func (f *fakeContractReader) Ready() error { panic("unimplemented") } @@ -433,6 +455,10 @@ func (f *fakeContractReader) SetBatchLatestValues(batchCallEntry BatchCallEntry) } func (f *fakeContractReader) GetLatestValue(_ context.Context, readIdentifier string, confidenceLevel primitives.ConfidenceLevel, params, returnVal any) error { + if !f.isStarted.Load() { + return errServiceNotStarted + } + if strings.HasSuffix(readIdentifier, MethodReturningAlterableUint64) { r := returnVal.(*uint64) for i := len(f.vals) - 1; i >= 0; i-- { @@ -507,6 +533,10 @@ func (f *fakeContractReader) GetLatestValue(_ context.Context, readIdentifier st } func (f *fakeContractReader) BatchGetLatestValues(_ context.Context, request types.BatchGetLatestValuesRequest) (types.BatchGetLatestValuesResult, error) { + if !f.isStarted.Load() { + return nil, errServiceNotStarted + } + result := make(types.BatchGetLatestValuesResult) for requestContract, requestContractBatch := range request { storedContractBatch := f.batchStored[requestContract] @@ -560,6 +590,10 @@ func (f *fakeContractReader) BatchGetLatestValues(_ context.Context, request typ } func (f *fakeContractReader) QueryKey(_ context.Context, _ types.BoundContract, filter query.KeyFilter, limitAndSort query.LimitAndSort, _ any) ([]types.Sequence, error) { + if !f.isStarted.Load() { + return nil, errServiceNotStarted + } + if filter.Key == EventName { f.lock.Lock() defer f.lock.Unlock() diff --git a/pkg/types/interfacetests/chain_components_interface_tests.go b/pkg/types/interfacetests/chain_components_interface_tests.go index 39527d9b7..f5f0df64d 100644 --- a/pkg/types/interfacetests/chain_components_interface_tests.go +++ b/pkg/types/interfacetests/chain_components_interface_tests.go @@ -18,8 +18,8 @@ import ( type ChainComponentsInterfaceTester[T TestingT[T]] interface { BasicTester[T] GetContractReader(t T) types.ContractReader - StartChainReader(t T) - CloseChainReader(t T) + StartContractReader(t T) + CloseContractReader(t T) GetChainWriter(t T) types.ChainWriter GetBindings(t T) []types.BoundContract // DirtyContracts signals to the underlying tester than the test contracts are dirty, i.e. the state has been changed such that @@ -65,9 +65,11 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch name: "Get latest value without starting service returns error", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) + bindings := tester.GetBindings(t) + bound := bindingsByName(bindings, AnyContractName)[0] // minimum of one bound contract expected, otherwise panics require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - require.Error(t, cr.GetLatestValue(ctx, AnyContractName, MethodTakingLatestParamsReturningTestStruct, primitives.Unconfirmed, nil, nil)) + require.Error(t, cr.GetLatestValue(ctx, bound.ReadIdentifier(MethodTakingLatestParamsReturningTestStruct), primitives.Unconfirmed, nil, nil)) }, }, { @@ -88,8 +90,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] // minimum of one bound contract expected, otherwise panics require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) actual := &TestStruct{} params := &LatestParams{I: 1} @@ -111,8 +113,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, bound.ReadIdentifier(MethodReturningUint64), primitives.Unconfirmed, nil, &prim)) @@ -128,8 +130,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bindings := tester.GetBindings(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) var returnVal1 uint64 callArgs := ExpectedGetLatestValueArgs{ @@ -171,8 +173,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnySecondContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, bound.ReadIdentifier(MethodReturningUint64), primitives.Unconfirmed, nil, &prim)) @@ -189,8 +191,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) var slice []uint64 require.NoError(t, cr.GetLatestValue(ctx, bound.ReadIdentifier(MethodReturningUint64Slice), primitives.Unconfirmed, nil, &slice)) @@ -211,8 +213,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) actual := &TestStructWithExtraField{} require.NoError(t, cr.GetLatestValue(ctx, bound.ReadIdentifier(MethodReturningSeenStruct), primitives.Unconfirmed, testStruct, actual)) @@ -234,8 +236,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) contracts := tester.GetBindings(t) ts := CreateTestStruct[T](0, tester) @@ -260,8 +262,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) ts1 := CreateTestStruct[T](2, tester) txID := SubmitTransactionToCW(t, tester, MethodTriggeringEvent, ts1, bindings[0], types.Unconfirmed) @@ -298,8 +300,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) result := &TestStruct{} err := cr.GetLatestValue(ctx, bound.ReadIdentifier(EventName), primitives.Unconfirmed, nil, &result) @@ -315,8 +317,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) ts0 := CreateTestStruct(0, tester) contracts := tester.GetBindings(t) @@ -345,28 +347,6 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfaceTester[T], mockRun bool) { testCases := []testcase[T]{ - { - name: "BatchGetLatestValues without starting service returns error", - test: func(t T) { - // setup test data - firstItem := CreateTestStruct(1, tester) - batchCallEntry := make(BatchCallEntry) - batchCallEntry[AnyContractName] = ContractBatchEntry{{Name: MethodTakingLatestParamsReturningTestStruct, ReturnValue: &firstItem}} - batchChainWrite(t, tester, batchCallEntry, mockRun) - - // setup call data - params, actual := &LatestParams{I: 1}, &TestStruct{} - batchGetLatestValueRequest := make(types.BatchGetLatestValuesRequest) - batchGetLatestValueRequest[AnyContractName] = []types.BatchRead{{ReadName: MethodTakingLatestParamsReturningTestStruct, Params: params, ReturnVal: actual}} - - ctx := tests.Context(t) - cr := tester.GetContractReader(t) - - require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - _, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) - require.Error(t, err) - }, - }, { name: "BatchGetLatestValues without starting service returns error", test: func(t T) { @@ -391,7 +371,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes } ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) _, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) @@ -425,8 +405,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -457,8 +437,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -485,8 +465,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -516,8 +496,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -545,8 +525,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -585,8 +565,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -623,8 +603,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -667,8 +647,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -696,9 +676,11 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfa name: "QueryKey without starting service returns error", test: func(t T) { ctx := tests.Context(t) - cr := tester.GetChainReader(t) + cr := tester.GetContractReader(t) + bindings := tester.GetBindings(t) + bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - _, err := cr.QueryKey(ctx, AnyContractName, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) + _, err := cr.QueryKey(ctx, bound, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) require.Error(t, err) }, }, @@ -711,8 +693,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfa bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) logs, err := cr.QueryKey(ctx, bound, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) @@ -728,8 +710,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfa bindings := tester.GetBindings(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartChainReader(t) - defer tester.CloseChainReader(t) + tester.StartContractReader(t) + defer tester.CloseContractReader(t) bound := bindingsByName(bindings, AnyContractName)[0] ts1 := CreateTestStruct[T](0, tester) From e8ed82b327cb9ee8457e1be1c84640c7e5eeefb1 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Sun, 15 Sep 2024 20:31:46 -0300 Subject: [PATCH 19/23] add flag to control if we return cr started --- .../contractreader/codec_test.go | 10 +- .../contractreader/contract_reader_test.go | 34 ++---- .../contractreader/test/codec_loop_tester.go | 4 +- .../test/contract_reader_loop_tester.go | 4 +- .../chain_components_interface_tests.go | 113 ++++++++---------- .../codec_interface_fuzz_tests.go | 2 +- pkg/types/interfacetests/utils.go | 9 +- 7 files changed, 75 insertions(+), 101 deletions(-) diff --git a/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_test.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_test.go index c22ed15f4..9c99c9389 100644 --- a/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_test.go @@ -25,7 +25,7 @@ func TestCodecClient(t *testing.T) { es := &errCodec{} esTester := chaincomponentstest.WrapCodecTesterForLoop(&fakeCodecInterfaceTester{impl: es}) - esTester.Setup(t) + esTester.Setup(t, false) esCodec := esTester.GetCodec(t) anyObj := &interfacetests.TestStruct{} @@ -55,14 +55,14 @@ func TestCodecClient(t *testing.T) { // make sure that errors come from client directly es.err = nil t.Run("Encode returns error if type cannot be encoded in the wire format", func(t *testing.T) { - interfaceTester.Setup(t) + interfaceTester.Setup(t, false) c := interfaceTester.GetCodec(t) _, err := c.Encode(tests.Context(t), &cannotEncode{}, "doesnotmatter") assert.True(t, errors.Is(err, types.ErrInvalidType)) }) t.Run("Decode returns error if type cannot be decoded in the wire format", func(t *testing.T) { - interfaceTester.Setup(t) + interfaceTester.Setup(t, false) c := interfaceTester.GetCodec(t) fv := int32(1) toDecode, err := c.Encode(tests.Context(t), &interfacetests.TestStruct{Field: &fv}, interfacetests.TestItemType) @@ -74,7 +74,7 @@ func TestCodecClient(t *testing.T) { t.Run("Nil esCodec returns unimplemented", func(t *testing.T) { ctx := tests.Context(t) nilTester := chaincomponentstest.WrapCodecTesterForLoop(&fakeCodecInterfaceTester{impl: nil}) - nilTester.Setup(t) + nilTester.Setup(t, false) nilCodec := nilTester.GetCodec(t) item := &interfacetests.TestStruct{} @@ -98,7 +98,7 @@ type fakeCodecInterfaceTester struct { impl types.Codec } -func (it *fakeCodecInterfaceTester) Setup(_ *testing.T) {} +func (it *fakeCodecInterfaceTester) Setup(_ *testing.T, _ bool) {} func (it *fakeCodecInterfaceTester) GetCodec(_ *testing.T) types.Codec { return it.impl diff --git a/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go index 4c7e10ed0..a16ab1533 100644 --- a/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go @@ -100,7 +100,7 @@ func TestBind(t *testing.T) { contractreadertest.WithContractReaderLoopEncoding(version), ) - errTester.Setup(t) + errTester.Setup(t, false) contractReader := errTester.GetContractReader(t) for _, errorType := range errorTypes { @@ -134,7 +134,7 @@ func TestGetLatestValue(t *testing.T) { contractreadertest.WithContractReaderLoopEncoding(version), ) - errTester.Setup(t) + errTester.Setup(t, false) contractReader := errTester.GetContractReader(t) t.Run("nil reader should return unimplemented", func(t *testing.T) { @@ -143,7 +143,7 @@ func TestGetLatestValue(t *testing.T) { ctx := tests.Context(t) nilTester := contractreadertest.WrapContractReaderTesterForLoop(&fakeContractReaderInterfaceTester{impl: nil}) - nilTester.Setup(t) + nilTester.Setup(t, false) nilCr := nilTester.GetContractReader(t) err := nilCr.GetLatestValue(ctx, "method", primitives.Unconfirmed, "anything", "anything") @@ -183,7 +183,7 @@ func TestBatchGetLatestValues(t *testing.T) { contractreadertest.WithContractReaderLoopEncoding(version), ) - errTester.Setup(t) + errTester.Setup(t, false) contractReader := errTester.GetContractReader(t) t.Run("nil reader should return unimplemented", func(t *testing.T) { @@ -192,7 +192,7 @@ func TestBatchGetLatestValues(t *testing.T) { ctx := tests.Context(t) nilTester := contractreadertest.WrapContractReaderTesterForLoop(&fakeContractReaderInterfaceTester{impl: nil}) - nilTester.Setup(t) + nilTester.Setup(t, false) nilCr := nilTester.GetContractReader(t) _, err := nilCr.BatchGetLatestValues(ctx, types.BatchGetLatestValuesRequest{}) @@ -236,19 +236,19 @@ func TestQueryKey(t *testing.T) { impl := &protoConversionTestContractReader{} crTester := contractreadertest.WrapContractReaderTesterForLoop(&fakeContractReaderInterfaceTester{impl: impl}, contractreadertest.WithContractReaderLoopEncoding(version)) - crTester.Setup(t) + crTester.Setup(t, true) cr := crTester.GetContractReader(t) es := &errContractReader{} errTester := contractreadertest.WrapContractReaderTesterForLoop(&fakeContractReaderInterfaceTester{impl: es}) - errTester.Setup(t) + errTester.Setup(t, false) contractReader := errTester.GetContractReader(t) t.Run("nil reader should return unimplemented", func(t *testing.T) { ctx := tests.Context(t) nilTester := contractreadertest.WrapContractReaderTesterForLoop(&fakeContractReaderInterfaceTester{impl: nil}) - nilTester.Setup(t) + nilTester.Setup(t, false) nilCr := nilTester.GetContractReader(t) _, err := nilCr.QueryKey(ctx, types.BoundContract{}, query.KeyFilter{}, query.LimitAndSort{}, &[]interface{}{nil}) @@ -292,12 +292,16 @@ type fakeContractReaderInterfaceTester struct { cw fakeChainWriter } -func (it *fakeContractReaderInterfaceTester) Setup(_ *testing.T) { +func (it *fakeContractReaderInterfaceTester) Setup(t *testing.T, started bool) { fake, ok := it.impl.(*fakeContractReader) if ok { fake.vals = []valConfidencePair{} fake.triggers = []eventConfidencePair{} fake.stored = []TestStruct{} + if started { + require.NoError(t, it.impl.Start(context.Background())) + t.Cleanup(func() { require.NoError(t, it.impl.Close()) }) + } } } @@ -312,18 +316,6 @@ func (it *fakeContractReaderInterfaceTester) GetChainWriter(_ *testing.T) types. func (it *fakeContractReaderInterfaceTester) DirtyContracts() {} -func (it *fakeContractReaderInterfaceTester) StartContractReader(t *testing.T) { - fake, ok := it.impl.(*fakeContractReader) - assert.True(t, ok) - require.NoError(t, fake.Start(context.Background())) -} - -func (it *fakeContractReaderInterfaceTester) CloseContractReader(t *testing.T) { - fake, ok := it.impl.(*fakeContractReader) - assert.True(t, ok) - require.NoError(t, fake.Close()) -} - func (it *fakeContractReaderInterfaceTester) GetBindings(_ *testing.T) []types.BoundContract { return []types.BoundContract{ {Name: AnyContractName, Address: AnyContractName}, diff --git a/pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec_loop_tester.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec_loop_tester.go index 4be008bd4..d098bbe41 100644 --- a/pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec_loop_tester.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec_loop_tester.go @@ -21,8 +21,8 @@ type codecReaderLoopTester struct { lst loopServerTester } -func (c *codecReaderLoopTester) Setup(t *testing.T) { - c.CodecInterfaceTester.Setup(t) +func (c *codecReaderLoopTester) Setup(t *testing.T, _ bool) { + c.CodecInterfaceTester.Setup(t, false) codec := c.CodecInterfaceTester.GetCodec(t) c.lst.registerHook = func(server *grpc.Server) { if codec != nil { diff --git a/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader_loop_tester.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader_loop_tester.go index 427552d80..26c9d9303 100644 --- a/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader_loop_tester.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader_loop_tester.go @@ -59,8 +59,8 @@ type contractReaderLoopTester struct { encodeWith contractreader.EncodingVersion } -func (c *contractReaderLoopTester) Setup(t *testing.T) { - c.ChainComponentsInterfaceTester.Setup(t) +func (c *contractReaderLoopTester) Setup(t *testing.T, started bool) { + c.ChainComponentsInterfaceTester.Setup(t, started) contractReader := c.ChainComponentsInterfaceTester.GetContractReader(t) c.lst.registerHook = func(server *grpc.Server) { diff --git a/pkg/types/interfacetests/chain_components_interface_tests.go b/pkg/types/interfacetests/chain_components_interface_tests.go index f5f0df64d..b0288eb31 100644 --- a/pkg/types/interfacetests/chain_components_interface_tests.go +++ b/pkg/types/interfacetests/chain_components_interface_tests.go @@ -18,8 +18,6 @@ import ( type ChainComponentsInterfaceTester[T TestingT[T]] interface { BasicTester[T] GetContractReader(t T) types.ContractReader - StartContractReader(t T) - CloseContractReader(t T) GetChainWriter(t T) types.ChainWriter GetBindings(t T) []types.BoundContract // DirtyContracts signals to the underlying tester than the test contracts are dirty, i.e. the state has been changed such that @@ -62,7 +60,8 @@ func RunContractReaderInterfaceTests[T TestingT[T]](t T, tester ChainComponentsI func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfaceTester[T], mockRun bool) { tests := []testcase[T]{ { - name: "Get latest value without starting service returns error", + name: "Get latest value without starting service returns error", + startCR: false, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) @@ -73,7 +72,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch }, }, { - name: "Gets the latest value", + name: "Gets the latest value", + startCR: true, test: func(t T) { ctx := tests.Context(t) firstItem := CreateTestStruct(0, tester) @@ -90,8 +90,6 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] // minimum of one bound contract expected, otherwise panics require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) actual := &TestStruct{} params := &LatestParams{I: 1} @@ -105,7 +103,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch }, }, { - name: "Get latest value without arguments and with primitive return", + name: "Get latest value without arguments and with primitive return", + startCR: true, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) @@ -113,8 +112,6 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, bound.ReadIdentifier(MethodReturningUint64), primitives.Unconfirmed, nil, &prim)) @@ -123,15 +120,14 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch }, }, { - name: "Get latest value based on confidence level", + name: "Get latest value based on confidence level", + startCR: true, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) var returnVal1 uint64 callArgs := ExpectedGetLatestValueArgs{ @@ -154,7 +150,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch err := WaitForTransactionStatus(t, tester, txID, types.Finalized, mockRun) require.NoError(t, err) - require.NoError(t, cr.GetLatestValue(ctx, bound.ReadIdentifier(MethodReturningAlterableUint64), primitives.Finalized, nil, &prim1)) + require.NoError(t, cr.GetLatestValue(ctx, bound.ReadIdentifier(callArgs.ReadName), primitives.Finalized, callArgs.Params, &prim1)) assert.Equal(t, uint64(10), prim1) _ = SubmitTransactionToCW(t, tester, MethodSettingUint64, PrimitiveArgs{Value: 20}, contracts[0], types.Unconfirmed) @@ -165,7 +161,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch }, }, { - name: "Get latest value allows multiple contract names to have the same function name", + name: "Get latest value allows multiple contract names to have the same function name", + startCR: true, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) @@ -173,8 +170,6 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnySecondContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) var prim uint64 require.NoError(t, cr.GetLatestValue(ctx, bound.ReadIdentifier(MethodReturningUint64), primitives.Unconfirmed, nil, &prim)) @@ -183,7 +178,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch }, }, { - name: "Get latest value without arguments and with slice return", + name: "Get latest value without arguments and with slice return", + startCR: true, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) @@ -191,8 +187,6 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) var slice []uint64 require.NoError(t, cr.GetLatestValue(ctx, bound.ReadIdentifier(MethodReturningUint64Slice), primitives.Unconfirmed, nil, &slice)) @@ -201,7 +195,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch }, }, { - name: "Get latest value wraps config with modifiers using its own mapstructure overrides", + name: "Get latest value wraps config with modifiers using its own mapstructure overrides", + startCR: true, test: func(t T) { ctx := tests.Context(t) testStruct := CreateTestStruct(0, tester) @@ -213,8 +208,6 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) actual := &TestStructWithExtraField{} require.NoError(t, cr.GetLatestValue(ctx, bound.ReadIdentifier(MethodReturningSeenStruct), primitives.Unconfirmed, testStruct, actual)) @@ -228,7 +221,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch }, }, { - name: "Get latest value gets latest event", + name: "Get latest value gets latest event", + startCR: true, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) @@ -236,8 +230,6 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) contracts := tester.GetBindings(t) ts := CreateTestStruct[T](0, tester) @@ -254,7 +246,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch }, }, { - name: "Get latest event based on provided confidence level", + name: "Get latest event based on provided confidence level", + startCR: true, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) @@ -262,8 +255,6 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) ts1 := CreateTestStruct[T](2, tester) txID := SubmitTransactionToCW(t, tester, MethodTriggeringEvent, ts1, bindings[0], types.Unconfirmed) @@ -292,7 +283,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch }, }, { - name: "Get latest value returns not found if event was never triggered", + name: "Get latest value returns not found if event was never triggered", + startCR: true, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) @@ -300,8 +292,6 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) result := &TestStruct{} err := cr.GetLatestValue(ctx, bound.ReadIdentifier(EventName), primitives.Unconfirmed, nil, &result) @@ -309,7 +299,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch }, }, { - name: "Get latest value gets latest event with filtering", + name: "Get latest value gets latest event with filtering", + startCR: true, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) @@ -317,8 +308,6 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) ts0 := CreateTestStruct(0, tester) contracts := tester.GetBindings(t) @@ -348,7 +337,8 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfaceTester[T], mockRun bool) { testCases := []testcase[T]{ { - name: "BatchGetLatestValues without starting service returns error", + name: "BatchGetLatestValues without starting service returns error", + startCR: false, test: func(t T) { // setup test data firstItem := CreateTestStruct(1, tester) @@ -379,7 +369,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes }, }, { - name: "BatchGetLatestValues works", + name: "BatchGetLatestValues works", + startCR: true, test: func(t T) { // setup test data firstItem := CreateTestStruct(1, tester) @@ -405,8 +396,6 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -418,7 +407,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes }, }, { - name: "BatchGetLatestValues works without arguments and with primitive return", + name: "BatchGetLatestValues works without arguments and with primitive return", + startCR: true, test: func(t T) { // setup call data var primitiveReturnValue uint64 @@ -437,8 +427,6 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -451,7 +439,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes }, }, { - name: "BatchGetLatestValues allows multiple contract names to have the same function Name", + name: "BatchGetLatestValues allows multiple contract names to have the same function Name", + startCR: true, test: func(t T) { var primitiveReturnValueAnyContract, primitiveReturnValueAnySecondContract uint64 batchGetLatestValuesRequest := make(types.BatchGetLatestValuesRequest) @@ -465,8 +454,6 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValuesRequest) require.NoError(t, err) @@ -483,7 +470,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes }, }, { - name: "BatchGetLatestValue without arguments and with slice return", + name: "BatchGetLatestValue without arguments and with slice return", + startCR: true, test: func(t T) { // setup call data var sliceReturnValue []uint64 @@ -496,8 +484,6 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -509,7 +495,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes }, }, { - name: "BatchGetLatestValues wraps config with modifiers using its own mapstructure overrides", + name: "BatchGetLatestValues wraps config with modifiers using its own mapstructure overrides", + startCR: true, test: func(t T) { // setup call data testStruct := CreateTestStruct(0, tester) @@ -525,8 +512,6 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -543,7 +528,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes }, }, { - name: "BatchGetLatestValues supports same read with different params and results retain order from request", + name: "BatchGetLatestValues supports same read with different params and results retain order from request", + startCR: true, test: func(t T) { batchCallEntry := make(BatchCallEntry) batchGetLatestValueRequest := make(types.BatchGetLatestValuesRequest) @@ -565,8 +551,6 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -581,7 +565,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes }, }, { - name: "BatchGetLatestValues supports same read with different params and results retain order from request even with multiple contracts", + name: "BatchGetLatestValues supports same read with different params and results retain order from request even with multiple contracts", + startCR: true, test: func(t T) { batchCallEntry := make(BatchCallEntry) batchGetLatestValueRequest := make(types.BatchGetLatestValuesRequest) @@ -603,8 +588,6 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -631,7 +614,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes }, }, { - name: "BatchGetLatestValues sets errors properly", + name: "BatchGetLatestValues sets errors properly", + startCR: true, test: func(t T) { batchGetLatestValueRequest := make(types.BatchGetLatestValuesRequest) bindings := tester.GetBindings(t) @@ -647,8 +631,6 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes ctx := tests.Context(t) cr := tester.GetContractReader(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) result, err := cr.BatchGetLatestValues(ctx, batchGetLatestValueRequest) require.NoError(t, err) @@ -673,7 +655,8 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfaceTester[T]) { tests := []testcase[T]{ { - name: "QueryKey without starting service returns error", + name: "QueryKey without starting service returns error", + startCR: false, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) @@ -685,7 +668,8 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfa }, }, { - name: "QueryKey returns not found if sequence never happened", + name: "QueryKey returns not found if sequence never happened", + startCR: true, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) @@ -693,8 +677,6 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfa bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, tester.GetBindings(t))) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) logs, err := cr.QueryKey(ctx, bound, query.KeyFilter{Key: EventName}, query.LimitAndSort{}, &TestStruct{}) @@ -703,15 +685,14 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfa }, }, { - name: "QueryKey returns sequence data properly", + name: "QueryKey returns sequence data properly", + startCR: true, test: func(t T) { ctx := tests.Context(t) cr := tester.GetContractReader(t) bindings := tester.GetBindings(t) require.NoError(t, cr.Bind(ctx, bindings)) - tester.StartContractReader(t) - defer tester.CloseContractReader(t) bound := bindingsByName(bindings, AnyContractName)[0] ts1 := CreateTestStruct[T](0, tester) diff --git a/pkg/types/interfacetests/codec_interface_fuzz_tests.go b/pkg/types/interfacetests/codec_interface_fuzz_tests.go index e5f65490c..4081bc6fd 100644 --- a/pkg/types/interfacetests/codec_interface_fuzz_tests.go +++ b/pkg/types/interfacetests/codec_interface_fuzz_tests.go @@ -18,7 +18,7 @@ func RunCodecInterfaceFuzzTests(f *testing.F, tester CodecInterfaceTester) { // Cannot run more than one test or it hangs (currently a limit of fuzz testing), instead, just call it fuzz codec and do it all at once. t.Run("Fuzz codec", func(t *testing.T) { // Encode decode gets the same result - tester.Setup(t) + tester.Setup(t, false) oids := [32]commontypes.OracleID{} for index, id := range oracleIds { if index == len(oids) { diff --git a/pkg/types/interfacetests/utils.go b/pkg/types/interfacetests/utils.go index 4079f5dc2..74c0525e0 100644 --- a/pkg/types/interfacetests/utils.go +++ b/pkg/types/interfacetests/utils.go @@ -16,14 +16,15 @@ import ( ) type BasicTester[T any] interface { - Setup(t T) + Setup(t T, startCR bool) Name() string GetAccountBytes(i int) []byte } type testcase[T any] struct { - name string - test func(t T) + name string + test func(t T) + startCR bool } type TestingT[T any] interface { @@ -35,7 +36,7 @@ type TestingT[T any] interface { func runTests[T TestingT[T]](t T, tester BasicTester[T], tests []testcase[T]) { for _, test := range tests { t.Run(test.name+" for "+tester.Name(), func(t T) { - tester.Setup(t) + tester.Setup(t, test.startCR) test.test(t) }) } From 66ba7cde580459d36d671f3f25796abac11054d8 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Sun, 15 Sep 2024 20:38:30 -0300 Subject: [PATCH 20/23] fix encodings iface --- pkg/codec/encodings/type_codec_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/codec/encodings/type_codec_test.go b/pkg/codec/encodings/type_codec_test.go index f4a689d07..89167da91 100644 --- a/pkg/codec/encodings/type_codec_test.go +++ b/pkg/codec/encodings/type_codec_test.go @@ -126,7 +126,7 @@ func TestCodecFromTypeCodecs(t *testing.T) { type interfaceTesterBase struct{} -func (*interfaceTesterBase) Setup(_ *testing.T) {} +func (*interfaceTesterBase) Setup(_ *testing.T, _ bool) {} func (*interfaceTesterBase) GetAccountBytes(i int) []byte { ib := byte(i) From 4e67d8d41bc2c606ea99313defb005850b605654 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Mon, 16 Sep 2024 18:12:45 -0300 Subject: [PATCH 21/23] refactor codec and chaincomponents ifaces --- pkg/codec/encodings/type_codec_test.go | 6 +- .../contractreader/codec_test.go | 10 ++-- .../contractreader/contract_reader_test.go | 11 ++-- .../contractreader/test/codec_loop_tester.go | 4 +- .../test/contract_reader_loop_tester.go | 4 +- .../chain_components_interface_tests.go | 58 +++++++++++++------ .../codec_interface_fuzz_tests.go | 2 +- .../interfacetests/codec_interface_tests.go | 29 ++++++++-- pkg/types/interfacetests/utils.go | 16 ----- 9 files changed, 82 insertions(+), 58 deletions(-) diff --git a/pkg/codec/encodings/type_codec_test.go b/pkg/codec/encodings/type_codec_test.go index 89167da91..1aa49506d 100644 --- a/pkg/codec/encodings/type_codec_test.go +++ b/pkg/codec/encodings/type_codec_test.go @@ -33,7 +33,7 @@ func TestCodecFromTypeCodecs(t *testing.T) { RunCodecInterfaceTests(t, lbiit) t.Run("Lenient encoding allows extra bits", func(t *testing.T) { - ts := CreateTestStruct(0, lbiit) + ts := CreateTestStruct[*testing.T](0, lbiit) c := lbiit.GetCodec(t) encoded, err := c.Encode(tests.Context(t), ts, TestItemType) require.NoError(t, err) @@ -126,7 +126,7 @@ func TestCodecFromTypeCodecs(t *testing.T) { type interfaceTesterBase struct{} -func (*interfaceTesterBase) Setup(_ *testing.T, _ bool) {} +func (*interfaceTesterBase) Setup(_ *testing.T) {} func (*interfaceTesterBase) GetAccountBytes(i int) []byte { ib := byte(i) @@ -249,7 +249,7 @@ func (b *bigEndianInterfaceTester) GetCodec(t *testing.T) types.Codec { arr2, err := encodings.NewArray(2, testStruct) require.NoError(t, err) - ts := CreateTestStruct(0, b) + ts := CreateTestStruct[*testing.T](0, b) tc := &encodings.CodecFromTypeCodec{ TestItemType: testStruct, diff --git a/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_test.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_test.go index 9c99c9389..c22ed15f4 100644 --- a/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/codec_test.go @@ -25,7 +25,7 @@ func TestCodecClient(t *testing.T) { es := &errCodec{} esTester := chaincomponentstest.WrapCodecTesterForLoop(&fakeCodecInterfaceTester{impl: es}) - esTester.Setup(t, false) + esTester.Setup(t) esCodec := esTester.GetCodec(t) anyObj := &interfacetests.TestStruct{} @@ -55,14 +55,14 @@ func TestCodecClient(t *testing.T) { // make sure that errors come from client directly es.err = nil t.Run("Encode returns error if type cannot be encoded in the wire format", func(t *testing.T) { - interfaceTester.Setup(t, false) + interfaceTester.Setup(t) c := interfaceTester.GetCodec(t) _, err := c.Encode(tests.Context(t), &cannotEncode{}, "doesnotmatter") assert.True(t, errors.Is(err, types.ErrInvalidType)) }) t.Run("Decode returns error if type cannot be decoded in the wire format", func(t *testing.T) { - interfaceTester.Setup(t, false) + interfaceTester.Setup(t) c := interfaceTester.GetCodec(t) fv := int32(1) toDecode, err := c.Encode(tests.Context(t), &interfacetests.TestStruct{Field: &fv}, interfacetests.TestItemType) @@ -74,7 +74,7 @@ func TestCodecClient(t *testing.T) { t.Run("Nil esCodec returns unimplemented", func(t *testing.T) { ctx := tests.Context(t) nilTester := chaincomponentstest.WrapCodecTesterForLoop(&fakeCodecInterfaceTester{impl: nil}) - nilTester.Setup(t, false) + nilTester.Setup(t) nilCodec := nilTester.GetCodec(t) item := &interfacetests.TestStruct{} @@ -98,7 +98,7 @@ type fakeCodecInterfaceTester struct { impl types.Codec } -func (it *fakeCodecInterfaceTester) Setup(_ *testing.T, _ bool) {} +func (it *fakeCodecInterfaceTester) Setup(_ *testing.T) {} func (it *fakeCodecInterfaceTester) GetCodec(_ *testing.T) types.Codec { return it.impl diff --git a/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go index be7ca02e1..8abadcf95 100644 --- a/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/contract_reader_test.go @@ -22,6 +22,7 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/pb" "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader" contractreadertest "github.com/smartcontractkit/chainlink-common/pkg/loop/internal/relayer/pluginprovider/contractreader/test" + "github.com/smartcontractkit/chainlink-common/pkg/services/servicetest" "github.com/smartcontractkit/chainlink-common/pkg/types" "github.com/smartcontractkit/chainlink-common/pkg/types/query" "github.com/smartcontractkit/chainlink-common/pkg/types/query/primitives" @@ -236,7 +237,7 @@ func TestQueryKey(t *testing.T) { impl := &protoConversionTestContractReader{} crTester := contractreadertest.WrapContractReaderTesterForLoop(&fakeContractReaderInterfaceTester{impl: impl}, contractreadertest.WithContractReaderLoopEncoding(version)) - crTester.Setup(t, true) + crTester.Setup(t, false) cr := crTester.GetContractReader(t) es := &errContractReader{} @@ -292,15 +293,15 @@ type fakeContractReaderInterfaceTester struct { cw fakeChainWriter } -func (it *fakeContractReaderInterfaceTester) Setup(t *testing.T, started bool) { +func (it *fakeContractReaderInterfaceTester) Setup(t *testing.T, startCR bool) { fake, ok := it.impl.(*fakeContractReader) if ok { fake.vals = []valConfidencePair{} fake.triggers = []eventConfidencePair{} fake.stored = []TestStruct{} - if started { - require.NoError(t, it.impl.Start(context.Background())) - t.Cleanup(func() { require.NoError(t, it.impl.Close()) }) + + if startCR { + servicetest.Run(t, it.impl) } } } diff --git a/pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec_loop_tester.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec_loop_tester.go index d098bbe41..4be008bd4 100644 --- a/pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec_loop_tester.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/codec_loop_tester.go @@ -21,8 +21,8 @@ type codecReaderLoopTester struct { lst loopServerTester } -func (c *codecReaderLoopTester) Setup(t *testing.T, _ bool) { - c.CodecInterfaceTester.Setup(t, false) +func (c *codecReaderLoopTester) Setup(t *testing.T) { + c.CodecInterfaceTester.Setup(t) codec := c.CodecInterfaceTester.GetCodec(t) c.lst.registerHook = func(server *grpc.Server) { if codec != nil { diff --git a/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader_loop_tester.go b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader_loop_tester.go index 26c9d9303..8daada26a 100644 --- a/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader_loop_tester.go +++ b/pkg/loop/internal/relayer/pluginprovider/contractreader/test/contract_reader_loop_tester.go @@ -59,8 +59,8 @@ type contractReaderLoopTester struct { encodeWith contractreader.EncodingVersion } -func (c *contractReaderLoopTester) Setup(t *testing.T, started bool) { - c.ChainComponentsInterfaceTester.Setup(t, started) +func (c *contractReaderLoopTester) Setup(t *testing.T, startCR bool) { + c.ChainComponentsInterfaceTester.Setup(t, startCR) contractReader := c.ChainComponentsInterfaceTester.GetContractReader(t) c.lst.registerHook = func(server *grpc.Server) { diff --git a/pkg/types/interfacetests/chain_components_interface_tests.go b/pkg/types/interfacetests/chain_components_interface_tests.go index b0288eb31..3edfa816d 100644 --- a/pkg/types/interfacetests/chain_components_interface_tests.go +++ b/pkg/types/interfacetests/chain_components_interface_tests.go @@ -15,8 +15,28 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/utils/tests" ) -type ChainComponentsInterfaceTester[T TestingT[T]] interface { +type ChainComponentsTester[T any] interface { BasicTester[T] + Setup(t T, startCR bool) +} + +type chainComponentsTestcase[T any] struct { + name string + test func(t T) + startCR bool +} + +func runChainComponentsTests[T TestingT[T]](t T, tester ChainComponentsTester[T], tests []chainComponentsTestcase[T]) { + for _, test := range tests { + t.Run(test.name+" for "+tester.Name(), func(t T) { + tester.Setup(t, test.startCR) + test.test(t) + }) + } +} + +type ChainComponentsInterfaceTester[T TestingT[T]] interface { + ChainComponentsTester[T] GetContractReader(t T) types.ContractReader GetChainWriter(t T) types.ChainWriter GetBindings(t T) []types.BoundContract @@ -58,7 +78,7 @@ func RunContractReaderInterfaceTests[T TestingT[T]](t T, tester ChainComponentsI } func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfaceTester[T], mockRun bool) { - tests := []testcase[T]{ + tests := []chainComponentsTestcase[T]{ { name: "Get latest value without starting service returns error", startCR: false, @@ -76,12 +96,12 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch startCR: true, test: func(t T) { ctx := tests.Context(t) - firstItem := CreateTestStruct(0, tester) + firstItem := CreateTestStruct[T](0, tester) contracts := tester.GetBindings(t) _ = SubmitTransactionToCW(t, tester, MethodSettingStruct, firstItem, contracts[0], types.Unconfirmed) - secondItem := CreateTestStruct(1, tester) + secondItem := CreateTestStruct[T](1, tester) _ = SubmitTransactionToCW(t, tester, MethodSettingStruct, secondItem, contracts[0], types.Unconfirmed) @@ -199,7 +219,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch startCR: true, test: func(t T) { ctx := tests.Context(t) - testStruct := CreateTestStruct(0, tester) + testStruct := CreateTestStruct[T](0, tester) testStruct.BigField = nil testStruct.Account = nil @@ -214,7 +234,7 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch expected := &TestStructWithExtraField{ ExtraField: AnyExtraValue, - TestStruct: CreateTestStruct(0, tester), + TestStruct: CreateTestStruct[T](0, tester), } assert.Equal(t, expected, actual) @@ -308,11 +328,11 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch bound := bindingsByName(bindings, AnyContractName)[0] require.NoError(t, cr.Bind(ctx, bindings)) - ts0 := CreateTestStruct(0, tester) + ts0 := CreateTestStruct[T](0, tester) contracts := tester.GetBindings(t) _ = SubmitTransactionToCW(t, tester, MethodTriggeringEvent, ts0, contracts[0], types.Unconfirmed) - ts1 := CreateTestStruct(1, tester) + ts1 := CreateTestStruct[T](1, tester) _ = SubmitTransactionToCW(t, tester, MethodTriggeringEvent, ts1, contracts[0], types.Unconfirmed) filterParams := &FilterEventParams{Field: *ts0.Field} @@ -331,17 +351,17 @@ func runContractReaderGetLatestValueInterfaceTests[T TestingT[T]](t T, tester Ch }, }, } - runTests(t, tester, tests) + runChainComponentsTests(t, tester, tests) } func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfaceTester[T], mockRun bool) { - testCases := []testcase[T]{ + testCases := []chainComponentsTestcase[T]{ { name: "BatchGetLatestValues without starting service returns error", startCR: false, test: func(t T) { // setup test data - firstItem := CreateTestStruct(1, tester) + firstItem := CreateTestStruct[T](1, tester) bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnyContractName)[0] @@ -373,7 +393,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes startCR: true, test: func(t T) { // setup test data - firstItem := CreateTestStruct(1, tester) + firstItem := CreateTestStruct[T](1, tester) bindings := tester.GetBindings(t) bound := bindingsByName(bindings, AnyContractName)[0] @@ -499,7 +519,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes startCR: true, test: func(t T) { // setup call data - testStruct := CreateTestStruct(0, tester) + testStruct := CreateTestStruct[T](0, tester) testStruct.BigField = nil testStruct.Account = nil actual := &TestStructWithExtraField{} @@ -522,7 +542,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes assert.Equal(t, &TestStructWithExtraField{ ExtraField: AnyExtraValue, - TestStruct: CreateTestStruct(0, tester), + TestStruct: CreateTestStruct[T](0, tester), }, returnValue) }, @@ -538,7 +558,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes for i := 0; i < 10; i++ { // setup test data - ts := CreateTestStruct(i, tester) + ts := CreateTestStruct[T](i, tester) batchCallEntry[bound] = append(batchCallEntry[bound], ReadEntry{Name: MethodTakingLatestParamsReturningTestStruct, ReturnValue: &ts}) // setup call data batchGetLatestValueRequest[bound] = append( @@ -576,7 +596,7 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes for i := 0; i < 10; i++ { // setup test data - ts1, ts2 := CreateTestStruct(i, tester), CreateTestStruct(i+10, tester) + ts1, ts2 := CreateTestStruct[T](i, tester), CreateTestStruct[T](i+10, tester) batchCallEntry[bound1] = append(batchCallEntry[bound1], ReadEntry{Name: MethodTakingLatestParamsReturningTestStruct, ReturnValue: &ts1}) batchCallEntry[bound2] = append(batchCallEntry[bound2], ReadEntry{Name: MethodTakingLatestParamsReturningTestStruct, ReturnValue: &ts2}) // setup call data @@ -649,11 +669,11 @@ func runContractReaderBatchGetLatestValuesInterfaceTests[T TestingT[T]](t T, tes }, }, } - runTests(t, tester, testCases) + runChainComponentsTests(t, tester, testCases) } func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfaceTester[T]) { - tests := []testcase[T]{ + tests := []chainComponentsTestcase[T]{ { name: "QueryKey without starting service returns error", startCR: false, @@ -710,7 +730,7 @@ func runQueryKeyInterfaceTests[T TestingT[T]](t T, tester ChainComponentsInterfa }, } - runTests(t, tester, tests) + runChainComponentsTests(t, tester, tests) } func bindingsByName(bindings []types.BoundContract, name string) []types.BoundContract { diff --git a/pkg/types/interfacetests/codec_interface_fuzz_tests.go b/pkg/types/interfacetests/codec_interface_fuzz_tests.go index 4081bc6fd..e5f65490c 100644 --- a/pkg/types/interfacetests/codec_interface_fuzz_tests.go +++ b/pkg/types/interfacetests/codec_interface_fuzz_tests.go @@ -18,7 +18,7 @@ func RunCodecInterfaceFuzzTests(f *testing.F, tester CodecInterfaceTester) { // Cannot run more than one test or it hangs (currently a limit of fuzz testing), instead, just call it fuzz codec and do it all at once. t.Run("Fuzz codec", func(t *testing.T) { // Encode decode gets the same result - tester.Setup(t, false) + tester.Setup(t) oids := [32]commontypes.OracleID{} for index, id := range oracleIds { if index == len(oids) { diff --git a/pkg/types/interfacetests/codec_interface_tests.go b/pkg/types/interfacetests/codec_interface_tests.go index 79e53dcc1..baf1342c2 100644 --- a/pkg/types/interfacetests/codec_interface_tests.go +++ b/pkg/types/interfacetests/codec_interface_tests.go @@ -19,8 +19,27 @@ type EncodeRequest struct { TestOn string } +type codecTestcase[T any] struct { + name string + test func(t T) +} + +type CodecTester[T any] interface { + BasicTester[T] + Setup(t T) +} + +func runCodecTests[T TestingT[T]](t T, tester CodecTester[T], tests []codecTestcase[T]) { + for _, test := range tests { + t.Run(test.name+" for "+tester.Name(), func(t T) { + tester.Setup(t) + test.test(t) + }) + } +} + type CodecInterfaceTester interface { - BasicTester[*testing.T] + CodecTester[*testing.T] EncodeFields(t *testing.T, request *EncodeRequest) []byte GetCodec(t *testing.T) types.Codec @@ -38,7 +57,7 @@ const ( ) func RunCodecInterfaceTests(t *testing.T, tester CodecInterfaceTester) { - tests := []testcase[*testing.T]{ + tests := []codecTestcase[*testing.T]{ { name: "Encodes and decodes a single item", test: func(t *testing.T) { @@ -362,7 +381,7 @@ func RunCodecInterfaceTests(t *testing.T, tester CodecInterfaceTester) { }, }, } - runTests(t, tester, tests) + runCodecTests(t, tester, tests) } // RunCodecWithStrictArgsInterfaceTest is meant to be used by codecs that don't pad @@ -372,7 +391,7 @@ func RunCodecInterfaceTests(t *testing.T, tester CodecInterfaceTester) { func RunCodecWithStrictArgsInterfaceTest(t *testing.T, tester CodecInterfaceTester) { RunCodecInterfaceTests(t, tester) - tests := []testcase[*testing.T]{ + tests := []codecTestcase[*testing.T]{ { name: "Gives an error decoding extra fields on an item", test: func(t *testing.T) { @@ -439,5 +458,5 @@ func RunCodecWithStrictArgsInterfaceTest(t *testing.T, tester CodecInterfaceTest }, } - runTests(t, tester, tests) + runCodecTests(t, tester, tests) } diff --git a/pkg/types/interfacetests/utils.go b/pkg/types/interfacetests/utils.go index 74c0525e0..aa7032937 100644 --- a/pkg/types/interfacetests/utils.go +++ b/pkg/types/interfacetests/utils.go @@ -16,32 +16,16 @@ import ( ) type BasicTester[T any] interface { - Setup(t T, startCR bool) Name() string GetAccountBytes(i int) []byte } -type testcase[T any] struct { - name string - test func(t T) - startCR bool -} - type TestingT[T any] interface { tests.TestingT Failed() bool Run(name string, f func(t T)) bool } -func runTests[T TestingT[T]](t T, tester BasicTester[T], tests []testcase[T]) { - for _, test := range tests { - t.Run(test.name+" for "+tester.Name(), func(t T) { - tester.Setup(t, test.startCR) - test.test(t) - }) - } -} - // Batch chain write takes a batch call entry and writes it to the chain using the ChainWriter. func batchChainWrite[T TestingT[T]](t T, tester ChainComponentsInterfaceTester[T], batchCallEntry BatchCallEntry, mockRun bool) { // This is necessary because the mock helper function requires the entire batchCallEntry rather than an individual testStruct From e7280848cd7b9756bf02c67a26b8c536df0724c6 Mon Sep 17 00:00:00 2001 From: Farber98 Date: Mon, 16 Sep 2024 18:47:06 -0300 Subject: [PATCH 22/23] Revert "Merge branch 'main' into BCI-3989-cr-methods-error-when-unstarted" This reverts commit 54d7016c8ac2a63a5f1285c78ae0bd4381537b97, reversing changes made to 4e67d8d41bc2c606ea99313defb005850b605654. --- Makefile | 2 - go.mod | 2 +- .../go_mock_capability_builder.go.tmpl | 2 +- .../go_workflow_builder.go.tmpl | 44 +- pkg/capabilities/cli/cmd/generator_test.go | 68 ++-- .../arrayaction/action_builders_generated.go | 48 +-- .../arrayactiontest/action_mock_generated.go | 2 +- .../basicaction/action_builders_generated.go | 36 +- .../basicactiontest/action_mock_generated.go | 2 +- .../consensus_builders_generated.go | 48 +-- .../basictargettest/target_mock_generated.go | 2 +- .../basictarget/target_builders_generated.go | 14 +- .../trigger_mock_generated.go | 2 +- .../trigger_builders_generated.go | 32 +- .../action_builders_generated.go | 8 +- .../action_mock_generated.go | 2 +- .../nestedaction/action_builders_generated.go | 48 +-- .../nestedactiontest/action_mock_generated.go | 2 +- .../action_builders_generated.go | 36 +- .../action_mock_generated.go | 2 +- .../ocr3/common_builders_generated.go | 88 ++++ ...data_feeds_consensus_builders_generated.go | 104 +++++ .../ocr3/{ocr3cap => }/identical_consensus.go | 16 +- .../{ocr3cap => }/identical_consensus_test.go | 26 +- ...on-schema.json => ocr3_common-schema.json} | 2 +- ..._generated.go => ocr3_common_generated.go} | 2 +- ... => ocr3_data_feeds_consensus-schema.json} | 14 +- ...=> ocr3_data_feeds_consensus_generated.go} | 2 +- .../ocr3/ocr3cap/common_builders_generated.go | 88 ---- ...data_feeds_consensus_builders_generated.go | 104 ----- .../identical_consensus.go | 24 +- .../ocr3captest => ocr3test}/observations.go | 2 +- pkg/capabilities/monitoring.go | 2 - .../chainwriter_target-schema.json | 2 +- .../chainwriter_target_generated.go | 4 +- .../chainwritertest/target_mock_generated.go | 2 +- .../chainwriter/target_builders_generated.go | 16 +- .../streamstest/trigger_mock_generated.go | 2 +- .../streams/trigger_builders_generated.go | 154 +++---- .../internal/pb/relayerset/relayerset.pb.go | 384 ++++++------------ .../internal/pb/relayerset/relayerset.proto | 11 - .../pb/relayerset/relayerset_grpc.pb.go | 37 -- pkg/loop/internal/relayerset/client.go | 15 - pkg/loop/internal/relayerset/relayer.go | 9 - pkg/loop/internal/relayerset/server.go | 17 - pkg/types/core/mocks/relayer.go | 56 --- pkg/types/core/relayerset.go | 1 - pkg/workflows/{sdk => }/builder.go | 6 +- pkg/workflows/{sdk => }/builder_test.go | 85 ++-- pkg/workflows/{sdk => }/compute.go | 2 +- pkg/workflows/{sdk => }/compute_generated.go | 202 ++++----- pkg/workflows/{sdk => }/compute_test.go | 58 ++- pkg/workflows/dependency_graph.go | 78 +++- pkg/workflows/dependency_graph_test.go | 11 +- pkg/workflows/{sdk => }/gen/README.md | 0 pkg/workflows/{sdk => }/gen/compute.go.tmpl | 22 +- pkg/workflows/{sdk => }/gen/main.go | 0 pkg/workflows/models_yaml.go | 60 +-- pkg/workflows/models_yaml_test.go | 33 ++ pkg/workflows/runner.go | 6 + pkg/workflows/sdk.go | 5 + pkg/workflows/sdk/runner.go | 6 - pkg/workflows/sdk/runtime.go | 5 - .../notstreams/trigger_builders_generated.go | 226 ----------- .../fixtures/workflows/workflow_schema.json | 142 ------- pkg/workflows/sdk/testutils/runtime.go | 9 - pkg/workflows/sdk/workflow_spec.go | 37 -- .../notstreams/notstreams_trigger-schema.json | 0 .../notstreams_trigger_generated.go | 0 .../notstreamstest/trigger_mock_generated.go | 2 +- .../notstreams/trigger_builders_generated.go | 226 +++++++++++ .../fixtures/workflows/expected_sepolia.yaml | 0 .../fixtures/workflows/notstreamssepolia.yaml | 0 .../testdata/fixtures/workflows/sepolia.yaml | 0 .../fixtures/workflows/sepolia_defaults.yaml | 0 .../{sdk => }/testutils/compute_capability.go | 8 +- pkg/workflows/{sdk => }/testutils/mocks.go | 0 pkg/workflows/{sdk => }/testutils/runner.go | 49 +-- .../{sdk => }/testutils/runner_test.go | 82 ++-- pkg/workflows/testutils/sdk.go | 7 + pkg/workflows/{sdk => }/testutils/utils.go | 4 +- pkg/workflows/wasm/generate_wasm.sh | 2 + pkg/workflows/wasm/host/wasm_test.go | 40 -- pkg/workflows/wasm/pb/wasm.go | 34 +- pkg/workflows/wasm/sdk.go | 7 - pkg/workflows/wasm/{ => sdk}/runner.go | 19 +- pkg/workflows/wasm/{ => sdk}/runner_test.go | 24 +- pkg/workflows/wasm/{ => sdk}/runner_wasip1.go | 2 +- pkg/workflows/wasm/sdk/sdk.go | 3 + .../wasm/{host => }/test/cmd/main.go | 13 +- pkg/workflows/wasm/test/cmd/testmodule.wasm | Bin 0 -> 19684179 bytes pkg/workflows/wasm/{host => }/wasm.go | 6 +- pkg/workflows/wasm/wasm_test.go | 29 ++ 93 files changed, 1379 insertions(+), 1757 deletions(-) create mode 100644 pkg/capabilities/consensus/ocr3/common_builders_generated.go create mode 100644 pkg/capabilities/consensus/ocr3/data_feeds_consensus_builders_generated.go rename pkg/capabilities/consensus/ocr3/{ocr3cap => }/identical_consensus.go (65%) rename pkg/capabilities/consensus/ocr3/{ocr3cap => }/identical_consensus_test.go (74%) rename pkg/capabilities/consensus/ocr3/{ocr3cap/ocr3cap_common-schema.json => ocr3_common-schema.json} (96%) rename pkg/capabilities/consensus/ocr3/{ocr3cap/ocr3cap_common_generated.go => ocr3_common_generated.go} (99%) rename pkg/capabilities/consensus/ocr3/{ocr3cap/ocr3cap_data_feeds_consensus-schema.json => ocr3_data_feeds_consensus-schema.json} (83%) rename pkg/capabilities/consensus/ocr3/{ocr3cap/ocr3cap_data_feeds_consensus_generated.go => ocr3_data_feeds_consensus_generated.go} (99%) delete mode 100644 pkg/capabilities/consensus/ocr3/ocr3cap/common_builders_generated.go delete mode 100644 pkg/capabilities/consensus/ocr3/ocr3cap/data_feeds_consensus_builders_generated.go rename pkg/capabilities/consensus/ocr3/{ocr3cap/ocr3captest => ocr3test}/identical_consensus.go (76%) rename pkg/capabilities/consensus/ocr3/{ocr3cap/ocr3captest => ocr3test}/observations.go (85%) rename pkg/workflows/{sdk => }/builder.go (94%) rename pkg/workflows/{sdk => }/builder_test.go (83%) rename pkg/workflows/{sdk => }/compute.go (96%) rename pkg/workflows/{sdk => }/compute_generated.go (68%) rename pkg/workflows/{sdk => }/compute_test.go (73%) rename pkg/workflows/{sdk => }/gen/README.md (100%) rename pkg/workflows/{sdk => }/gen/compute.go.tmpl (68%) rename pkg/workflows/{sdk => }/gen/main.go (100%) create mode 100644 pkg/workflows/runner.go create mode 100644 pkg/workflows/sdk.go delete mode 100644 pkg/workflows/sdk/runner.go delete mode 100644 pkg/workflows/sdk/runtime.go delete mode 100644 pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams/trigger_builders_generated.go delete mode 100644 pkg/workflows/sdk/testdata/fixtures/workflows/workflow_schema.json delete mode 100644 pkg/workflows/sdk/testutils/runtime.go delete mode 100644 pkg/workflows/sdk/workflow_spec.go rename pkg/workflows/{sdk => }/testdata/fixtures/capabilities/notstreams/notstreams_trigger-schema.json (100%) rename pkg/workflows/{sdk => }/testdata/fixtures/capabilities/notstreams/notstreams_trigger_generated.go (100%) rename pkg/workflows/{sdk => }/testdata/fixtures/capabilities/notstreams/notstreamstest/trigger_mock_generated.go (89%) create mode 100644 pkg/workflows/testdata/fixtures/capabilities/notstreams/trigger_builders_generated.go rename pkg/workflows/{sdk => }/testdata/fixtures/workflows/expected_sepolia.yaml (100%) rename pkg/workflows/{sdk => }/testdata/fixtures/workflows/notstreamssepolia.yaml (100%) rename pkg/workflows/{sdk => }/testdata/fixtures/workflows/sepolia.yaml (100%) rename pkg/workflows/{sdk => }/testdata/fixtures/workflows/sepolia_defaults.yaml (100%) rename pkg/workflows/{sdk => }/testutils/compute_capability.go (79%) rename pkg/workflows/{sdk => }/testutils/mocks.go (100%) rename pkg/workflows/{sdk => }/testutils/runner.go (83%) rename pkg/workflows/{sdk => }/testutils/runner_test.go (74%) create mode 100644 pkg/workflows/testutils/sdk.go rename pkg/workflows/{sdk => }/testutils/utils.go (81%) create mode 100755 pkg/workflows/wasm/generate_wasm.sh delete mode 100644 pkg/workflows/wasm/host/wasm_test.go delete mode 100644 pkg/workflows/wasm/sdk.go rename pkg/workflows/wasm/{ => sdk}/runner.go (86%) rename pkg/workflows/wasm/{ => sdk}/runner_test.go (88%) rename pkg/workflows/wasm/{ => sdk}/runner_wasip1.go (98%) create mode 100644 pkg/workflows/wasm/sdk/sdk.go rename pkg/workflows/wasm/{host => }/test/cmd/main.go (66%) create mode 100755 pkg/workflows/wasm/test/cmd/testmodule.wasm rename pkg/workflows/wasm/{host => }/wasm.go (97%) create mode 100644 pkg/workflows/wasm/wasm_test.go diff --git a/Makefile b/Makefile index 8955675da..2469aebd4 100644 --- a/Makefile +++ b/Makefile @@ -29,8 +29,6 @@ rm-mocked: rm-builders: # not sure why, but go.tmpl is matched when run in makefile but not when run in the commandline. grep -rl "^// Code generated by github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli" | grep .go$ | grep -v go.tmpl$ | xargs -r rm - # test wasm file should be removed as well - rm -f ./pkg/workflows/wasm/host/test/cmd/testmodule.wasm .PHONY: generate generate: mockery install-protoc gomods diff --git a/go.mod b/go.mod index d1cfb5a4a..f0b0eb074 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/smartcontractkit/chainlink-common go 1.22 -toolchain go1.22.7 +toolchain go1.22.5 require ( github.com/atombender/go-jsonschema v0.16.0 diff --git a/pkg/capabilities/cli/cmd/generate-types/go_mock_capability_builder.go.tmpl b/pkg/capabilities/cli/cmd/generate-types/go_mock_capability_builder.go.tmpl index ad4f8af12..9a89bbe2c 100644 --- a/pkg/capabilities/cli/cmd/generate-types/go_mock_capability_builder.go.tmpl +++ b/pkg/capabilities/cli/cmd/generate-types/go_mock_capability_builder.go.tmpl @@ -2,7 +2,7 @@ package {{.Package}}test import ( - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" {{- if not (and (.RootType.Ref) (and .Input .Input.Ref)) }} "{{.FullPackage}}" {{- end }} diff --git a/pkg/capabilities/cli/cmd/generate-types/go_workflow_builder.go.tmpl b/pkg/capabilities/cli/cmd/generate-types/go_workflow_builder.go.tmpl index d68a3d75b..3f890c8bd 100644 --- a/pkg/capabilities/cli/cmd/generate-types/go_workflow_builder.go.tmpl +++ b/pkg/capabilities/cli/cmd/generate-types/go_workflow_builder.go.tmpl @@ -4,7 +4,7 @@ import ( {{- if not (.CapabilityType|IsCommon) }} "github.com/smartcontractkit/chainlink-common/pkg/capabilities" {{- end }} - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" {{- range .ExtraImports }} {{.}} @@ -14,12 +14,12 @@ import ( {{ if .Config.Ref }}type {{.Config.Name}} {{.Config.Ref}} {{ end }} {{- if not (.CapabilityType|IsCommon) }} -func (cfg {{.Config.Name}}) New(w *sdk.WorkflowSpecFactory, {{- if not .ID }}id string,{{- end }} {{- if and (ne .CapabilityType "target") (ne .CapabilityType "trigger")}}ref string,{{- end }}{{- if .Input }} input {{InputAfterCapability}}{{- end }}) {{- if ne .CapabilityType "target"}}{{- if eq .RootNumSlice 0}}{{.RootType.Name}}Cap{{- else }}sdk.CapDefinition[{{Repeat "[]" .RootNumSlice}}{{.RootType.Name}}]{{- end }}{{- end }} { +func (cfg {{.Config.Name}}) New(w *workflows.WorkflowSpecFactory, {{- if not .ID }}id string,{{- end }} {{- if and (ne .CapabilityType "target") (ne .CapabilityType "trigger")}}ref string,{{- end }}{{- if .Input }} input {{InputAfterCapability}}{{- end }}) {{- if ne .CapabilityType "target"}}{{- if eq .RootNumSlice 0}}{{.RootType.Name}}Cap{{- else }}workflows.CapDefinition[{{Repeat "[]" .RootNumSlice}}{{.RootType.Name}}]{{- end }}{{- end }} { {{ if eq .CapabilityType "trigger" }} ref := "trigger" {{- end }} - def := sdk.StepDefinition{ + def := workflows.StepDefinition{ ID: {{- if .ID }} "{{.ID}}" {{- else }} id {{- end }}, {{- if ne .CapabilityType "target"}}Ref: ref, {{- end }} - Inputs: {{- if .Input }} input.ToSteps() {{- else }} sdk.StepInputs{} {{ end }}, + Inputs: {{- if .Input }} input.ToSteps() {{- else }} workflows.StepInputs{} {{ end }}, Config: map[string]any{ {{- range $fieldName, $type := .Config.Outputs }} "{{$type.ConfigName}}": cfg.{{$fieldName}}, @@ -29,7 +29,7 @@ func (cfg {{.Config.Name}}) New(w *sdk.WorkflowSpecFactory, {{- if not .ID }}id } - step := sdk.Step[{{- if eq .CapabilityType "target"}}struct{}{{- else }}{{Repeat "[]" .RootNumSlice}}{{.RootOutput}} {{- end}}]{Definition: def} + step := workflows.Step[{{- if eq .CapabilityType "target"}}struct{}{{- else }}{{Repeat "[]" .RootNumSlice}}{{.RootOutput}} {{- end}}]{Definition: def} {{- if eq .CapabilityType "target" }} step.AddTo(w) {{- else if eq 0 .RootNumSlice }} @@ -43,10 +43,10 @@ func (cfg {{.Config.Name}}) New(w *sdk.WorkflowSpecFactory, {{- if not .ID }}id {{ range $key, $value := .Types }} {{- if .Outputs }} type {{$key}}Cap interface { - sdk.CapDefinition[{{ $key }}] + workflows.CapDefinition[{{ $key }}] {{- range $fieldName, $type := .Outputs }} {{- if or $type.IsPrimitive (ne $type.NumSlice 0) }} - {{$fieldName}}() sdk.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}] + {{$fieldName}}() workflows.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}] {{- else }} {{$fieldName}}() {{ $type.Type }}Cap {{- end }} @@ -56,29 +56,29 @@ type {{$key}}Cap interface { {{ if ne $.CapabilityType "target" }} // {{$key}}CapFromStep should only be called from generated code to assure type safety -func {{$key}}CapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[{{$key}}]) {{$key}}Cap { +func {{$key}}CapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[{{$key}}]) {{$key}}Cap { raw := step.AddTo(w) return &{{$key|LowerFirst}}{CapDefinition: raw} } {{ end }} type {{$key|LowerFirst}} struct { - sdk.CapDefinition[{{ $key }}] + workflows.CapDefinition[{{ $key }}] } func (*{{$key|LowerFirst}}) private() {} {{- range $fieldName, $type := .Outputs }} {{- if or $type.IsPrimitive (ne $type.NumSlice 0) }} -func (c *{{$key|LowerFirst}}) {{$fieldName}}() sdk.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}] { - return sdk.AccessField[{{$value.Name}}, {{Repeat "[]" $type.NumSlice}}{{$type.Type}}](c.CapDefinition, "{{$type.ConfigName}}") +func (c *{{$key|LowerFirst}}) {{$fieldName}}() workflows.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}] { + return workflows.AccessField[{{$value.Name}}, {{Repeat "[]" $type.NumSlice}}{{$type.Type}}](c.CapDefinition, "{{$type.ConfigName}}") } {{- else }} func (c *{{$key|LowerFirst}}) {{$fieldName}}() {{ $type.Type }}Cap { {{- if $type.Type|HasOutputs }} - return &{{ $type.Type | LowerFirst }}{ CapDefinition: sdk.AccessField[{{$value.Name}}, {{$type.Type}}](c.CapDefinition, "{{$type.ConfigName}}")} + return &{{ $type.Type | LowerFirst }}{ CapDefinition: workflows.AccessField[{{$value.Name}}, {{$type.Type}}](c.CapDefinition, "{{$type.ConfigName}}")} {{- else }} - return {{ $type.Type }}Cap(sdk.AccessField[{{$value.Name}}, {{$type.Type}}](c.CapDefinition, "{{$type.ConfigName}}")) + return {{ $type.Type }}Cap(workflows.AccessField[{{$value.Name}}, {{$type.Type}}](c.CapDefinition, "{{$type.ConfigName}}")) {{- end }} } {{- end }} @@ -86,12 +86,12 @@ func (c *{{$key|LowerFirst}}) {{$fieldName}}() {{ $type.Type }}Cap { func New{{$key}}FromFields({{- range $fieldName, $type := .Outputs }} {{- if or $type.IsPrimitive (ne $type.NumSlice 0) }} - {{$fieldName|LowerFirst}} sdk.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}], + {{$fieldName|LowerFirst}} workflows.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}], {{- else }} {{$fieldName|LowerFirst}} {{ $type.Type }}Cap, {{- end }} {{- end }}) {{$key}}Cap { return &simple{{$key}}{ - CapDefinition: sdk.ComponentCapDefinition[{{$value.Name}}]{ {{- range $fieldName, $type := .Outputs }} + CapDefinition: workflows.ComponentCapDefinition[{{$value.Name}}]{ {{- range $fieldName, $type := .Outputs }} "{{$type.ConfigName}}": {{$fieldName|LowerFirst}}.Ref(), {{- end }} }, @@ -102,10 +102,10 @@ func New{{$key}}FromFields({{- range $fieldName, $type := .Outputs }} } type simple{{$key}} struct { - sdk.CapDefinition[{{ $key }}] + workflows.CapDefinition[{{ $key }}] {{- range $fieldName, $type := .Outputs }} {{- if or $type.IsPrimitive (ne $type.NumSlice 0) }} - {{$fieldName|LowerFirst}} sdk.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}] + {{$fieldName|LowerFirst}} workflows.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}] {{- else }} {{$fieldName|LowerFirst}} {{ $type.Type }}Cap {{- end }} @@ -114,7 +114,7 @@ type simple{{$key}} struct { {{- range $fieldName, $type := .Outputs }} {{- if or $type.IsPrimitive (ne $type.NumSlice 0) }} -func (c *simple{{$key}}) {{$fieldName}}() sdk.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}] { +func (c *simple{{$key}}) {{$fieldName}}() workflows.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}] { {{- else }} func (c *simple{{$key}}) {{$fieldName}}() {{ $type.Type }}Cap { {{- end }} @@ -124,7 +124,7 @@ func (c *simple{{$key}}) {{$fieldName}}() {{ $type.Type }}Cap { func (c *simple{{$key}}) private() {} {{- else }} -type {{$key}}Cap sdk.CapDefinition[{{ $key }}] +type {{$key}}Cap workflows.CapDefinition[{{ $key }}] {{- end }} {{ end }} @@ -135,12 +135,12 @@ type {{InputAfterCapability}} = {{.Input.RefPkg}}.{{InputAfterCapability}} {{- else }} type {{InputAfterCapability}} struct { {{- range $fieldName, $type := .Input.Outputs }} - {{$fieldName}} sdk.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}] + {{$fieldName}} workflows.CapDefinition[{{Repeat "[]" $type.NumSlice}}{{ $type.Type }}] {{- end }} } -func (input {{InputAfterCapability}}) ToSteps() sdk.StepInputs { - return sdk.StepInputs{ +func (input {{InputAfterCapability}}) ToSteps() workflows.StepInputs { + return workflows.StepInputs{ Mapping: map[string]any{ {{- range $fieldName, $type := .Input.Outputs }} "{{$type.ConfigName}}": input.{{$fieldName}}.Ref(), diff --git a/pkg/capabilities/cli/cmd/generator_test.go b/pkg/capabilities/cli/cmd/generator_test.go index 16ef48c71..a7d0feb4b 100644 --- a/pkg/capabilities/cli/cmd/generator_test.go +++ b/pkg/capabilities/cli/cmd/generator_test.go @@ -20,8 +20,8 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction" "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction/referenceactiontest" "github.com/smartcontractkit/chainlink-common/pkg/utils/tests" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) //go:generate go run github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/generate-types --dir $GOFILE @@ -29,13 +29,13 @@ import ( // Notes: // // This doesn't get "code coverage" because the generate command is executed before the test -// These tests only verify syntax to assure use is as intended, the test for the `sdk.WorkflowSpecFactory` and `testutils.Runner` +// These tests only verify syntax to assure use is as intended, the test for the `workflows.WorkflowSpecFactory` and `testutils.Runner` // test their interactions with those components. This is done to avoid duplication in testing effort // and allows specific testing of what interfaces should be implemented by generated code. func TestTypeGeneration(t *testing.T) { t.Run("Basic trigger", func(t *testing.T) { onlyVerifySyntax(func() { - factory := &sdk.WorkflowSpecFactory{} + factory := &workflows.WorkflowSpecFactory{} // assure the right type of trigger var trigger basictrigger.TriggerOutputsCap //nolint @@ -45,10 +45,10 @@ func TestTypeGeneration(t *testing.T) { }.New(factory) // verify that the underlying interface is right - var _ sdk.CapDefinition[basictrigger.TriggerOutputs] = trigger + var _ workflows.CapDefinition[basictrigger.TriggerOutputs] = trigger // verify the type is correct - var expectedOutput sdk.CapDefinition[string] //nolint + var expectedOutput workflows.CapDefinition[string] //nolint expectedOutput = trigger.CoolOutput() _ = expectedOutput }) @@ -56,7 +56,7 @@ func TestTypeGeneration(t *testing.T) { t.Run("Basic action", func(t *testing.T) { onlyVerifySyntax(func() { - factory := &sdk.WorkflowSpecFactory{} + factory := &workflows.WorkflowSpecFactory{} // assure the right type of action var action basicaction.ActionOutputsCap //nolint @@ -64,14 +64,14 @@ func TestTypeGeneration(t *testing.T) { CamelCaseInSchemaForTesting: "anything", SnakeCaseInSchemaForTesting: 123, }.New(factory, "reference", basicaction.ActionInput{ - InputThing: sdk.CapDefinition[bool](nil), + InputThing: workflows.CapDefinition[bool](nil), }) // verify that the underlying interface is right - var _ sdk.CapDefinition[basicaction.ActionOutputs] = action + var _ workflows.CapDefinition[basicaction.ActionOutputs] = action // verify the type is correct - var expectedOutput sdk.CapDefinition[string] //nolint + var expectedOutput workflows.CapDefinition[string] //nolint expectedOutput = action.AdaptedThing() _ = expectedOutput }) @@ -79,7 +79,7 @@ func TestTypeGeneration(t *testing.T) { t.Run("Basic consensus", func(t *testing.T) { onlyVerifySyntax(func() { - factory := &sdk.WorkflowSpecFactory{} + factory := &workflows.WorkflowSpecFactory{} // assure the right type of trigger var consensus basicconsensus.ConsensusOutputsCap //nolint @@ -87,18 +87,18 @@ func TestTypeGeneration(t *testing.T) { Name: "anything", Number: 123, }.New(factory, "reference", basicconsensus.ConsensusInput{ - InputThing: sdk.CapDefinition[bool](nil), + InputThing: workflows.CapDefinition[bool](nil), }) // verify that the underlying interface is right - var _ sdk.CapDefinition[basicconsensus.ConsensusOutputs] = consensus + var _ workflows.CapDefinition[basicconsensus.ConsensusOutputs] = consensus // verify the type is correct - var expectedConsensusField sdk.CapDefinition[[]string] //nolint + var expectedConsensusField workflows.CapDefinition[[]string] //nolint expectedConsensusField = consensus.Consensus() _ = expectedConsensusField - var expectedSigsField sdk.CapDefinition[[]string] //nolint + var expectedSigsField workflows.CapDefinition[[]string] //nolint expectedSigsField = consensus.Sigs() _ = expectedSigsField }) @@ -112,14 +112,14 @@ func TestTypeGeneration(t *testing.T) { } // verify no output type - var verifyCreationType func(w *sdk.WorkflowSpecFactory, input basictarget.TargetInput) //nolint + var verifyCreationType func(w *workflows.WorkflowSpecFactory, input basictarget.TargetInput) //nolint verifyCreationType = config.New var _ = verifyCreationType }) }) t.Run("References", func(t *testing.T) { onlyVerifySyntax(func() { - factory := &sdk.WorkflowSpecFactory{} + factory := &workflows.WorkflowSpecFactory{} // assure the right type of action var action referenceaction.SomeOutputsCap //nolint @@ -127,14 +127,14 @@ func TestTypeGeneration(t *testing.T) { Name: "anything", Number: 123, }.New(factory, "reference", referenceaction.ActionInput{ - InputThing: sdk.CapDefinition[bool](nil), + InputThing: workflows.CapDefinition[bool](nil), }) // verify that the underlying interface is right - var _ sdk.CapDefinition[referenceaction.SomeOutputs] = action + var _ workflows.CapDefinition[referenceaction.SomeOutputs] = action // verify the type is correct - var expectedOutput sdk.CapDefinition[string] //nolint + var expectedOutput workflows.CapDefinition[string] //nolint expectedOutput = action.AdaptedThing() _ = expectedOutput }) @@ -142,7 +142,7 @@ func TestTypeGeneration(t *testing.T) { t.Run("External references", func(t *testing.T) { onlyVerifySyntax(func() { - factory := &sdk.WorkflowSpecFactory{} + factory := &workflows.WorkflowSpecFactory{} // assure the right type of action var trigger referenceaction.SomeOutputsCap @@ -151,7 +151,7 @@ func TestTypeGeneration(t *testing.T) { Number: 123, } trigger = config.New(factory, "reference", referenceaction.ActionInput{ - InputThing: sdk.CapDefinition[bool](nil), + InputThing: workflows.CapDefinition[bool](nil), }) _ = trigger @@ -163,7 +163,7 @@ func TestTypeGeneration(t *testing.T) { t.Run("Nested types work", func(t *testing.T) { onlyVerifySyntax(func() { - factory := &sdk.WorkflowSpecFactory{} + factory := &workflows.WorkflowSpecFactory{} // assure the right type of action var action nestedaction.ActionOutputsCap //nolint @@ -173,20 +173,20 @@ func TestTypeGeneration(t *testing.T) { Number: 123, }, }.New(factory, "reference", nestedaction.ActionInput{ - Metadata: sdk.CapDefinition[nestedaction.ActionInputsMetadata](nil), + Metadata: workflows.CapDefinition[nestedaction.ActionInputsMetadata](nil), }) // verify that the underlying interface is right - var _ sdk.CapDefinition[nestedaction.ActionOutputs] = action + var _ workflows.CapDefinition[nestedaction.ActionOutputs] = action // verify the types are correct var expectedOutput nestedaction.ActionOutputsResultsCap - var expectedOutputRaw sdk.CapDefinition[nestedaction.ActionOutputsResults] + var expectedOutputRaw workflows.CapDefinition[nestedaction.ActionOutputsResults] expectedOutput = action.Results() expectedOutputRaw = expectedOutput _ = expectedOutputRaw - var expectedUnderlyingFieldType sdk.CapDefinition[string] //nolint + var expectedUnderlyingFieldType workflows.CapDefinition[string] //nolint expectedUnderlyingFieldType = expectedOutput.AdaptedThing() _ = expectedUnderlyingFieldType }) @@ -194,17 +194,17 @@ func TestTypeGeneration(t *testing.T) { t.Run("Array types work", func(t *testing.T) { onlyVerifySyntax(func() { - factory := &sdk.WorkflowSpecFactory{} + factory := &workflows.WorkflowSpecFactory{} // assure the right type of action - var action sdk.CapDefinition[[]arrayaction.ActionOutputsElem] //nolint + var action workflows.CapDefinition[[]arrayaction.ActionOutputsElem] //nolint action = arrayaction.ActionConfig{ Details: arrayaction.ActionConfigDetails{ Name: "name", Number: 123, }, }.New(factory, "reference", arrayaction.ActionInput{ - Metadata: sdk.CapDefinition[arrayaction.ActionInputsMetadata](nil), + Metadata: workflows.CapDefinition[arrayaction.ActionInputsMetadata](nil), }) _ = action }) @@ -212,13 +212,13 @@ func TestTypeGeneration(t *testing.T) { t.Run("Creating a type from fields works", func(t *testing.T) { onlyVerifySyntax(func() { - factory := &sdk.WorkflowSpecFactory{} + factory := &workflows.WorkflowSpecFactory{} var action referenceaction.SomeOutputsCap //nolint action = referenceaction.SomeConfig{ Name: "anything", Number: 123, }.New(factory, "reference", referenceaction.ActionInput{ - InputThing: sdk.CapDefinition[bool](nil), + InputThing: workflows.CapDefinition[bool](nil), }) // verify the type is correct @@ -229,9 +229,9 @@ func TestTypeGeneration(t *testing.T) { }) t.Run("casing is respected from the json schema", func(t *testing.T) { - workflow := sdk.NewWorkflowSpecFactory(sdk.NewWorkflowParams{Owner: "owner", Name: "name"}) + workflow := workflows.NewWorkflowSpecFactory(workflows.NewWorkflowParams{Owner: "owner", Name: "name"}) ai := basicaction.ActionConfig{CamelCaseInSchemaForTesting: "foo", SnakeCaseInSchemaForTesting: 12}. - New(workflow, "ref", basicaction.ActionInput{InputThing: sdk.ConstantDefinition[bool](true)}) + New(workflow, "ref", basicaction.ActionInput{InputThing: workflows.ConstantDefinition[bool](true)}) spec, _ := workflow.Spec() require.Len(t, spec.Actions, 1) actual := spec.Actions[0] diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/arrayaction/action_builders_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/arrayaction/action_builders_generated.go index f5e449ad0..0126302bb 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/arrayaction/action_builders_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/arrayaction/action_builders_generated.go @@ -4,12 +4,12 @@ package arrayaction import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) -func (cfg ActionConfig) New(w *sdk.WorkflowSpecFactory, ref string, input ActionInput) sdk.CapDefinition[[]ActionOutputsElem] { +func (cfg ActionConfig) New(w *workflows.WorkflowSpecFactory, ref string, input ActionInput) workflows.CapDefinition[[]ActionOutputsElem] { - def := sdk.StepDefinition{ + def := workflows.StepDefinition{ ID: "array-test-action@1.0.0", Ref: ref, Inputs: input.ToSteps(), Config: map[string]any{ @@ -18,35 +18,35 @@ func (cfg ActionConfig) New(w *sdk.WorkflowSpecFactory, ref string, input Action CapabilityType: capabilities.CapabilityTypeAction, } - step := sdk.Step[[]ActionOutputsElem]{Definition: def} + step := workflows.Step[[]ActionOutputsElem]{Definition: def} return step.AddTo(w) } type ActionOutputsElemCap interface { - sdk.CapDefinition[ActionOutputsElem] + workflows.CapDefinition[ActionOutputsElem] Results() ActionOutputsElemResultsCap private() } // ActionOutputsElemCapFromStep should only be called from generated code to assure type safety -func ActionOutputsElemCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[ActionOutputsElem]) ActionOutputsElemCap { +func ActionOutputsElemCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[ActionOutputsElem]) ActionOutputsElemCap { raw := step.AddTo(w) return &actionOutputsElem{CapDefinition: raw} } type actionOutputsElem struct { - sdk.CapDefinition[ActionOutputsElem] + workflows.CapDefinition[ActionOutputsElem] } func (*actionOutputsElem) private() {} func (c *actionOutputsElem) Results() ActionOutputsElemResultsCap { - return &actionOutputsElemResults{CapDefinition: sdk.AccessField[ActionOutputsElem, ActionOutputsElemResults](c.CapDefinition, "results")} + return &actionOutputsElemResults{CapDefinition: workflows.AccessField[ActionOutputsElem, ActionOutputsElemResults](c.CapDefinition, "results")} } func NewActionOutputsElemFromFields( results ActionOutputsElemResultsCap) ActionOutputsElemCap { return &simpleActionOutputsElem{ - CapDefinition: sdk.ComponentCapDefinition[ActionOutputsElem]{ + CapDefinition: workflows.ComponentCapDefinition[ActionOutputsElem]{ "results": results.Ref(), }, results: results, @@ -54,7 +54,7 @@ func NewActionOutputsElemFromFields( } type simpleActionOutputsElem struct { - sdk.CapDefinition[ActionOutputsElem] + workflows.CapDefinition[ActionOutputsElem] results ActionOutputsElemResultsCap } @@ -65,30 +65,30 @@ func (c *simpleActionOutputsElem) Results() ActionOutputsElemResultsCap { func (c *simpleActionOutputsElem) private() {} type ActionOutputsElemResultsCap interface { - sdk.CapDefinition[ActionOutputsElemResults] - AdaptedThing() sdk.CapDefinition[string] + workflows.CapDefinition[ActionOutputsElemResults] + AdaptedThing() workflows.CapDefinition[string] private() } // ActionOutputsElemResultsCapFromStep should only be called from generated code to assure type safety -func ActionOutputsElemResultsCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[ActionOutputsElemResults]) ActionOutputsElemResultsCap { +func ActionOutputsElemResultsCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[ActionOutputsElemResults]) ActionOutputsElemResultsCap { raw := step.AddTo(w) return &actionOutputsElemResults{CapDefinition: raw} } type actionOutputsElemResults struct { - sdk.CapDefinition[ActionOutputsElemResults] + workflows.CapDefinition[ActionOutputsElemResults] } func (*actionOutputsElemResults) private() {} -func (c *actionOutputsElemResults) AdaptedThing() sdk.CapDefinition[string] { - return sdk.AccessField[ActionOutputsElemResults, string](c.CapDefinition, "adapted_thing") +func (c *actionOutputsElemResults) AdaptedThing() workflows.CapDefinition[string] { + return workflows.AccessField[ActionOutputsElemResults, string](c.CapDefinition, "adapted_thing") } func NewActionOutputsElemResultsFromFields( - adaptedThing sdk.CapDefinition[string]) ActionOutputsElemResultsCap { + adaptedThing workflows.CapDefinition[string]) ActionOutputsElemResultsCap { return &simpleActionOutputsElemResults{ - CapDefinition: sdk.ComponentCapDefinition[ActionOutputsElemResults]{ + CapDefinition: workflows.ComponentCapDefinition[ActionOutputsElemResults]{ "adapted_thing": adaptedThing.Ref(), }, adaptedThing: adaptedThing, @@ -96,22 +96,22 @@ func NewActionOutputsElemResultsFromFields( } type simpleActionOutputsElemResults struct { - sdk.CapDefinition[ActionOutputsElemResults] - adaptedThing sdk.CapDefinition[string] + workflows.CapDefinition[ActionOutputsElemResults] + adaptedThing workflows.CapDefinition[string] } -func (c *simpleActionOutputsElemResults) AdaptedThing() sdk.CapDefinition[string] { +func (c *simpleActionOutputsElemResults) AdaptedThing() workflows.CapDefinition[string] { return c.adaptedThing } func (c *simpleActionOutputsElemResults) private() {} type ActionInput struct { - Metadata sdk.CapDefinition[ActionInputsMetadata] + Metadata workflows.CapDefinition[ActionInputsMetadata] } -func (input ActionInput) ToSteps() sdk.StepInputs { - return sdk.StepInputs{ +func (input ActionInput) ToSteps() workflows.StepInputs { + return workflows.StepInputs{ Mapping: map[string]any{ "metadata": input.Metadata.Ref(), }, diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/arrayaction/arrayactiontest/action_mock_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/arrayaction/arrayactiontest/action_mock_generated.go index 0d0bdca66..d9d9ceb64 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/arrayaction/arrayactiontest/action_mock_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/arrayaction/arrayactiontest/action_mock_generated.go @@ -6,7 +6,7 @@ package arrayactiontest import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/arrayaction" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) // Action registers a new capability mock with the runner diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicaction/action_builders_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicaction/action_builders_generated.go index dc36bfd92..0215a806c 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicaction/action_builders_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicaction/action_builders_generated.go @@ -4,12 +4,12 @@ package basicaction import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) -func (cfg ActionConfig) New(w *sdk.WorkflowSpecFactory, ref string, input ActionInput) ActionOutputsCap { +func (cfg ActionConfig) New(w *workflows.WorkflowSpecFactory, ref string, input ActionInput) ActionOutputsCap { - def := sdk.StepDefinition{ + def := workflows.StepDefinition{ ID: "basic-test-action@1.0.0", Ref: ref, Inputs: input.ToSteps(), Config: map[string]any{ @@ -19,35 +19,35 @@ func (cfg ActionConfig) New(w *sdk.WorkflowSpecFactory, ref string, input Action CapabilityType: capabilities.CapabilityTypeAction, } - step := sdk.Step[ActionOutputs]{Definition: def} + step := workflows.Step[ActionOutputs]{Definition: def} return ActionOutputsCapFromStep(w, step) } type ActionOutputsCap interface { - sdk.CapDefinition[ActionOutputs] - AdaptedThing() sdk.CapDefinition[string] + workflows.CapDefinition[ActionOutputs] + AdaptedThing() workflows.CapDefinition[string] private() } // ActionOutputsCapFromStep should only be called from generated code to assure type safety -func ActionOutputsCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[ActionOutputs]) ActionOutputsCap { +func ActionOutputsCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[ActionOutputs]) ActionOutputsCap { raw := step.AddTo(w) return &actionOutputs{CapDefinition: raw} } type actionOutputs struct { - sdk.CapDefinition[ActionOutputs] + workflows.CapDefinition[ActionOutputs] } func (*actionOutputs) private() {} -func (c *actionOutputs) AdaptedThing() sdk.CapDefinition[string] { - return sdk.AccessField[ActionOutputs, string](c.CapDefinition, "adapted_thing") +func (c *actionOutputs) AdaptedThing() workflows.CapDefinition[string] { + return workflows.AccessField[ActionOutputs, string](c.CapDefinition, "adapted_thing") } func NewActionOutputsFromFields( - adaptedThing sdk.CapDefinition[string]) ActionOutputsCap { + adaptedThing workflows.CapDefinition[string]) ActionOutputsCap { return &simpleActionOutputs{ - CapDefinition: sdk.ComponentCapDefinition[ActionOutputs]{ + CapDefinition: workflows.ComponentCapDefinition[ActionOutputs]{ "adapted_thing": adaptedThing.Ref(), }, adaptedThing: adaptedThing, @@ -55,22 +55,22 @@ func NewActionOutputsFromFields( } type simpleActionOutputs struct { - sdk.CapDefinition[ActionOutputs] - adaptedThing sdk.CapDefinition[string] + workflows.CapDefinition[ActionOutputs] + adaptedThing workflows.CapDefinition[string] } -func (c *simpleActionOutputs) AdaptedThing() sdk.CapDefinition[string] { +func (c *simpleActionOutputs) AdaptedThing() workflows.CapDefinition[string] { return c.adaptedThing } func (c *simpleActionOutputs) private() {} type ActionInput struct { - InputThing sdk.CapDefinition[bool] + InputThing workflows.CapDefinition[bool] } -func (input ActionInput) ToSteps() sdk.StepInputs { - return sdk.StepInputs{ +func (input ActionInput) ToSteps() workflows.StepInputs { + return workflows.StepInputs{ Mapping: map[string]any{ "input_thing": input.InputThing.Ref(), }, diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicaction/basicactiontest/action_mock_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicaction/basicactiontest/action_mock_generated.go index cbb25bebb..398d2b82d 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicaction/basicactiontest/action_mock_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicaction/basicactiontest/action_mock_generated.go @@ -6,7 +6,7 @@ package basicactiontest import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicaction" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) // Action registers a new capability mock with the runner diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicconsensus/consensus_builders_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicconsensus/consensus_builders_generated.go index 938709be3..162c670ea 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicconsensus/consensus_builders_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basicconsensus/consensus_builders_generated.go @@ -4,12 +4,12 @@ package basicconsensus import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) -func (cfg ConsensusConfig) New(w *sdk.WorkflowSpecFactory, ref string, input ConsensusInput) ConsensusOutputsCap { +func (cfg ConsensusConfig) New(w *workflows.WorkflowSpecFactory, ref string, input ConsensusInput) ConsensusOutputsCap { - def := sdk.StepDefinition{ + def := workflows.StepDefinition{ ID: "basic-test-consensus@1.0.0", Ref: ref, Inputs: input.ToSteps(), Config: map[string]any{ @@ -19,40 +19,40 @@ func (cfg ConsensusConfig) New(w *sdk.WorkflowSpecFactory, ref string, input Con CapabilityType: capabilities.CapabilityTypeConsensus, } - step := sdk.Step[ConsensusOutputs]{Definition: def} + step := workflows.Step[ConsensusOutputs]{Definition: def} return ConsensusOutputsCapFromStep(w, step) } type ConsensusOutputsCap interface { - sdk.CapDefinition[ConsensusOutputs] - Consensus() sdk.CapDefinition[[]string] - Sigs() sdk.CapDefinition[[]string] + workflows.CapDefinition[ConsensusOutputs] + Consensus() workflows.CapDefinition[[]string] + Sigs() workflows.CapDefinition[[]string] private() } // ConsensusOutputsCapFromStep should only be called from generated code to assure type safety -func ConsensusOutputsCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[ConsensusOutputs]) ConsensusOutputsCap { +func ConsensusOutputsCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[ConsensusOutputs]) ConsensusOutputsCap { raw := step.AddTo(w) return &consensusOutputs{CapDefinition: raw} } type consensusOutputs struct { - sdk.CapDefinition[ConsensusOutputs] + workflows.CapDefinition[ConsensusOutputs] } func (*consensusOutputs) private() {} -func (c *consensusOutputs) Consensus() sdk.CapDefinition[[]string] { - return sdk.AccessField[ConsensusOutputs, []string](c.CapDefinition, "consensus") +func (c *consensusOutputs) Consensus() workflows.CapDefinition[[]string] { + return workflows.AccessField[ConsensusOutputs, []string](c.CapDefinition, "consensus") } -func (c *consensusOutputs) Sigs() sdk.CapDefinition[[]string] { - return sdk.AccessField[ConsensusOutputs, []string](c.CapDefinition, "sigs") +func (c *consensusOutputs) Sigs() workflows.CapDefinition[[]string] { + return workflows.AccessField[ConsensusOutputs, []string](c.CapDefinition, "sigs") } func NewConsensusOutputsFromFields( - consensus sdk.CapDefinition[[]string], - sigs sdk.CapDefinition[[]string]) ConsensusOutputsCap { + consensus workflows.CapDefinition[[]string], + sigs workflows.CapDefinition[[]string]) ConsensusOutputsCap { return &simpleConsensusOutputs{ - CapDefinition: sdk.ComponentCapDefinition[ConsensusOutputs]{ + CapDefinition: workflows.ComponentCapDefinition[ConsensusOutputs]{ "consensus": consensus.Ref(), "sigs": sigs.Ref(), }, @@ -62,26 +62,26 @@ func NewConsensusOutputsFromFields( } type simpleConsensusOutputs struct { - sdk.CapDefinition[ConsensusOutputs] - consensus sdk.CapDefinition[[]string] - sigs sdk.CapDefinition[[]string] + workflows.CapDefinition[ConsensusOutputs] + consensus workflows.CapDefinition[[]string] + sigs workflows.CapDefinition[[]string] } -func (c *simpleConsensusOutputs) Consensus() sdk.CapDefinition[[]string] { +func (c *simpleConsensusOutputs) Consensus() workflows.CapDefinition[[]string] { return c.consensus } -func (c *simpleConsensusOutputs) Sigs() sdk.CapDefinition[[]string] { +func (c *simpleConsensusOutputs) Sigs() workflows.CapDefinition[[]string] { return c.sigs } func (c *simpleConsensusOutputs) private() {} type ConsensusInput struct { - InputThing sdk.CapDefinition[bool] + InputThing workflows.CapDefinition[bool] } -func (input ConsensusInput) ToSteps() sdk.StepInputs { - return sdk.StepInputs{ +func (input ConsensusInput) ToSteps() workflows.StepInputs { + return workflows.StepInputs{ Mapping: map[string]any{ "input_thing": input.InputThing.Ref(), }, diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictarget/basictargettest/target_mock_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictarget/basictargettest/target_mock_generated.go index f863a8c89..aa674421f 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictarget/basictargettest/target_mock_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictarget/basictargettest/target_mock_generated.go @@ -6,7 +6,7 @@ package basictargettest import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictarget" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) // Target registers a new capability mock with the runner diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictarget/target_builders_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictarget/target_builders_generated.go index af7b01af8..b493f53e7 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictarget/target_builders_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictarget/target_builders_generated.go @@ -4,12 +4,12 @@ package basictarget import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) -func (cfg TargetConfig) New(w *sdk.WorkflowSpecFactory, input TargetInput) { +func (cfg TargetConfig) New(w *workflows.WorkflowSpecFactory, input TargetInput) { - def := sdk.StepDefinition{ + def := workflows.StepDefinition{ ID: "basic-test-target@1.0.0", Inputs: input.ToSteps(), Config: map[string]any{ @@ -19,16 +19,16 @@ func (cfg TargetConfig) New(w *sdk.WorkflowSpecFactory, input TargetInput) { CapabilityType: capabilities.CapabilityTypeTarget, } - step := sdk.Step[struct{}]{Definition: def} + step := workflows.Step[struct{}]{Definition: def} step.AddTo(w) } type TargetInput struct { - CoolInput sdk.CapDefinition[string] + CoolInput workflows.CapDefinition[string] } -func (input TargetInput) ToSteps() sdk.StepInputs { - return sdk.StepInputs{ +func (input TargetInput) ToSteps() workflows.StepInputs { + return workflows.StepInputs{ Mapping: map[string]any{ "cool_input": input.CoolInput.Ref(), }, diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger/basictriggertest/trigger_mock_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger/basictriggertest/trigger_mock_generated.go index 3a794e263..756a7e4f7 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger/basictriggertest/trigger_mock_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger/basictriggertest/trigger_mock_generated.go @@ -6,7 +6,7 @@ package basictriggertest import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) // Trigger registers a new capability mock with the runner diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger/trigger_builders_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger/trigger_builders_generated.go index 350408a3d..3b05924de 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger/trigger_builders_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger/trigger_builders_generated.go @@ -4,14 +4,14 @@ package basictrigger import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) -func (cfg TriggerConfig) New(w *sdk.WorkflowSpecFactory) TriggerOutputsCap { +func (cfg TriggerConfig) New(w *workflows.WorkflowSpecFactory) TriggerOutputsCap { ref := "trigger" - def := sdk.StepDefinition{ + def := workflows.StepDefinition{ ID: "basic-test-trigger@1.0.0", Ref: ref, - Inputs: sdk.StepInputs{}, + Inputs: workflows.StepInputs{}, Config: map[string]any{ "name": cfg.Name, "number": cfg.Number, @@ -19,35 +19,35 @@ func (cfg TriggerConfig) New(w *sdk.WorkflowSpecFactory) TriggerOutputsCap { CapabilityType: capabilities.CapabilityTypeTrigger, } - step := sdk.Step[TriggerOutputs]{Definition: def} + step := workflows.Step[TriggerOutputs]{Definition: def} return TriggerOutputsCapFromStep(w, step) } type TriggerOutputsCap interface { - sdk.CapDefinition[TriggerOutputs] - CoolOutput() sdk.CapDefinition[string] + workflows.CapDefinition[TriggerOutputs] + CoolOutput() workflows.CapDefinition[string] private() } // TriggerOutputsCapFromStep should only be called from generated code to assure type safety -func TriggerOutputsCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[TriggerOutputs]) TriggerOutputsCap { +func TriggerOutputsCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[TriggerOutputs]) TriggerOutputsCap { raw := step.AddTo(w) return &triggerOutputs{CapDefinition: raw} } type triggerOutputs struct { - sdk.CapDefinition[TriggerOutputs] + workflows.CapDefinition[TriggerOutputs] } func (*triggerOutputs) private() {} -func (c *triggerOutputs) CoolOutput() sdk.CapDefinition[string] { - return sdk.AccessField[TriggerOutputs, string](c.CapDefinition, "cool_output") +func (c *triggerOutputs) CoolOutput() workflows.CapDefinition[string] { + return workflows.AccessField[TriggerOutputs, string](c.CapDefinition, "cool_output") } func NewTriggerOutputsFromFields( - coolOutput sdk.CapDefinition[string]) TriggerOutputsCap { + coolOutput workflows.CapDefinition[string]) TriggerOutputsCap { return &simpleTriggerOutputs{ - CapDefinition: sdk.ComponentCapDefinition[TriggerOutputs]{ + CapDefinition: workflows.ComponentCapDefinition[TriggerOutputs]{ "cool_output": coolOutput.Ref(), }, coolOutput: coolOutput, @@ -55,11 +55,11 @@ func NewTriggerOutputsFromFields( } type simpleTriggerOutputs struct { - sdk.CapDefinition[TriggerOutputs] - coolOutput sdk.CapDefinition[string] + workflows.CapDefinition[TriggerOutputs] + coolOutput workflows.CapDefinition[string] } -func (c *simpleTriggerOutputs) CoolOutput() sdk.CapDefinition[string] { +func (c *simpleTriggerOutputs) CoolOutput() workflows.CapDefinition[string] { return c.coolOutput } diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/externalreferenceaction/action_builders_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/externalreferenceaction/action_builders_generated.go index 61a18d965..409e9c383 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/externalreferenceaction/action_builders_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/externalreferenceaction/action_builders_generated.go @@ -5,21 +5,21 @@ package externalreferenceaction import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" referenceaction "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) type SomeConfig referenceaction.SomeConfig -func (cfg SomeConfig) New(w *sdk.WorkflowSpecFactory, ref string, input ActionInput) referenceaction.SomeOutputsCap { +func (cfg SomeConfig) New(w *workflows.WorkflowSpecFactory, ref string, input ActionInput) referenceaction.SomeOutputsCap { - def := sdk.StepDefinition{ + def := workflows.StepDefinition{ ID: "external-reference-test-action@1.0.0", Ref: ref, Inputs: input.ToSteps(), Config: map[string]any{}, CapabilityType: capabilities.CapabilityTypeAction, } - step := sdk.Step[referenceaction.SomeOutputs]{Definition: def} + step := workflows.Step[referenceaction.SomeOutputs]{Definition: def} return referenceaction.SomeOutputsCapFromStep(w, step) } diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/externalreferenceaction/externalreferenceactiontest/action_mock_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/externalreferenceaction/externalreferenceactiontest/action_mock_generated.go index 37ff271fc..a5f4dc2cb 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/externalreferenceaction/externalreferenceactiontest/action_mock_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/externalreferenceaction/externalreferenceactiontest/action_mock_generated.go @@ -6,7 +6,7 @@ package externalreferenceactiontest import ( referenceaction "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) // Action registers a new capability mock with the runner diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/nestedaction/action_builders_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/nestedaction/action_builders_generated.go index f2d1d9731..5af6a2134 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/nestedaction/action_builders_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/nestedaction/action_builders_generated.go @@ -4,12 +4,12 @@ package nestedaction import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) -func (cfg ActionConfig) New(w *sdk.WorkflowSpecFactory, ref string, input ActionInput) ActionOutputsCap { +func (cfg ActionConfig) New(w *workflows.WorkflowSpecFactory, ref string, input ActionInput) ActionOutputsCap { - def := sdk.StepDefinition{ + def := workflows.StepDefinition{ ID: "nested-test-action@1.0.0", Ref: ref, Inputs: input.ToSteps(), Config: map[string]any{ @@ -18,35 +18,35 @@ func (cfg ActionConfig) New(w *sdk.WorkflowSpecFactory, ref string, input Action CapabilityType: capabilities.CapabilityTypeAction, } - step := sdk.Step[ActionOutputs]{Definition: def} + step := workflows.Step[ActionOutputs]{Definition: def} return ActionOutputsCapFromStep(w, step) } type ActionOutputsCap interface { - sdk.CapDefinition[ActionOutputs] + workflows.CapDefinition[ActionOutputs] Results() ActionOutputsResultsCap private() } // ActionOutputsCapFromStep should only be called from generated code to assure type safety -func ActionOutputsCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[ActionOutputs]) ActionOutputsCap { +func ActionOutputsCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[ActionOutputs]) ActionOutputsCap { raw := step.AddTo(w) return &actionOutputs{CapDefinition: raw} } type actionOutputs struct { - sdk.CapDefinition[ActionOutputs] + workflows.CapDefinition[ActionOutputs] } func (*actionOutputs) private() {} func (c *actionOutputs) Results() ActionOutputsResultsCap { - return &actionOutputsResults{CapDefinition: sdk.AccessField[ActionOutputs, ActionOutputsResults](c.CapDefinition, "results")} + return &actionOutputsResults{CapDefinition: workflows.AccessField[ActionOutputs, ActionOutputsResults](c.CapDefinition, "results")} } func NewActionOutputsFromFields( results ActionOutputsResultsCap) ActionOutputsCap { return &simpleActionOutputs{ - CapDefinition: sdk.ComponentCapDefinition[ActionOutputs]{ + CapDefinition: workflows.ComponentCapDefinition[ActionOutputs]{ "results": results.Ref(), }, results: results, @@ -54,7 +54,7 @@ func NewActionOutputsFromFields( } type simpleActionOutputs struct { - sdk.CapDefinition[ActionOutputs] + workflows.CapDefinition[ActionOutputs] results ActionOutputsResultsCap } @@ -65,30 +65,30 @@ func (c *simpleActionOutputs) Results() ActionOutputsResultsCap { func (c *simpleActionOutputs) private() {} type ActionOutputsResultsCap interface { - sdk.CapDefinition[ActionOutputsResults] - AdaptedThing() sdk.CapDefinition[string] + workflows.CapDefinition[ActionOutputsResults] + AdaptedThing() workflows.CapDefinition[string] private() } // ActionOutputsResultsCapFromStep should only be called from generated code to assure type safety -func ActionOutputsResultsCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[ActionOutputsResults]) ActionOutputsResultsCap { +func ActionOutputsResultsCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[ActionOutputsResults]) ActionOutputsResultsCap { raw := step.AddTo(w) return &actionOutputsResults{CapDefinition: raw} } type actionOutputsResults struct { - sdk.CapDefinition[ActionOutputsResults] + workflows.CapDefinition[ActionOutputsResults] } func (*actionOutputsResults) private() {} -func (c *actionOutputsResults) AdaptedThing() sdk.CapDefinition[string] { - return sdk.AccessField[ActionOutputsResults, string](c.CapDefinition, "adapted_thing") +func (c *actionOutputsResults) AdaptedThing() workflows.CapDefinition[string] { + return workflows.AccessField[ActionOutputsResults, string](c.CapDefinition, "adapted_thing") } func NewActionOutputsResultsFromFields( - adaptedThing sdk.CapDefinition[string]) ActionOutputsResultsCap { + adaptedThing workflows.CapDefinition[string]) ActionOutputsResultsCap { return &simpleActionOutputsResults{ - CapDefinition: sdk.ComponentCapDefinition[ActionOutputsResults]{ + CapDefinition: workflows.ComponentCapDefinition[ActionOutputsResults]{ "adapted_thing": adaptedThing.Ref(), }, adaptedThing: adaptedThing, @@ -96,22 +96,22 @@ func NewActionOutputsResultsFromFields( } type simpleActionOutputsResults struct { - sdk.CapDefinition[ActionOutputsResults] - adaptedThing sdk.CapDefinition[string] + workflows.CapDefinition[ActionOutputsResults] + adaptedThing workflows.CapDefinition[string] } -func (c *simpleActionOutputsResults) AdaptedThing() sdk.CapDefinition[string] { +func (c *simpleActionOutputsResults) AdaptedThing() workflows.CapDefinition[string] { return c.adaptedThing } func (c *simpleActionOutputsResults) private() {} type ActionInput struct { - Metadata sdk.CapDefinition[ActionInputsMetadata] + Metadata workflows.CapDefinition[ActionInputsMetadata] } -func (input ActionInput) ToSteps() sdk.StepInputs { - return sdk.StepInputs{ +func (input ActionInput) ToSteps() workflows.StepInputs { + return workflows.StepInputs{ Mapping: map[string]any{ "metadata": input.Metadata.Ref(), }, diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/nestedaction/nestedactiontest/action_mock_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/nestedaction/nestedactiontest/action_mock_generated.go index 6f609e604..62284004a 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/nestedaction/nestedactiontest/action_mock_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/nestedaction/nestedactiontest/action_mock_generated.go @@ -6,7 +6,7 @@ package nestedactiontest import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/nestedaction" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) // Action registers a new capability mock with the runner diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction/action_builders_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction/action_builders_generated.go index db2d9b59d..7d5628fb8 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction/action_builders_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction/action_builders_generated.go @@ -4,12 +4,12 @@ package referenceaction import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) -func (cfg SomeConfig) New(w *sdk.WorkflowSpecFactory, ref string, input ActionInput) SomeOutputsCap { +func (cfg SomeConfig) New(w *workflows.WorkflowSpecFactory, ref string, input ActionInput) SomeOutputsCap { - def := sdk.StepDefinition{ + def := workflows.StepDefinition{ ID: "reference-test-action@1.0.0", Ref: ref, Inputs: input.ToSteps(), Config: map[string]any{ @@ -19,35 +19,35 @@ func (cfg SomeConfig) New(w *sdk.WorkflowSpecFactory, ref string, input ActionIn CapabilityType: capabilities.CapabilityTypeAction, } - step := sdk.Step[SomeOutputs]{Definition: def} + step := workflows.Step[SomeOutputs]{Definition: def} return SomeOutputsCapFromStep(w, step) } type SomeOutputsCap interface { - sdk.CapDefinition[SomeOutputs] - AdaptedThing() sdk.CapDefinition[string] + workflows.CapDefinition[SomeOutputs] + AdaptedThing() workflows.CapDefinition[string] private() } // SomeOutputsCapFromStep should only be called from generated code to assure type safety -func SomeOutputsCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[SomeOutputs]) SomeOutputsCap { +func SomeOutputsCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[SomeOutputs]) SomeOutputsCap { raw := step.AddTo(w) return &someOutputs{CapDefinition: raw} } type someOutputs struct { - sdk.CapDefinition[SomeOutputs] + workflows.CapDefinition[SomeOutputs] } func (*someOutputs) private() {} -func (c *someOutputs) AdaptedThing() sdk.CapDefinition[string] { - return sdk.AccessField[SomeOutputs, string](c.CapDefinition, "adapted_thing") +func (c *someOutputs) AdaptedThing() workflows.CapDefinition[string] { + return workflows.AccessField[SomeOutputs, string](c.CapDefinition, "adapted_thing") } func NewSomeOutputsFromFields( - adaptedThing sdk.CapDefinition[string]) SomeOutputsCap { + adaptedThing workflows.CapDefinition[string]) SomeOutputsCap { return &simpleSomeOutputs{ - CapDefinition: sdk.ComponentCapDefinition[SomeOutputs]{ + CapDefinition: workflows.ComponentCapDefinition[SomeOutputs]{ "adapted_thing": adaptedThing.Ref(), }, adaptedThing: adaptedThing, @@ -55,22 +55,22 @@ func NewSomeOutputsFromFields( } type simpleSomeOutputs struct { - sdk.CapDefinition[SomeOutputs] - adaptedThing sdk.CapDefinition[string] + workflows.CapDefinition[SomeOutputs] + adaptedThing workflows.CapDefinition[string] } -func (c *simpleSomeOutputs) AdaptedThing() sdk.CapDefinition[string] { +func (c *simpleSomeOutputs) AdaptedThing() workflows.CapDefinition[string] { return c.adaptedThing } func (c *simpleSomeOutputs) private() {} type ActionInput struct { - InputThing sdk.CapDefinition[bool] + InputThing workflows.CapDefinition[bool] } -func (input ActionInput) ToSteps() sdk.StepInputs { - return sdk.StepInputs{ +func (input ActionInput) ToSteps() workflows.StepInputs { + return workflows.StepInputs{ Mapping: map[string]any{ "input_thing": input.InputThing.Ref(), }, diff --git a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction/referenceactiontest/action_mock_generated.go b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction/referenceactiontest/action_mock_generated.go index bc76ddef4..e78c60502 100644 --- a/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction/referenceactiontest/action_mock_generated.go +++ b/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction/referenceactiontest/action_mock_generated.go @@ -6,7 +6,7 @@ package referenceactiontest import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) // Action registers a new capability mock with the runner diff --git a/pkg/capabilities/consensus/ocr3/common_builders_generated.go b/pkg/capabilities/consensus/ocr3/common_builders_generated.go new file mode 100644 index 000000000..042bd808b --- /dev/null +++ b/pkg/capabilities/consensus/ocr3/common_builders_generated.go @@ -0,0 +1,88 @@ +// Code generated by github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli, DO NOT EDIT. + +package ocr3 + +import ( + "github.com/smartcontractkit/chainlink-common/pkg/workflows" +) + +type EncoderCap workflows.CapDefinition[Encoder] + +type EncoderConfigCap workflows.CapDefinition[EncoderConfig] + +type ReportIdCap workflows.CapDefinition[ReportId] + +type SignedReportCap interface { + workflows.CapDefinition[SignedReport] + Context() workflows.CapDefinition[[]uint8] + ID() workflows.CapDefinition[[]uint8] + Report() workflows.CapDefinition[[]uint8] + Signatures() workflows.CapDefinition[[][]uint8] + private() +} + +// SignedReportCapFromStep should only be called from generated code to assure type safety +func SignedReportCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[SignedReport]) SignedReportCap { + raw := step.AddTo(w) + return &signedReport{CapDefinition: raw} +} + +type signedReport struct { + workflows.CapDefinition[SignedReport] +} + +func (*signedReport) private() {} +func (c *signedReport) Context() workflows.CapDefinition[[]uint8] { + return workflows.AccessField[SignedReport, []uint8](c.CapDefinition, "Context") +} +func (c *signedReport) ID() workflows.CapDefinition[[]uint8] { + return workflows.AccessField[SignedReport, []uint8](c.CapDefinition, "ID") +} +func (c *signedReport) Report() workflows.CapDefinition[[]uint8] { + return workflows.AccessField[SignedReport, []uint8](c.CapDefinition, "Report") +} +func (c *signedReport) Signatures() workflows.CapDefinition[[][]uint8] { + return workflows.AccessField[SignedReport, [][]uint8](c.CapDefinition, "Signatures") +} + +func NewSignedReportFromFields( + context workflows.CapDefinition[[]uint8], + iD workflows.CapDefinition[[]uint8], + report workflows.CapDefinition[[]uint8], + signatures workflows.CapDefinition[[][]uint8]) SignedReportCap { + return &simpleSignedReport{ + CapDefinition: workflows.ComponentCapDefinition[SignedReport]{ + "Context": context.Ref(), + "ID": iD.Ref(), + "Report": report.Ref(), + "Signatures": signatures.Ref(), + }, + context: context, + iD: iD, + report: report, + signatures: signatures, + } +} + +type simpleSignedReport struct { + workflows.CapDefinition[SignedReport] + context workflows.CapDefinition[[]uint8] + iD workflows.CapDefinition[[]uint8] + report workflows.CapDefinition[[]uint8] + signatures workflows.CapDefinition[[][]uint8] +} + +func (c *simpleSignedReport) Context() workflows.CapDefinition[[]uint8] { + return c.context +} +func (c *simpleSignedReport) ID() workflows.CapDefinition[[]uint8] { + return c.iD +} +func (c *simpleSignedReport) Report() workflows.CapDefinition[[]uint8] { + return c.report +} +func (c *simpleSignedReport) Signatures() workflows.CapDefinition[[][]uint8] { + return c.signatures +} + +func (c *simpleSignedReport) private() {} diff --git a/pkg/capabilities/consensus/ocr3/data_feeds_consensus_builders_generated.go b/pkg/capabilities/consensus/ocr3/data_feeds_consensus_builders_generated.go new file mode 100644 index 000000000..abf26bdd1 --- /dev/null +++ b/pkg/capabilities/consensus/ocr3/data_feeds_consensus_builders_generated.go @@ -0,0 +1,104 @@ +// Code generated by github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli, DO NOT EDIT. + +package ocr3 + +import ( + "github.com/smartcontractkit/chainlink-common/pkg/capabilities" + streams "github.com/smartcontractkit/chainlink-common/pkg/capabilities/triggers/streams" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" +) + +func (cfg DataFeedsConsensusConfig) New(w *workflows.WorkflowSpecFactory, ref string, input DataFeedsConsensusInput) SignedReportCap { + + def := workflows.StepDefinition{ + ID: "offchain_reporting@1.0.0", Ref: ref, + Inputs: input.ToSteps(), + Config: map[string]any{ + "aggregation_config": cfg.AggregationConfig, + "aggregation_method": cfg.AggregationMethod, + "encoder": cfg.Encoder, + "encoder_config": cfg.EncoderConfig, + "report_id": cfg.ReportId, + }, + CapabilityType: capabilities.CapabilityTypeConsensus, + } + + step := workflows.Step[SignedReport]{Definition: def} + return SignedReportCapFromStep(w, step) +} + +type FeedValueCap interface { + workflows.CapDefinition[FeedValue] + Deviation() workflows.CapDefinition[string] + Heartbeat() workflows.CapDefinition[uint64] + RemappedID() workflows.CapDefinition[string] + private() +} + +// FeedValueCapFromStep should only be called from generated code to assure type safety +func FeedValueCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[FeedValue]) FeedValueCap { + raw := step.AddTo(w) + return &feedValue{CapDefinition: raw} +} + +type feedValue struct { + workflows.CapDefinition[FeedValue] +} + +func (*feedValue) private() {} +func (c *feedValue) Deviation() workflows.CapDefinition[string] { + return workflows.AccessField[FeedValue, string](c.CapDefinition, "deviation") +} +func (c *feedValue) Heartbeat() workflows.CapDefinition[uint64] { + return workflows.AccessField[FeedValue, uint64](c.CapDefinition, "heartbeat") +} +func (c *feedValue) RemappedID() workflows.CapDefinition[string] { + return workflows.AccessField[FeedValue, string](c.CapDefinition, "remappedID") +} + +func NewFeedValueFromFields( + deviation workflows.CapDefinition[string], + heartbeat workflows.CapDefinition[uint64], + remappedID workflows.CapDefinition[string]) FeedValueCap { + return &simpleFeedValue{ + CapDefinition: workflows.ComponentCapDefinition[FeedValue]{ + "deviation": deviation.Ref(), + "heartbeat": heartbeat.Ref(), + "remappedID": remappedID.Ref(), + }, + deviation: deviation, + heartbeat: heartbeat, + remappedID: remappedID, + } +} + +type simpleFeedValue struct { + workflows.CapDefinition[FeedValue] + deviation workflows.CapDefinition[string] + heartbeat workflows.CapDefinition[uint64] + remappedID workflows.CapDefinition[string] +} + +func (c *simpleFeedValue) Deviation() workflows.CapDefinition[string] { + return c.deviation +} +func (c *simpleFeedValue) Heartbeat() workflows.CapDefinition[uint64] { + return c.heartbeat +} +func (c *simpleFeedValue) RemappedID() workflows.CapDefinition[string] { + return c.remappedID +} + +func (c *simpleFeedValue) private() {} + +type DataFeedsConsensusInput struct { + Observations workflows.CapDefinition[[]streams.Feed] +} + +func (input DataFeedsConsensusInput) ToSteps() workflows.StepInputs { + return workflows.StepInputs{ + Mapping: map[string]any{ + "observations": input.Observations.Ref(), + }, + } +} diff --git a/pkg/capabilities/consensus/ocr3/ocr3cap/identical_consensus.go b/pkg/capabilities/consensus/ocr3/identical_consensus.go similarity index 65% rename from pkg/capabilities/consensus/ocr3/ocr3cap/identical_consensus.go rename to pkg/capabilities/consensus/ocr3/identical_consensus.go index dfa7ffe48..02d24a6d8 100644 --- a/pkg/capabilities/consensus/ocr3/ocr3cap/identical_consensus.go +++ b/pkg/capabilities/consensus/ocr3/identical_consensus.go @@ -1,8 +1,8 @@ -package ocr3cap +package ocr3 import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) // Note this isn't generated because generics isn't supported in json schema @@ -13,8 +13,8 @@ type IdenticalConsensusConfig[T any] struct { ReportID ReportId } -func (c IdenticalConsensusConfig[T]) New(w *sdk.WorkflowSpecFactory, ref string, input IdenticalConsensusInput[T]) SignedReportCap { - def := sdk.StepDefinition{ +func (c IdenticalConsensusConfig[T]) New(w *workflows.WorkflowSpecFactory, ref string, input IdenticalConsensusInput[T]) SignedReportCap { + def := workflows.StepDefinition{ ID: "offchain_reporting@1.0.0", Ref: ref, Inputs: input.ToSteps(), @@ -27,20 +27,20 @@ func (c IdenticalConsensusConfig[T]) New(w *sdk.WorkflowSpecFactory, ref string, CapabilityType: capabilities.CapabilityTypeConsensus, } - step := sdk.Step[SignedReport]{Definition: def} + step := workflows.Step[SignedReport]{Definition: def} return SignedReportCapFromStep(w, step) } type IdenticalConsensusInput[T any] struct { - Observations sdk.CapDefinition[T] + Observations workflows.CapDefinition[T] } type IdenticalConsensusMergedInput[T any] struct { Observations []T } -func (input IdenticalConsensusInput[T]) ToSteps() sdk.StepInputs { - return sdk.StepInputs{ +func (input IdenticalConsensusInput[T]) ToSteps() workflows.StepInputs { + return workflows.StepInputs{ Mapping: map[string]any{ "observations": input.Observations.Ref(), }, diff --git a/pkg/capabilities/consensus/ocr3/ocr3cap/identical_consensus_test.go b/pkg/capabilities/consensus/ocr3/identical_consensus_test.go similarity index 74% rename from pkg/capabilities/consensus/ocr3/ocr3cap/identical_consensus_test.go rename to pkg/capabilities/consensus/ocr3/identical_consensus_test.go index 89dc0df73..a0a5875f3 100644 --- a/pkg/capabilities/consensus/ocr3/ocr3cap/identical_consensus_test.go +++ b/pkg/capabilities/consensus/ocr3/identical_consensus_test.go @@ -1,4 +1,4 @@ -package ocr3cap_test +package ocr3_test import ( "testing" @@ -7,15 +7,15 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger" - ocr3 "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3cap" + "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3" "github.com/smartcontractkit/chainlink-common/pkg/capabilities/targets/chainwriter" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) func TestIdenticalConsensus(t *testing.T) { t.Parallel() - workflow := sdk.NewWorkflowSpecFactory(sdk.NewWorkflowParams{ + workflow := workflows.NewWorkflowSpecFactory(workflows.NewWorkflowParams{ Owner: "0x1234", Name: "Test", }) @@ -37,14 +37,14 @@ func TestIdenticalConsensus(t *testing.T) { actual, err := workflow.Spec() require.NoError(t, err) - expected := sdk.WorkflowSpec{ + expected := workflows.WorkflowSpec{ Name: "Test", Owner: "0x1234", - Triggers: []sdk.StepDefinition{ + Triggers: []workflows.StepDefinition{ { ID: "basic-test-trigger@1.0.0", Ref: "trigger", - Inputs: sdk.StepInputs{}, + Inputs: workflows.StepInputs{}, Config: map[string]any{ "name": "1234", "number": 1, @@ -52,12 +52,12 @@ func TestIdenticalConsensus(t *testing.T) { CapabilityType: capabilities.CapabilityTypeTrigger, }, }, - Actions: []sdk.StepDefinition{}, - Consensus: []sdk.StepDefinition{ + Actions: []workflows.StepDefinition{}, + Consensus: []workflows.StepDefinition{ { ID: "offchain_reporting@1.0.0", Ref: "consensus", - Inputs: sdk.StepInputs{Mapping: map[string]any{"observations": "$(trigger.outputs)"}}, + Inputs: workflows.StepInputs{Mapping: map[string]any{"observations": "$(trigger.outputs)"}}, Config: map[string]any{ "encoder": "EVM", "encoder_config": map[string]any{}, @@ -67,10 +67,10 @@ func TestIdenticalConsensus(t *testing.T) { CapabilityType: capabilities.CapabilityTypeConsensus, }, }, - Targets: []sdk.StepDefinition{ + Targets: []workflows.StepDefinition{ { ID: "chainwriter@1.0.0", - Inputs: sdk.StepInputs{ + Inputs: workflows.StepInputs{ Mapping: map[string]any{"signed_report": "$(consensus.outputs)"}, }, Config: map[string]any{ diff --git a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_common-schema.json b/pkg/capabilities/consensus/ocr3/ocr3_common-schema.json similarity index 96% rename from pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_common-schema.json rename to pkg/capabilities/consensus/ocr3/ocr3_common-schema.json index 280ba7e32..c414dc666 100644 --- a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_common-schema.json +++ b/pkg/capabilities/consensus/ocr3/ocr3_common-schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3cap/common", + "$id": "https://github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/common", "$defs": { "SignedReport": { "type": "object", diff --git a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_common_generated.go b/pkg/capabilities/consensus/ocr3/ocr3_common_generated.go similarity index 99% rename from pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_common_generated.go rename to pkg/capabilities/consensus/ocr3/ocr3_common_generated.go index b42fe1c9d..16abc7f5e 100644 --- a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_common_generated.go +++ b/pkg/capabilities/consensus/ocr3/ocr3_common_generated.go @@ -1,6 +1,6 @@ // Code generated by github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli, DO NOT EDIT. -package ocr3cap +package ocr3 import ( "encoding/json" diff --git a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_data_feeds_consensus-schema.json b/pkg/capabilities/consensus/ocr3/ocr3_data_feeds_consensus-schema.json similarity index 83% rename from pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_data_feeds_consensus-schema.json rename to pkg/capabilities/consensus/ocr3/ocr3_data_feeds_consensus-schema.json index d4809191a..561c76858 100644 --- a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_data_feeds_consensus-schema.json +++ b/pkg/capabilities/consensus/ocr3/ocr3_data_feeds_consensus-schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3cap/offchain_reporting@1.0.0", + "$id": "https://github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/offchain_reporting@1.0.0", "$defs": { "FeedValue": { "type": "object", @@ -48,7 +48,7 @@ "feeds": { "type": "object", "propertyNames": { - "$ref": "../../../triggers/streams/streams_trigger-schema.json#/$defs/feedId" + "$ref": "../../triggers/streams/streams_trigger-schema.json#/$defs/feedId" }, "additionalProperties": { "$ref": "#/$defs/FeedValue" @@ -62,13 +62,13 @@ ] }, "encoder": { - "$ref": "ocr3cap_common-schema.json#/$defs/encoder" + "$ref": "ocr3_common-schema.json#/$defs/encoder" }, "encoder_config": { - "$ref": "ocr3cap_common-schema.json#/$defs/encoder_config" + "$ref": "ocr3_common-schema.json#/$defs/encoder_config" }, "report_id": { - "$ref": "ocr3cap_common-schema.json#/$defs/report_id" + "$ref": "ocr3_common-schema.json#/$defs/report_id" } }, "additionalProperties": false, @@ -86,7 +86,7 @@ "observations": { "type": "array", "items": { - "$ref": "../../../triggers/streams/streams_trigger-schema.json#/$defs/Feed" + "$ref": "../../triggers/streams/streams_trigger-schema.json#/$defs/Feed" } } }, @@ -97,7 +97,7 @@ ] }, "outputs": { - "$ref": "ocr3cap_common-schema.json#/$defs/SignedReport" + "$ref": "ocr3_common-schema.json#/$defs/SignedReport" } }, "additionalProperties": false, diff --git a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_data_feeds_consensus_generated.go b/pkg/capabilities/consensus/ocr3/ocr3_data_feeds_consensus_generated.go similarity index 99% rename from pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_data_feeds_consensus_generated.go rename to pkg/capabilities/consensus/ocr3/ocr3_data_feeds_consensus_generated.go index a99eab52f..ccab84dc3 100644 --- a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3cap_data_feeds_consensus_generated.go +++ b/pkg/capabilities/consensus/ocr3/ocr3_data_feeds_consensus_generated.go @@ -1,6 +1,6 @@ // Code generated by github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli, DO NOT EDIT. -package ocr3cap +package ocr3 import ( "encoding/json" diff --git a/pkg/capabilities/consensus/ocr3/ocr3cap/common_builders_generated.go b/pkg/capabilities/consensus/ocr3/ocr3cap/common_builders_generated.go deleted file mode 100644 index 1132816b6..000000000 --- a/pkg/capabilities/consensus/ocr3/ocr3cap/common_builders_generated.go +++ /dev/null @@ -1,88 +0,0 @@ -// Code generated by github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli, DO NOT EDIT. - -package ocr3cap - -import ( - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" -) - -type EncoderCap sdk.CapDefinition[Encoder] - -type EncoderConfigCap sdk.CapDefinition[EncoderConfig] - -type ReportIdCap sdk.CapDefinition[ReportId] - -type SignedReportCap interface { - sdk.CapDefinition[SignedReport] - Context() sdk.CapDefinition[[]uint8] - ID() sdk.CapDefinition[[]uint8] - Report() sdk.CapDefinition[[]uint8] - Signatures() sdk.CapDefinition[[][]uint8] - private() -} - -// SignedReportCapFromStep should only be called from generated code to assure type safety -func SignedReportCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[SignedReport]) SignedReportCap { - raw := step.AddTo(w) - return &signedReport{CapDefinition: raw} -} - -type signedReport struct { - sdk.CapDefinition[SignedReport] -} - -func (*signedReport) private() {} -func (c *signedReport) Context() sdk.CapDefinition[[]uint8] { - return sdk.AccessField[SignedReport, []uint8](c.CapDefinition, "Context") -} -func (c *signedReport) ID() sdk.CapDefinition[[]uint8] { - return sdk.AccessField[SignedReport, []uint8](c.CapDefinition, "ID") -} -func (c *signedReport) Report() sdk.CapDefinition[[]uint8] { - return sdk.AccessField[SignedReport, []uint8](c.CapDefinition, "Report") -} -func (c *signedReport) Signatures() sdk.CapDefinition[[][]uint8] { - return sdk.AccessField[SignedReport, [][]uint8](c.CapDefinition, "Signatures") -} - -func NewSignedReportFromFields( - context sdk.CapDefinition[[]uint8], - iD sdk.CapDefinition[[]uint8], - report sdk.CapDefinition[[]uint8], - signatures sdk.CapDefinition[[][]uint8]) SignedReportCap { - return &simpleSignedReport{ - CapDefinition: sdk.ComponentCapDefinition[SignedReport]{ - "Context": context.Ref(), - "ID": iD.Ref(), - "Report": report.Ref(), - "Signatures": signatures.Ref(), - }, - context: context, - iD: iD, - report: report, - signatures: signatures, - } -} - -type simpleSignedReport struct { - sdk.CapDefinition[SignedReport] - context sdk.CapDefinition[[]uint8] - iD sdk.CapDefinition[[]uint8] - report sdk.CapDefinition[[]uint8] - signatures sdk.CapDefinition[[][]uint8] -} - -func (c *simpleSignedReport) Context() sdk.CapDefinition[[]uint8] { - return c.context -} -func (c *simpleSignedReport) ID() sdk.CapDefinition[[]uint8] { - return c.iD -} -func (c *simpleSignedReport) Report() sdk.CapDefinition[[]uint8] { - return c.report -} -func (c *simpleSignedReport) Signatures() sdk.CapDefinition[[][]uint8] { - return c.signatures -} - -func (c *simpleSignedReport) private() {} diff --git a/pkg/capabilities/consensus/ocr3/ocr3cap/data_feeds_consensus_builders_generated.go b/pkg/capabilities/consensus/ocr3/ocr3cap/data_feeds_consensus_builders_generated.go deleted file mode 100644 index 1fbcb7534..000000000 --- a/pkg/capabilities/consensus/ocr3/ocr3cap/data_feeds_consensus_builders_generated.go +++ /dev/null @@ -1,104 +0,0 @@ -// Code generated by github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli, DO NOT EDIT. - -package ocr3cap - -import ( - "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - streams "github.com/smartcontractkit/chainlink-common/pkg/capabilities/triggers/streams" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" -) - -func (cfg DataFeedsConsensusConfig) New(w *sdk.WorkflowSpecFactory, ref string, input DataFeedsConsensusInput) SignedReportCap { - - def := sdk.StepDefinition{ - ID: "offchain_reporting@1.0.0", Ref: ref, - Inputs: input.ToSteps(), - Config: map[string]any{ - "aggregation_config": cfg.AggregationConfig, - "aggregation_method": cfg.AggregationMethod, - "encoder": cfg.Encoder, - "encoder_config": cfg.EncoderConfig, - "report_id": cfg.ReportId, - }, - CapabilityType: capabilities.CapabilityTypeConsensus, - } - - step := sdk.Step[SignedReport]{Definition: def} - return SignedReportCapFromStep(w, step) -} - -type FeedValueCap interface { - sdk.CapDefinition[FeedValue] - Deviation() sdk.CapDefinition[string] - Heartbeat() sdk.CapDefinition[uint64] - RemappedID() sdk.CapDefinition[string] - private() -} - -// FeedValueCapFromStep should only be called from generated code to assure type safety -func FeedValueCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[FeedValue]) FeedValueCap { - raw := step.AddTo(w) - return &feedValue{CapDefinition: raw} -} - -type feedValue struct { - sdk.CapDefinition[FeedValue] -} - -func (*feedValue) private() {} -func (c *feedValue) Deviation() sdk.CapDefinition[string] { - return sdk.AccessField[FeedValue, string](c.CapDefinition, "deviation") -} -func (c *feedValue) Heartbeat() sdk.CapDefinition[uint64] { - return sdk.AccessField[FeedValue, uint64](c.CapDefinition, "heartbeat") -} -func (c *feedValue) RemappedID() sdk.CapDefinition[string] { - return sdk.AccessField[FeedValue, string](c.CapDefinition, "remappedID") -} - -func NewFeedValueFromFields( - deviation sdk.CapDefinition[string], - heartbeat sdk.CapDefinition[uint64], - remappedID sdk.CapDefinition[string]) FeedValueCap { - return &simpleFeedValue{ - CapDefinition: sdk.ComponentCapDefinition[FeedValue]{ - "deviation": deviation.Ref(), - "heartbeat": heartbeat.Ref(), - "remappedID": remappedID.Ref(), - }, - deviation: deviation, - heartbeat: heartbeat, - remappedID: remappedID, - } -} - -type simpleFeedValue struct { - sdk.CapDefinition[FeedValue] - deviation sdk.CapDefinition[string] - heartbeat sdk.CapDefinition[uint64] - remappedID sdk.CapDefinition[string] -} - -func (c *simpleFeedValue) Deviation() sdk.CapDefinition[string] { - return c.deviation -} -func (c *simpleFeedValue) Heartbeat() sdk.CapDefinition[uint64] { - return c.heartbeat -} -func (c *simpleFeedValue) RemappedID() sdk.CapDefinition[string] { - return c.remappedID -} - -func (c *simpleFeedValue) private() {} - -type DataFeedsConsensusInput struct { - Observations sdk.CapDefinition[[]streams.Feed] -} - -func (input DataFeedsConsensusInput) ToSteps() sdk.StepInputs { - return sdk.StepInputs{ - Mapping: map[string]any{ - "observations": input.Observations.Ref(), - }, - } -} diff --git a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3captest/identical_consensus.go b/pkg/capabilities/consensus/ocr3/ocr3test/identical_consensus.go similarity index 76% rename from pkg/capabilities/consensus/ocr3/ocr3cap/ocr3captest/identical_consensus.go rename to pkg/capabilities/consensus/ocr3/ocr3test/identical_consensus.go index 2c89e1bad..e2cc82105 100644 --- a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3captest/identical_consensus.go +++ b/pkg/capabilities/consensus/ocr3/ocr3test/identical_consensus.go @@ -1,21 +1,21 @@ -package ocr3captest +package ocr3test import ( "errors" "google.golang.org/protobuf/proto" - "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3cap" + "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3" "github.com/smartcontractkit/chainlink-common/pkg/values" "github.com/smartcontractkit/chainlink-common/pkg/values/pb" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) // IdenticalConsensus registers a new capability mock with the runner // If a step is explicitly mocked by another mock, that will take priority over this one for that step. func IdenticalConsensus[T any](runner *testutils.Runner) *IdenticalConsensusMock[T] { consensus := &IdenticalConsensusMock[T]{ - Mock: testutils.MockCapability[ConsensusInput[T], ocr3cap.SignedReport]("offchain_reporting@1.0.0", identicalConsensus[T]), + Mock: testutils.MockCapability[ConsensusInput[T], ocr3.SignedReport]("offchain_reporting@1.0.0", identicalConsensus[T]), } runner.MockCapability(consensus.ID(), nil, consensus) return consensus @@ -25,30 +25,30 @@ func IdenticalConsensus[T any](runner *testutils.Runner) *IdenticalConsensusMock // if another mock was registered for the same capability without a step, this mock will take priority for that step. func IdenticalConsensusForStep[T any](runner *testutils.Runner, step string) *IdenticalConsensusMock[T] { consensus := &IdenticalConsensusMock[T]{ - Mock: testutils.MockCapability[ConsensusInput[T], ocr3cap.SignedReport]("offchain_reporting@1.0.0", identicalConsensus[T]), + Mock: testutils.MockCapability[ConsensusInput[T], ocr3.SignedReport]("offchain_reporting@1.0.0", identicalConsensus[T]), } runner.MockCapability(consensus.ID(), &step, consensus) return consensus } -func identicalConsensus[T any](inputs ConsensusInput[T]) (ocr3cap.SignedReport, error) { +func identicalConsensus[T any](inputs ConsensusInput[T]) (ocr3.SignedReport, error) { if len(inputs.Observations) == 0 { - return ocr3cap.SignedReport{}, errors.New("no observations were made") + return ocr3.SignedReport{}, errors.New("no observations were made") } else if len(inputs.Observations) > 1 { - return ocr3cap.SignedReport{}, errors.New("more than one observation was made, but this mock isn't set up to support that") + return ocr3.SignedReport{}, errors.New("more than one observation was made, but this mock isn't set up to support that") } wrapped, err := values.Wrap(inputs.Observations[0]) if err != nil { - return ocr3cap.SignedReport{}, err + return ocr3.SignedReport{}, err } bytes, err := proto.Marshal(values.Proto(wrapped)) if err != nil { - return ocr3cap.SignedReport{}, err + return ocr3.SignedReport{}, err } - return ocr3cap.SignedReport{ + return ocr3.SignedReport{ Context: []byte("this is a test"), ID: []byte("12"), Report: bytes, @@ -60,7 +60,7 @@ func identicalConsensus[T any](inputs ConsensusInput[T]) (ocr3cap.SignedReport, // Note that the mock ignores the encoding and it's config, only validating that they conform to the schema // The mock will encode the single value using values.Value and signatures will be random bytes type IdenticalConsensusMock[T any] struct { - *testutils.Mock[ConsensusInput[T], ocr3cap.SignedReport] + *testutils.Mock[ConsensusInput[T], ocr3.SignedReport] } var _ testutils.ConsensusMock = &IdenticalConsensusMock[struct{}]{} diff --git a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3captest/observations.go b/pkg/capabilities/consensus/ocr3/ocr3test/observations.go similarity index 85% rename from pkg/capabilities/consensus/ocr3/ocr3cap/ocr3captest/observations.go rename to pkg/capabilities/consensus/ocr3/ocr3test/observations.go index a106b5a44..7dbe8bc89 100644 --- a/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3captest/observations.go +++ b/pkg/capabilities/consensus/ocr3/ocr3test/observations.go @@ -1,4 +1,4 @@ -package ocr3captest +package ocr3test type ConsensusInput[T any] struct { Observations []T diff --git a/pkg/capabilities/monitoring.go b/pkg/capabilities/monitoring.go index ab8dc0c4a..4d28319f9 100644 --- a/pkg/capabilities/monitoring.go +++ b/pkg/capabilities/monitoring.go @@ -1,5 +1,3 @@ -//go:build !wasip1 - package capabilities import ( diff --git a/pkg/capabilities/targets/chainwriter/chainwriter_target-schema.json b/pkg/capabilities/targets/chainwriter/chainwriter_target-schema.json index 4ac8d3db3..2644c400c 100644 --- a/pkg/capabilities/targets/chainwriter/chainwriter_target-schema.json +++ b/pkg/capabilities/targets/chainwriter/chainwriter_target-schema.json @@ -31,7 +31,7 @@ "inputs": { "properties": { "signed_report": { - "$ref": "../../consensus/ocr3/ocr3cap/ocr3cap_common-schema.json#/$defs/SignedReport" + "$ref": "../../consensus/ocr3/ocr3_common-schema.json#/$defs/SignedReport" } }, "additionalProperties": false, diff --git a/pkg/capabilities/targets/chainwriter/chainwriter_target_generated.go b/pkg/capabilities/targets/chainwriter/chainwriter_target_generated.go index d0f749ca8..351fca9d3 100644 --- a/pkg/capabilities/targets/chainwriter/chainwriter_target_generated.go +++ b/pkg/capabilities/targets/chainwriter/chainwriter_target_generated.go @@ -9,7 +9,7 @@ import ( "reflect" "regexp" - ocr3cap "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3cap" + ocr3 "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3" ) // Writes to a blockchain @@ -92,7 +92,7 @@ func (j *TargetConfig) UnmarshalJSON(b []byte) error { type TargetInputs struct { // SignedReport corresponds to the JSON schema field "signed_report". - SignedReport ocr3cap.SignedReport `json:"signed_report" yaml:"signed_report" mapstructure:"signed_report"` + SignedReport ocr3.SignedReport `json:"signed_report" yaml:"signed_report" mapstructure:"signed_report"` } // UnmarshalJSON implements json.Unmarshaler. diff --git a/pkg/capabilities/targets/chainwriter/chainwritertest/target_mock_generated.go b/pkg/capabilities/targets/chainwriter/chainwritertest/target_mock_generated.go index c918d7f59..7fe5424ba 100644 --- a/pkg/capabilities/targets/chainwriter/chainwritertest/target_mock_generated.go +++ b/pkg/capabilities/targets/chainwriter/chainwritertest/target_mock_generated.go @@ -6,7 +6,7 @@ package chainwritertest import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/targets/chainwriter" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) // Target registers a new capability mock with the runner diff --git a/pkg/capabilities/targets/chainwriter/target_builders_generated.go b/pkg/capabilities/targets/chainwriter/target_builders_generated.go index 71f7db1dd..c57350f38 100644 --- a/pkg/capabilities/targets/chainwriter/target_builders_generated.go +++ b/pkg/capabilities/targets/chainwriter/target_builders_generated.go @@ -4,13 +4,13 @@ package chainwriter import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - ocr3cap "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3cap" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + ocr3 "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) -func (cfg TargetConfig) New(w *sdk.WorkflowSpecFactory, id string, input TargetInput) { +func (cfg TargetConfig) New(w *workflows.WorkflowSpecFactory, id string, input TargetInput) { - def := sdk.StepDefinition{ + def := workflows.StepDefinition{ ID: id, Inputs: input.ToSteps(), Config: map[string]any{ @@ -21,16 +21,16 @@ func (cfg TargetConfig) New(w *sdk.WorkflowSpecFactory, id string, input TargetI CapabilityType: capabilities.CapabilityTypeTarget, } - step := sdk.Step[struct{}]{Definition: def} + step := workflows.Step[struct{}]{Definition: def} step.AddTo(w) } type TargetInput struct { - SignedReport sdk.CapDefinition[ocr3cap.SignedReport] + SignedReport workflows.CapDefinition[ocr3.SignedReport] } -func (input TargetInput) ToSteps() sdk.StepInputs { - return sdk.StepInputs{ +func (input TargetInput) ToSteps() workflows.StepInputs { + return workflows.StepInputs{ Mapping: map[string]any{ "signed_report": input.SignedReport.Ref(), }, diff --git a/pkg/capabilities/triggers/streams/streamstest/trigger_mock_generated.go b/pkg/capabilities/triggers/streams/streamstest/trigger_mock_generated.go index f3223d979..2158b1d8a 100644 --- a/pkg/capabilities/triggers/streams/streamstest/trigger_mock_generated.go +++ b/pkg/capabilities/triggers/streams/streamstest/trigger_mock_generated.go @@ -6,7 +6,7 @@ package streamstest import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/triggers/streams" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) // Trigger registers a new capability mock with the runner diff --git a/pkg/capabilities/triggers/streams/trigger_builders_generated.go b/pkg/capabilities/triggers/streams/trigger_builders_generated.go index 677c2a6f6..63ef04abd 100644 --- a/pkg/capabilities/triggers/streams/trigger_builders_generated.go +++ b/pkg/capabilities/triggers/streams/trigger_builders_generated.go @@ -4,14 +4,14 @@ package streams import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) -func (cfg TriggerConfig) New(w *sdk.WorkflowSpecFactory) FeedCap { +func (cfg TriggerConfig) New(w *workflows.WorkflowSpecFactory) FeedCap { ref := "trigger" - def := sdk.StepDefinition{ + def := workflows.StepDefinition{ ID: "streams-trigger@1.0.0", Ref: ref, - Inputs: sdk.StepInputs{}, + Inputs: workflows.StepInputs{}, Config: map[string]any{ "feedIds": cfg.FeedIds, "maxFrequencyMs": cfg.MaxFrequencyMs, @@ -19,45 +19,45 @@ func (cfg TriggerConfig) New(w *sdk.WorkflowSpecFactory) FeedCap { CapabilityType: capabilities.CapabilityTypeTrigger, } - step := sdk.Step[Feed]{Definition: def} + step := workflows.Step[Feed]{Definition: def} return FeedCapFromStep(w, step) } type FeedCap interface { - sdk.CapDefinition[Feed] + workflows.CapDefinition[Feed] Metadata() SignersMetadataCap - Payload() sdk.CapDefinition[[]FeedReport] - Timestamp() sdk.CapDefinition[int64] + Payload() workflows.CapDefinition[[]FeedReport] + Timestamp() workflows.CapDefinition[int64] private() } // FeedCapFromStep should only be called from generated code to assure type safety -func FeedCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[Feed]) FeedCap { +func FeedCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[Feed]) FeedCap { raw := step.AddTo(w) return &feed{CapDefinition: raw} } type feed struct { - sdk.CapDefinition[Feed] + workflows.CapDefinition[Feed] } func (*feed) private() {} func (c *feed) Metadata() SignersMetadataCap { - return &signersMetadata{CapDefinition: sdk.AccessField[Feed, SignersMetadata](c.CapDefinition, "Metadata")} + return &signersMetadata{CapDefinition: workflows.AccessField[Feed, SignersMetadata](c.CapDefinition, "Metadata")} } -func (c *feed) Payload() sdk.CapDefinition[[]FeedReport] { - return sdk.AccessField[Feed, []FeedReport](c.CapDefinition, "Payload") +func (c *feed) Payload() workflows.CapDefinition[[]FeedReport] { + return workflows.AccessField[Feed, []FeedReport](c.CapDefinition, "Payload") } -func (c *feed) Timestamp() sdk.CapDefinition[int64] { - return sdk.AccessField[Feed, int64](c.CapDefinition, "Timestamp") +func (c *feed) Timestamp() workflows.CapDefinition[int64] { + return workflows.AccessField[Feed, int64](c.CapDefinition, "Timestamp") } func NewFeedFromFields( metadata SignersMetadataCap, - payload sdk.CapDefinition[[]FeedReport], - timestamp sdk.CapDefinition[int64]) FeedCap { + payload workflows.CapDefinition[[]FeedReport], + timestamp workflows.CapDefinition[int64]) FeedCap { return &simpleFeed{ - CapDefinition: sdk.ComponentCapDefinition[Feed]{ + CapDefinition: workflows.ComponentCapDefinition[Feed]{ "Metadata": metadata.Ref(), "Payload": payload.Ref(), "Timestamp": timestamp.Ref(), @@ -69,76 +69,76 @@ func NewFeedFromFields( } type simpleFeed struct { - sdk.CapDefinition[Feed] + workflows.CapDefinition[Feed] metadata SignersMetadataCap - payload sdk.CapDefinition[[]FeedReport] - timestamp sdk.CapDefinition[int64] + payload workflows.CapDefinition[[]FeedReport] + timestamp workflows.CapDefinition[int64] } func (c *simpleFeed) Metadata() SignersMetadataCap { return c.metadata } -func (c *simpleFeed) Payload() sdk.CapDefinition[[]FeedReport] { +func (c *simpleFeed) Payload() workflows.CapDefinition[[]FeedReport] { return c.payload } -func (c *simpleFeed) Timestamp() sdk.CapDefinition[int64] { +func (c *simpleFeed) Timestamp() workflows.CapDefinition[int64] { return c.timestamp } func (c *simpleFeed) private() {} -type FeedIdCap sdk.CapDefinition[FeedId] +type FeedIdCap workflows.CapDefinition[FeedId] type FeedReportCap interface { - sdk.CapDefinition[FeedReport] - BenchmarkPrice() sdk.CapDefinition[[]uint8] + workflows.CapDefinition[FeedReport] + BenchmarkPrice() workflows.CapDefinition[[]uint8] FeedID() FeedIdCap - FullReport() sdk.CapDefinition[[]uint8] - ObservationTimestamp() sdk.CapDefinition[int64] - ReportContext() sdk.CapDefinition[[]uint8] - Signatures() sdk.CapDefinition[[][]uint8] + FullReport() workflows.CapDefinition[[]uint8] + ObservationTimestamp() workflows.CapDefinition[int64] + ReportContext() workflows.CapDefinition[[]uint8] + Signatures() workflows.CapDefinition[[][]uint8] private() } // FeedReportCapFromStep should only be called from generated code to assure type safety -func FeedReportCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[FeedReport]) FeedReportCap { +func FeedReportCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[FeedReport]) FeedReportCap { raw := step.AddTo(w) return &feedReport{CapDefinition: raw} } type feedReport struct { - sdk.CapDefinition[FeedReport] + workflows.CapDefinition[FeedReport] } func (*feedReport) private() {} -func (c *feedReport) BenchmarkPrice() sdk.CapDefinition[[]uint8] { - return sdk.AccessField[FeedReport, []uint8](c.CapDefinition, "BenchmarkPrice") +func (c *feedReport) BenchmarkPrice() workflows.CapDefinition[[]uint8] { + return workflows.AccessField[FeedReport, []uint8](c.CapDefinition, "BenchmarkPrice") } func (c *feedReport) FeedID() FeedIdCap { - return FeedIdCap(sdk.AccessField[FeedReport, FeedId](c.CapDefinition, "FeedID")) + return FeedIdCap(workflows.AccessField[FeedReport, FeedId](c.CapDefinition, "FeedID")) } -func (c *feedReport) FullReport() sdk.CapDefinition[[]uint8] { - return sdk.AccessField[FeedReport, []uint8](c.CapDefinition, "FullReport") +func (c *feedReport) FullReport() workflows.CapDefinition[[]uint8] { + return workflows.AccessField[FeedReport, []uint8](c.CapDefinition, "FullReport") } -func (c *feedReport) ObservationTimestamp() sdk.CapDefinition[int64] { - return sdk.AccessField[FeedReport, int64](c.CapDefinition, "ObservationTimestamp") +func (c *feedReport) ObservationTimestamp() workflows.CapDefinition[int64] { + return workflows.AccessField[FeedReport, int64](c.CapDefinition, "ObservationTimestamp") } -func (c *feedReport) ReportContext() sdk.CapDefinition[[]uint8] { - return sdk.AccessField[FeedReport, []uint8](c.CapDefinition, "ReportContext") +func (c *feedReport) ReportContext() workflows.CapDefinition[[]uint8] { + return workflows.AccessField[FeedReport, []uint8](c.CapDefinition, "ReportContext") } -func (c *feedReport) Signatures() sdk.CapDefinition[[][]uint8] { - return sdk.AccessField[FeedReport, [][]uint8](c.CapDefinition, "Signatures") +func (c *feedReport) Signatures() workflows.CapDefinition[[][]uint8] { + return workflows.AccessField[FeedReport, [][]uint8](c.CapDefinition, "Signatures") } func NewFeedReportFromFields( - benchmarkPrice sdk.CapDefinition[[]uint8], + benchmarkPrice workflows.CapDefinition[[]uint8], feedID FeedIdCap, - fullReport sdk.CapDefinition[[]uint8], - observationTimestamp sdk.CapDefinition[int64], - reportContext sdk.CapDefinition[[]uint8], - signatures sdk.CapDefinition[[][]uint8]) FeedReportCap { + fullReport workflows.CapDefinition[[]uint8], + observationTimestamp workflows.CapDefinition[int64], + reportContext workflows.CapDefinition[[]uint8], + signatures workflows.CapDefinition[[][]uint8]) FeedReportCap { return &simpleFeedReport{ - CapDefinition: sdk.ComponentCapDefinition[FeedReport]{ + CapDefinition: workflows.ComponentCapDefinition[FeedReport]{ "BenchmarkPrice": benchmarkPrice.Ref(), "FeedID": feedID.Ref(), "FullReport": fullReport.Ref(), @@ -156,66 +156,66 @@ func NewFeedReportFromFields( } type simpleFeedReport struct { - sdk.CapDefinition[FeedReport] - benchmarkPrice sdk.CapDefinition[[]uint8] + workflows.CapDefinition[FeedReport] + benchmarkPrice workflows.CapDefinition[[]uint8] feedID FeedIdCap - fullReport sdk.CapDefinition[[]uint8] - observationTimestamp sdk.CapDefinition[int64] - reportContext sdk.CapDefinition[[]uint8] - signatures sdk.CapDefinition[[][]uint8] + fullReport workflows.CapDefinition[[]uint8] + observationTimestamp workflows.CapDefinition[int64] + reportContext workflows.CapDefinition[[]uint8] + signatures workflows.CapDefinition[[][]uint8] } -func (c *simpleFeedReport) BenchmarkPrice() sdk.CapDefinition[[]uint8] { +func (c *simpleFeedReport) BenchmarkPrice() workflows.CapDefinition[[]uint8] { return c.benchmarkPrice } func (c *simpleFeedReport) FeedID() FeedIdCap { return c.feedID } -func (c *simpleFeedReport) FullReport() sdk.CapDefinition[[]uint8] { +func (c *simpleFeedReport) FullReport() workflows.CapDefinition[[]uint8] { return c.fullReport } -func (c *simpleFeedReport) ObservationTimestamp() sdk.CapDefinition[int64] { +func (c *simpleFeedReport) ObservationTimestamp() workflows.CapDefinition[int64] { return c.observationTimestamp } -func (c *simpleFeedReport) ReportContext() sdk.CapDefinition[[]uint8] { +func (c *simpleFeedReport) ReportContext() workflows.CapDefinition[[]uint8] { return c.reportContext } -func (c *simpleFeedReport) Signatures() sdk.CapDefinition[[][]uint8] { +func (c *simpleFeedReport) Signatures() workflows.CapDefinition[[][]uint8] { return c.signatures } func (c *simpleFeedReport) private() {} type SignersMetadataCap interface { - sdk.CapDefinition[SignersMetadata] - MinRequiredSignatures() sdk.CapDefinition[int64] - Signers() sdk.CapDefinition[[]string] + workflows.CapDefinition[SignersMetadata] + MinRequiredSignatures() workflows.CapDefinition[int64] + Signers() workflows.CapDefinition[[]string] private() } // SignersMetadataCapFromStep should only be called from generated code to assure type safety -func SignersMetadataCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[SignersMetadata]) SignersMetadataCap { +func SignersMetadataCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[SignersMetadata]) SignersMetadataCap { raw := step.AddTo(w) return &signersMetadata{CapDefinition: raw} } type signersMetadata struct { - sdk.CapDefinition[SignersMetadata] + workflows.CapDefinition[SignersMetadata] } func (*signersMetadata) private() {} -func (c *signersMetadata) MinRequiredSignatures() sdk.CapDefinition[int64] { - return sdk.AccessField[SignersMetadata, int64](c.CapDefinition, "MinRequiredSignatures") +func (c *signersMetadata) MinRequiredSignatures() workflows.CapDefinition[int64] { + return workflows.AccessField[SignersMetadata, int64](c.CapDefinition, "MinRequiredSignatures") } -func (c *signersMetadata) Signers() sdk.CapDefinition[[]string] { - return sdk.AccessField[SignersMetadata, []string](c.CapDefinition, "Signers") +func (c *signersMetadata) Signers() workflows.CapDefinition[[]string] { + return workflows.AccessField[SignersMetadata, []string](c.CapDefinition, "Signers") } func NewSignersMetadataFromFields( - minRequiredSignatures sdk.CapDefinition[int64], - signers sdk.CapDefinition[[]string]) SignersMetadataCap { + minRequiredSignatures workflows.CapDefinition[int64], + signers workflows.CapDefinition[[]string]) SignersMetadataCap { return &simpleSignersMetadata{ - CapDefinition: sdk.ComponentCapDefinition[SignersMetadata]{ + CapDefinition: workflows.ComponentCapDefinition[SignersMetadata]{ "MinRequiredSignatures": minRequiredSignatures.Ref(), "Signers": signers.Ref(), }, @@ -225,15 +225,15 @@ func NewSignersMetadataFromFields( } type simpleSignersMetadata struct { - sdk.CapDefinition[SignersMetadata] - minRequiredSignatures sdk.CapDefinition[int64] - signers sdk.CapDefinition[[]string] + workflows.CapDefinition[SignersMetadata] + minRequiredSignatures workflows.CapDefinition[int64] + signers workflows.CapDefinition[[]string] } -func (c *simpleSignersMetadata) MinRequiredSignatures() sdk.CapDefinition[int64] { +func (c *simpleSignersMetadata) MinRequiredSignatures() workflows.CapDefinition[int64] { return c.minRequiredSignatures } -func (c *simpleSignersMetadata) Signers() sdk.CapDefinition[[]string] { +func (c *simpleSignersMetadata) Signers() workflows.CapDefinition[[]string] { return c.signers } diff --git a/pkg/loop/internal/pb/relayerset/relayerset.pb.go b/pkg/loop/internal/pb/relayerset/relayerset.pb.go index 05e07cabf..31df3c965 100644 --- a/pkg/loop/internal/pb/relayerset/relayerset.pb.go +++ b/pkg/loop/internal/pb/relayerset/relayerset.pb.go @@ -777,116 +777,6 @@ func (x *NewChainWriterResponse) GetChainWriterId() uint32 { return 0 } -type LatestHeadRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RelayerId *RelayerId `protobuf:"bytes,1,opt,name=relayerId,proto3" json:"relayerId,omitempty"` -} - -func (x *LatestHeadRequest) Reset() { - *x = LatestHeadRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_relayerset_proto_msgTypes[14] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *LatestHeadRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LatestHeadRequest) ProtoMessage() {} - -func (x *LatestHeadRequest) ProtoReflect() protoreflect.Message { - mi := &file_relayerset_proto_msgTypes[14] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LatestHeadRequest.ProtoReflect.Descriptor instead. -func (*LatestHeadRequest) Descriptor() ([]byte, []int) { - return file_relayerset_proto_rawDescGZIP(), []int{14} -} - -func (x *LatestHeadRequest) GetRelayerId() *RelayerId { - if x != nil { - return x.RelayerId - } - return nil -} - -type LatestHeadResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Height string `protobuf:"bytes,1,opt,name=height,proto3" json:"height,omitempty"` - Hash []byte `protobuf:"bytes,2,opt,name=hash,proto3" json:"hash,omitempty"` - Timestamp uint64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp,omitempty"` -} - -func (x *LatestHeadResponse) Reset() { - *x = LatestHeadResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_relayerset_proto_msgTypes[15] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *LatestHeadResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LatestHeadResponse) ProtoMessage() {} - -func (x *LatestHeadResponse) ProtoReflect() protoreflect.Message { - mi := &file_relayerset_proto_msgTypes[15] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LatestHeadResponse.ProtoReflect.Descriptor instead. -func (*LatestHeadResponse) Descriptor() ([]byte, []int) { - return file_relayerset_proto_rawDescGZIP(), []int{15} -} - -func (x *LatestHeadResponse) GetHeight() string { - if x != nil { - return x.Height - } - return "" -} - -func (x *LatestHeadResponse) GetHash() []byte { - if x != nil { - return x.Hash - } - return nil -} - -func (x *LatestHeadResponse) GetTimestamp() uint64 { - if x != nil { - return x.Timestamp - } - return 0 -} - type RelayerHealthReportResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -898,7 +788,7 @@ type RelayerHealthReportResponse struct { func (x *RelayerHealthReportResponse) Reset() { *x = RelayerHealthReportResponse{} if protoimpl.UnsafeEnabled { - mi := &file_relayerset_proto_msgTypes[16] + mi := &file_relayerset_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -911,7 +801,7 @@ func (x *RelayerHealthReportResponse) String() string { func (*RelayerHealthReportResponse) ProtoMessage() {} func (x *RelayerHealthReportResponse) ProtoReflect() protoreflect.Message { - mi := &file_relayerset_proto_msgTypes[16] + mi := &file_relayerset_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -924,7 +814,7 @@ func (x *RelayerHealthReportResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RelayerHealthReportResponse.ProtoReflect.Descriptor instead. func (*RelayerHealthReportResponse) Descriptor() ([]byte, []int) { - return file_relayerset_proto_rawDescGZIP(), []int{16} + return file_relayerset_proto_rawDescGZIP(), []int{14} } func (x *RelayerHealthReportResponse) GetReport() map[string]string { @@ -945,7 +835,7 @@ type RelayerNameResponse struct { func (x *RelayerNameResponse) Reset() { *x = RelayerNameResponse{} if protoimpl.UnsafeEnabled { - mi := &file_relayerset_proto_msgTypes[17] + mi := &file_relayerset_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -958,7 +848,7 @@ func (x *RelayerNameResponse) String() string { func (*RelayerNameResponse) ProtoMessage() {} func (x *RelayerNameResponse) ProtoReflect() protoreflect.Message { - mi := &file_relayerset_proto_msgTypes[17] + mi := &file_relayerset_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -971,7 +861,7 @@ func (x *RelayerNameResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RelayerNameResponse.ProtoReflect.Descriptor instead. func (*RelayerNameResponse) Descriptor() ([]byte, []int) { - return file_relayerset_proto_rawDescGZIP(), []int{17} + return file_relayerset_proto_rawDescGZIP(), []int{15} } func (x *RelayerNameResponse) GetName() string { @@ -1078,99 +968,82 @@ var file_relayerset_proto_rawDesc = []byte{ 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, - 0x65, 0x72, 0x49, 0x64, 0x22, 0x4d, 0x0a, 0x11, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x48, 0x65, - 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x72, 0x65, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, - 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x52, - 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x52, 0x09, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x12, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, - 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x04, 0x68, 0x61, 0x73, 0x68, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x22, 0xaa, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x72, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x29, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0xe4, 0x07, 0x0a, 0x0a, - 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x74, 0x12, 0x50, 0x0a, 0x03, 0x47, 0x65, - 0x74, 0x12, 0x22, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x73, 0x65, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x04, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, - 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x11, 0x4e, 0x65, 0x77, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x29, - 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, - 0x2e, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, - 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x77, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x11, 0x4e, 0x65, 0x77, 0x43, 0x6f, - 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x29, 0x2e, 0x6c, - 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x4e, - 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, - 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6e, - 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x69, - 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, - 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, - 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, - 0x74, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0c, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x6c, 0x6f, 0x6f, - 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x12, 0x44, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x12, 0x1a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, - 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, - 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, - 0x49, 0x64, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x61, 0x0a, 0x13, - 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, - 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x1a, - 0x2c, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, - 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x51, 0x0a, 0x0b, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, + 0x65, 0x72, 0x49, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, + 0x72, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x1a, 0x39, 0x0a, 0x0b, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0x29, 0x0a, 0x13, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x32, 0x84, 0x07, 0x0a, + 0x0a, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x74, 0x12, 0x50, 0x0a, 0x03, 0x47, + 0x65, 0x74, 0x12, 0x22, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x73, 0x65, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, + 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x27, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, + 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, + 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, - 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x24, 0x2e, 0x6c, 0x6f, 0x6f, - 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, - 0x61, 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x5e, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x61, 0x74, - 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x12, 0x22, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, - 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x4c, 0x61, 0x74, 0x65, 0x73, 0x74, - 0x48, 0x65, 0x61, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6c, 0x6f, - 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x4c, 0x61, - 0x74, 0x65, 0x73, 0x74, 0x48, 0x65, 0x61, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x42, 0x4e, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6b, 0x69, - 0x74, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2d, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6c, 0x6f, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x62, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, - 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x11, 0x4e, 0x65, + 0x77, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, + 0x29, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, + 0x74, 0x2e, 0x4e, 0x65, 0x77, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x6f, 0x6f, + 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x77, + 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6c, 0x0a, 0x11, 0x4e, 0x65, 0x77, 0x43, + 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x29, 0x2e, + 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, + 0x4e, 0x65, 0x77, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x61, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, + 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x6f, + 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x52, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x63, 0x0a, 0x0e, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, + 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, + 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x68, + 0x61, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, + 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x77, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0c, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x6c, 0x6f, + 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x00, 0x12, 0x44, 0x0a, 0x0c, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x12, 0x1a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x16, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x44, 0x0a, 0x0c, 0x52, 0x65, 0x6c, 0x61, 0x79, + 0x65, 0x72, 0x52, 0x65, 0x61, 0x64, 0x79, 0x12, 0x1a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, + 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, + 0x72, 0x49, 0x64, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x61, 0x0a, + 0x13, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, + 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, + 0x1a, 0x2c, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, + 0x65, 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x51, 0x0a, 0x0b, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1a, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, + 0x74, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x24, 0x2e, 0x6c, 0x6f, + 0x6f, 0x70, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x65, 0x74, 0x2e, 0x52, 0x65, + 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x42, 0x4e, 0x5a, 0x4c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x73, 0x6d, 0x61, 0x72, 0x74, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x6b, + 0x69, 0x74, 0x2f, 0x63, 0x68, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x2d, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x6c, 0x6f, 0x6f, 0x70, 0x2f, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x70, 0x62, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x79, 0x65, 0x72, + 0x73, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1185,7 +1058,7 @@ func file_relayerset_proto_rawDescGZIP() []byte { return file_relayerset_proto_rawDescData } -var file_relayerset_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +var file_relayerset_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_relayerset_proto_goTypes = []interface{}{ (*RelayerId)(nil), // 0: loop.relayerset.RelayerId (*GetRelayerRequest)(nil), // 1: loop.relayerset.GetRelayerRequest @@ -1201,12 +1074,10 @@ var file_relayerset_proto_goTypes = []interface{}{ (*NewContractReaderResponse)(nil), // 11: loop.relayerset.NewContractReaderResponse (*NewChainWriterRequest)(nil), // 12: loop.relayerset.NewChainWriterRequest (*NewChainWriterResponse)(nil), // 13: loop.relayerset.NewChainWriterResponse - (*LatestHeadRequest)(nil), // 14: loop.relayerset.LatestHeadRequest - (*LatestHeadResponse)(nil), // 15: loop.relayerset.LatestHeadResponse - (*RelayerHealthReportResponse)(nil), // 16: loop.relayerset.RelayerHealthReportResponse - (*RelayerNameResponse)(nil), // 17: loop.relayerset.RelayerNameResponse - nil, // 18: loop.relayerset.RelayerHealthReportResponse.ReportEntry - (*emptypb.Empty)(nil), // 19: google.protobuf.Empty + (*RelayerHealthReportResponse)(nil), // 14: loop.relayerset.RelayerHealthReportResponse + (*RelayerNameResponse)(nil), // 15: loop.relayerset.RelayerNameResponse + nil, // 16: loop.relayerset.RelayerHealthReportResponse.ReportEntry + (*emptypb.Empty)(nil), // 17: google.protobuf.Empty } var file_relayerset_proto_depIdxs = []int32{ 0, // 0: loop.relayerset.GetRelayerRequest.id:type_name -> loop.relayerset.RelayerId @@ -1219,35 +1090,32 @@ var file_relayerset_proto_depIdxs = []int32{ 7, // 7: loop.relayerset.NewPluginProviderRequest.pluginArgs:type_name -> loop.relayerset.PluginArgs 0, // 8: loop.relayerset.NewContractReaderRequest.relayerId:type_name -> loop.relayerset.RelayerId 0, // 9: loop.relayerset.NewChainWriterRequest.relayerId:type_name -> loop.relayerset.RelayerId - 0, // 10: loop.relayerset.LatestHeadRequest.relayerId:type_name -> loop.relayerset.RelayerId - 18, // 11: loop.relayerset.RelayerHealthReportResponse.report:type_name -> loop.relayerset.RelayerHealthReportResponse.ReportEntry - 1, // 12: loop.relayerset.RelayerSet.Get:input_type -> loop.relayerset.GetRelayerRequest - 3, // 13: loop.relayerset.RelayerSet.List:input_type -> loop.relayerset.ListAllRelayersRequest - 8, // 14: loop.relayerset.RelayerSet.NewPluginProvider:input_type -> loop.relayerset.NewPluginProviderRequest - 10, // 15: loop.relayerset.RelayerSet.NewContractReader:input_type -> loop.relayerset.NewContractReaderRequest - 12, // 16: loop.relayerset.RelayerSet.NewChainWriter:input_type -> loop.relayerset.NewChainWriterRequest - 0, // 17: loop.relayerset.RelayerSet.StartRelayer:input_type -> loop.relayerset.RelayerId - 0, // 18: loop.relayerset.RelayerSet.CloseRelayer:input_type -> loop.relayerset.RelayerId - 0, // 19: loop.relayerset.RelayerSet.RelayerReady:input_type -> loop.relayerset.RelayerId - 0, // 20: loop.relayerset.RelayerSet.RelayerHealthReport:input_type -> loop.relayerset.RelayerId - 0, // 21: loop.relayerset.RelayerSet.RelayerName:input_type -> loop.relayerset.RelayerId - 14, // 22: loop.relayerset.RelayerSet.RelayerLatestHead:input_type -> loop.relayerset.LatestHeadRequest - 2, // 23: loop.relayerset.RelayerSet.Get:output_type -> loop.relayerset.GetRelayerResponse - 4, // 24: loop.relayerset.RelayerSet.List:output_type -> loop.relayerset.ListAllRelayersResponse - 9, // 25: loop.relayerset.RelayerSet.NewPluginProvider:output_type -> loop.relayerset.NewPluginProviderResponse - 11, // 26: loop.relayerset.RelayerSet.NewContractReader:output_type -> loop.relayerset.NewContractReaderResponse - 13, // 27: loop.relayerset.RelayerSet.NewChainWriter:output_type -> loop.relayerset.NewChainWriterResponse - 19, // 28: loop.relayerset.RelayerSet.StartRelayer:output_type -> google.protobuf.Empty - 19, // 29: loop.relayerset.RelayerSet.CloseRelayer:output_type -> google.protobuf.Empty - 19, // 30: loop.relayerset.RelayerSet.RelayerReady:output_type -> google.protobuf.Empty - 16, // 31: loop.relayerset.RelayerSet.RelayerHealthReport:output_type -> loop.relayerset.RelayerHealthReportResponse - 17, // 32: loop.relayerset.RelayerSet.RelayerName:output_type -> loop.relayerset.RelayerNameResponse - 15, // 33: loop.relayerset.RelayerSet.RelayerLatestHead:output_type -> loop.relayerset.LatestHeadResponse - 23, // [23:34] is the sub-list for method output_type - 12, // [12:23] is the sub-list for method input_type - 12, // [12:12] is the sub-list for extension type_name - 12, // [12:12] is the sub-list for extension extendee - 0, // [0:12] is the sub-list for field type_name + 16, // 10: loop.relayerset.RelayerHealthReportResponse.report:type_name -> loop.relayerset.RelayerHealthReportResponse.ReportEntry + 1, // 11: loop.relayerset.RelayerSet.Get:input_type -> loop.relayerset.GetRelayerRequest + 3, // 12: loop.relayerset.RelayerSet.List:input_type -> loop.relayerset.ListAllRelayersRequest + 8, // 13: loop.relayerset.RelayerSet.NewPluginProvider:input_type -> loop.relayerset.NewPluginProviderRequest + 10, // 14: loop.relayerset.RelayerSet.NewContractReader:input_type -> loop.relayerset.NewContractReaderRequest + 12, // 15: loop.relayerset.RelayerSet.NewChainWriter:input_type -> loop.relayerset.NewChainWriterRequest + 0, // 16: loop.relayerset.RelayerSet.StartRelayer:input_type -> loop.relayerset.RelayerId + 0, // 17: loop.relayerset.RelayerSet.CloseRelayer:input_type -> loop.relayerset.RelayerId + 0, // 18: loop.relayerset.RelayerSet.RelayerReady:input_type -> loop.relayerset.RelayerId + 0, // 19: loop.relayerset.RelayerSet.RelayerHealthReport:input_type -> loop.relayerset.RelayerId + 0, // 20: loop.relayerset.RelayerSet.RelayerName:input_type -> loop.relayerset.RelayerId + 2, // 21: loop.relayerset.RelayerSet.Get:output_type -> loop.relayerset.GetRelayerResponse + 4, // 22: loop.relayerset.RelayerSet.List:output_type -> loop.relayerset.ListAllRelayersResponse + 9, // 23: loop.relayerset.RelayerSet.NewPluginProvider:output_type -> loop.relayerset.NewPluginProviderResponse + 11, // 24: loop.relayerset.RelayerSet.NewContractReader:output_type -> loop.relayerset.NewContractReaderResponse + 13, // 25: loop.relayerset.RelayerSet.NewChainWriter:output_type -> loop.relayerset.NewChainWriterResponse + 17, // 26: loop.relayerset.RelayerSet.StartRelayer:output_type -> google.protobuf.Empty + 17, // 27: loop.relayerset.RelayerSet.CloseRelayer:output_type -> google.protobuf.Empty + 17, // 28: loop.relayerset.RelayerSet.RelayerReady:output_type -> google.protobuf.Empty + 14, // 29: loop.relayerset.RelayerSet.RelayerHealthReport:output_type -> loop.relayerset.RelayerHealthReportResponse + 15, // 30: loop.relayerset.RelayerSet.RelayerName:output_type -> loop.relayerset.RelayerNameResponse + 21, // [21:31] is the sub-list for method output_type + 11, // [11:21] is the sub-list for method input_type + 11, // [11:11] is the sub-list for extension type_name + 11, // [11:11] is the sub-list for extension extendee + 0, // [0:11] is the sub-list for field type_name } func init() { file_relayerset_proto_init() } @@ -1425,30 +1293,6 @@ func file_relayerset_proto_init() { } } file_relayerset_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LatestHeadRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relayerset_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LatestHeadResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_relayerset_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RelayerHealthReportResponse); i { case 0: return &v.state @@ -1460,7 +1304,7 @@ func file_relayerset_proto_init() { return nil } } - file_relayerset_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_relayerset_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RelayerNameResponse); i { case 0: return &v.state @@ -1479,7 +1323,7 @@ func file_relayerset_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_relayerset_proto_rawDesc, NumEnums: 0, - NumMessages: 19, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, diff --git a/pkg/loop/internal/pb/relayerset/relayerset.proto b/pkg/loop/internal/pb/relayerset/relayerset.proto index 5e1e4e441..c401e640a 100644 --- a/pkg/loop/internal/pb/relayerset/relayerset.proto +++ b/pkg/loop/internal/pb/relayerset/relayerset.proto @@ -76,16 +76,6 @@ message NewChainWriterResponse { uint32 chainWriterId = 1; } -message LatestHeadRequest { - RelayerId relayerId = 1; -} - -message LatestHeadResponse { - string height = 1; - bytes hash = 2; - uint64 timestamp = 3; -} - message RelayerHealthReportResponse { map report = 1; } @@ -106,7 +96,6 @@ service RelayerSet { rpc RelayerReady(RelayerId) returns (google.protobuf.Empty) {} rpc RelayerHealthReport(RelayerId) returns (RelayerHealthReportResponse) {} rpc RelayerName(RelayerId) returns (RelayerNameResponse) {} - rpc RelayerLatestHead(LatestHeadRequest) returns (LatestHeadResponse) {} } diff --git a/pkg/loop/internal/pb/relayerset/relayerset_grpc.pb.go b/pkg/loop/internal/pb/relayerset/relayerset_grpc.pb.go index d922c51c0..e1b81b64c 100644 --- a/pkg/loop/internal/pb/relayerset/relayerset_grpc.pb.go +++ b/pkg/loop/internal/pb/relayerset/relayerset_grpc.pb.go @@ -30,7 +30,6 @@ const ( RelayerSet_RelayerReady_FullMethodName = "/loop.relayerset.RelayerSet/RelayerReady" RelayerSet_RelayerHealthReport_FullMethodName = "/loop.relayerset.RelayerSet/RelayerHealthReport" RelayerSet_RelayerName_FullMethodName = "/loop.relayerset.RelayerSet/RelayerName" - RelayerSet_RelayerLatestHead_FullMethodName = "/loop.relayerset.RelayerSet/RelayerLatestHead" ) // RelayerSetClient is the client API for RelayerSet service. @@ -47,7 +46,6 @@ type RelayerSetClient interface { RelayerReady(ctx context.Context, in *RelayerId, opts ...grpc.CallOption) (*emptypb.Empty, error) RelayerHealthReport(ctx context.Context, in *RelayerId, opts ...grpc.CallOption) (*RelayerHealthReportResponse, error) RelayerName(ctx context.Context, in *RelayerId, opts ...grpc.CallOption) (*RelayerNameResponse, error) - RelayerLatestHead(ctx context.Context, in *LatestHeadRequest, opts ...grpc.CallOption) (*LatestHeadResponse, error) } type relayerSetClient struct { @@ -148,15 +146,6 @@ func (c *relayerSetClient) RelayerName(ctx context.Context, in *RelayerId, opts return out, nil } -func (c *relayerSetClient) RelayerLatestHead(ctx context.Context, in *LatestHeadRequest, opts ...grpc.CallOption) (*LatestHeadResponse, error) { - out := new(LatestHeadResponse) - err := c.cc.Invoke(ctx, RelayerSet_RelayerLatestHead_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - // RelayerSetServer is the server API for RelayerSet service. // All implementations must embed UnimplementedRelayerSetServer // for forward compatibility @@ -171,7 +160,6 @@ type RelayerSetServer interface { RelayerReady(context.Context, *RelayerId) (*emptypb.Empty, error) RelayerHealthReport(context.Context, *RelayerId) (*RelayerHealthReportResponse, error) RelayerName(context.Context, *RelayerId) (*RelayerNameResponse, error) - RelayerLatestHead(context.Context, *LatestHeadRequest) (*LatestHeadResponse, error) mustEmbedUnimplementedRelayerSetServer() } @@ -209,9 +197,6 @@ func (UnimplementedRelayerSetServer) RelayerHealthReport(context.Context, *Relay func (UnimplementedRelayerSetServer) RelayerName(context.Context, *RelayerId) (*RelayerNameResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RelayerName not implemented") } -func (UnimplementedRelayerSetServer) RelayerLatestHead(context.Context, *LatestHeadRequest) (*LatestHeadResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RelayerLatestHead not implemented") -} func (UnimplementedRelayerSetServer) mustEmbedUnimplementedRelayerSetServer() {} // UnsafeRelayerSetServer may be embedded to opt out of forward compatibility for this service. @@ -405,24 +390,6 @@ func _RelayerSet_RelayerName_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } -func _RelayerSet_RelayerLatestHead_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(LatestHeadRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RelayerSetServer).RelayerLatestHead(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: RelayerSet_RelayerLatestHead_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RelayerSetServer).RelayerLatestHead(ctx, req.(*LatestHeadRequest)) - } - return interceptor(ctx, in, info, handler) -} - // RelayerSet_ServiceDesc is the grpc.ServiceDesc for RelayerSet service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -470,10 +437,6 @@ var RelayerSet_ServiceDesc = grpc.ServiceDesc{ MethodName: "RelayerName", Handler: _RelayerSet_RelayerName_Handler, }, - { - MethodName: "RelayerLatestHead", - Handler: _RelayerSet_RelayerLatestHead_Handler, - }, }, Streams: []grpc.StreamDesc{}, Metadata: "relayerset.proto", diff --git a/pkg/loop/internal/relayerset/client.go b/pkg/loop/internal/relayerset/client.go index 5dc4524b3..bb343dff6 100644 --- a/pkg/loop/internal/relayerset/client.go +++ b/pkg/loop/internal/relayerset/client.go @@ -100,21 +100,6 @@ func (k *Client) RelayerName(ctx context.Context, relayID types.RelayID) (string return resp.Name, nil } -func (k *Client) RelayerLatestHead(ctx context.Context, relayID types.RelayID) (types.Head, error) { - req := &relayerset.LatestHeadRequest{ - RelayerId: &relayerset.RelayerId{ChainId: relayID.ChainID, Network: relayID.Network}, - } - resp, err := k.relayerSetClient.RelayerLatestHead(ctx, req) - if err != nil { - return types.Head{}, fmt.Errorf("error getting latest head from relayerset client for relayer: %w", err) - } - return types.Head{ - Height: resp.Height, - Hash: resp.Hash, - Timestamp: resp.Timestamp, - }, nil -} - func (k *Client) NewPluginProvider(ctx context.Context, relayID types.RelayID, relayArgs core.RelayArgs, pluginArgs core.PluginArgs) (uint32, error) { // TODO at a later phase these credentials should be set as part of the relay config and not as a separate field var mercuryCredentials *relayerset.MercuryCredentials diff --git a/pkg/loop/internal/relayerset/relayer.go b/pkg/loop/internal/relayerset/relayer.go index 8a5ffc751..caa842c5e 100644 --- a/pkg/loop/internal/relayerset/relayer.go +++ b/pkg/loop/internal/relayerset/relayer.go @@ -92,12 +92,3 @@ func (r *relayerClient) Name() string { return name } - -func (r *relayerClient) LatestHead(_ context.Context) (types.Head, error) { - latestHead, err := r.relayerSetClient.RelayerLatestHead(context.Background(), r.relayerID) - if err != nil { - r.log.Error("error getting latestHead", "error", err) - return types.Head{}, err - } - return latestHead, err -} diff --git a/pkg/loop/internal/relayerset/server.go b/pkg/loop/internal/relayerset/server.go index 8e809f1f8..0ec1c93fe 100644 --- a/pkg/loop/internal/relayerset/server.go +++ b/pkg/loop/internal/relayerset/server.go @@ -315,23 +315,6 @@ func (s *Server) RelayerName(ctx context.Context, relayID *relayerset.RelayerId) return &relayerset.RelayerNameResponse{Name: relayer.Name()}, nil } -func (s *Server) RelayerLatestHead(ctx context.Context, req *relayerset.LatestHeadRequest) (*relayerset.LatestHeadResponse, error) { - relayer, err := s.getRelayer(ctx, req.RelayerId) - if err != nil { - return nil, err - } - - latestHead, err := relayer.LatestHead(ctx) - if err != nil { - return nil, err - } - return &relayerset.LatestHeadResponse{ - Height: latestHead.Height, - Hash: latestHead.Hash, - Timestamp: latestHead.Timestamp, - }, nil -} - func (s *Server) getRelayer(ctx context.Context, relayerID *relayerset.RelayerId) (core.Relayer, error) { relayer, err := s.impl.Get(ctx, types.RelayID{ChainID: relayerID.ChainId, Network: relayerID.Network}) if err != nil { diff --git a/pkg/types/core/mocks/relayer.go b/pkg/types/core/mocks/relayer.go index f8dfc59a8..4e3cf87ca 100644 --- a/pkg/types/core/mocks/relayer.go +++ b/pkg/types/core/mocks/relayer.go @@ -116,62 +116,6 @@ func (_c *Relayer_HealthReport_Call) RunAndReturn(run func() map[string]error) * return _c } -// LatestHead provides a mock function with given fields: _a0 -func (_m *Relayer) LatestHead(_a0 context.Context) (types.Head, error) { - ret := _m.Called(_a0) - - if len(ret) == 0 { - panic("no return value specified for LatestHead") - } - - var r0 types.Head - var r1 error - if rf, ok := ret.Get(0).(func(context.Context) (types.Head, error)); ok { - return rf(_a0) - } - if rf, ok := ret.Get(0).(func(context.Context) types.Head); ok { - r0 = rf(_a0) - } else { - r0 = ret.Get(0).(types.Head) - } - - if rf, ok := ret.Get(1).(func(context.Context) error); ok { - r1 = rf(_a0) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// Relayer_LatestHead_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'LatestHead' -type Relayer_LatestHead_Call struct { - *mock.Call -} - -// LatestHead is a helper method to define mock.On call -// - _a0 context.Context -func (_e *Relayer_Expecter) LatestHead(_a0 interface{}) *Relayer_LatestHead_Call { - return &Relayer_LatestHead_Call{Call: _e.mock.On("LatestHead", _a0)} -} - -func (_c *Relayer_LatestHead_Call) Run(run func(_a0 context.Context)) *Relayer_LatestHead_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context)) - }) - return _c -} - -func (_c *Relayer_LatestHead_Call) Return(_a0 types.Head, _a1 error) *Relayer_LatestHead_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *Relayer_LatestHead_Call) RunAndReturn(run func(context.Context) (types.Head, error)) *Relayer_LatestHead_Call { - _c.Call.Return(run) - return _c -} - // Name provides a mock function with given fields: func (_m *Relayer) Name() string { ret := _m.Called() diff --git a/pkg/types/core/relayerset.go b/pkg/types/core/relayerset.go index bb1b84d45..14a0bfb92 100644 --- a/pkg/types/core/relayerset.go +++ b/pkg/types/core/relayerset.go @@ -32,5 +32,4 @@ type Relayer interface { NewPluginProvider(context.Context, RelayArgs, PluginArgs) (types.PluginProvider, error) NewContractReader(_ context.Context, contractReaderConfig []byte) (types.ContractReader, error) NewChainWriter(_ context.Context, chainWriterConfig []byte) (types.ChainWriter, error) - LatestHead(context.Context) (types.Head, error) } diff --git a/pkg/workflows/sdk/builder.go b/pkg/workflows/builder.go similarity index 94% rename from pkg/workflows/sdk/builder.go rename to pkg/workflows/builder.go index 30472fdca..8a39da995 100644 --- a/pkg/workflows/sdk/builder.go +++ b/pkg/workflows/builder.go @@ -1,4 +1,4 @@ -package sdk +package workflows import ( "fmt" @@ -14,10 +14,10 @@ type WorkflowSpecFactory struct { duplicateNames map[string]bool emptyNames bool badCapTypes []string - fns map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse + fns map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) } -func (w *WorkflowSpecFactory) GetFn(name string) func(sdk Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { +func (w *WorkflowSpecFactory) GetFn(name string) func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { return w.fns[name] } diff --git a/pkg/workflows/sdk/builder_test.go b/pkg/workflows/builder_test.go similarity index 83% rename from pkg/workflows/sdk/builder_test.go rename to pkg/workflows/builder_test.go index 558eea192..adf05bb65 100644 --- a/pkg/workflows/sdk/builder_test.go +++ b/pkg/workflows/builder_test.go @@ -1,4 +1,4 @@ -package sdk_test +package workflows_test import ( _ "embed" @@ -8,13 +8,12 @@ import ( "sigs.k8s.io/yaml" "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - ocr3 "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3cap" + "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3" "github.com/smartcontractkit/chainlink-common/pkg/capabilities/targets/chainwriter" "github.com/smartcontractkit/chainlink-common/pkg/capabilities/triggers/streams" "github.com/smartcontractkit/chainlink-common/pkg/workflows" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testdata/fixtures/capabilities/notstreams" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) //go:generate go run github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/generate-types --dir $GOFILE @@ -24,23 +23,23 @@ import ( // This implicitly tests the code generators functionally, as the generated code is used in the tests. type Config struct { - Workflow sdk.NewWorkflowParams + Workflow workflows.NewWorkflowParams Streams *streams.TriggerConfig Ocr *ocr3.DataFeedsConsensusConfig ChainWriter *chainwriter.TargetConfig TargetChain string } -func NewWorkflowSpec(rawConfig []byte) (*sdk.WorkflowSpecFactory, error) { +func NewWorkflowSpec(rawConfig []byte) (*workflows.WorkflowSpecFactory, error) { conf, err := UnmarshalYaml[Config](rawConfig) if err != nil { return nil, err } - workflow := sdk.NewWorkflowSpecFactory(conf.Workflow) + workflow := workflows.NewWorkflowSpecFactory(conf.Workflow) streamsTrigger := conf.Streams.New(workflow) consensus := conf.Ocr.New(workflow, "ccip_feeds", ocr3.DataFeedsConsensusInput{ - Observations: sdk.ListOf[streams.Feed](streamsTrigger)}, + Observations: workflows.ListOf[streams.Feed](streamsTrigger)}, ) conf.ChainWriter.New(workflow, conf.TargetChain, chainwriter.TargetInput{SignedReport: consensus}) @@ -51,7 +50,7 @@ func NewWorkflowSpec(rawConfig []byte) (*sdk.WorkflowSpecFactory, error) { // ModifiedConfig, and the test it's used in, show how you can structure config to remove copy/paste issues when data // needs to be repeated in multiple capability configurations. type ModifiedConfig struct { - Workflow sdk.NewWorkflowParams + Workflow workflows.NewWorkflowParams AllowedPartialStaleness string MaxFrequencyMs uint64 DefaultHeartbeat uint64 `yaml:"default_heartbeat" json:"default_heartbeat"` @@ -71,7 +70,7 @@ type FeedInfo struct { RemappedID *string } -func NewWorkflowRemapped(rawConfig []byte) (*sdk.WorkflowSpecFactory, error) { +func NewWorkflowRemapped(rawConfig []byte) (*workflows.WorkflowSpecFactory, error) { conf, err := UnmarshalYaml[ModifiedConfig](rawConfig) if err != nil { return nil, err @@ -108,11 +107,11 @@ func NewWorkflowRemapped(rawConfig []byte) (*sdk.WorkflowSpecFactory, error) { } ocr3Config.AggregationConfig.Feeds = feeds - workflow := sdk.NewWorkflowSpecFactory(conf.Workflow) + workflow := workflows.NewWorkflowSpecFactory(conf.Workflow) streamsTrigger := streamsConfig.New(workflow) consensus := ocr3Config.New(workflow, "ccip_feeds", ocr3.DataFeedsConsensusInput{ - Observations: sdk.ListOf[streams.Feed](streamsTrigger), + Observations: workflows.ListOf[streams.Feed](streamsTrigger), }) conf.ChainWriter.New(workflow, conf.TargetChain, chainwriter.TargetInput{SignedReport: consensus}) @@ -122,30 +121,30 @@ func NewWorkflowRemapped(rawConfig []byte) (*sdk.WorkflowSpecFactory, error) { const anyFakeFeedID = "0x0000000000000000000000000000000000000000000000000000000000000000" -func NewWorkflowSpecFromPrimitives(rawConfig []byte) (*sdk.WorkflowSpecFactory, error) { +func NewWorkflowSpecFromPrimitives(rawConfig []byte) (*workflows.WorkflowSpecFactory, error) { conf, err := UnmarshalYaml[NotStreamsConfig](rawConfig) if err != nil { return nil, err } - workflow := sdk.NewWorkflowSpecFactory(conf.Workflow) + workflow := workflows.NewWorkflowSpecFactory(conf.Workflow) notStreamsTrigger := conf.NotStream.New(workflow) md := streams.NewSignersMetadataFromFields( - sdk.ConstantDefinition(int64(1)), sdk.ListOf(notStreamsTrigger.Metadata().Signer())) + workflows.ConstantDefinition(int64(1)), workflows.ListOf(notStreamsTrigger.Metadata().Signer())) payload := streams.NewFeedReportFromFields( notStreamsTrigger.Payload().BuyPrice(), - sdk.ConstantDefinition[streams.FeedId](anyFakeFeedID), + workflows.ConstantDefinition[streams.FeedId](anyFakeFeedID), notStreamsTrigger.Payload().FullReport(), notStreamsTrigger.Payload().ObservationTimestamp(), notStreamsTrigger.Payload().ReportContext(), - sdk.ListOf(notStreamsTrigger.Payload().Signature()), + workflows.ListOf(notStreamsTrigger.Payload().Signature()), ) feedsInput := streams.NewFeedFromFields( md, - sdk.ListOf[streams.FeedReport](payload), + workflows.ListOf[streams.FeedReport](payload), notStreamsTrigger.Timestamp(), ) @@ -166,7 +165,7 @@ func NewWorkflowSpecFromPrimitives(rawConfig []byte) (*sdk.WorkflowSpecFactory, } consensus := ocrConfig.New(workflow, "data-feeds-report", ocr3.DataFeedsConsensusInput{ - Observations: sdk.ListOf[streams.Feed](feedsInput), + Observations: workflows.ListOf[streams.Feed](feedsInput), }) conf.ChainWriter.New(workflow, conf.TargetChain, chainwriter.TargetInput{SignedReport: consensus}) @@ -205,24 +204,24 @@ func TestBuilder_ValidSpec(t *testing.T) { actual, err := factory.Spec() require.NoError(t, err) - expected := sdk.WorkflowSpec{ + expected := workflows.WorkflowSpec{ Name: "notccipethsep", Owner: "0x00000000000000000000000000000000000000aa", - Triggers: []sdk.StepDefinition{ + Triggers: []workflows.StepDefinition{ { ID: "notstreams@1.0.0", Ref: "trigger", - Inputs: sdk.StepInputs{}, + Inputs: workflows.StepInputs{}, Config: map[string]any{"maxFrequencyMs": 5000}, CapabilityType: capabilities.CapabilityTypeTrigger, }, }, - Actions: make([]sdk.StepDefinition, 0), - Consensus: []sdk.StepDefinition{ + Actions: make([]workflows.StepDefinition, 0), + Consensus: []workflows.StepDefinition{ { ID: "offchain_reporting@1.0.0", Ref: "data-feeds-report", - Inputs: sdk.StepInputs{ + Inputs: workflows.StepInputs{ Mapping: map[string]any{"observations": []map[string]any{ { "Metadata": map[string]any{ @@ -263,10 +262,10 @@ func TestBuilder_ValidSpec(t *testing.T) { CapabilityType: capabilities.CapabilityTypeConsensus, }, }, - Targets: []sdk.StepDefinition{ + Targets: []workflows.StepDefinition{ { ID: "write_ethereum-testnet-sepolia@1.0.0", - Inputs: sdk.StepInputs{ + Inputs: workflows.StepInputs{ Mapping: map[string]any{"signed_report": "$(data-feeds-report.outputs)"}, }, Config: map[string]any{ @@ -286,14 +285,14 @@ func TestBuilder_ValidSpec(t *testing.T) { conf, err := UnmarshalYaml[Config](sepoliaConfig) require.NoError(t, err) - workflow := sdk.NewWorkflowSpecFactory(conf.Workflow) + workflow := workflows.NewWorkflowSpecFactory(conf.Workflow) streamsTrigger := conf.Streams.New(workflow) consensus := conf.Ocr.New(workflow, "ccip_feeds", ocr3.DataFeedsConsensusInput{ - Observations: sdk.ListOf[streams.Feed](streamsTrigger)}, + Observations: workflows.ListOf[streams.Feed](streamsTrigger)}, ) consensus2 := conf.Ocr.New(workflow, "ccip_feeds", ocr3.DataFeedsConsensusInput{ - Observations: sdk.ListOf[streams.Feed](streamsTrigger)}, + Observations: workflows.ListOf[streams.Feed](streamsTrigger)}, ) conf.ChainWriter.New(workflow, conf.TargetChain, chainwriter.TargetInput{SignedReport: consensus}) @@ -308,10 +307,10 @@ func TestBuilder_ValidSpec(t *testing.T) { conf, err := UnmarshalYaml[Config](sepoliaConfig) require.NoError(t, err) - workflow := sdk.NewWorkflowSpecFactory(conf.Workflow) + workflow := workflows.NewWorkflowSpecFactory(conf.Workflow) streamsTrigger := conf.Streams.New(workflow) consensus := conf.Ocr.New(workflow, "", ocr3.DataFeedsConsensusInput{ - Observations: sdk.ListOf[streams.Feed](streamsTrigger)}, + Observations: workflows.ListOf[streams.Feed](streamsTrigger)}, ) conf.ChainWriter.New(workflow, conf.TargetChain, chainwriter.TargetInput{SignedReport: consensus}) @@ -324,12 +323,12 @@ func TestBuilder_ValidSpec(t *testing.T) { conf, err := UnmarshalYaml[Config](sepoliaConfig) require.NoError(t, err) - workflow := sdk.NewWorkflowSpecFactory(conf.Workflow) - badStep := sdk.Step[streams.Feed]{ - Definition: sdk.StepDefinition{ + workflow := workflows.NewWorkflowSpecFactory(conf.Workflow) + badStep := workflows.Step[streams.Feed]{ + Definition: workflows.StepDefinition{ ID: "streams-trigger@1.0.0", Ref: "Trigger", - Inputs: sdk.StepInputs{}, + Inputs: workflows.StepInputs{}, Config: map[string]any{}, CapabilityType: "fake", }, @@ -338,7 +337,7 @@ func TestBuilder_ValidSpec(t *testing.T) { badCap := badStep.AddTo(workflow) consensus := conf.Ocr.New(workflow, "", ocr3.DataFeedsConsensusInput{ - Observations: sdk.ListOf[streams.Feed](badCap)}, + Observations: workflows.ListOf[streams.Feed](badCap)}, ) conf.ChainWriter.New(workflow, conf.TargetChain, chainwriter.TargetInput{SignedReport: consensus}) @@ -351,14 +350,14 @@ func TestBuilder_ValidSpec(t *testing.T) { conf, err := UnmarshalYaml[Config](sepoliaConfig) require.NoError(t, err) - workflow := sdk.NewWorkflowSpecFactory(conf.Workflow) + workflow := workflows.NewWorkflowSpecFactory(conf.Workflow) streamsTrigger := conf.Streams.New(workflow) consensus := conf.Ocr.New(workflow, "ccip_feeds", ocr3.DataFeedsConsensusInput{ - Observations: sdk.ListOf[streams.Feed](streamsTrigger)}, + Observations: workflows.ListOf[streams.Feed](streamsTrigger)}, ) consensus2 := conf.Ocr.New(workflow, "ccip_feeds_different", ocr3.DataFeedsConsensusInput{ - Observations: sdk.ListOf[streams.Feed](streamsTrigger)}, + Observations: workflows.ListOf[streams.Feed](streamsTrigger)}, ) conf.ChainWriter.New(workflow, conf.TargetChain, chainwriter.TargetInput{SignedReport: consensus}) @@ -370,7 +369,7 @@ func TestBuilder_ValidSpec(t *testing.T) { }) } -func runSepoliaStagingTest(t *testing.T, config []byte, gen func([]byte) (*sdk.WorkflowSpecFactory, error)) { +func runSepoliaStagingTest(t *testing.T, config []byte, gen func([]byte) (*workflows.WorkflowSpecFactory, error)) { testFactory, err := gen(config) require.NoError(t, err) @@ -384,7 +383,7 @@ func runSepoliaStagingTest(t *testing.T, config []byte, gen func([]byte) (*sdk.W } type NotStreamsConfig struct { - Workflow sdk.NewWorkflowParams + Workflow workflows.NewWorkflowParams NotStream *notstreams.TriggerConfig `yaml:"not_stream" json:"not_stream"` Ocr *ModifiedConsensusConfig ChainWriter *chainwriter.TargetConfig diff --git a/pkg/workflows/sdk/compute.go b/pkg/workflows/compute.go similarity index 96% rename from pkg/workflows/sdk/compute.go rename to pkg/workflows/compute.go index e247984e2..7075c513d 100644 --- a/pkg/workflows/sdk/compute.go +++ b/pkg/workflows/compute.go @@ -1,4 +1,4 @@ -package sdk +package workflows //go:generate go run ./gen diff --git a/pkg/workflows/sdk/compute_generated.go b/pkg/workflows/compute_generated.go similarity index 68% rename from pkg/workflows/sdk/compute_generated.go rename to pkg/workflows/compute_generated.go index 1e7ba3116..6bcebe516 100644 --- a/pkg/workflows/sdk/compute_generated.go +++ b/pkg/workflows/compute_generated.go @@ -1,6 +1,6 @@ // Code generated by github.com/smartcontractkit/chainlink-common/pkg/workflows/gen, DO NOT EDIT. -package sdk +package workflows import ( "encoding/json" @@ -25,7 +25,7 @@ func (input Compute1Inputs[I0]) ToSteps() StepInputs { } } -func Compute1[I0 any, O any](w *WorkflowSpecFactory, ref string, input Compute1Inputs[I0], compute func(Runtime, I0) (O, error)) ComputeOutputCap[O] { +func Compute1[I0 any, O any](w *WorkflowSpecFactory, ref string, input Compute1Inputs[I0], compute func(SDK, I0) (O, error)) ComputeOutputCap[O] { def := StepDefinition{ ID: "__internal__custom_compute@1.0.0", Ref: ref, @@ -34,37 +34,37 @@ func Compute1[I0 any, O any](w *WorkflowSpecFactory, ref string, input Compute1I CapabilityType: capabilities.CapabilityTypeAction, } - capFn := func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { + capFn := func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { var inputs runtime1Inputs[I0] if err := request.Inputs.UnwrapTo(&inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } // verify against any schema ji, err := json.Marshal(inputs) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } if err := json.Unmarshal(ji, &inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - output, err := compute(runtime, inputs.Arg0) + output, err := compute(sdk, inputs.Arg0) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } computeOutput := ComputeOutput[O]{Value: output} wrapped, err := values.CreateMapFromStruct(computeOutput) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - return capabilities.CapabilityResponse{Value: wrapped} + return capabilities.CapabilityResponse{Value: wrapped}, nil } if w.fns == nil { - w.fns = map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse{} + w.fns = map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error){} } w.fns[ref] = capFn return &computeOutputCap[O]{(&Step[ComputeOutput[O]]{Definition: def}).AddTo(w)} @@ -89,7 +89,7 @@ func (input Compute2Inputs[I0, I1]) ToSteps() StepInputs { } } -func Compute2[I0 any, I1 any, O any](w *WorkflowSpecFactory, ref string, input Compute2Inputs[I0, I1], compute func(Runtime, I0, I1) (O, error)) ComputeOutputCap[O] { +func Compute2[I0 any, I1 any, O any](w *WorkflowSpecFactory, ref string, input Compute2Inputs[I0, I1], compute func(SDK, I0, I1) (O, error)) ComputeOutputCap[O] { def := StepDefinition{ ID: "__internal__custom_compute@1.0.0", Ref: ref, @@ -98,37 +98,37 @@ func Compute2[I0 any, I1 any, O any](w *WorkflowSpecFactory, ref string, input C CapabilityType: capabilities.CapabilityTypeAction, } - capFn := func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { + capFn := func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { var inputs runtime2Inputs[I0, I1] if err := request.Inputs.UnwrapTo(&inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } // verify against any schema ji, err := json.Marshal(inputs) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } if err := json.Unmarshal(ji, &inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - output, err := compute(runtime, inputs.Arg0, inputs.Arg1) + output, err := compute(sdk, inputs.Arg0, inputs.Arg1) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } computeOutput := ComputeOutput[O]{Value: output} wrapped, err := values.CreateMapFromStruct(computeOutput) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - return capabilities.CapabilityResponse{Value: wrapped} + return capabilities.CapabilityResponse{Value: wrapped}, nil } if w.fns == nil { - w.fns = map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse{} + w.fns = map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error){} } w.fns[ref] = capFn return &computeOutputCap[O]{(&Step[ComputeOutput[O]]{Definition: def}).AddTo(w)} @@ -156,7 +156,7 @@ func (input Compute3Inputs[I0, I1, I2]) ToSteps() StepInputs { } } -func Compute3[I0 any, I1 any, I2 any, O any](w *WorkflowSpecFactory, ref string, input Compute3Inputs[I0, I1, I2], compute func(Runtime, I0, I1, I2) (O, error)) ComputeOutputCap[O] { +func Compute3[I0 any, I1 any, I2 any, O any](w *WorkflowSpecFactory, ref string, input Compute3Inputs[I0, I1, I2], compute func(SDK, I0, I1, I2) (O, error)) ComputeOutputCap[O] { def := StepDefinition{ ID: "__internal__custom_compute@1.0.0", Ref: ref, @@ -165,37 +165,37 @@ func Compute3[I0 any, I1 any, I2 any, O any](w *WorkflowSpecFactory, ref string, CapabilityType: capabilities.CapabilityTypeAction, } - capFn := func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { + capFn := func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { var inputs runtime3Inputs[I0, I1, I2] if err := request.Inputs.UnwrapTo(&inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } // verify against any schema ji, err := json.Marshal(inputs) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } if err := json.Unmarshal(ji, &inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - output, err := compute(runtime, inputs.Arg0, inputs.Arg1, inputs.Arg2) + output, err := compute(sdk, inputs.Arg0, inputs.Arg1, inputs.Arg2) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } computeOutput := ComputeOutput[O]{Value: output} wrapped, err := values.CreateMapFromStruct(computeOutput) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - return capabilities.CapabilityResponse{Value: wrapped} + return capabilities.CapabilityResponse{Value: wrapped}, nil } if w.fns == nil { - w.fns = map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse{} + w.fns = map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error){} } w.fns[ref] = capFn return &computeOutputCap[O]{(&Step[ComputeOutput[O]]{Definition: def}).AddTo(w)} @@ -226,7 +226,7 @@ func (input Compute4Inputs[I0, I1, I2, I3]) ToSteps() StepInputs { } } -func Compute4[I0 any, I1 any, I2 any, I3 any, O any](w *WorkflowSpecFactory, ref string, input Compute4Inputs[I0, I1, I2, I3], compute func(Runtime, I0, I1, I2, I3) (O, error)) ComputeOutputCap[O] { +func Compute4[I0 any, I1 any, I2 any, I3 any, O any](w *WorkflowSpecFactory, ref string, input Compute4Inputs[I0, I1, I2, I3], compute func(SDK, I0, I1, I2, I3) (O, error)) ComputeOutputCap[O] { def := StepDefinition{ ID: "__internal__custom_compute@1.0.0", Ref: ref, @@ -235,37 +235,37 @@ func Compute4[I0 any, I1 any, I2 any, I3 any, O any](w *WorkflowSpecFactory, ref CapabilityType: capabilities.CapabilityTypeAction, } - capFn := func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { + capFn := func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { var inputs runtime4Inputs[I0, I1, I2, I3] if err := request.Inputs.UnwrapTo(&inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } // verify against any schema ji, err := json.Marshal(inputs) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } if err := json.Unmarshal(ji, &inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - output, err := compute(runtime, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3) + output, err := compute(sdk, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } computeOutput := ComputeOutput[O]{Value: output} wrapped, err := values.CreateMapFromStruct(computeOutput) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - return capabilities.CapabilityResponse{Value: wrapped} + return capabilities.CapabilityResponse{Value: wrapped}, nil } if w.fns == nil { - w.fns = map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse{} + w.fns = map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error){} } w.fns[ref] = capFn return &computeOutputCap[O]{(&Step[ComputeOutput[O]]{Definition: def}).AddTo(w)} @@ -299,7 +299,7 @@ func (input Compute5Inputs[I0, I1, I2, I3, I4]) ToSteps() StepInputs { } } -func Compute5[I0 any, I1 any, I2 any, I3 any, I4 any, O any](w *WorkflowSpecFactory, ref string, input Compute5Inputs[I0, I1, I2, I3, I4], compute func(Runtime, I0, I1, I2, I3, I4) (O, error)) ComputeOutputCap[O] { +func Compute5[I0 any, I1 any, I2 any, I3 any, I4 any, O any](w *WorkflowSpecFactory, ref string, input Compute5Inputs[I0, I1, I2, I3, I4], compute func(SDK, I0, I1, I2, I3, I4) (O, error)) ComputeOutputCap[O] { def := StepDefinition{ ID: "__internal__custom_compute@1.0.0", Ref: ref, @@ -308,37 +308,37 @@ func Compute5[I0 any, I1 any, I2 any, I3 any, I4 any, O any](w *WorkflowSpecFact CapabilityType: capabilities.CapabilityTypeAction, } - capFn := func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { + capFn := func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { var inputs runtime5Inputs[I0, I1, I2, I3, I4] if err := request.Inputs.UnwrapTo(&inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } // verify against any schema ji, err := json.Marshal(inputs) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } if err := json.Unmarshal(ji, &inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - output, err := compute(runtime, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4) + output, err := compute(sdk, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } computeOutput := ComputeOutput[O]{Value: output} wrapped, err := values.CreateMapFromStruct(computeOutput) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - return capabilities.CapabilityResponse{Value: wrapped} + return capabilities.CapabilityResponse{Value: wrapped}, nil } if w.fns == nil { - w.fns = map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse{} + w.fns = map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error){} } w.fns[ref] = capFn return &computeOutputCap[O]{(&Step[ComputeOutput[O]]{Definition: def}).AddTo(w)} @@ -375,7 +375,7 @@ func (input Compute6Inputs[I0, I1, I2, I3, I4, I5]) ToSteps() StepInputs { } } -func Compute6[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, O any](w *WorkflowSpecFactory, ref string, input Compute6Inputs[I0, I1, I2, I3, I4, I5], compute func(Runtime, I0, I1, I2, I3, I4, I5) (O, error)) ComputeOutputCap[O] { +func Compute6[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, O any](w *WorkflowSpecFactory, ref string, input Compute6Inputs[I0, I1, I2, I3, I4, I5], compute func(SDK, I0, I1, I2, I3, I4, I5) (O, error)) ComputeOutputCap[O] { def := StepDefinition{ ID: "__internal__custom_compute@1.0.0", Ref: ref, @@ -384,37 +384,37 @@ func Compute6[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, O any](w *Workflow CapabilityType: capabilities.CapabilityTypeAction, } - capFn := func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { + capFn := func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { var inputs runtime6Inputs[I0, I1, I2, I3, I4, I5] if err := request.Inputs.UnwrapTo(&inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } // verify against any schema ji, err := json.Marshal(inputs) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } if err := json.Unmarshal(ji, &inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - output, err := compute(runtime, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4, inputs.Arg5) + output, err := compute(sdk, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4, inputs.Arg5) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } computeOutput := ComputeOutput[O]{Value: output} wrapped, err := values.CreateMapFromStruct(computeOutput) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - return capabilities.CapabilityResponse{Value: wrapped} + return capabilities.CapabilityResponse{Value: wrapped}, nil } if w.fns == nil { - w.fns = map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse{} + w.fns = map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error){} } w.fns[ref] = capFn return &computeOutputCap[O]{(&Step[ComputeOutput[O]]{Definition: def}).AddTo(w)} @@ -454,7 +454,7 @@ func (input Compute7Inputs[I0, I1, I2, I3, I4, I5, I6]) ToSteps() StepInputs { } } -func Compute7[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, O any](w *WorkflowSpecFactory, ref string, input Compute7Inputs[I0, I1, I2, I3, I4, I5, I6], compute func(Runtime, I0, I1, I2, I3, I4, I5, I6) (O, error)) ComputeOutputCap[O] { +func Compute7[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, O any](w *WorkflowSpecFactory, ref string, input Compute7Inputs[I0, I1, I2, I3, I4, I5, I6], compute func(SDK, I0, I1, I2, I3, I4, I5, I6) (O, error)) ComputeOutputCap[O] { def := StepDefinition{ ID: "__internal__custom_compute@1.0.0", Ref: ref, @@ -463,37 +463,37 @@ func Compute7[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, O any](w * CapabilityType: capabilities.CapabilityTypeAction, } - capFn := func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { + capFn := func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { var inputs runtime7Inputs[I0, I1, I2, I3, I4, I5, I6] if err := request.Inputs.UnwrapTo(&inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } // verify against any schema ji, err := json.Marshal(inputs) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } if err := json.Unmarshal(ji, &inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - output, err := compute(runtime, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4, inputs.Arg5, inputs.Arg6) + output, err := compute(sdk, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4, inputs.Arg5, inputs.Arg6) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } computeOutput := ComputeOutput[O]{Value: output} wrapped, err := values.CreateMapFromStruct(computeOutput) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - return capabilities.CapabilityResponse{Value: wrapped} + return capabilities.CapabilityResponse{Value: wrapped}, nil } if w.fns == nil { - w.fns = map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse{} + w.fns = map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error){} } w.fns[ref] = capFn return &computeOutputCap[O]{(&Step[ComputeOutput[O]]{Definition: def}).AddTo(w)} @@ -536,7 +536,7 @@ func (input Compute8Inputs[I0, I1, I2, I3, I4, I5, I6, I7]) ToSteps() StepInputs } } -func Compute8[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, I7 any, O any](w *WorkflowSpecFactory, ref string, input Compute8Inputs[I0, I1, I2, I3, I4, I5, I6, I7], compute func(Runtime, I0, I1, I2, I3, I4, I5, I6, I7) (O, error)) ComputeOutputCap[O] { +func Compute8[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, I7 any, O any](w *WorkflowSpecFactory, ref string, input Compute8Inputs[I0, I1, I2, I3, I4, I5, I6, I7], compute func(SDK, I0, I1, I2, I3, I4, I5, I6, I7) (O, error)) ComputeOutputCap[O] { def := StepDefinition{ ID: "__internal__custom_compute@1.0.0", Ref: ref, @@ -545,37 +545,37 @@ func Compute8[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, I7 any, O CapabilityType: capabilities.CapabilityTypeAction, } - capFn := func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { + capFn := func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { var inputs runtime8Inputs[I0, I1, I2, I3, I4, I5, I6, I7] if err := request.Inputs.UnwrapTo(&inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } // verify against any schema ji, err := json.Marshal(inputs) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } if err := json.Unmarshal(ji, &inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - output, err := compute(runtime, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4, inputs.Arg5, inputs.Arg6, inputs.Arg7) + output, err := compute(sdk, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4, inputs.Arg5, inputs.Arg6, inputs.Arg7) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } computeOutput := ComputeOutput[O]{Value: output} wrapped, err := values.CreateMapFromStruct(computeOutput) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - return capabilities.CapabilityResponse{Value: wrapped} + return capabilities.CapabilityResponse{Value: wrapped}, nil } if w.fns == nil { - w.fns = map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse{} + w.fns = map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error){} } w.fns[ref] = capFn return &computeOutputCap[O]{(&Step[ComputeOutput[O]]{Definition: def}).AddTo(w)} @@ -621,7 +621,7 @@ func (input Compute9Inputs[I0, I1, I2, I3, I4, I5, I6, I7, I8]) ToSteps() StepIn } } -func Compute9[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, I7 any, I8 any, O any](w *WorkflowSpecFactory, ref string, input Compute9Inputs[I0, I1, I2, I3, I4, I5, I6, I7, I8], compute func(Runtime, I0, I1, I2, I3, I4, I5, I6, I7, I8) (O, error)) ComputeOutputCap[O] { +func Compute9[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, I7 any, I8 any, O any](w *WorkflowSpecFactory, ref string, input Compute9Inputs[I0, I1, I2, I3, I4, I5, I6, I7, I8], compute func(SDK, I0, I1, I2, I3, I4, I5, I6, I7, I8) (O, error)) ComputeOutputCap[O] { def := StepDefinition{ ID: "__internal__custom_compute@1.0.0", Ref: ref, @@ -630,37 +630,37 @@ func Compute9[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, I7 any, I8 CapabilityType: capabilities.CapabilityTypeAction, } - capFn := func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { + capFn := func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { var inputs runtime9Inputs[I0, I1, I2, I3, I4, I5, I6, I7, I8] if err := request.Inputs.UnwrapTo(&inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } // verify against any schema ji, err := json.Marshal(inputs) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } if err := json.Unmarshal(ji, &inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - output, err := compute(runtime, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4, inputs.Arg5, inputs.Arg6, inputs.Arg7, inputs.Arg8) + output, err := compute(sdk, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4, inputs.Arg5, inputs.Arg6, inputs.Arg7, inputs.Arg8) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } computeOutput := ComputeOutput[O]{Value: output} wrapped, err := values.CreateMapFromStruct(computeOutput) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - return capabilities.CapabilityResponse{Value: wrapped} + return capabilities.CapabilityResponse{Value: wrapped}, nil } if w.fns == nil { - w.fns = map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse{} + w.fns = map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error){} } w.fns[ref] = capFn return &computeOutputCap[O]{(&Step[ComputeOutput[O]]{Definition: def}).AddTo(w)} @@ -709,7 +709,7 @@ func (input Compute10Inputs[I0, I1, I2, I3, I4, I5, I6, I7, I8, I9]) ToSteps() S } } -func Compute10[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, I7 any, I8 any, I9 any, O any](w *WorkflowSpecFactory, ref string, input Compute10Inputs[I0, I1, I2, I3, I4, I5, I6, I7, I8, I9], compute func(Runtime, I0, I1, I2, I3, I4, I5, I6, I7, I8, I9) (O, error)) ComputeOutputCap[O] { +func Compute10[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, I7 any, I8 any, I9 any, O any](w *WorkflowSpecFactory, ref string, input Compute10Inputs[I0, I1, I2, I3, I4, I5, I6, I7, I8, I9], compute func(SDK, I0, I1, I2, I3, I4, I5, I6, I7, I8, I9) (O, error)) ComputeOutputCap[O] { def := StepDefinition{ ID: "__internal__custom_compute@1.0.0", Ref: ref, @@ -718,37 +718,37 @@ func Compute10[I0 any, I1 any, I2 any, I3 any, I4 any, I5 any, I6 any, I7 any, I CapabilityType: capabilities.CapabilityTypeAction, } - capFn := func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { + capFn := func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { var inputs runtime10Inputs[I0, I1, I2, I3, I4, I5, I6, I7, I8, I9] if err := request.Inputs.UnwrapTo(&inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } // verify against any schema ji, err := json.Marshal(inputs) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } if err := json.Unmarshal(ji, &inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - output, err := compute(runtime, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4, inputs.Arg5, inputs.Arg6, inputs.Arg7, inputs.Arg8, inputs.Arg9) + output, err := compute(sdk, inputs.Arg0, inputs.Arg1, inputs.Arg2, inputs.Arg3, inputs.Arg4, inputs.Arg5, inputs.Arg6, inputs.Arg7, inputs.Arg8, inputs.Arg9) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } computeOutput := ComputeOutput[O]{Value: output} wrapped, err := values.CreateMapFromStruct(computeOutput) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - return capabilities.CapabilityResponse{Value: wrapped} + return capabilities.CapabilityResponse{Value: wrapped}, nil } if w.fns == nil { - w.fns = map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse{} + w.fns = map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error){} } w.fns[ref] = capFn return &computeOutputCap[O]{(&Step[ComputeOutput[O]]{Definition: def}).AddTo(w)} diff --git a/pkg/workflows/sdk/compute_test.go b/pkg/workflows/compute_test.go similarity index 73% rename from pkg/workflows/sdk/compute_test.go rename to pkg/workflows/compute_test.go index 545a1f479..26075d0e3 100644 --- a/pkg/workflows/sdk/compute_test.go +++ b/pkg/workflows/compute_test.go @@ -1,21 +1,20 @@ -package sdk_test +package workflows_test import ( + "errors" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams" - - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" - "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - ocr3 "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3cap" + "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3" "github.com/smartcontractkit/chainlink-common/pkg/capabilities/targets/chainwriter" "github.com/smartcontractkit/chainlink-common/pkg/capabilities/triggers/streams" "github.com/smartcontractkit/chainlink-common/pkg/values" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testdata/fixtures/capabilities/notstreams" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) func TestCompute(t *testing.T) { @@ -39,34 +38,34 @@ func TestCompute(t *testing.T) { spec, err2 := workflow.Spec() require.NoError(t, err2) - expectedSpec := sdk.WorkflowSpec{ + expectedSpec := workflows.WorkflowSpec{ Name: "name", Owner: "owner", - Triggers: []sdk.StepDefinition{ + Triggers: []workflows.StepDefinition{ { ID: "notstreams@1.0.0", Ref: "trigger", - Inputs: sdk.StepInputs{}, + Inputs: workflows.StepInputs{}, Config: map[string]any{"maxFrequencyMs": 5000}, CapabilityType: capabilities.CapabilityTypeTrigger, }, }, - Actions: []sdk.StepDefinition{ + Actions: []workflows.StepDefinition{ { ID: "__internal__custom_compute@1.0.0", Ref: "Compute", - Inputs: sdk.StepInputs{ + Inputs: workflows.StepInputs{ Mapping: map[string]any{"Arg0": "$(trigger.outputs)"}, }, Config: map[string]any{}, CapabilityType: capabilities.CapabilityTypeAction, }, }, - Consensus: []sdk.StepDefinition{ + Consensus: []workflows.StepDefinition{ { ID: "offchain_reporting@1.0.0", Ref: "data-feeds-report", - Inputs: sdk.StepInputs{ + Inputs: workflows.StepInputs{ Mapping: map[string]any{"observations": "$(Compute.outputs.Value)"}, }, Config: map[string]any{ @@ -87,10 +86,10 @@ func TestCompute(t *testing.T) { CapabilityType: capabilities.CapabilityTypeConsensus, }, }, - Targets: []sdk.StepDefinition{ + Targets: []workflows.StepDefinition{ { ID: "write_ethereum-testnet-sepolia@1.0.0", - Inputs: sdk.StepInputs{ + Inputs: workflows.StepInputs{ Mapping: map[string]any{"signed_report": "$(data-feeds-report.outputs)"}, }, Config: map[string]any{ @@ -113,27 +112,42 @@ func TestCompute(t *testing.T) { require.NotNil(t, fn) req := capabilities.CapabilityRequest{Inputs: nsf} - actual := fn(struct{}{}, req) + actual, err := fn(struct{}{}, req) + require.NoError(t, err) expected, err := convertFeed(nil, anyNotStreamsInput) require.NoError(t, err) - computed := &sdk.ComputeOutput[[]streams.Feed]{} + computed := &workflows.ComputeOutput[[]streams.Feed]{} err = actual.Value.UnwrapTo(computed) require.NoError(t, err) assert.Equal(t, expected, computed.Value) }) + + t.Run("compute returns errors correctly", func(t *testing.T) { + anyErr := errors.New("nope") + workflow := createWorkflow(func(_ workflows.SDK, inputFeed notstreams.Feed) ([]streams.Feed, error) { + return nil, anyErr + }) + + fn := workflow.GetFn("Compute") + require.NotNil(t, fn) + + req := capabilities.CapabilityRequest{Inputs: nsf} + _, err := fn(struct{}{}, req) + require.Equal(t, anyErr, err) + }) } -func createWorkflow(fn func(_ sdk.Runtime, inputFeed notstreams.Feed) ([]streams.Feed, error)) *sdk.WorkflowSpecFactory { - workflow := sdk.NewWorkflowSpecFactory(sdk.NewWorkflowParams{ +func createWorkflow(fn func(_ workflows.SDK, inputFeed notstreams.Feed) ([]streams.Feed, error)) *workflows.WorkflowSpecFactory { + workflow := workflows.NewWorkflowSpecFactory(workflows.NewWorkflowParams{ Owner: "owner", Name: "name", }) trigger := notstreams.TriggerConfig{MaxFrequencyMs: 5000}.New(workflow) - computed := sdk.Compute1(workflow, "Compute", sdk.Compute1Inputs[notstreams.Feed]{Arg0: trigger}, fn) + computed := workflows.Compute1(workflow, "Compute", workflows.Compute1Inputs[notstreams.Feed]{Arg0: trigger}, fn) consensus := ocr3.DataFeedsConsensusConfig{ AggregationConfig: ocr3.DataFeedsConsensusConfigAggregationConfig{ @@ -162,7 +176,7 @@ func createWorkflow(fn func(_ sdk.Runtime, inputFeed notstreams.Feed) ([]streams return workflow } -func convertFeed(_ sdk.Runtime, inputFeed notstreams.Feed) ([]streams.Feed, error) { +func convertFeed(_ workflows.SDK, inputFeed notstreams.Feed) ([]streams.Feed, error) { return []streams.Feed{ { Metadata: streams.SignersMetadata{Signers: []string{inputFeed.Metadata.Signer}}, diff --git a/pkg/workflows/dependency_graph.go b/pkg/workflows/dependency_graph.go index ec3c724de..d0d2b3da2 100644 --- a/pkg/workflows/dependency_graph.go +++ b/pkg/workflows/dependency_graph.go @@ -8,15 +8,66 @@ import ( "github.com/dominikbraun/graph" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/capabilities" ) const ( KeywordTrigger = "trigger" ) +type StepInputs struct { + OutputRef string + Mapping map[string]any +} + +// StepDefinition is the parsed representation of a step in a workflow. +// +// Within the workflow spec, they are called "Capability Properties". +type StepDefinition struct { + ID string + Ref string + Inputs StepInputs + Config map[string]any + + CapabilityType capabilities.CapabilityType +} + +// WorkflowSpec is the parsed representation of a workflow. +// It is a derived representation of the yaml spec. +// Marshalling this struct is not guaranteed to produce the original yaml spec. +// Access the original yaml spec using the `String` method. +type WorkflowSpec struct { + Name string + Owner string + Triggers []StepDefinition + Actions []StepDefinition + Consensus []StepDefinition + Targets []StepDefinition + + cid string // content hash of the original yaml spec + yaml string // original yaml spec +} + +// String returns the original yaml spec of the workflow. +func (w *WorkflowSpec) String() string { + return w.yaml +} + +// CID returns the content hash of the original yaml spec of the workflow. +func (w *WorkflowSpec) CID() string { + return w.cid +} + +func (w *WorkflowSpec) Steps() []StepDefinition { + s := []StepDefinition{} + s = append(s, w.Actions...) + s = append(s, w.Consensus...) + s = append(s, w.Targets...) + return s +} + type Vertex struct { - sdk.StepDefinition + StepDefinition Dependencies []string } @@ -26,9 +77,9 @@ type DependencyGraph struct { ID string graph.Graph[string, *Vertex] - Triggers []*sdk.StepDefinition + Triggers []*StepDefinition - Spec *sdk.WorkflowSpec + Spec *WorkflowSpec } // VID is an identifier for a Vertex that can be used to uniquely identify it in a graph. @@ -38,7 +89,16 @@ func (v *Vertex) VID() string { return v.Ref } -func BuildDependencyGraph(spec sdk.WorkflowSpec) (*DependencyGraph, error) { +func ParseDependencyGraph(yamlWorkflow string) (*DependencyGraph, error) { + spec, err := ParseWorkflowSpecYaml(yamlWorkflow) + if err != nil { + return nil, err + } + + return BuildDependencyGraph(spec) +} + +func BuildDependencyGraph(spec WorkflowSpec) (*DependencyGraph, error) { // Construct and validate the graph. We instantiate an // empty graph with just one starting entry: `trigger`. // This provides the starting point for our graph and @@ -55,7 +115,7 @@ func BuildDependencyGraph(spec sdk.WorkflowSpec) (*DependencyGraph, error) { graph.Directed(), ) err := g.AddVertex(&Vertex{ - StepDefinition: sdk.StepDefinition{Ref: KeywordTrigger}, + StepDefinition: StepDefinition{Ref: KeywordTrigger}, }) if err != nil { return nil, err @@ -119,7 +179,7 @@ func BuildDependencyGraph(spec sdk.WorkflowSpec) (*DependencyGraph, error) { } } - var triggerSteps []*sdk.StepDefinition + triggerSteps := []*StepDefinition{} for _, t := range spec.Triggers { tt := t triggerSteps = append(triggerSteps, &tt) @@ -139,7 +199,7 @@ var ( // findRefs takes an `inputs` and returns a list of all the step references // contained within it. func findRefs(inputs any) ([]string, error) { - var refs []string + refs := []string{} _, err := DeepMap( inputs, // This function is called for each string in the map @@ -210,7 +270,7 @@ func DeepMap(input any, transform func(el string) (any, error)) (any, error) { } return nm, nil case []any: - var a []any + a := []any{} for _, el := range tv { ne, err := DeepMap(el, transform) if err != nil { diff --git a/pkg/workflows/dependency_graph_test.go b/pkg/workflows/dependency_graph_test.go index 32ecd9e6b..6b9469e26 100644 --- a/pkg/workflows/dependency_graph_test.go +++ b/pkg/workflows/dependency_graph_test.go @@ -365,7 +365,7 @@ targets: for _, tc := range testCases { t.Run(tc.name, func(st *testing.T) { //wf, err := workflows.Parse(tc.yaml) - wf, err := parseDependencyGraph(tc.yaml) + wf, err := workflows.ParseDependencyGraph(tc.yaml) if tc.errMsg != "" { assert.ErrorContains(st, err, tc.errMsg) } else { @@ -389,12 +389,3 @@ targets: }) } } - -func parseDependencyGraph(yamlWorkflow string) (*workflows.DependencyGraph, error) { - spec, err := workflows.ParseWorkflowSpecYaml(yamlWorkflow) - if err != nil { - return nil, err - } - - return workflows.BuildDependencyGraph(spec) -} diff --git a/pkg/workflows/sdk/gen/README.md b/pkg/workflows/gen/README.md similarity index 100% rename from pkg/workflows/sdk/gen/README.md rename to pkg/workflows/gen/README.md diff --git a/pkg/workflows/sdk/gen/compute.go.tmpl b/pkg/workflows/gen/compute.go.tmpl similarity index 68% rename from pkg/workflows/sdk/gen/compute.go.tmpl rename to pkg/workflows/gen/compute.go.tmpl index b8f62b3b3..36e573d4e 100644 --- a/pkg/workflows/sdk/gen/compute.go.tmpl +++ b/pkg/workflows/gen/compute.go.tmpl @@ -1,4 +1,4 @@ -package sdk +package workflows import ( "encoding/json" @@ -30,7 +30,7 @@ func (input Compute{{.}}Inputs[{{range RangeNum . }}I{{.}},{{ end }}]) ToSteps() } } -func Compute{{.}}[{{range RangeNum .}}I{{.}} any, {{ end }}O any](w *WorkflowSpecFactory, ref string, input Compute{{.}}Inputs[{{range RangeNum . }}I{{.}},{{ end }}], compute func(Runtime, {{range RangeNum . }}I{{.}},{{ end }})(O, error)) ComputeOutputCap[O] { +func Compute{{.}}[{{range RangeNum .}}I{{.}} any, {{ end }}O any](w *WorkflowSpecFactory, ref string, input Compute{{.}}Inputs[{{range RangeNum . }}I{{.}},{{ end }}], compute func(SDK, {{range RangeNum . }}I{{.}},{{ end }})(O, error)) ComputeOutputCap[O] { def := StepDefinition{ ID: "__internal__custom_compute@1.0.0", Ref: ref, @@ -39,37 +39,37 @@ func Compute{{.}}[{{range RangeNum .}}I{{.}} any, {{ end }}O any](w *WorkflowSp CapabilityType: capabilities.CapabilityTypeAction, } - capFn := func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse { + capFn := func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { var inputs runtime{{.}}Inputs[{{range RangeNum . }}I{{.}},{{ end }}] if err := request.Inputs.UnwrapTo(&inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } // verify against any schema ji, err := json.Marshal(inputs) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } if err := json.Unmarshal(ji, &inputs); err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - output, err := compute(runtime, {{range RangeNum . }}inputs.Arg{{.}},{{ end }}) + output, err := compute(sdk, {{range RangeNum . }}inputs.Arg{{.}},{{ end }}) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } computeOutput := ComputeOutput[O]{Value: output} wrapped, err := values.CreateMapFromStruct(computeOutput) if err != nil { - return capabilities.CapabilityResponse{} + return capabilities.CapabilityResponse{}, err } - return capabilities.CapabilityResponse{Value: wrapped} + return capabilities.CapabilityResponse{Value: wrapped}, nil } if w.fns == nil { - w.fns = map[string]func(runtime Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse{} + w.fns = map[string]func(sdk SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error){} } w.fns[ref] = capFn return &computeOutputCap[O]{(&Step[ComputeOutput[O]]{Definition: def}).AddTo(w)} diff --git a/pkg/workflows/sdk/gen/main.go b/pkg/workflows/gen/main.go similarity index 100% rename from pkg/workflows/sdk/gen/main.go rename to pkg/workflows/gen/main.go diff --git a/pkg/workflows/models_yaml.go b/pkg/workflows/models_yaml.go index 8706a0269..7c3e87a6d 100644 --- a/pkg/workflows/models_yaml.go +++ b/pkg/workflows/models_yaml.go @@ -2,6 +2,7 @@ package workflows import ( "bytes" + "crypto/sha256" "encoding/json" "errors" "fmt" @@ -15,7 +16,6 @@ import ( "sigs.k8s.io/yaml" "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" ) func GenerateJSONSchema() ([]byte, error) { @@ -24,33 +24,37 @@ func GenerateJSONSchema() ([]byte, error) { return json.MarshalIndent(schema, "", " ") } -func ParseWorkflowSpecYaml(data string) (sdk.WorkflowSpec, error) { +func ParseWorkflowSpecYaml(data string) (WorkflowSpec, error) { var url = "https://github.com/smartcontractkit/chainlink/" w := WorkflowSpecYaml{} err := yaml.Unmarshal([]byte(data), &w) if err != nil { - return sdk.WorkflowSpec{}, err + return WorkflowSpec{}, err } schemaStr, err := GenerateJSONSchema() if err != nil { - return sdk.WorkflowSpec{}, err + return WorkflowSpec{}, err } schema, err := validate.CompileString(url, string(schemaStr)) if err != nil { - return sdk.WorkflowSpec{}, err + return WorkflowSpec{}, err } var jsonToValidate any err = yaml.Unmarshal([]byte(data), &jsonToValidate) if err != nil { - return sdk.WorkflowSpec{}, err + return WorkflowSpec{}, err } err = schema.Validate(jsonToValidate) if err != nil { - return sdk.WorkflowSpec{}, err + return WorkflowSpec{}, err } + + sha256Hash := sha256.New() + sha256Hash.Write([]byte(data)) + w.cid = fmt.Sprintf("%x", sha256Hash.Sum(nil)) w.yaml = data return w.ToWorkflowSpec(), nil @@ -75,6 +79,8 @@ type WorkflowSpecYaml struct { // Targets represents the final step of the workflow, delivering the processed data to a specified location. Targets []stepDefinitionYaml `json:"targets" jsonschema:"required"` + // computed hash of the original workflow yaml spec + cid string yaml string // original yaml spec } @@ -82,42 +88,44 @@ type WorkflowSpecYaml struct { // // We support multiple ways of defining a workflow spec yaml, // but internally we want to work with a single representation. -func (w WorkflowSpecYaml) ToWorkflowSpec() sdk.WorkflowSpec { - triggers := make([]sdk.StepDefinition, 0, len(w.Triggers)) +func (w WorkflowSpecYaml) ToWorkflowSpec() WorkflowSpec { + triggers := make([]StepDefinition, 0, len(w.Triggers)) for _, t := range w.Triggers { sd := t.toStepDefinition() sd.CapabilityType = capabilities.CapabilityTypeTrigger triggers = append(triggers, sd) } - actions := make([]sdk.StepDefinition, 0, len(w.Actions)) + actions := make([]StepDefinition, 0, len(w.Actions)) for _, a := range w.Actions { sd := a.toStepDefinition() sd.CapabilityType = capabilities.CapabilityTypeAction actions = append(actions, sd) } - consensus := make([]sdk.StepDefinition, 0, len(w.Consensus)) + consensus := make([]StepDefinition, 0, len(w.Consensus)) for _, c := range w.Consensus { sd := c.toStepDefinition() sd.CapabilityType = capabilities.CapabilityTypeConsensus consensus = append(consensus, sd) } - targets := make([]sdk.StepDefinition, 0, len(w.Targets)) + targets := make([]StepDefinition, 0, len(w.Targets)) for _, t := range w.Targets { sd := t.toStepDefinition() sd.CapabilityType = capabilities.CapabilityTypeTarget targets = append(targets, sd) } - return sdk.WorkflowSpec{ + return WorkflowSpec{ Triggers: triggers, Actions: actions, Consensus: consensus, Targets: targets, Name: w.Name, Owner: w.Owner, + cid: w.cid, + yaml: w.yaml, } } @@ -206,7 +214,7 @@ func (m Mapping) MarshalJSON() ([]byte, error) { // triggerDefinitionYaml is the YAML representation of a trigger step in a workflow. // Like `stepDefinitionYaml`, this will get reduced to a single representation for -// all steps, `sdk.StepDefinition`. +// all steps, `StepDefinition`. // NOTE: unlike stepDefinitionYaml, this omits the `inputs` field, which isn't used // for triggers. type triggerDefinitionYaml struct { @@ -271,11 +279,11 @@ type triggerDefinitionYaml struct { Config Mapping `json:"config" jsonschema:"required"` } -// toStepDefinition converts a stepDefinitionYaml to a sdk.StepDefinition. +// toStepDefinition converts a stepDefinitionYaml to a StepDefinition. // -// `sdk.StepDefinition` is the converged representation of a step in a workflow. -func (s triggerDefinitionYaml) toStepDefinition() sdk.StepDefinition { - return sdk.StepDefinition{ +// `StepDefinition` is the converged representation of a step in a workflow. +func (s triggerDefinitionYaml) toStepDefinition() StepDefinition { + return StepDefinition{ Ref: s.Ref, ID: s.ID.String(), Config: s.Config, @@ -285,7 +293,7 @@ func (s triggerDefinitionYaml) toStepDefinition() sdk.StepDefinition { // stepDefinitionYaml is the YAML representation of a step in a workflow. // // It allows for multiple ways of defining a step, which we later -// convert to a single representation, `sdk.StepDefinition`. +// convert to a single representation, `StepDefinition`. type stepDefinitionYaml struct { // A universally unique name for a capability will be defined under the “id” property. The uniqueness will, eventually, be enforced in the Capability Registry. // @@ -360,14 +368,14 @@ type stepDefinitionYaml struct { Config Mapping `json:"config" jsonschema:"required"` } -// toStepDefinition converts a stepDefinitionYaml to a sdk.StepDefinition. +// toStepDefinition converts a stepDefinitionYaml to a StepDefinition. // -// `sdk.StepDefinition` is the converged representation of a step in a workflow. -func (s stepDefinitionYaml) toStepDefinition() sdk.StepDefinition { - return sdk.StepDefinition{ +// `StepDefinition` is the converged representation of a step in a workflow. +func (s stepDefinitionYaml) toStepDefinition() StepDefinition { + return StepDefinition{ Ref: s.Ref, ID: s.ID.String(), - Inputs: sdk.StepInputs{ + Inputs: StepInputs{ OutputRef: s.Inputs.outputRef, Mapping: s.Inputs.mapping, }, @@ -375,7 +383,7 @@ func (s stepDefinitionYaml) toStepDefinition() sdk.StepDefinition { } } -// input is the Mapping or interpolation-style representation of the "inputs" field in a sdk.StepDefinition. +// input is the Mapping or interpolation-style representation of the "inputs" field in a StepDefinition. // If an interpolation value is provided, it must obey the following rules be a valid interpolation string, // of the form "$(.outputs)", where ref is either "trigger" or a ref in the workflow. type inputs struct { @@ -441,7 +449,7 @@ func (inputs) JSONSchema() *jsonschema.Schema { } } -// stepDefinitionID represents both the string and table representations of the "id" field in a sdk.StepDefinition. +// stepDefinitionID represents both the string and table representations of the "id" field in a StepDefinition. type stepDefinitionID struct { idStr string idTable *stepDefinitionTableID diff --git a/pkg/workflows/models_yaml_test.go b/pkg/workflows/models_yaml_test.go index a2f23e1fd..6ee071beb 100644 --- a/pkg/workflows/models_yaml_test.go +++ b/pkg/workflows/models_yaml_test.go @@ -143,6 +143,7 @@ func TestWorkflowSpecMarshalling(t *testing.T) { workflowSpec, err := ParseWorkflowSpecYaml(string(workflowBytes)) require.NoError(t, err) + require.Equal(t, string(workflowBytes), workflowSpec.String()) workflowSpecBytes, err := json.MarshalIndent(workflowSpec, "", " ") require.NoError(t, err) @@ -162,6 +163,38 @@ func TestWorkflowSpecMarshalling(t *testing.T) { t.FailNow() } }) + + t.Run("Logically equivalent specs with different CIDs", func(t *testing.T) { + // for better or worse we don't have a canonical form of a workflow spec that + // we use to generate the CID + // this means that logically equivalent specs can have different CIDs + variant1 := fixtureReader("variant_1") + variant2 := fixtureReader("variant_2") + + workflowSpec1, err := ParseWorkflowSpecYaml(string(variant1)) + require.NoError(t, err) + + workflowSpec2, err := ParseWorkflowSpecYaml(string(variant2)) + require.NoError(t, err) + + // original YAML and CIDs should be different + require.NotEqual(t, workflowSpec1.CID(), workflowSpec2.CID()) + require.NotEqual(t, workflowSpec1.String(), workflowSpec2.String()) + + // the parsed results should be logically equivalent + require.Equal(t, workflowSpec1.Actions, workflowSpec2.Actions) + require.Equal(t, workflowSpec1.Consensus, workflowSpec2.Consensus) + require.Equal(t, workflowSpec1.Targets, workflowSpec2.Targets) + require.Equal(t, workflowSpec1.Triggers, workflowSpec2.Triggers) + require.Equal(t, workflowSpec1.Owner, workflowSpec2.Owner) + require.Equal(t, workflowSpec1.Name, workflowSpec2.Name) + // serialized JSON of the parsed results should be the same + jsonSpec1, err := json.MarshalIndent(workflowSpec1, "", " ") + require.NoError(t, err) + jsonSpec2, err := json.MarshalIndent(workflowSpec2, "", " ") + require.NoError(t, err) + require.JSONEq(t, string(jsonSpec1), string(jsonSpec2)) + }) } func TestJsonSchema(t *testing.T) { diff --git a/pkg/workflows/runner.go b/pkg/workflows/runner.go new file mode 100644 index 000000000..b771a2b63 --- /dev/null +++ b/pkg/workflows/runner.go @@ -0,0 +1,6 @@ +package workflows + +type Runner interface { + Run(factory *WorkflowSpecFactory) error + Config() []byte +} diff --git a/pkg/workflows/sdk.go b/pkg/workflows/sdk.go new file mode 100644 index 000000000..bda4c4c28 --- /dev/null +++ b/pkg/workflows/sdk.go @@ -0,0 +1,5 @@ +package workflows + +type SDK interface { + // Functions to come +} diff --git a/pkg/workflows/sdk/runner.go b/pkg/workflows/sdk/runner.go deleted file mode 100644 index a5db2b5e4..000000000 --- a/pkg/workflows/sdk/runner.go +++ /dev/null @@ -1,6 +0,0 @@ -package sdk - -type Runner interface { - Run(factory *WorkflowSpecFactory) - Config() []byte -} diff --git a/pkg/workflows/sdk/runtime.go b/pkg/workflows/sdk/runtime.go deleted file mode 100644 index dcc45c816..000000000 --- a/pkg/workflows/sdk/runtime.go +++ /dev/null @@ -1,5 +0,0 @@ -package sdk - -type Runtime interface { - // Functions to come -} diff --git a/pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams/trigger_builders_generated.go b/pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams/trigger_builders_generated.go deleted file mode 100644 index 4244079d4..000000000 --- a/pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams/trigger_builders_generated.go +++ /dev/null @@ -1,226 +0,0 @@ -// Code generated by github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli, DO NOT EDIT. - -package notstreams - -import ( - "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" -) - -func (cfg TriggerConfig) New(w *sdk.WorkflowSpecFactory) FeedCap { - ref := "trigger" - def := sdk.StepDefinition{ - ID: "notstreams@1.0.0", Ref: ref, - Inputs: sdk.StepInputs{}, - Config: map[string]any{ - "maxFrequencyMs": cfg.MaxFrequencyMs, - }, - CapabilityType: capabilities.CapabilityTypeTrigger, - } - - step := sdk.Step[Feed]{Definition: def} - return FeedCapFromStep(w, step) -} - -type FeedCap interface { - sdk.CapDefinition[Feed] - Metadata() SignerMetadataCap - Payload() FeedReportCap - Timestamp() sdk.CapDefinition[int64] - private() -} - -// FeedCapFromStep should only be called from generated code to assure type safety -func FeedCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[Feed]) FeedCap { - raw := step.AddTo(w) - return &feed{CapDefinition: raw} -} - -type feed struct { - sdk.CapDefinition[Feed] -} - -func (*feed) private() {} -func (c *feed) Metadata() SignerMetadataCap { - return &signerMetadata{CapDefinition: sdk.AccessField[Feed, SignerMetadata](c.CapDefinition, "Metadata")} -} -func (c *feed) Payload() FeedReportCap { - return &feedReport{CapDefinition: sdk.AccessField[Feed, FeedReport](c.CapDefinition, "Payload")} -} -func (c *feed) Timestamp() sdk.CapDefinition[int64] { - return sdk.AccessField[Feed, int64](c.CapDefinition, "Timestamp") -} - -func NewFeedFromFields( - metadata SignerMetadataCap, - payload FeedReportCap, - timestamp sdk.CapDefinition[int64]) FeedCap { - return &simpleFeed{ - CapDefinition: sdk.ComponentCapDefinition[Feed]{ - "Metadata": metadata.Ref(), - "Payload": payload.Ref(), - "Timestamp": timestamp.Ref(), - }, - metadata: metadata, - payload: payload, - timestamp: timestamp, - } -} - -type simpleFeed struct { - sdk.CapDefinition[Feed] - metadata SignerMetadataCap - payload FeedReportCap - timestamp sdk.CapDefinition[int64] -} - -func (c *simpleFeed) Metadata() SignerMetadataCap { - return c.metadata -} -func (c *simpleFeed) Payload() FeedReportCap { - return c.payload -} -func (c *simpleFeed) Timestamp() sdk.CapDefinition[int64] { - return c.timestamp -} - -func (c *simpleFeed) private() {} - -type FeedReportCap interface { - sdk.CapDefinition[FeedReport] - BuyPrice() sdk.CapDefinition[[]uint8] - FullReport() sdk.CapDefinition[[]uint8] - ObservationTimestamp() sdk.CapDefinition[int64] - ReportContext() sdk.CapDefinition[[]uint8] - SellPrice() sdk.CapDefinition[[]uint8] - Signature() sdk.CapDefinition[[]uint8] - private() -} - -// FeedReportCapFromStep should only be called from generated code to assure type safety -func FeedReportCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[FeedReport]) FeedReportCap { - raw := step.AddTo(w) - return &feedReport{CapDefinition: raw} -} - -type feedReport struct { - sdk.CapDefinition[FeedReport] -} - -func (*feedReport) private() {} -func (c *feedReport) BuyPrice() sdk.CapDefinition[[]uint8] { - return sdk.AccessField[FeedReport, []uint8](c.CapDefinition, "BuyPrice") -} -func (c *feedReport) FullReport() sdk.CapDefinition[[]uint8] { - return sdk.AccessField[FeedReport, []uint8](c.CapDefinition, "FullReport") -} -func (c *feedReport) ObservationTimestamp() sdk.CapDefinition[int64] { - return sdk.AccessField[FeedReport, int64](c.CapDefinition, "ObservationTimestamp") -} -func (c *feedReport) ReportContext() sdk.CapDefinition[[]uint8] { - return sdk.AccessField[FeedReport, []uint8](c.CapDefinition, "ReportContext") -} -func (c *feedReport) SellPrice() sdk.CapDefinition[[]uint8] { - return sdk.AccessField[FeedReport, []uint8](c.CapDefinition, "SellPrice") -} -func (c *feedReport) Signature() sdk.CapDefinition[[]uint8] { - return sdk.AccessField[FeedReport, []uint8](c.CapDefinition, "Signature") -} - -func NewFeedReportFromFields( - buyPrice sdk.CapDefinition[[]uint8], - fullReport sdk.CapDefinition[[]uint8], - observationTimestamp sdk.CapDefinition[int64], - reportContext sdk.CapDefinition[[]uint8], - sellPrice sdk.CapDefinition[[]uint8], - signature sdk.CapDefinition[[]uint8]) FeedReportCap { - return &simpleFeedReport{ - CapDefinition: sdk.ComponentCapDefinition[FeedReport]{ - "BuyPrice": buyPrice.Ref(), - "FullReport": fullReport.Ref(), - "ObservationTimestamp": observationTimestamp.Ref(), - "ReportContext": reportContext.Ref(), - "SellPrice": sellPrice.Ref(), - "Signature": signature.Ref(), - }, - buyPrice: buyPrice, - fullReport: fullReport, - observationTimestamp: observationTimestamp, - reportContext: reportContext, - sellPrice: sellPrice, - signature: signature, - } -} - -type simpleFeedReport struct { - sdk.CapDefinition[FeedReport] - buyPrice sdk.CapDefinition[[]uint8] - fullReport sdk.CapDefinition[[]uint8] - observationTimestamp sdk.CapDefinition[int64] - reportContext sdk.CapDefinition[[]uint8] - sellPrice sdk.CapDefinition[[]uint8] - signature sdk.CapDefinition[[]uint8] -} - -func (c *simpleFeedReport) BuyPrice() sdk.CapDefinition[[]uint8] { - return c.buyPrice -} -func (c *simpleFeedReport) FullReport() sdk.CapDefinition[[]uint8] { - return c.fullReport -} -func (c *simpleFeedReport) ObservationTimestamp() sdk.CapDefinition[int64] { - return c.observationTimestamp -} -func (c *simpleFeedReport) ReportContext() sdk.CapDefinition[[]uint8] { - return c.reportContext -} -func (c *simpleFeedReport) SellPrice() sdk.CapDefinition[[]uint8] { - return c.sellPrice -} -func (c *simpleFeedReport) Signature() sdk.CapDefinition[[]uint8] { - return c.signature -} - -func (c *simpleFeedReport) private() {} - -type SignerMetadataCap interface { - sdk.CapDefinition[SignerMetadata] - Signer() sdk.CapDefinition[string] - private() -} - -// SignerMetadataCapFromStep should only be called from generated code to assure type safety -func SignerMetadataCapFromStep(w *sdk.WorkflowSpecFactory, step sdk.Step[SignerMetadata]) SignerMetadataCap { - raw := step.AddTo(w) - return &signerMetadata{CapDefinition: raw} -} - -type signerMetadata struct { - sdk.CapDefinition[SignerMetadata] -} - -func (*signerMetadata) private() {} -func (c *signerMetadata) Signer() sdk.CapDefinition[string] { - return sdk.AccessField[SignerMetadata, string](c.CapDefinition, "Signer") -} - -func NewSignerMetadataFromFields( - signer sdk.CapDefinition[string]) SignerMetadataCap { - return &simpleSignerMetadata{ - CapDefinition: sdk.ComponentCapDefinition[SignerMetadata]{ - "Signer": signer.Ref(), - }, - signer: signer, - } -} - -type simpleSignerMetadata struct { - sdk.CapDefinition[SignerMetadata] - signer sdk.CapDefinition[string] -} - -func (c *simpleSignerMetadata) Signer() sdk.CapDefinition[string] { - return c.signer -} - -func (c *simpleSignerMetadata) private() {} diff --git a/pkg/workflows/sdk/testdata/fixtures/workflows/workflow_schema.json b/pkg/workflows/sdk/testdata/fixtures/workflows/workflow_schema.json deleted file mode 100644 index 9e8d9c536..000000000 --- a/pkg/workflows/sdk/testdata/fixtures/workflows/workflow_schema.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/smartcontractkit/chainlink-common/pkg/workflows/workflow-spec-yaml", - "$ref": "#/$defs/WorkflowSpecYaml", - "$defs": { - "Mapping": { - "type": "object" - }, - "WorkflowSpecYaml": { - "properties": { - "name": { - "type": "string", - "maxLength": 10, - "pattern": "^[0-9A-Za-z_\\-]+$" - }, - "owner": { - "type": "string", - "pattern": "^0x[0-9a-fA-F]{40}$" - }, - "triggers": { - "items": { - "$ref": "#/$defs/triggerDefinitionYaml" - }, - "type": "array" - }, - "actions": { - "items": { - "$ref": "#/$defs/stepDefinitionYaml" - }, - "type": "array" - }, - "consensus": { - "items": { - "$ref": "#/$defs/stepDefinitionYaml" - }, - "type": "array" - }, - "targets": { - "items": { - "$ref": "#/$defs/stepDefinitionYaml" - }, - "type": "array" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "triggers", - "targets" - ] - }, - "inputs": { - "oneOf": [ - { - "type": "string", - "pattern": "^\\$\\([a-z0-9_-]+\\.outputs\\)$" - }, - { - "type": "object" - } - ], - "title": "id" - }, - "stepDefinitionID": { - "oneOf": [ - { - "type": "string", - "pattern": "^[a-z0-9_\\-:]+@(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$" - }, - { - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string", - "pattern": "(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "type": "object" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "name", - "version", - "labels" - ] - } - ], - "title": "id" - }, - "stepDefinitionYaml": { - "properties": { - "id": { - "$ref": "#/$defs/stepDefinitionID" - }, - "ref": { - "type": "string", - "pattern": "^[a-z0-9_-]+$" - }, - "inputs": { - "$ref": "#/$defs/inputs" - }, - "config": { - "$ref": "#/$defs/Mapping" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "id", - "inputs", - "config" - ] - }, - "triggerDefinitionYaml": { - "properties": { - "id": { - "$ref": "#/$defs/stepDefinitionID" - }, - "ref": { - "type": "string", - "pattern": "^[a-z0-9_-]+$" - }, - "config": { - "$ref": "#/$defs/Mapping" - } - }, - "additionalProperties": false, - "type": "object", - "required": [ - "id", - "config" - ] - } - } -} \ No newline at end of file diff --git a/pkg/workflows/sdk/testutils/runtime.go b/pkg/workflows/sdk/testutils/runtime.go deleted file mode 100644 index 58026027f..000000000 --- a/pkg/workflows/sdk/testutils/runtime.go +++ /dev/null @@ -1,9 +0,0 @@ -package testutils - -import ( - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" -) - -type runtime struct{} - -var _ sdk.Runtime = &runtime{} diff --git a/pkg/workflows/sdk/workflow_spec.go b/pkg/workflows/sdk/workflow_spec.go deleted file mode 100644 index 2f3338654..000000000 --- a/pkg/workflows/sdk/workflow_spec.go +++ /dev/null @@ -1,37 +0,0 @@ -package sdk - -import "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - -type StepInputs struct { - OutputRef string - Mapping map[string]any -} - -// StepDefinition is the parsed representation of a step in a workflow. -// -// Within the workflow spec, they are called "Capability Properties". -type StepDefinition struct { - ID string - Ref string - Inputs StepInputs - Config map[string]any - - CapabilityType capabilities.CapabilityType -} - -type WorkflowSpec struct { - Name string - Owner string - Triggers []StepDefinition - Actions []StepDefinition - Consensus []StepDefinition - Targets []StepDefinition -} - -func (w *WorkflowSpec) Steps() []StepDefinition { - s := []StepDefinition{} - s = append(s, w.Actions...) - s = append(s, w.Consensus...) - s = append(s, w.Targets...) - return s -} diff --git a/pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams/notstreams_trigger-schema.json b/pkg/workflows/testdata/fixtures/capabilities/notstreams/notstreams_trigger-schema.json similarity index 100% rename from pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams/notstreams_trigger-schema.json rename to pkg/workflows/testdata/fixtures/capabilities/notstreams/notstreams_trigger-schema.json diff --git a/pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams/notstreams_trigger_generated.go b/pkg/workflows/testdata/fixtures/capabilities/notstreams/notstreams_trigger_generated.go similarity index 100% rename from pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams/notstreams_trigger_generated.go rename to pkg/workflows/testdata/fixtures/capabilities/notstreams/notstreams_trigger_generated.go diff --git a/pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams/notstreamstest/trigger_mock_generated.go b/pkg/workflows/testdata/fixtures/capabilities/notstreams/notstreamstest/trigger_mock_generated.go similarity index 89% rename from pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams/notstreamstest/trigger_mock_generated.go rename to pkg/workflows/testdata/fixtures/capabilities/notstreams/notstreamstest/trigger_mock_generated.go index 9eb5550a8..f7b85f886 100644 --- a/pkg/workflows/sdk/testdata/fixtures/capabilities/notstreams/notstreamstest/trigger_mock_generated.go +++ b/pkg/workflows/testdata/fixtures/capabilities/notstreams/notstreamstest/trigger_mock_generated.go @@ -6,7 +6,7 @@ package notstreamstest import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/triggers/notstreams" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) // Trigger registers a new capability mock with the runner diff --git a/pkg/workflows/testdata/fixtures/capabilities/notstreams/trigger_builders_generated.go b/pkg/workflows/testdata/fixtures/capabilities/notstreams/trigger_builders_generated.go new file mode 100644 index 000000000..b7bbfa572 --- /dev/null +++ b/pkg/workflows/testdata/fixtures/capabilities/notstreams/trigger_builders_generated.go @@ -0,0 +1,226 @@ +// Code generated by github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli, DO NOT EDIT. + +package notstreams + +import ( + "github.com/smartcontractkit/chainlink-common/pkg/capabilities" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" +) + +func (cfg TriggerConfig) New(w *workflows.WorkflowSpecFactory) FeedCap { + ref := "trigger" + def := workflows.StepDefinition{ + ID: "notstreams@1.0.0", Ref: ref, + Inputs: workflows.StepInputs{}, + Config: map[string]any{ + "maxFrequencyMs": cfg.MaxFrequencyMs, + }, + CapabilityType: capabilities.CapabilityTypeTrigger, + } + + step := workflows.Step[Feed]{Definition: def} + return FeedCapFromStep(w, step) +} + +type FeedCap interface { + workflows.CapDefinition[Feed] + Metadata() SignerMetadataCap + Payload() FeedReportCap + Timestamp() workflows.CapDefinition[int64] + private() +} + +// FeedCapFromStep should only be called from generated code to assure type safety +func FeedCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[Feed]) FeedCap { + raw := step.AddTo(w) + return &feed{CapDefinition: raw} +} + +type feed struct { + workflows.CapDefinition[Feed] +} + +func (*feed) private() {} +func (c *feed) Metadata() SignerMetadataCap { + return &signerMetadata{CapDefinition: workflows.AccessField[Feed, SignerMetadata](c.CapDefinition, "Metadata")} +} +func (c *feed) Payload() FeedReportCap { + return &feedReport{CapDefinition: workflows.AccessField[Feed, FeedReport](c.CapDefinition, "Payload")} +} +func (c *feed) Timestamp() workflows.CapDefinition[int64] { + return workflows.AccessField[Feed, int64](c.CapDefinition, "Timestamp") +} + +func NewFeedFromFields( + metadata SignerMetadataCap, + payload FeedReportCap, + timestamp workflows.CapDefinition[int64]) FeedCap { + return &simpleFeed{ + CapDefinition: workflows.ComponentCapDefinition[Feed]{ + "Metadata": metadata.Ref(), + "Payload": payload.Ref(), + "Timestamp": timestamp.Ref(), + }, + metadata: metadata, + payload: payload, + timestamp: timestamp, + } +} + +type simpleFeed struct { + workflows.CapDefinition[Feed] + metadata SignerMetadataCap + payload FeedReportCap + timestamp workflows.CapDefinition[int64] +} + +func (c *simpleFeed) Metadata() SignerMetadataCap { + return c.metadata +} +func (c *simpleFeed) Payload() FeedReportCap { + return c.payload +} +func (c *simpleFeed) Timestamp() workflows.CapDefinition[int64] { + return c.timestamp +} + +func (c *simpleFeed) private() {} + +type FeedReportCap interface { + workflows.CapDefinition[FeedReport] + BuyPrice() workflows.CapDefinition[[]uint8] + FullReport() workflows.CapDefinition[[]uint8] + ObservationTimestamp() workflows.CapDefinition[int64] + ReportContext() workflows.CapDefinition[[]uint8] + SellPrice() workflows.CapDefinition[[]uint8] + Signature() workflows.CapDefinition[[]uint8] + private() +} + +// FeedReportCapFromStep should only be called from generated code to assure type safety +func FeedReportCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[FeedReport]) FeedReportCap { + raw := step.AddTo(w) + return &feedReport{CapDefinition: raw} +} + +type feedReport struct { + workflows.CapDefinition[FeedReport] +} + +func (*feedReport) private() {} +func (c *feedReport) BuyPrice() workflows.CapDefinition[[]uint8] { + return workflows.AccessField[FeedReport, []uint8](c.CapDefinition, "BuyPrice") +} +func (c *feedReport) FullReport() workflows.CapDefinition[[]uint8] { + return workflows.AccessField[FeedReport, []uint8](c.CapDefinition, "FullReport") +} +func (c *feedReport) ObservationTimestamp() workflows.CapDefinition[int64] { + return workflows.AccessField[FeedReport, int64](c.CapDefinition, "ObservationTimestamp") +} +func (c *feedReport) ReportContext() workflows.CapDefinition[[]uint8] { + return workflows.AccessField[FeedReport, []uint8](c.CapDefinition, "ReportContext") +} +func (c *feedReport) SellPrice() workflows.CapDefinition[[]uint8] { + return workflows.AccessField[FeedReport, []uint8](c.CapDefinition, "SellPrice") +} +func (c *feedReport) Signature() workflows.CapDefinition[[]uint8] { + return workflows.AccessField[FeedReport, []uint8](c.CapDefinition, "Signature") +} + +func NewFeedReportFromFields( + buyPrice workflows.CapDefinition[[]uint8], + fullReport workflows.CapDefinition[[]uint8], + observationTimestamp workflows.CapDefinition[int64], + reportContext workflows.CapDefinition[[]uint8], + sellPrice workflows.CapDefinition[[]uint8], + signature workflows.CapDefinition[[]uint8]) FeedReportCap { + return &simpleFeedReport{ + CapDefinition: workflows.ComponentCapDefinition[FeedReport]{ + "BuyPrice": buyPrice.Ref(), + "FullReport": fullReport.Ref(), + "ObservationTimestamp": observationTimestamp.Ref(), + "ReportContext": reportContext.Ref(), + "SellPrice": sellPrice.Ref(), + "Signature": signature.Ref(), + }, + buyPrice: buyPrice, + fullReport: fullReport, + observationTimestamp: observationTimestamp, + reportContext: reportContext, + sellPrice: sellPrice, + signature: signature, + } +} + +type simpleFeedReport struct { + workflows.CapDefinition[FeedReport] + buyPrice workflows.CapDefinition[[]uint8] + fullReport workflows.CapDefinition[[]uint8] + observationTimestamp workflows.CapDefinition[int64] + reportContext workflows.CapDefinition[[]uint8] + sellPrice workflows.CapDefinition[[]uint8] + signature workflows.CapDefinition[[]uint8] +} + +func (c *simpleFeedReport) BuyPrice() workflows.CapDefinition[[]uint8] { + return c.buyPrice +} +func (c *simpleFeedReport) FullReport() workflows.CapDefinition[[]uint8] { + return c.fullReport +} +func (c *simpleFeedReport) ObservationTimestamp() workflows.CapDefinition[int64] { + return c.observationTimestamp +} +func (c *simpleFeedReport) ReportContext() workflows.CapDefinition[[]uint8] { + return c.reportContext +} +func (c *simpleFeedReport) SellPrice() workflows.CapDefinition[[]uint8] { + return c.sellPrice +} +func (c *simpleFeedReport) Signature() workflows.CapDefinition[[]uint8] { + return c.signature +} + +func (c *simpleFeedReport) private() {} + +type SignerMetadataCap interface { + workflows.CapDefinition[SignerMetadata] + Signer() workflows.CapDefinition[string] + private() +} + +// SignerMetadataCapFromStep should only be called from generated code to assure type safety +func SignerMetadataCapFromStep(w *workflows.WorkflowSpecFactory, step workflows.Step[SignerMetadata]) SignerMetadataCap { + raw := step.AddTo(w) + return &signerMetadata{CapDefinition: raw} +} + +type signerMetadata struct { + workflows.CapDefinition[SignerMetadata] +} + +func (*signerMetadata) private() {} +func (c *signerMetadata) Signer() workflows.CapDefinition[string] { + return workflows.AccessField[SignerMetadata, string](c.CapDefinition, "Signer") +} + +func NewSignerMetadataFromFields( + signer workflows.CapDefinition[string]) SignerMetadataCap { + return &simpleSignerMetadata{ + CapDefinition: workflows.ComponentCapDefinition[SignerMetadata]{ + "Signer": signer.Ref(), + }, + signer: signer, + } +} + +type simpleSignerMetadata struct { + workflows.CapDefinition[SignerMetadata] + signer workflows.CapDefinition[string] +} + +func (c *simpleSignerMetadata) Signer() workflows.CapDefinition[string] { + return c.signer +} + +func (c *simpleSignerMetadata) private() {} diff --git a/pkg/workflows/sdk/testdata/fixtures/workflows/expected_sepolia.yaml b/pkg/workflows/testdata/fixtures/workflows/expected_sepolia.yaml similarity index 100% rename from pkg/workflows/sdk/testdata/fixtures/workflows/expected_sepolia.yaml rename to pkg/workflows/testdata/fixtures/workflows/expected_sepolia.yaml diff --git a/pkg/workflows/sdk/testdata/fixtures/workflows/notstreamssepolia.yaml b/pkg/workflows/testdata/fixtures/workflows/notstreamssepolia.yaml similarity index 100% rename from pkg/workflows/sdk/testdata/fixtures/workflows/notstreamssepolia.yaml rename to pkg/workflows/testdata/fixtures/workflows/notstreamssepolia.yaml diff --git a/pkg/workflows/sdk/testdata/fixtures/workflows/sepolia.yaml b/pkg/workflows/testdata/fixtures/workflows/sepolia.yaml similarity index 100% rename from pkg/workflows/sdk/testdata/fixtures/workflows/sepolia.yaml rename to pkg/workflows/testdata/fixtures/workflows/sepolia.yaml diff --git a/pkg/workflows/sdk/testdata/fixtures/workflows/sepolia_defaults.yaml b/pkg/workflows/testdata/fixtures/workflows/sepolia_defaults.yaml similarity index 100% rename from pkg/workflows/sdk/testdata/fixtures/workflows/sepolia_defaults.yaml rename to pkg/workflows/testdata/fixtures/workflows/sepolia_defaults.yaml diff --git a/pkg/workflows/sdk/testutils/compute_capability.go b/pkg/workflows/testutils/compute_capability.go similarity index 79% rename from pkg/workflows/sdk/testutils/compute_capability.go rename to pkg/workflows/testutils/compute_capability.go index 55dd0d695..8226fcc0f 100644 --- a/pkg/workflows/sdk/testutils/compute_capability.go +++ b/pkg/workflows/testutils/compute_capability.go @@ -4,12 +4,12 @@ import ( "context" "github.com/smartcontractkit/chainlink-common/pkg/capabilities" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) type computeCapability struct { - sdk sdk.Runtime - callback func(sdk sdk.Runtime, request capabilities.CapabilityRequest) capabilities.CapabilityResponse + sdk workflows.SDK + callback func(sdk workflows.SDK, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) } func (c *computeCapability) Info(ctx context.Context) (capabilities.CapabilityInfo, error) { @@ -29,7 +29,7 @@ func (c *computeCapability) UnregisterFromWorkflow(ctx context.Context, request } func (c *computeCapability) Execute(ctx context.Context, request capabilities.CapabilityRequest) (capabilities.CapabilityResponse, error) { - return c.callback(c.sdk, request), nil + return c.callback(c.sdk, request) } var _ capabilities.ActionCapability = &computeCapability{} diff --git a/pkg/workflows/sdk/testutils/mocks.go b/pkg/workflows/testutils/mocks.go similarity index 100% rename from pkg/workflows/sdk/testutils/mocks.go rename to pkg/workflows/testutils/mocks.go diff --git a/pkg/workflows/sdk/testutils/runner.go b/pkg/workflows/testutils/runner.go similarity index 83% rename from pkg/workflows/sdk/testutils/runner.go rename to pkg/workflows/testutils/runner.go index f25a1198a..379bdeafd 100644 --- a/pkg/workflows/sdk/testutils/runner.go +++ b/pkg/workflows/testutils/runner.go @@ -11,7 +11,6 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/values" "github.com/smartcontractkit/chainlink-common/pkg/workflows" "github.com/smartcontractkit/chainlink-common/pkg/workflows/exec" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" ) func NewRunner(ctx context.Context) *Runner { @@ -19,9 +18,9 @@ func NewRunner(ctx context.Context) *Runner { ctx: ctx, registry: map[string]capabilities.ExecutableCapability{}, results: runnerResults{}, - idToStep: map[string]sdk.StepDefinition{}, + idToStep: map[string]workflows.StepDefinition{}, dependencies: map[string][]string{}, - runtime: &runtime{}, + sdk: &SDK{}, } } @@ -31,7 +30,6 @@ type ConsensusMock interface { } type Runner struct { - RawConfig []byte // Context is held in this runner because it's for testing and capability calls are made by it. // The real SDK implementation will be for the WASM guest and will make host calls, and callbacks to the program. // nolint @@ -40,43 +38,38 @@ type Runner struct { registry map[string]capabilities.ExecutableCapability am map[string]map[string]graph.Edge[string] results runnerResults - idToStep map[string]sdk.StepDefinition + idToStep map[string]workflows.StepDefinition dependencies map[string][]string - runtime sdk.Runtime + sdk workflows.SDK errors []error } -var _ sdk.Runner = &Runner{} +var _ workflows.Runner = &Runner{} func (r *Runner) Config() []byte { - return r.RawConfig + return []byte("mock config") } -func (r *Runner) Run(factory *sdk.WorkflowSpecFactory) { +func (r *Runner) Run(factory *workflows.WorkflowSpecFactory) error { + if len(r.errors) > 0 { + return fmt.Errorf("error registering capaiblities: %w", errors.Join(r.errors...)) + } + spec, err := factory.Spec() if err != nil { - r.errors = append(r.errors, err) - return + return err } if err = r.ensureGraph(spec); err != nil { - r.errors = append(r.errors, err) - return + return err } r.setupSteps(factory, spec) - err = r.walk(spec, workflows.KeywordTrigger) - if err != nil { - r.errors = append(r.errors, err) - } -} - -func (r *Runner) Err() error { - return errors.Join(r.errors...) + return r.walk(spec, workflows.KeywordTrigger) } -func (r *Runner) ensureGraph(spec sdk.WorkflowSpec) error { +func (r *Runner) ensureGraph(spec workflows.WorkflowSpec) error { g, err := workflows.BuildDependencyGraph(spec) if err != nil { return err @@ -99,7 +92,7 @@ func (r *Runner) ensureGraph(spec sdk.WorkflowSpec) error { return err } -func (r *Runner) setupSteps(factory *sdk.WorkflowSpecFactory, spec sdk.WorkflowSpec) { +func (r *Runner) setupSteps(factory *workflows.WorkflowSpecFactory, spec workflows.WorkflowSpec) { for _, step := range spec.Steps() { if step.Ref == "" { step.Ref = step.ID @@ -110,7 +103,7 @@ func (r *Runner) setupSteps(factory *sdk.WorkflowSpecFactory, spec sdk.WorkflowS // if the factory has a method, it's custom compute, we'll run that compute. if run := factory.GetFn(step.Ref); run != nil { compute := &computeCapability{ - sdk: r.runtime, + sdk: r.sdk, callback: run, } info, err := compute.Info(r.ctx) @@ -155,7 +148,7 @@ func (r *Runner) GetRegisteredMock(name string, step string) capabilities.Action return r.registry[name] } -func (r *Runner) walk(spec sdk.WorkflowSpec, ref string) error { +func (r *Runner) walk(spec workflows.WorkflowSpec, ref string) error { capability := r.idToStep[ref] mock := r.GetRegisteredMock(capability.ID, ref) if mock == nil { @@ -191,7 +184,7 @@ func (r *Runner) walk(spec sdk.WorkflowSpec, ref string) error { return r.walkNext(spec, edges) } -func (r *Runner) buildRequest(spec sdk.WorkflowSpec, capability sdk.StepDefinition) (capabilities.CapabilityRequest, error) { +func (r *Runner) buildRequest(spec workflows.WorkflowSpec, capability workflows.StepDefinition) (capabilities.CapabilityRequest, error) { conf, err := values.NewMap(capability.Config) if err != nil { return capabilities.CapabilityRequest{}, err @@ -214,7 +207,7 @@ func (r *Runner) buildRequest(spec sdk.WorkflowSpec, capability sdk.StepDefiniti return request, nil } -func (r *Runner) walkNext(spec sdk.WorkflowSpec, edges map[string]graph.Edge[string]) error { +func (r *Runner) walkNext(spec workflows.WorkflowSpec, edges map[string]graph.Edge[string]) error { var errs []error for edgeRef := range edges { if r.isReady(edgeRef) { @@ -227,7 +220,7 @@ func (r *Runner) walkNext(spec sdk.WorkflowSpec, edges map[string]graph.Edge[str return errors.Join(errs...) } -func (r *Runner) buildInput(capability sdk.StepDefinition) (*values.Map, error) { +func (r *Runner) buildInput(capability workflows.StepDefinition) (*values.Map, error) { var input any if capability.Inputs.OutputRef != "" { input = capability.Inputs.OutputRef diff --git a/pkg/workflows/sdk/testutils/runner_test.go b/pkg/workflows/testutils/runner_test.go similarity index 74% rename from pkg/workflows/sdk/testutils/runner_test.go rename to pkg/workflows/testutils/runner_test.go index 5b55f6af4..65df24c32 100644 --- a/pkg/workflows/sdk/testutils/runner_test.go +++ b/pkg/workflows/testutils/runner_test.go @@ -1,6 +1,7 @@ package testutils_test import ( + "errors" "testing" "github.com/stretchr/testify/assert" @@ -12,13 +13,13 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger/basictriggertest" "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction" "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/referenceaction/referenceactiontest" - ocr3 "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3cap" - "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3cap/ocr3captest" + "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3" + "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3test" "github.com/smartcontractkit/chainlink-common/pkg/capabilities/targets/chainwriter" "github.com/smartcontractkit/chainlink-common/pkg/capabilities/targets/chainwriter/chainwritertest" "github.com/smartcontractkit/chainlink-common/pkg/utils/tests" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/testutils" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/testutils" ) func TestRunner(t *testing.T) { @@ -31,8 +32,7 @@ func TestRunner(t *testing.T) { triggerMock, actionMock, consensusMock, targetMock := setupAllRunnerMocks(t, runner) - runner.Run(workflow) - require.NoError(t, runner.Err()) + require.NoError(t, runner.Run(workflow)) trigger := triggerMock.GetStep() assert.NoError(t, trigger.Error) @@ -57,14 +57,14 @@ func TestRunner(t *testing.T) { }) t.Run("Run allows hard-coded values", func(t *testing.T) { - workflow := sdk.NewWorkflowSpecFactory(sdk.NewWorkflowParams{Name: "tester", Owner: "ryan"}) + workflow := workflows.NewWorkflowSpecFactory(workflows.NewWorkflowParams{Name: "tester", Owner: "ryan"}) trigger := basictrigger.TriggerConfig{Name: "trigger", Number: 100}.New(workflow) - hardCodedInput := basicaction.NewActionOutputsFromFields(sdk.ConstantDefinition("hard-coded")) - tTransform := sdk.Compute2[basictrigger.TriggerOutputs, basicaction.ActionOutputs, bool]( + hardCodedInput := basicaction.NewActionOutputsFromFields(workflows.ConstantDefinition("hard-coded")) + tTransform := workflows.Compute2[basictrigger.TriggerOutputs, basicaction.ActionOutputs, bool]( workflow, "transform", - sdk.Compute2Inputs[basictrigger.TriggerOutputs, basicaction.ActionOutputs]{Arg0: trigger, Arg1: hardCodedInput}, - func(SDK sdk.Runtime, tr basictrigger.TriggerOutputs, hc basicaction.ActionOutputs) (bool, error) { + workflows.Compute2Inputs[basictrigger.TriggerOutputs, basicaction.ActionOutputs]{Arg0: trigger, Arg1: hardCodedInput}, + func(SDK workflows.SDK, tr basictrigger.TriggerOutputs, hc basicaction.ActionOutputs) (bool, error) { assert.Equal(t, "hard-coded", hc.AdaptedThing) assert.NotNil(t, SDK) assert.Equal(t, "cool", tr.CoolOutput) @@ -88,8 +88,7 @@ func TestRunner(t *testing.T) { runner := testutils.NewRunner(tests.Context(t)) _, _, _, targetMock := setupAllRunnerMocks(t, runner) - runner.Run(workflow) - require.NoError(t, runner.Err()) + require.NoError(t, runner.Run(workflow)) target := targetMock.GetAllWrites() assert.Len(t, target.Inputs, 1) }) @@ -101,8 +100,32 @@ func TestRunner(t *testing.T) { setupAllRunnerMocks(t, runner) setupAllRunnerMocks(t, runner) - runner.Run(workflow) - require.Error(t, runner.Err()) + require.Error(t, runner.Run(workflow)) + }) + + t.Run("Run captures errors", func(t *testing.T) { + expectedErr := errors.New("nope") + wf := createBasicTestWorkflow(func(SDK workflows.SDK, outputs basictrigger.TriggerOutputs) (bool, error) { + return false, expectedErr + }) + + runner := testutils.NewRunner(tests.Context(t)) + + basictriggertest.Trigger(runner, func() (basictrigger.TriggerOutputs, error) { + return basictrigger.TriggerOutputs{CoolOutput: "cool"}, nil + }) + + basicactiontest.Action(runner, func(input basicaction.ActionInputs) (basicaction.ActionOutputs, error) { + return basicaction.ActionOutputs{AdaptedThing: "it was true"}, nil + }) + + consensusMock := ocr3test.IdenticalConsensus[basicaction.ActionOutputs](runner) + + err := runner.Run(wf) + assert.True(t, errors.Is(err, expectedErr)) + + consensus := consensusMock.GetStep("consensus") + assert.False(t, consensus.WasRun) }) t.Run("Run fails if MockCapability is not provided for a step that is run", func(t *testing.T) { @@ -115,15 +138,15 @@ func TestRunner(t *testing.T) { return basictrigger.TriggerOutputs{CoolOutput: "cool"}, nil }) - ocr3captest.IdenticalConsensus[basicaction.ActionOutputs](runner) + ocr3test.IdenticalConsensus[basicaction.ActionOutputs](runner) chainwritertest.Target(runner, "chainwriter@1.0.0", func(input chainwriter.TargetInputs) error { return nil }) - runner.Run(workflow) - require.Error(t, runner.Err()) - require.Equal(t, "no mock found for capability basic-test-action@1.0.0 on step action", runner.Err().Error()) + err := runner.Run(workflow) + require.Error(t, err) + require.Equal(t, "no mock found for capability basic-test-action@1.0.0 on step action", err.Error()) }) t.Run("GetRegisteredMock returns the mock for a step", func(t *testing.T) { @@ -168,7 +191,7 @@ func TestRunner(t *testing.T) { }) } -func setupAllRunnerMocks(t *testing.T, runner *testutils.Runner) (*testutils.TriggerMock[basictrigger.TriggerOutputs], *testutils.Mock[basicaction.ActionInputs, basicaction.ActionOutputs], *ocr3captest.IdenticalConsensusMock[basicaction.ActionOutputs], *testutils.TargetMock[chainwriter.TargetInputs]) { +func setupAllRunnerMocks(t *testing.T, runner *testutils.Runner) (*testutils.TriggerMock[basictrigger.TriggerOutputs], *testutils.Mock[basicaction.ActionInputs, basicaction.ActionOutputs], *ocr3test.IdenticalConsensusMock[basicaction.ActionOutputs], *testutils.TargetMock[chainwriter.TargetInputs]) { triggerMock := basictriggertest.Trigger(runner, func() (basictrigger.TriggerOutputs, error) { return basictrigger.TriggerOutputs{CoolOutput: "cool"}, nil }) @@ -178,7 +201,7 @@ func setupAllRunnerMocks(t *testing.T, runner *testutils.Runner) (*testutils.Tri return basicaction.ActionOutputs{AdaptedThing: "it was true"}, nil }) - consensusMock := ocr3captest.IdenticalConsensus[basicaction.ActionOutputs](runner) + consensusMock := ocr3test.IdenticalConsensus[basicaction.ActionOutputs](runner) targetMock := chainwritertest.Target(runner, "chainwriter@1.0.0", func(input chainwriter.TargetInputs) error { return nil @@ -186,22 +209,23 @@ func setupAllRunnerMocks(t *testing.T, runner *testutils.Runner) (*testutils.Tri return triggerMock, actionMock, consensusMock, targetMock } -type actionTransform func(sdk sdk.Runtime, outputs basictrigger.TriggerOutputs) (bool, error) +type actionTransform func(SDK workflows.SDK, outputs basictrigger.TriggerOutputs) (bool, error) -func createBasicTestWorkflow(actionTransform actionTransform) *sdk.WorkflowSpecFactory { - workflow := sdk.NewWorkflowSpecFactory(sdk.NewWorkflowParams{Name: "tester", Owner: "ryan"}) +func createBasicTestWorkflow(actionTransform actionTransform) *workflows.WorkflowSpecFactory { + workflow := workflows.NewWorkflowSpecFactory(workflows.NewWorkflowParams{Name: "tester", Owner: "ryan"}) trigger := basictrigger.TriggerConfig{Name: "trigger", Number: 100}.New(workflow) - tTransform := sdk.Compute1[basictrigger.TriggerOutputs, bool]( + tTransform := workflows.Compute1[basictrigger.TriggerOutputs, bool]( workflow, "transform", - sdk.Compute1Inputs[basictrigger.TriggerOutputs]{Arg0: trigger}, + workflows.Compute1Inputs[basictrigger.TriggerOutputs]{Arg0: trigger}, actionTransform) action := basicaction.ActionConfig{CamelCaseInSchemaForTesting: "name", SnakeCaseInSchemaForTesting: 20}. New(workflow, "action", basicaction.ActionInput{InputThing: tTransform.Value()}) consensus := ocr3.IdenticalConsensusConfig[basicaction.ActionOutputs]{ - Encoder: "Test", EncoderConfig: ocr3.EncoderConfig{}, + Encoder: "Test", + EncoderConfig: ocr3.EncoderConfig{}, }.New(workflow, "consensus", ocr3.IdenticalConsensusInput[basicaction.ActionOutputs]{Observations: action}) chainwriter.TargetConfig{ @@ -218,8 +242,8 @@ type testHelper struct { transformTriggerCalled bool } -func (helper *testHelper) transformTrigger(runtime sdk.Runtime, outputs basictrigger.TriggerOutputs) (bool, error) { - assert.NotNil(helper.t, runtime) +func (helper *testHelper) transformTrigger(SDK workflows.SDK, outputs basictrigger.TriggerOutputs) (bool, error) { + assert.NotNil(helper.t, SDK) assert.Equal(helper.t, "cool", outputs.CoolOutput) assert.False(helper.t, helper.transformTriggerCalled) helper.transformTriggerCalled = true diff --git a/pkg/workflows/testutils/sdk.go b/pkg/workflows/testutils/sdk.go new file mode 100644 index 000000000..f6325a154 --- /dev/null +++ b/pkg/workflows/testutils/sdk.go @@ -0,0 +1,7 @@ +package testutils + +import "github.com/smartcontractkit/chainlink-common/pkg/workflows" + +type SDK struct{} + +var _ workflows.SDK = &SDK{} diff --git a/pkg/workflows/sdk/testutils/utils.go b/pkg/workflows/testutils/utils.go similarity index 81% rename from pkg/workflows/sdk/testutils/utils.go rename to pkg/workflows/testutils/utils.go index 21cb1a1f5..20a5bf256 100644 --- a/pkg/workflows/sdk/testutils/utils.go +++ b/pkg/workflows/testutils/utils.go @@ -7,10 +7,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) -func AssertWorkflowSpec(t *testing.T, expectedSpec, testWorkflowSpec sdk.WorkflowSpec) { +func AssertWorkflowSpec(t *testing.T, expectedSpec, testWorkflowSpec workflows.WorkflowSpec) { expected, err := json.Marshal(expectedSpec) require.NoError(t, err) diff --git a/pkg/workflows/wasm/generate_wasm.sh b/pkg/workflows/wasm/generate_wasm.sh new file mode 100755 index 000000000..1728794dd --- /dev/null +++ b/pkg/workflows/wasm/generate_wasm.sh @@ -0,0 +1,2 @@ +#!/bin/sh +GOOS=wasip1 GOARCH=wasm go build -o ./test/cmd/testmodule.wasm ./test/cmd/main.go diff --git a/pkg/workflows/wasm/host/wasm_test.go b/pkg/workflows/wasm/host/wasm_test.go deleted file mode 100644 index d9698f1d2..000000000 --- a/pkg/workflows/wasm/host/wasm_test.go +++ /dev/null @@ -1,40 +0,0 @@ -package host - -import ( - _ "embed" - "os" - "os/exec" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - "github.com/smartcontractkit/chainlink-common/pkg/utils/tests" -) - -func Test_GetWorkflowSpec(t *testing.T) { - binary, err := os.ReadFile(createTestBinary(t)) - require.NoError(t, err) - - spec, err := GetWorkflowSpec( - tests.Context(t), - binary, - []byte(""), - ) - require.NoError(t, err) - - assert.Equal(t, spec.Name, "tester") - assert.Equal(t, spec.Owner, "ryan") -} - -func createTestBinary(t *testing.T) string { - const testBinaryLocation = "test/cmd/testmodule.wasm" - - cmd := exec.Command("go", "build", "-o", testBinaryLocation, "github.com/smartcontractkit/chainlink-common/pkg/workflows/wasm/host/test/cmd") - cmd.Env = append(os.Environ(), "GOOS=wasip1", "GOARCH=wasm") - - output, err := cmd.CombinedOutput() - require.NoError(t, err, output) - - return testBinaryLocation -} diff --git a/pkg/workflows/wasm/pb/wasm.go b/pkg/workflows/wasm/pb/wasm.go index 068fe4103..00831b2fe 100644 --- a/pkg/workflows/wasm/pb/wasm.go +++ b/pkg/workflows/wasm/pb/wasm.go @@ -6,10 +6,10 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities" "github.com/smartcontractkit/chainlink-common/pkg/values" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" ) -func toStepDefinition(sd sdk.StepDefinition) (*StepDefinition, error) { +func toStepDefinition(sd workflows.StepDefinition) (*StepDefinition, error) { var inputs *values.Map if sd.Inputs.Mapping != nil { i, err := values.WrapMap(sd.Inputs.Mapping) @@ -36,7 +36,7 @@ func toStepDefinition(sd sdk.StepDefinition) (*StepDefinition, error) { }, nil } -func WorkflowSpecToProto(spec *sdk.WorkflowSpec) (*WorkflowSpec, error) { +func WorkflowSpecToProto(spec *workflows.WorkflowSpec) (*WorkflowSpec, error) { ws := &WorkflowSpec{ Name: spec.Name, Owner: spec.Owner, @@ -81,41 +81,41 @@ func WorkflowSpecToProto(spec *sdk.WorkflowSpec) (*WorkflowSpec, error) { return ws, nil } -func fromStepDefinition(sd *StepDefinition) (sdk.StepDefinition, error) { +func fromStepDefinition(sd *StepDefinition) (workflows.StepDefinition, error) { if sd.Inputs == nil { - return sdk.StepDefinition{}, errors.New("invalid step definition: inputs cannot be nil") + return workflows.StepDefinition{}, errors.New("invalid step definition: inputs cannot be nil") } var mapping map[string]any if sd.Inputs.Mapping != nil { v, err := values.FromMapValueProto(sd.Inputs.Mapping) if err != nil { - return sdk.StepDefinition{}, fmt.Errorf("invalid step definition: could not convert inputs mapping to value: %w", err) + return workflows.StepDefinition{}, fmt.Errorf("invalid step definition: could not convert inputs mapping to value: %w", err) } err = v.UnwrapTo(&mapping) if err != nil { - return sdk.StepDefinition{}, fmt.Errorf("invalid step definition: could not unwrap inputs mapping: %w", err) + return workflows.StepDefinition{}, fmt.Errorf("invalid step definition: could not unwrap inputs mapping: %w", err) } } mvConfig, err := values.FromMapValueProto(sd.Config) if err != nil { - return sdk.StepDefinition{}, fmt.Errorf("invalid step definition: could not unwrap config: %w", err) + return workflows.StepDefinition{}, fmt.Errorf("invalid step definition: could not unwrap config: %w", err) } cmapping := map[string]any{} if mvConfig != nil { err := mvConfig.UnwrapTo(&cmapping) if err != nil { - return sdk.StepDefinition{}, fmt.Errorf("invalid step definition: could not unwrap config to map: %w", err) + return workflows.StepDefinition{}, fmt.Errorf("invalid step definition: could not unwrap config to map: %w", err) } } - return sdk.StepDefinition{ + return workflows.StepDefinition{ ID: sd.Id, Ref: sd.Ref, - Inputs: sdk.StepInputs{ + Inputs: workflows.StepInputs{ OutputRef: sd.Inputs.OutputRef, Mapping: mapping, }, @@ -124,14 +124,14 @@ func fromStepDefinition(sd *StepDefinition) (sdk.StepDefinition, error) { }, nil } -func ProtoToWorkflowSpec(spec *WorkflowSpec) (*sdk.WorkflowSpec, error) { - ws := &sdk.WorkflowSpec{ +func ProtoToWorkflowSpec(spec *WorkflowSpec) (*workflows.WorkflowSpec, error) { + ws := &workflows.WorkflowSpec{ Name: spec.Name, Owner: spec.Owner, - Triggers: []sdk.StepDefinition{}, - Actions: []sdk.StepDefinition{}, - Consensus: []sdk.StepDefinition{}, - Targets: []sdk.StepDefinition{}, + Triggers: []workflows.StepDefinition{}, + Actions: []workflows.StepDefinition{}, + Consensus: []workflows.StepDefinition{}, + Targets: []workflows.StepDefinition{}, } for _, t := range spec.Triggers { diff --git a/pkg/workflows/wasm/sdk.go b/pkg/workflows/wasm/sdk.go deleted file mode 100644 index 37341b3c2..000000000 --- a/pkg/workflows/wasm/sdk.go +++ /dev/null @@ -1,7 +0,0 @@ -package wasm - -import "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" - -type Runtime struct{} - -var _ sdk.Runtime = (*Runtime)(nil) diff --git a/pkg/workflows/wasm/runner.go b/pkg/workflows/wasm/sdk/runner.go similarity index 86% rename from pkg/workflows/wasm/runner.go rename to pkg/workflows/wasm/sdk/runner.go index 47b1b74bb..12b4c9775 100644 --- a/pkg/workflows/wasm/runner.go +++ b/pkg/workflows/wasm/sdk/runner.go @@ -1,4 +1,4 @@ -package wasm +package sdk import ( "encoding/base64" @@ -8,7 +8,7 @@ import ( "google.golang.org/protobuf/proto" capabilitiespb "github.com/smartcontractkit/chainlink-common/pkg/capabilities/pb" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" wasmpb "github.com/smartcontractkit/chainlink-common/pkg/workflows/wasm/pb" ) @@ -16,15 +16,13 @@ const ( unknownID = "__UNKNOWN__" ) -var _ sdk.Runner = (*Runner)(nil) - type Runner struct { sendResponse func(payload *wasmpb.Response) args []string req *wasmpb.Request } -func (r *Runner) Run(factory *sdk.WorkflowSpecFactory) { +func (r *Runner) Run(factory *workflows.WorkflowSpecFactory) { if r.req == nil { req, err := r.parseRequest() if err != nil { @@ -109,7 +107,7 @@ func (r *Runner) parseRequest() (*wasmpb.Request, error) { return req, err } -func (r *Runner) handleSpecRequest(factory *sdk.WorkflowSpecFactory, id string) (*wasmpb.Response, error) { +func (r *Runner) handleSpecRequest(factory *workflows.WorkflowSpecFactory, id string) (*wasmpb.Response, error) { spec, err := factory.Spec() if err != nil { return nil, fmt.Errorf("error getting spec from factory: %w", err) @@ -128,7 +126,7 @@ func (r *Runner) handleSpecRequest(factory *sdk.WorkflowSpecFactory, id string) }, nil } -func (r *Runner) handleComputeRequest(factory *sdk.WorkflowSpecFactory, id string, computeReq *wasmpb.ComputeRequest) (*wasmpb.Response, error) { +func (r *Runner) handleComputeRequest(factory *workflows.WorkflowSpecFactory, id string, computeReq *wasmpb.ComputeRequest) (*wasmpb.Response, error) { req := computeReq.Request if req == nil { return nil, errors.New("invalid compute request: nil request") @@ -143,14 +141,17 @@ func (r *Runner) handleComputeRequest(factory *sdk.WorkflowSpecFactory, id strin return nil, fmt.Errorf("invalid compute request: could not find compute function for id %s", req.Metadata.ReferenceId) } - sdk := &Runtime{} + sdk := &SDK{} creq, err := capabilitiespb.CapabilityRequestFromProto(req) if err != nil { return nil, fmt.Errorf("invalid compute request: could not translate proto into capability request") } - resp := fn(sdk, creq) + resp, err := fn(sdk, creq) + if err != nil { + return nil, fmt.Errorf("error executing compute: %w", err) + } resppb := capabilitiespb.CapabilityResponseToProto(resp) diff --git a/pkg/workflows/wasm/runner_test.go b/pkg/workflows/wasm/sdk/runner_test.go similarity index 88% rename from pkg/workflows/wasm/runner_test.go rename to pkg/workflows/wasm/sdk/runner_test.go index 457eac444..2f7eada0e 100644 --- a/pkg/workflows/wasm/runner_test.go +++ b/pkg/workflows/wasm/sdk/runner_test.go @@ -1,4 +1,4 @@ -package wasm +package sdk import ( "encoding/base64" @@ -15,7 +15,7 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger" capabilitiespb "github.com/smartcontractkit/chainlink-common/pkg/capabilities/pb" "github.com/smartcontractkit/chainlink-common/pkg/values" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" wasmpb "github.com/smartcontractkit/chainlink-common/pkg/workflows/wasm/pb" ) @@ -83,21 +83,21 @@ func Test_Runner_Config(t *testing.T) { } func TestRunner_Run_ExecuteCompute(t *testing.T) { - workflow := sdk.NewWorkflowSpecFactory( - sdk.NewWorkflowParams{ + workflow := workflows.NewWorkflowSpecFactory( + workflows.NewWorkflowParams{ Name: "tester", Owner: "cedric", }, ) trigger := basictrigger.TriggerConfig{Name: "trigger", Number: 100}.New(workflow) - computeFn := func(sdk sdk.Runtime, outputs basictrigger.TriggerOutputs) (bool, error) { + computeFn := func(sdk workflows.SDK, outputs basictrigger.TriggerOutputs) (bool, error) { return true, nil } - sdk.Compute1( + workflows.Compute1( workflow, "compute", - sdk.Compute1Inputs[basictrigger.TriggerOutputs]{Arg0: trigger}, + workflows.Compute1Inputs[basictrigger.TriggerOutputs]{Arg0: trigger}, computeFn, ) @@ -150,21 +150,21 @@ func TestRunner_Run_ExecuteCompute(t *testing.T) { } func TestRunner_Run_GetWorkflowSpec(t *testing.T) { - workflow := sdk.NewWorkflowSpecFactory( - sdk.NewWorkflowParams{ + workflow := workflows.NewWorkflowSpecFactory( + workflows.NewWorkflowParams{ Name: "tester", Owner: "cedric", }, ) trigger := basictrigger.TriggerConfig{Name: "trigger", Number: 100}.New(workflow) - computeFn := func(sdk sdk.Runtime, outputs basictrigger.TriggerOutputs) (bool, error) { + computeFn := func(sdk workflows.SDK, outputs basictrigger.TriggerOutputs) (bool, error) { return true, nil } - sdk.Compute1( + workflows.Compute1( workflow, "compute", - sdk.Compute1Inputs[basictrigger.TriggerOutputs]{Arg0: trigger}, + workflows.Compute1Inputs[basictrigger.TriggerOutputs]{Arg0: trigger}, computeFn, ) diff --git a/pkg/workflows/wasm/runner_wasip1.go b/pkg/workflows/wasm/sdk/runner_wasip1.go similarity index 98% rename from pkg/workflows/wasm/runner_wasip1.go rename to pkg/workflows/wasm/sdk/runner_wasip1.go index 565cad83c..261745409 100644 --- a/pkg/workflows/wasm/runner_wasip1.go +++ b/pkg/workflows/wasm/sdk/runner_wasip1.go @@ -1,4 +1,4 @@ -package wasm +package sdk import ( "os" diff --git a/pkg/workflows/wasm/sdk/sdk.go b/pkg/workflows/wasm/sdk/sdk.go new file mode 100644 index 000000000..4a0a88c20 --- /dev/null +++ b/pkg/workflows/wasm/sdk/sdk.go @@ -0,0 +1,3 @@ +package sdk + +type SDK struct{} diff --git a/pkg/workflows/wasm/host/test/cmd/main.go b/pkg/workflows/wasm/test/cmd/main.go similarity index 66% rename from pkg/workflows/wasm/host/test/cmd/main.go rename to pkg/workflows/wasm/test/cmd/main.go index 2ee9f7bd4..c6fd63dc6 100644 --- a/pkg/workflows/wasm/host/test/cmd/main.go +++ b/pkg/workflows/wasm/test/cmd/main.go @@ -3,15 +3,14 @@ package main import ( - "github.com/smartcontractkit/chainlink-common/pkg/workflows/wasm" - "github.com/smartcontractkit/chainlink-common/pkg/capabilities/cli/cmd/testdata/fixtures/capabilities/basictrigger" - "github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk" + "github.com/smartcontractkit/chainlink-common/pkg/workflows" + "github.com/smartcontractkit/chainlink-common/pkg/workflows/wasm/sdk" ) -func BuildWorkflow(config []byte) *sdk.WorkflowSpecFactory { - workflow := sdk.NewWorkflowSpecFactory( - sdk.NewWorkflowParams{ +func BuildWorkflow(config []byte) *workflows.WorkflowSpecFactory { + workflow := workflows.NewWorkflowSpecFactory( + workflows.NewWorkflowParams{ Name: "tester", Owner: "ryan", }, @@ -24,7 +23,7 @@ func BuildWorkflow(config []byte) *sdk.WorkflowSpecFactory { } func main() { - runner := wasm.NewRunner() + runner := sdk.NewRunner() workflow := BuildWorkflow(runner.Config()) runner.Run(workflow) } diff --git a/pkg/workflows/wasm/test/cmd/testmodule.wasm b/pkg/workflows/wasm/test/cmd/testmodule.wasm new file mode 100755 index 0000000000000000000000000000000000000000..aa4aba8ce9acc8ceb151ce5723b56026b73f5e5b GIT binary patch literal 19684179 zcmeFYRhTYGdYE~BW@ct)=H8WLTlQMEWofOomqw$R9%)uH)3ehf$@1>b6f-k3Gjr7` zW@ct)JjGSp-IBe}UbJjq`R2s)WJYBCZ+>6In-O`H|A!xb{d2&FZ_2fom)8g6pMT~2 zv%mW3&wl*VAHVZ||117?ZT>&|M^3)*&#m@^N)1D z|6{xHKm4m7ef9NU{_P+9<-hnt>!1Dc*T1K;|C8VQ^$-5ZkN)}3|FQYc{@~Yt^pAe| zPk;9--Cuw8?|;wn$A9>TmVaq8|KorCXO4gN`+xAqLL~nk5a#_&Udo>Wehc{RpMLn} z0Q~mDp8|jT?G@;^zxlQT|Mr{mO%43*Z@xK0zPb4O?%#aZ{cXp04d{1`zq|3f4#amI zzxg}tn~)#=6#ScS3g9&cKLEZ5Lj3YqU;XF@U;g`_ z{`v#(dl2{!fA!~I|KQKR{PhRW_Ym0ch_8S8AHMw0a6kIlS3mm8AN=~KKmYQ(c;N4e zhx+mtfBn;6ef5ifFe%|bLjU=^@Sptn2Y>UcpZ@yG50LN4i2T(LfAQn5e*O<8ME&xs zpZ)9yU;X0CuYU5A?+x^As&8ib^_L$$d`~L!H^fhV`m-;;{`C)k{e!Q+{O0(^+Xv|P z(BH=U=7Ik3#~)zdLm<8-{%&^Phrqr;zKij_)Bk(m$3Okm_vZOF$k$(f`IjHy-!l;0 zH^6_I*gv#f{_~IHyIg1CC`t?`8`r8kv@4@lk;eYjuZ)1Kpj_)NA-;rPa^2=X*Kz~oL|B}^* z`PS}_zgsl_kXzFKhkd)Ye)6*){`uG6zi+>Rzgb-WMM3`~_l=q#{Njf{|MGk1i~9Q8 zJ^sTV{pibI{`z|%%y-b&fALqp{_$6T^NSB4&^MbI{q>i>`0*co`SmZq`o%Zf2LoDM z`sU>}|L?wi<9{yy$p9Ah;REi&hi}fG%Vz_h4SY86-`)WJzj_FSzc0jZ?j(}P_fzJj$8~AMCvw_bBJ{$OK;Io0x20k13Y~Ztj z&jvml_-x>_fzJj$8~AMCvw_bBJ{$OK;Io0x20k13Y~a6z0kHqKe_{dr^27Y!Lj1mK ze((lCi@$Bbe+&4X52)V&e)k_ZeTTr}zQuviAAIux_pg5a!3Pcf`IkTc=A(7s2gF>B z_czf${EinNHUIAfLXlV^mB|%Km0F|K=?zAc*IzT<30ni9&0yG0!0Ih&FKs%rV@Db1n z=mK;DdH}tEK0rTU05Av`0t^F20Hc60z&Kz6FbS9fOao>Bvw%6kJYWH^2v`Cv16Ba5 zfHlB6U<0rT*aB<=b^yD8J-|NT0B{I60vrQQ0H=U6z&YRoa0$2qTmxgmezzAR@FbWtAi~+_1 zn>wxvZ24Eww3D^v50k#6$fbGBz;74F5unX7?>;d)y`+)tx0pK8T2sjKJ z0geL4faAak;3RMgI1QWu&I0Fv^S}k*B5(<~3|s-O0@r}+zzyIga0|E%+yU+a_kjDr z1K=U>2zU%U0iFWSfakyq;3e=1cn!P(-U9D{pMdwk2jC;{3HS_r0los?fbT#rkT=K& z-gCanYpeRr@C^1GR%XKp#P!pe|51s0Y*w>I3zI20(+LA<ZC^!rp z4vqjvf}_CE;23Z$I1U^SP5>u@lfcQ~6mTjy4V(_n0B3@;z}es&a4t9xoDVJl7lMnx z#o!WfDYy(=4z2)Kf~&yQ;2Ll(xDH$oZU8reo50QB7H})L4crdy0DlB`g1f-o;2v-< zxDVV99sm!5hrq+&5%4H@3_K2=08fIaz|-Iv@GN)^JP%#~FM^lA%itC8DtHaN4&DH7 zg15li;2rQTcn`b}J^&wrkHE*^6Ywec415m00AGTyz}Mg#@GbZb{0V#yegHp$pTN)H z7w{|i4g3!Ff_OuGAifYkh(9C%5(o)`1Vcg~p^z|0I3xlR35kM4Lt-GYkT^&@Bmt5L zNrEIpQXr|2G)Oum1Cj~Jf@DK-Ai0n{NIs+hQV1!66hlfNrI0d6Iivzo38{iqLuw$k zkUB^`qyf?hX@WFES|F{EHb^_91M(5l3F(4#LwX>+kUmI1WB@V<8G;N$Mj)e*F~~S% z0x}7if=okZAhVD;$UI~LvItp%EJIcxtB^IwI%ET~3E6^dLv|p$kUhvg(CA8CUgtB4c&q6LieEi&;#fp^ay$kJ%OG=&!Fef3+N^E3VIE_f!;#z zpr4@k&wRthVF zmBT7vm9Q#UHLM0!3#)_G!x~_XuqIeDtOeEzYlF4JI$$4Rov?NN3+sdR!vt68-tC*CSa4WDcCe@1~v;!fSJA<9WE?}3iE7&#c26hX(gMEVC!yaIduqW6v>;?7;dxO2h zyx`t&AGj~v5AF{SfCs{Z;KA?^cqlv!9uALyN5Z4v(eM~}EIbY#4^Mz6!js_1@Dz9| zJPn=>&wyvbv*6kA9C$7~51tP%fEU7x;KlF~cqzOLUJkE-SHi2{)$kg4ExZn14{v}s z!kggD@D_M0ybazC?|^@Vcfz~i-S8fGFT4-l45s8RGL?dDlv4}WCJR$*+h)6;tBT^8lh%`hxA_I|$$Umzh&VzVBTf*fh%>}F;sSArxI$bbZVmiJ zh_=f3Av11L9Qa#kn6||IQX-x2*kEkcqGwKEPih4u6qrA}GXdkpM+7IoI4nPN@gV4d~5OgRy3>}V+ zKu4mZ(9!4^bSyd!9gj{xC!&+k$>)+&FB_%E4mHcj_yEzM0cXQ(B0@BbT7IO z-H#qX52ADUZxCN>M3jm^R4 zV)L;1*aB=Jwg_8{Ey0#z%dq9x3T!2|3R{h>!Pa8yu=UsmY$LV_+l+0&wqo0`?br_N zM{Fmy3)_wD!S-VNu>IHp>>zdsJB%H{j$+5K05p>>>6DdyGB7o?_3i=hzGECH4w?jlIF%V(+k@ zu=m&p>?8IG`;2|TzGC07?^rLKH_iv=i}SjpHV8lej6|G;Rhri<`sE;}&p>xFy^&ZUwiBTf?p6HgKD`E!;M42e*sc z!|me^aEG`f+%fJ1cZxg1o#QTWm$)n3HSPv?i@U>p!rkK@aF4hr+%xV4_lkSNz2m&_ z-gqCpFWwLDj}O2H;)C$P_z-+3J`5j@kHAObqwvxA7I6^!jfsjZ@A|w-12&sfLLOLOXkV(iQWD{}-xr97IKB0h6 zNGKu{6G{lBgfc=op@L9Js3KGoY6!K2Izm06fzU{3A~X|P2(5%RLOY>@@R86-=pu9z zdI-IQK0-fXfG|iHA`BBo2&05C!Z=}qFiDsqOcQ1ZvxGUqJYj*bNLV5)6IKYTgf+rC zVS}(q*dlBbb_lzKJ;FZWfN)4SA{-M=2&aTI!a3oBa7nl#ToY~xw}d;wC&E49f$&Ip zB0Ljb2(N@U!aKo>=uPw?`V#$!{=@)cATfv-Obj8062pk$#0X*}F^U*Xj3LGnxlKl24W+ziP%hRA+{3Ri0#A<;zwd9v5VME>>>6N`-uI-0pcKWh&W6fA&wHq zh~vZw;v{j3I8B@(&JyQ{^TY+>B5{ehOk5$Z64!|9#0}ymaf`T3+#&7~_lWz%1L7g^ zhA-)pdi0?!%k~hhRu0h15!F zBejz{NFPa^q%Kl7sfW}{>Lc}&21tXXA<{5ugfvPTBaM?LNRy-~(llv?G)tNz&65^L zi=-veGHHdhN?IeWlQu}3q%G1mX@|5++9U0g4oHWjBhoSHgmg+eBb}2jNSCB5(lzOZ zbW6G;eInhH9!QU*C(<+Nh4e~#BfXQn$lhchvM>`x9L2aEfC^?KAPL3c) zlB3AcB6mlv#jhs%-AZL=Z$l2r^axOWKoKG$w7m|y}#pDul zDY=YXPOczVlB>wo@-6v}{E2)|ejq=RpUBVT7xF9l zjr>mbqIgq$D83Xwia#ZQ5=aT61XDsNp_DL6I3kB8KMkRMku3{G0He)f-*^& zqD)g}D6^C~$~PAI38 zGs-#Tf^tc@qFhsMD7Tb5$|uS_<$>}@d7?a1UMR1WH_AK3i|S4Fq54w&sQ%OdY9KX; z8cYqLhEl_*;nWCfBsGc}O^u<(Qsb!c)C6iGHHn%`O`)bz)2Qjx3~DAdi<(W%q2^Na zsQJ_aY9Y0VT1+jWmQu^8<(P3@ufQv0a=)B)-sb%;7l9ifg=$Ef4f3F;(uiaJf5q0Un0sPohX>LPWCx=dZ6 zu2R>i>(mYECUuLtP2HjHQunC))C1}v^@w^*J)xdb!r3+g5Hih51Gq25yOsGq3! z)CcM#^@;jSeWAWm->C0YFPb;ahvrN3qxsVUXo0jKS}-ky7D@}Fh0`Kvk+djUG%bb} zON*n$(-LTjv?N+GErpg!OQWUJGH98!ELt`#hn7prqvg{IXoa*QS~0DJR!S?QmD4I{ zm9#2aHLZqLORJ;R(;8@vv?f|Jt%cS~YooQ(I%pqhowP1mH?4=(OY5Wc(*|gRv?1Cs zZG<*T8>5ZWCTNqiDcUq`hBix^qs`M6Xp6KZ+A?j0wn|&0tfhIUK4qkW>?(;jG#v?tm#?S=MAd!xP6yy)I^ zAG$BykM2(opa;@}=)v?5dMG`N9!`&-N7AF{(exO4EIp1MPfwsH(v#@P^b~q3J&m4D z&!A`0v*_9M9C|K2kDgC2pcm4M=*9FBdMUk(UQVx|SJJEK)$|&AExnFjPj8?%(wpeb z^cH$6y^Y>Z@1TFAchbA)-Si%MFTIc6PamKU(ue57^bz_feT+U%pP*0Dr|8r48Tu@J zjy_LcpfA#w=*#pK`YL^mzE0nuZ_>Bu+w>j!E`5)_Pd}g^(vRrJ^b`6i{fvH2zo1{z zujtqG8~QE%j{b>$Pk*34(x2$h^cVUo{f+)k_hNW6d>FnAKZZXefDy?X zMmQsa5y^;RL^EO-v5YuIJR^aT$Vg%&Gg26-j5J0%BZHC2$YNwOau~UcJVrjFfKkXO zViYq<7^RFdMmeK`QOT%cR5NNAwTwDOJ)?oq$Y^3TGg=s}j5bC)ql590(aGpybTfJw zy^KCaKVyI~$QWV_Ge#Jrj4{SIV}dcsm|{#bW*D=KImSF=fw9O~Vk|RO7^{pm#yVqz zvB}tCY%_KkyNo@?KI4FK$T(sgGfo(%j5EeL!A#$arEr zGhP_4j5o$R!;9(7^kMok{h0pD0A?UFh#AZbVTLlpnBmL_W+XF;8O@Ag#xmoW@yrBf zA~T7Z%uHdXGSisp%nW8GGmDwc%wgs-^O*U}0%jqzh*``mVU{w>nB~k0W+k(VS_A>jJ{mcR8AajU0%p75kGRK(X z%n9ZsbBa05oMFx~=a}=%1?D1iiMh;NVXiXQnCr|9<|cECxy{^R?lSk7`^*F8A@hiN z%sgS9GS8Uj%nRlv^NM-RykXul@0g#M_sj?8BlC&*%zRxOm9 zx?_D}-LoE8kE|!wGwX%*%6enHv%J{eY#+8S+mG$f4qykegV@3B5Oyd#j2+I7U`Mi} z*wO45b}T!N9nVf+C$f{+$?Oz%Dm#sx&dy+Gva{IP>>PG3JCB{uE?^h3i`d2N5_T!O zj9t#IU{|uM*wySBb}hS(UC(Y{H?o`9&FmI-E4z)|&hB7;WOuT=*xl?Nb}ze+-OnCi z53+~Y!|W0ED0_@O&YoaTvZvV7>>2hfdyYNNUSKb>m)Ohf74|B7jlIs^U~jUw*xT$K z_AYymz0W>iAF_|w$LtgKDf^6l&c0w@vai_J>>Kti`;PsIeb0ViKeC_L&+HfWEBlT8 z&i3MXb9^|y96ydfCx8>k3E~8ELO7wEFitopf)mM!;zV;|II)~KPCO@plgLTpBy&X(<;#6~LIJKNQPCciA z)5vM!G;>-wt(-PaJEw#5k<-cP;&gL*IK7-cPCsXWGsqd@40A>}qnt6$IA?-0$(iCz zb7nZRoH@=sXMwZGS>h~nRyeDiHO@L`gR{xm;%swvIJ=xZ&OYaWbI3X39CJ=Mr<^m+ zIp>0N$+_ZOb8a}doIB1Z&OPUW^T>JPJab++ubel|JI9Ob&Gq5>a{aje+yHJMH;5a| z4dI4z!?@wx2yP@diW|+1;l^^~xbfTsZX!2{o6Jq&rgGD`>D&x%CO3se+stj@wsPCJ?c5ITM{Xy# zi`&iZ;r4R-xc%G#?jU!FJIo#7j&jGi3 zH_991jq@gWle{V3G;fAC%bVlP^A>oEyd~Z;Z-uwYTjQkbui#hmtN7LY8h$Omj$hAj;5YJ{_|5zl zek;F?-_Gygf8=-ayZGJw9)2&skKfN9;1BYL_{01W{wRNpKhB@vPx7bu)BG9!EPswa z&tKp#@|XC_{1yHxe~rJ+-{5cZxA@!q9sVwVkH619;2-jj_{aPc{we>Af6l+)U-GZ` z*Zdp)E&q=HiGR<3;6L)8_|N`FzMw!*C@2yX z3rYl~f-*t5ph8e7s1j5QY6P`{IzhdlLC`2@5;O~11g(NLLA#(s@KMky=n`}bdIY_K zK0&`=Krkp65)2DQ1fzm6!MI>TFe#W4ObccNvw}InykJ4FC|D9K3swZHf;GXqU_-De z*b;0Db_BbEJ;A=aS`U?Go{=xuZpfE@nEDRBb3d4lq!U$ocFiIFLj1k5PxA{f24SPHN!ToG5w;53gzdr(;YVSouuIr2>=E_~`-J_%0pXx|q2jQdeN%$;$5xxrFgzrKxk+;Z4Y zlq<>;<%9|iz-BwqAF3fs76#PsuR_V8bpnvCQ-AfMbs*46Sa#v zL?1<+qApRls7KT*>J#;g21J9RAxLDq0h*i#9}?qAk(3Xh*aw+7s=I4n&8dBhj(wM06@T6P=4LM36#C(*O$Mf56q6TOSP#NJ{bv9H)q>@N-w2a1El!Qv2cs5nd+SxK3OzZV)$$o5aoH7ICY%P24W-5PuYRio3+!;vR9YxKG?K9uN zcu%}9J`f*@kHp8~6Y;6|OnffB5MPR~#Mj~*@vZny{7HN-eh@#3pTy7N7xAn3P5dtQ zl6XseB)$?qiN7R35-16h1WQ6Bp^`93xFkXnDT$IqOJXFkk~m4cBteoWNs=T>QY5L8 zG)cN7Ly{@Ul4MJAB)O72Nxq~&QYa~s6iZ4ZrIIp9xuil;DXEfFOKK#wk~&Gfq(Ras zX_7QcS|qKKHc7jrL-JA5De01QOL`=|l0HelWI!?~8IlZ3MkJ$>G0C`OLNY0tl1xix zB(st^$-HDivM5=SEK61-tCBUzx@1GLDcO>2OLio?l0C`3!QH_5xiOX@B4k@`ygr2f(XX`nPn8Y~Tw zhDyVv;nE0cq%=wzEsc@JO5>#Q(gbOuG)bB)O_8Qb)1>Lr3~8n`OPVdsk>*PCr1{bU zX`!@8S}ZM*mP*T{<7sN=x-4Chu1eRW z>(UMBrgTfXE!~msO82Du(gW$C^hkOvJ&~SD&!p$l3+biwN_s85k={!0q@Ses(g*3I z^hx?GeUZLO-=yzSFPXQ@N9HT@lljX6WP!3ES+Fcb7Agyqh07vjk+LXRv@AvzD~prG z%MxUXvLsouEJcX zwX8-~E31>$%Nk^jvL;!xtVPx;Ym>FhI%FSZow6=jx2#9jE9;Z>%LZhFvLV^9Y(zFH z8_m1dJCmKuE@YRoE7`T|Ms_Q^lYNri%N}HpvM1TI>_zq}dy~D(yyV_;AGxpG zPwp=dkO#_x`H%A4fP@)mik zyiMLN?~s3#cgnlu-SQrJue?v*FCUN(%7^5`@)7x{d`vzrpO8<=r{vS}8TqVyPChSR zkT1%YzmQ+bujJSA z8~LsLPX0-LFMp6f%Ae%V@)!B5{7wEY_fmK(d=$P4KZU;{KoO`2QUohP6rqYRMYtkD z5vhn$L@Qzxv5GiFydpu7s7O*ID^e7xiZn&KB14g>$Wml0aum6WJVm~uKvAeDQWPsn z6s3wXMY*CvQK_g>R4Zx}wTe1Ly`n+UsAy6&D_Rt-iZ(^NqC@df(W&TCbSruky^20X zzhXc!s2EZVD@GKfiZR8wVnQ*gm{LqDW)!oEImNtUL9wVx8S*@&5)++0i z^~wfiqq0fatZY%XD%+Ip$`0j6Wv8-B*{$qR_A2|7{mKF5pmIn#tQ=8}D#w)L$_eG9 za!NU^oKemy=alox1?8f0Nx7_CQLZZ2lBV%0#t#j zAXTs`L=~zEQ-!M{RFSGERkSKb6|0I<#j6rjiK--3vMNQDs!CI(t1?uXsw`EuDo2&8 z%2Va53RH!vB2}@fL{+LPQCDpQO zMYXD0Q?08uRGX?T)wXI!wX51w?W+z{hpHphvFb#1syb7ht1eWRsw>sC>PB^|x>J2p z-K!o{kE$otv+70ls(MqstGv|SY9F<)+E4AT4p0ZGgVe$55Ot_JOdYO{P)Dkx)Y0k~ zb*ws09j{JMC#sXw$?6n!sya=buFgKt{hI!~RiE>IV$i`2#H5_PG%OkJ+7 zP*#V|&FU6)tGZ3yuI^BORClVo)ZOYHb+5Wl-LD={52}aM z!|DKXN{dQLsBUQjQpm(KpZ~`cC~xeXo8{KdPV9&*~TTtNKm-uJ+P+ zYkV}m8b6J{CO{LY3DN{>LNuY8Fip57LKCTp(nM=wG_jgEO}r*Slc-73Bx_PMshTuR zx+X)Dsmao0YjQNXnmkRura)7uDbf^cN;IXKGEKRrLQ|=!(o}0|G_{&KO}(Z;)2M0E zG;3Nkt(rDXyQV|)QPZjE(sXNjG`*TWO}}P9GpHHT3~NR-qna_zxMo5#shQGDYi2aF znmNt9W(Z*`ywDH;mZK5_wo2*UIrfSo)>Dml!rZ!8Pt0%e3X%3T>sfN?Wb1(bj6~wDsBsZKJkH+pKNTwrbn7?b;6QM{TFJOWUpO z(e`TlwEfxv?Vxr@JFFeij%vrWt)0=%YUi}`+6C>Rc1gReUD2*;*R<=} z4eh3OOS`Sz(e7&ZwENlv?VcJ@zG~mJ?^-XNx6ViBtMk+O>jHFvx*%P!E<_iq3)6+`B6N|uC|$HJMi;A#)5Yr& zbcwnoU9v7km#RzCrRy?unYt`pwk}7PtIN~n>k4#*x*}b%u0&U=E7O(hDs+{)DqXd% zMpvt=)79%5bd9w-c zjq4_Kle#J0v~ET>tDDo!>lSp2x+UGRZbi4MThp!UHguc1E#0Vx#b`Vf7nK1?63kI+Zzqx8}G7=5fhP9LvN&?oAX^vU`ZeX2f9pRUi)XX>-` z+4>xPu0BtnuP@LS>WlQn`VxJqzD!@Puh3WOtMt|S8hx$4PG7HY&^PLv^v(JfeXG7r z->&b_f7EyCyY$`q9(}LAPv5T}&=2Z|^uziQ{iuFSKdzt9PwJ=i)A||xtbR^EuV2tF z>X-D(`W5}Eeoeow-_URBxAfck9sRC;Prt7}&>!lL^vC)W{i*&;f3CmKU+S;)*ZLd% zt^Q8`Nq?_@&_C**^w0Vi{j2^>|E~8kcpH2Sz6L*ozahX7Xb3U{8$t}BhA>08A;J)8 zh%!VQVhpi{I77T4!H{T3G9(*P45@}RL%JcukZH&=WE*k}xrRJLzM;TSXecri8%hkN zhB8CBp~6sUs4`R=Y7Di8Izzpo!O&=EGBg`n46TMXL%X5F@X^p|=rVL0dJMgWK107@ zz%XbSG7K9=45NlI!?Flm@FOdDnlvxYgtykWtxXjn2V8&(XfhBd>wVZ*R#*fMMz zb_~0QJ;T1?z;I|dG8`LD45x-O!@1$YaA~+QTpMl-w}v~zC&Rtr!SHB!GCUhz46lYa z!@I%D=xy{d`WpR={>A`fpfSi8Yz#4m8pDj?#t37iG0GTij4{R<RjOoSx}ir z24kbK$=GacF}51pjP1q_<40qsvCG(P>@oHl`;7g@0pp-?$T(~qF^(F?jN`@$8^Tq|^qH)Q%Y+Ny}8rO{L#tq}9am%=E+%fJN_l*0-1LL9b$ari#F`gRF zjOWG+%jn<7k+rYKXiDaI6QiZjKV5=@DvBvY~}#guAFGo_m{Oqr%EQ?@C`lxxZ} z<(mpjg{C4?v8lvVYAQ38n<`9|rYcjlsm4@msx#G_8cdC*CR4Mi#nftQGqsyKOdn01 zrY=*rsmIi7>NEA5226vdA=9vF#58IeGmV=jOp~T5)3j;EG;5kO&6^fXi>4*hvT4P% zYFaa`n>I|FrY+O9X~(o{+B5B&4orupBh#_z#B^#pGo70*OqZrB)3xcwbZfdZeKOsf z9!!s>C)2a(#q?@=GrgO<%-&`nv#;6D>~9V*2bzP-!R8Qis5#6WZjLZVnxo9o<`{FV zInEq!PB15$lg!EH6mzOM&75w|FlU;x%-QA~bFMkhoNq2L7n+OA#pV)oskzKtZmuv_ znybv!<{ERYxz1c~ZZJ2Ro6ODT7IUk)&D?J8Fn=_6n!C*1<{opexzF5h9xxA@hs?v~ z5%Z{d%sg(MFi)DN%+ux>^Q?K!Ja1kwFPfLk%jOmHs(H=4Zr(6&nzzi`<{k5{dC$CW zJ}@7ekIcvB6Z5J0%zSRXFkhOl%-7}{^R4;L{K$i@znn5@-ps1Y1HZp_VX9xFy08X^FB#TVgD+mN-kiCBc$tNwOqcQY@*KG)uZA z!;)#qvSeFwEV-6EOTMMRQfMi%6kAFxrIs>FxuwEVX{oYQTWTz|mO4wlrNPo@X|gn1 zS}d)WHcPvu!}8J6Y3Z_bTY4!NkZx@=vsu3Fcu>(&kH zrgh7@ZQZf%TKBB`)&uLI^~ic`J+Yoz&#dRx3+tuz%6e_RvEEwmte>p+)(7jO^~w5d zeX+h;->mOeFPpc`$L4GEv-#TsY=O2QTd*y}7HSK#h1()*k+vvXv@OOKYm2kR+Y)Sv zwj^7!Eyb2+Zt?*wkBJ%t;N=AYqPc6I&2?powhDpx2?z4YwNT1+XifdwjtZFZNxTe8?%ku zCTx?oDciJd#x`r4v(4KUY>T!f+p=xNwrX3mt=l$io3<_6wr$6@YumH!+YW4pwj
  • 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 z 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

    &kRB{yZEIBS)_+esaG?Z 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

    =u?UwCT%0P!;;6U8 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 z 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 O9!bSEpl5I(gYX28 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