From ae39139956ee992ba07d5bab8cea8925083679f1 Mon Sep 17 00:00:00 2001 From: DerekBum Date: Wed, 25 Oct 2023 21:15:58 +0300 Subject: [PATCH] api: use `iproto.Feature` insted of `ProtocolFeature` Replaced the local `ProtocolFeature` type with the `iproto.Feature`. Closes #337 --- CHANGELOG.md | 1 + connection.go | 2 +- connection_test.go | 7 ++--- dial_test.go | 5 ++-- example_test.go | 18 +++++++------ pool/connection_pool.go | 4 +-- pool/connection_pool_test.go | 17 ++++++------ pool/example_test.go | 20 ++++++++++---- protocol.go | 43 +++++++---------------------- protocol_test.go | 23 ++++++++-------- request_test.go | 2 +- response.go | 4 +-- shutdown_test.go | 3 ++- tarantool_test.go | 52 ++++++++++++++++++------------------ 14 files changed, 97 insertions(+), 104 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 106143d1b..a8b851be8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,7 @@ Versioning](http://semver.org/spec/v2.0.0.html) except to the first release. `pool.Connect` and `pool.Add` now accept context as first argument, which user may cancel in process. If `pool.Connect` is canceled in progress, an error will be returned. All created connections will be closed. +- `iproto.Feature` type now used instead of `ProtocolFeature` (#337) ### Deprecated diff --git a/connection.go b/connection.go index f304a12ba..ed13947c2 100644 --- a/connection.go +++ b/connection.go @@ -1425,7 +1425,7 @@ func subscribeWatchChannel(conn *Connection, key string) (chan watchState, error return st, nil } -func isFeatureInSlice(expected ProtocolFeature, actualSlice []ProtocolFeature) bool { +func isFeatureInSlice(expected iproto.Feature, actualSlice []iproto.Feature) bool { for _, actual := range actualSlice { if expected == actual { return true diff --git a/connection_test.go b/connection_test.go index 3e7be1966..20d06b183 100644 --- a/connection_test.go +++ b/connection_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/stretchr/testify/require" + "github.com/tarantool/go-iproto" . "github.com/tarantool/go-tarantool/v2" ) @@ -12,20 +13,20 @@ func TestOptsClonePreservesRequiredProtocolFeatures(t *testing.T) { original := Opts{ RequiredProtocolInfo: ProtocolInfo{ Version: ProtocolVersion(100), - Features: []ProtocolFeature{ProtocolFeature(99), ProtocolFeature(100)}, + Features: []iproto.Feature{iproto.Feature(99), iproto.Feature(100)}, }, } origCopy := original.Clone() - original.RequiredProtocolInfo.Features[1] = ProtocolFeature(98) + original.RequiredProtocolInfo.Features[1] = iproto.Feature(98) require.Equal(t, origCopy, Opts{ RequiredProtocolInfo: ProtocolInfo{ Version: ProtocolVersion(100), - Features: []ProtocolFeature{ProtocolFeature(99), ProtocolFeature(100)}, + Features: []iproto.Feature{iproto.Feature(99), iproto.Feature(100)}, }, }) } diff --git a/dial_test.go b/dial_test.go index acd6737c5..130e4c173 100644 --- a/dial_test.go +++ b/dial_test.go @@ -13,6 +13,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/tarantool/go-iproto" "github.com/tarantool/go-tarantool/v2" "github.com/tarantool/go-tarantool/v2/test_helpers" @@ -72,7 +73,7 @@ func TestDialer_Dial_passedOpts(t *testing.T) { RequiredProtocol: tarantool.ProtocolInfo{ Auth: tarantool.ChapSha1Auth, Version: 33, - Features: []tarantool.ProtocolFeature{ + Features: []iproto.Feature{ tarantool.ErrorExtensionFeature, }, }, @@ -302,7 +303,7 @@ func TestConn_ProtocolInfo(t *testing.T) { info := tarantool.ProtocolInfo{ Auth: tarantool.ChapSha1Auth, Version: 33, - Features: []tarantool.ProtocolFeature{ + Features: []iproto.Feature{ tarantool.ErrorExtensionFeature, }, } diff --git a/example_test.go b/example_test.go index 2a580f55d..c06733ba4 100644 --- a/example_test.go +++ b/example_test.go @@ -5,6 +5,8 @@ import ( "fmt" "time" + "github.com/tarantool/go-iproto" + "github.com/tarantool/go-tarantool/v2" "github.com/tarantool/go-tarantool/v2/test_helpers" ) @@ -627,12 +629,12 @@ func ExampleProtocolVersion() { } // Output: // Connector client protocol version: 6 - // Connector client protocol feature: StreamsFeature - // Connector client protocol feature: TransactionsFeature - // Connector client protocol feature: ErrorExtensionFeature - // Connector client protocol feature: WatchersFeature - // Connector client protocol feature: PaginationFeature - // Connector client protocol feature: WatchOnceFeature + // Connector client protocol feature: IPROTO_FEATURE_STREAMS + // Connector client protocol feature: IPROTO_FEATURE_TRANSACTIONS + // Connector client protocol feature: IPROTO_FEATURE_ERROR_EXTENSION + // Connector client protocol feature: IPROTO_FEATURE_WATCHERS + // Connector client protocol feature: IPROTO_FEATURE_PAGINATION + // Connector client protocol feature: IPROTO_FEATURE_WATCH_ONCE } func getTestTxnOpts() tarantool.Opts { @@ -641,7 +643,7 @@ func getTestTxnOpts() tarantool.Opts { // Assert that server supports expected protocol features txnOpts.RequiredProtocolInfo = tarantool.ProtocolInfo{ Version: tarantool.ProtocolVersion(1), - Features: []tarantool.ProtocolFeature{ + Features: []iproto.Feature{ tarantool.StreamsFeature, tarantool.TransactionsFeature, }, @@ -1168,7 +1170,7 @@ func ExampleConnection_NewWatcher() { Pass: "test", // You need to require the feature to create a watcher. RequiredProtocolInfo: tarantool.ProtocolInfo{ - Features: []tarantool.ProtocolFeature{tarantool.WatchersFeature}, + Features: []iproto.Feature{tarantool.WatchersFeature}, }, } ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) diff --git a/pool/connection_pool.go b/pool/connection_pool.go index e101b3208..c9d39d095 100644 --- a/pool/connection_pool.go +++ b/pool/connection_pool.go @@ -938,8 +938,8 @@ func (p *ConnectionPool) NewWatcher(key string, } } if !watchersRequired { - return nil, errors.New("the feature WatchersFeature must be " + - "required by connection options to create a watcher") + return nil, errors.New("the feature IPROTO_FEATURE_WATCHERS must " + + "be required by connection options to create a watcher") } watcher := &poolWatcher{ diff --git a/pool/connection_pool_test.go b/pool/connection_pool_test.go index b944d0c6c..3e1adf2f2 100644 --- a/pool/connection_pool_test.go +++ b/pool/connection_pool_test.go @@ -14,6 +14,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/tarantool/go-iproto" "github.com/vmihailenco/msgpack/v5" "github.com/tarantool/go-tarantool/v2" @@ -2832,7 +2833,7 @@ func TestConnectionPool_NewWatcher_noWatchersFeature(t *testing.T) { roles := []bool{true, false, false, true, true} opts := connOpts.Clone() - opts.RequiredProtocolInfo.Features = []tarantool.ProtocolFeature{} + opts.RequiredProtocolInfo.Features = []iproto.Feature{} err := test_helpers.SetClusterRO(servers, opts, roles) require.Nilf(t, err, "fail to set roles for cluster") @@ -2847,8 +2848,8 @@ func TestConnectionPool_NewWatcher_noWatchersFeature(t *testing.T) { func(event tarantool.WatchEvent) {}, pool.ANY) require.Nilf(t, watcher, "watcher must not be created") require.NotNilf(t, err, "an error is expected") - expected := "the feature WatchersFeature must be required by connection " + - "options to create a watcher" + expected := "the feature IPROTO_FEATURE_WATCHERS must be required by " + + "connection options to create a watcher" require.Equal(t, expected, err.Error()) } @@ -2860,7 +2861,7 @@ func TestConnectionPool_NewWatcher_modes(t *testing.T) { roles := []bool{true, false, false, true, true} opts := connOpts.Clone() - opts.RequiredProtocolInfo.Features = []tarantool.ProtocolFeature{ + opts.RequiredProtocolInfo.Features = []iproto.Feature{ tarantool.WatchersFeature, } err := test_helpers.SetClusterRO(servers, opts, roles) @@ -2941,7 +2942,7 @@ func TestConnectionPool_NewWatcher_update(t *testing.T) { roles := []bool{true, false, false, true, true} opts := connOpts.Clone() - opts.RequiredProtocolInfo.Features = []tarantool.ProtocolFeature{ + opts.RequiredProtocolInfo.Features = []iproto.Feature{ tarantool.WatchersFeature, } err := test_helpers.SetClusterRO(servers, opts, roles) @@ -3030,7 +3031,7 @@ func TestWatcher_Unregister(t *testing.T) { roles := []bool{true, false, false, true, true} opts := connOpts.Clone() - opts.RequiredProtocolInfo.Features = []tarantool.ProtocolFeature{ + opts.RequiredProtocolInfo.Features = []iproto.Feature{ tarantool.WatchersFeature, } err := test_helpers.SetClusterRO(servers, opts, roles) @@ -3091,7 +3092,7 @@ func TestConnectionPool_NewWatcher_concurrent(t *testing.T) { roles := []bool{true, false, false, true, true} opts := connOpts.Clone() - opts.RequiredProtocolInfo.Features = []tarantool.ProtocolFeature{ + opts.RequiredProtocolInfo.Features = []iproto.Feature{ tarantool.WatchersFeature, } err := test_helpers.SetClusterRO(servers, opts, roles) @@ -3133,7 +3134,7 @@ func TestWatcher_Unregister_concurrent(t *testing.T) { roles := []bool{true, false, false, true, true} opts := connOpts.Clone() - opts.RequiredProtocolInfo.Features = []tarantool.ProtocolFeature{ + opts.RequiredProtocolInfo.Features = []iproto.Feature{ tarantool.WatchersFeature, } err := test_helpers.SetClusterRO(servers, opts, roles) diff --git a/pool/example_test.go b/pool/example_test.go index dae28de90..1d91c1d3b 100644 --- a/pool/example_test.go +++ b/pool/example_test.go @@ -2,8 +2,11 @@ package pool_test import ( "fmt" + "strings" "time" + "github.com/tarantool/go-iproto" + "github.com/tarantool/go-tarantool/v2" "github.com/tarantool/go-tarantool/v2/pool" "github.com/tarantool/go-tarantool/v2/test_helpers" @@ -92,7 +95,7 @@ func ExampleConnectionPool_NewWatcher() { const value = "bar" opts := connOpts.Clone() - opts.RequiredProtocolInfo.Features = []tarantool.ProtocolFeature{ + opts.RequiredProtocolInfo.Features = []iproto.Feature{ tarantool.WatchersFeature, } @@ -123,7 +126,7 @@ func ExampleConnectionPool_NewWatcher_noWatchersFeature() { const key = "foo" opts := connOpts.Clone() - opts.RequiredProtocolInfo.Features = []tarantool.ProtocolFeature{} + opts.RequiredProtocolInfo.Features = []iproto.Feature{} connPool, err := examplePool(testRoles, connOpts) if err != nil { @@ -134,10 +137,17 @@ func ExampleConnectionPool_NewWatcher_noWatchersFeature() { callback := func(event tarantool.WatchEvent) {} watcher, err := connPool.NewWatcher(key, callback, pool.ANY) fmt.Println(watcher) - fmt.Println(err) + if err != nil { + str := err.Error() + fmt.Println(strings.Trim(str[:56], " ")) + fmt.Println(str[56:]) + } else { + fmt.Println(err) + } // Output: // - // the feature WatchersFeature must be required by connection options to create a watcher + // the feature IPROTO_FEATURE_WATCHERS must be required by + // connection options to create a watcher } func getTestTxnOpts() tarantool.Opts { @@ -146,7 +156,7 @@ func getTestTxnOpts() tarantool.Opts { // Assert that server supports expected protocol features txnOpts.RequiredProtocolInfo = tarantool.ProtocolInfo{ Version: tarantool.ProtocolVersion(1), - Features: []tarantool.ProtocolFeature{ + Features: []iproto.Feature{ tarantool.StreamsFeature, tarantool.TransactionsFeature, }, diff --git a/protocol.go b/protocol.go index 3d931520f..da6c77246 100644 --- a/protocol.go +++ b/protocol.go @@ -2,7 +2,6 @@ package tarantool import ( "context" - "fmt" "github.com/tarantool/go-iproto" "github.com/vmihailenco/msgpack/v5" @@ -11,9 +10,6 @@ import ( // ProtocolVersion type stores Tarantool protocol version. type ProtocolVersion uint64 -// ProtocolVersion type stores a Tarantool protocol feature. -type ProtocolFeature iproto.Feature - // ProtocolInfo type aggregates Tarantool protocol version and features info. type ProtocolInfo struct { // Auth is an authentication method. @@ -21,7 +17,7 @@ type ProtocolInfo struct { // Version is the supported protocol version. Version ProtocolVersion // Features are supported protocol features. - Features []ProtocolFeature + Features []iproto.Feature } // Clone returns an exact copy of the ProtocolInfo object. @@ -30,7 +26,7 @@ func (info ProtocolInfo) Clone() ProtocolInfo { infoCopy := info if info.Features != nil { - infoCopy.Features = make([]ProtocolFeature, len(info.Features)) + infoCopy.Features = make([]iproto.Feature, len(info.Features)) copy(infoCopy.Features, info.Features) } @@ -39,44 +35,23 @@ func (info ProtocolInfo) Clone() ProtocolInfo { const ( // StreamsFeature represents streams support (supported by connector). - StreamsFeature ProtocolFeature = 0 + StreamsFeature iproto.Feature = 0 // TransactionsFeature represents interactive transactions support. // (supported by connector). - TransactionsFeature ProtocolFeature = 1 + TransactionsFeature iproto.Feature = 1 // ErrorExtensionFeature represents support of MP_ERROR objects over MessagePack // (supported by connector). - ErrorExtensionFeature ProtocolFeature = 2 + ErrorExtensionFeature iproto.Feature = 2 // WatchersFeature represents support of watchers // (supported by connector). - WatchersFeature ProtocolFeature = 3 + WatchersFeature iproto.Feature = 3 // PaginationFeature represents support of pagination // (supported by connector). - PaginationFeature ProtocolFeature = 4 + PaginationFeature iproto.Feature = 4 // WatchOnceFeature represents support of WatchOnce request types. - WatchOnceFeature ProtocolFeature = 6 + WatchOnceFeature iproto.Feature = 6 ) -// String returns the name of a Tarantool feature. -// If value X is not a known feature, returns "Unknown feature (code X)" string. -func (ftr ProtocolFeature) String() string { - switch ftr { - case StreamsFeature: - return "StreamsFeature" - case TransactionsFeature: - return "TransactionsFeature" - case ErrorExtensionFeature: - return "ErrorExtensionFeature" - case WatchersFeature: - return "WatchersFeature" - case PaginationFeature: - return "PaginationFeature" - case WatchOnceFeature: - return "WatchOnceFeature" - default: - return fmt.Sprintf("Unknown feature (code %d)", ftr) - } -} - var clientProtocolInfo ProtocolInfo = ProtocolInfo{ // Protocol version supported by connector. Version 3 // was introduced in Tarantool 2.10.0, version 4 was @@ -96,7 +71,7 @@ var clientProtocolInfo ProtocolInfo = ProtocolInfo{ // (Tarantool 3.0.0), in connector since 2.0.0. // WatchOnce request type was introduces in protocol version 6 // (Tarantool 3.0.0), in connector since 2.0.0. - Features: []ProtocolFeature{ + Features: []iproto.Feature{ StreamsFeature, TransactionsFeature, ErrorExtensionFeature, diff --git a/protocol_test.go b/protocol_test.go index 2ec4b0bc3..37f1e1d8a 100644 --- a/protocol_test.go +++ b/protocol_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/stretchr/testify/require" + "github.com/tarantool/go-iproto" . "github.com/tarantool/go-tarantool/v2" ) @@ -11,28 +12,28 @@ import ( func TestProtocolInfoClonePreservesFeatures(t *testing.T) { original := ProtocolInfo{ Version: ProtocolVersion(100), - Features: []ProtocolFeature{ProtocolFeature(99), ProtocolFeature(100)}, + Features: []iproto.Feature{iproto.Feature(99), iproto.Feature(100)}, } origCopy := original.Clone() - original.Features[1] = ProtocolFeature(98) + original.Features[1] = iproto.Feature(98) require.Equal(t, origCopy, ProtocolInfo{ Version: ProtocolVersion(100), - Features: []ProtocolFeature{ProtocolFeature(99), ProtocolFeature(100)}, + Features: []iproto.Feature{iproto.Feature(99), iproto.Feature(100)}, }) } func TestFeatureStringRepresentation(t *testing.T) { - require.Equal(t, StreamsFeature.String(), "StreamsFeature") - require.Equal(t, TransactionsFeature.String(), "TransactionsFeature") - require.Equal(t, ErrorExtensionFeature.String(), "ErrorExtensionFeature") - require.Equal(t, WatchersFeature.String(), "WatchersFeature") - require.Equal(t, PaginationFeature.String(), "PaginationFeature") - require.Equal(t, WatchOnceFeature.String(), "WatchOnceFeature") - - require.Equal(t, ProtocolFeature(15532).String(), "Unknown feature (code 15532)") + require.Equal(t, StreamsFeature.String(), "IPROTO_FEATURE_STREAMS") + require.Equal(t, TransactionsFeature.String(), "IPROTO_FEATURE_TRANSACTIONS") + require.Equal(t, ErrorExtensionFeature.String(), "IPROTO_FEATURE_ERROR_EXTENSION") + require.Equal(t, WatchersFeature.String(), "IPROTO_FEATURE_WATCHERS") + require.Equal(t, PaginationFeature.String(), "IPROTO_FEATURE_PAGINATION") + require.Equal(t, WatchOnceFeature.String(), "IPROTO_FEATURE_WATCH_ONCE") + + require.Equal(t, iproto.Feature(15532).String(), "Feature(15532)") } diff --git a/request_test.go b/request_test.go index da825b707..5e7400599 100644 --- a/request_test.go +++ b/request_test.go @@ -35,7 +35,7 @@ var validStmt *Prepared = &Prepared{StatementID: 1, Conn: &Connection{}} var validProtocolInfo ProtocolInfo = ProtocolInfo{ Version: ProtocolVersion(3), - Features: []ProtocolFeature{StreamsFeature}, + Features: []iproto.Feature{StreamsFeature}, } type ValidSchemeResolver struct { diff --git a/response.go b/response.go index 7ee314e04..0d6d062b8 100644 --- a/response.go +++ b/response.go @@ -156,7 +156,7 @@ func (resp *Response) decodeBody() (err error) { var l, larr int var stmtID, bindCount uint64 var serverProtocolInfo ProtocolInfo - var feature ProtocolFeature + var feature iproto.Feature var errorExtendedInfo *BoxError = nil d := msgpack.NewDecoder(&resp.buf) @@ -215,7 +215,7 @@ func (resp *Response) decodeBody() (err error) { return err } - serverProtocolInfo.Features = make([]ProtocolFeature, larr) + serverProtocolInfo.Features = make([]iproto.Feature, larr) for i := 0; i < larr; i++ { if err = d.Decode(&feature); err != nil { return err diff --git a/shutdown_test.go b/shutdown_test.go index 412d27ea4..efbfa4f88 100644 --- a/shutdown_test.go +++ b/shutdown_test.go @@ -14,6 +14,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/tarantool/go-iproto" . "github.com/tarantool/go-tarantool/v2" "github.com/tarantool/go-tarantool/v2/test_helpers" ) @@ -25,7 +26,7 @@ var shtdnClntOpts = Opts{ Timeout: 20 * time.Second, Reconnect: 500 * time.Millisecond, MaxReconnects: 10, - RequiredProtocolInfo: ProtocolInfo{Features: []ProtocolFeature{WatchersFeature}}, + RequiredProtocolInfo: ProtocolInfo{Features: []iproto.Feature{WatchersFeature}}, } var shtdnSrvOpts = test_helpers.StartOpts{ InitScript: "config.lua", diff --git a/tarantool_test.go b/tarantool_test.go index abb454eaa..abf2f3e37 100644 --- a/tarantool_test.go +++ b/tarantool_test.go @@ -3282,7 +3282,7 @@ func TestConnectionProtocolInfoSupported(t *testing.T) { // id support) has protocol version >= 3 and first four features. tarantool210ProtocolInfo := ProtocolInfo{ Version: ProtocolVersion(3), - Features: []ProtocolFeature{ + Features: []iproto.Feature{ StreamsFeature, TransactionsFeature, ErrorExtensionFeature, @@ -3295,7 +3295,7 @@ func TestConnectionProtocolInfoSupported(t *testing.T) { clientProtocolInfo, ProtocolInfo{ Version: ProtocolVersion(6), - Features: []ProtocolFeature{ + Features: []iproto.Feature{ StreamsFeature, TransactionsFeature, ErrorExtensionFeature, @@ -3322,7 +3322,7 @@ func TestClientIdRequestObject(t *testing.T) { tarantool210ProtocolInfo := ProtocolInfo{ Version: ProtocolVersion(3), - Features: []ProtocolFeature{ + Features: []iproto.Feature{ StreamsFeature, TransactionsFeature, ErrorExtensionFeature, @@ -3332,7 +3332,7 @@ func TestClientIdRequestObject(t *testing.T) { req := NewIdRequest(ProtocolInfo{ Version: ProtocolVersion(1), - Features: []ProtocolFeature{StreamsFeature}, + Features: []iproto.Feature{StreamsFeature}, }) resp, err := conn.Do(req).Get() require.Nilf(t, err, "No errors on Id request execution") @@ -3358,7 +3358,7 @@ func TestClientIdRequestObjectWithNilContext(t *testing.T) { tarantool210ProtocolInfo := ProtocolInfo{ Version: ProtocolVersion(3), - Features: []ProtocolFeature{ + Features: []iproto.Feature{ StreamsFeature, TransactionsFeature, ErrorExtensionFeature, @@ -3368,7 +3368,7 @@ func TestClientIdRequestObjectWithNilContext(t *testing.T) { req := NewIdRequest(ProtocolInfo{ Version: ProtocolVersion(1), - Features: []ProtocolFeature{StreamsFeature}, + Features: []iproto.Feature{StreamsFeature}, }).Context(nil) //nolint resp, err := conn.Do(req).Get() require.Nilf(t, err, "No errors on Id request execution") @@ -3393,7 +3393,7 @@ func TestClientIdRequestObjectWithPassedCanceledContext(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) req := NewIdRequest(ProtocolInfo{ Version: ProtocolVersion(1), - Features: []ProtocolFeature{StreamsFeature}, + Features: []iproto.Feature{StreamsFeature}, }).Context(ctx) //nolint cancel() resp, err := conn.Do(req).Get() @@ -3413,7 +3413,7 @@ func TestConnectionProtocolInfoUnsupported(t *testing.T) { clientProtocolInfo, ProtocolInfo{ Version: ProtocolVersion(6), - Features: []ProtocolFeature{ + Features: []iproto.Feature{ StreamsFeature, TransactionsFeature, ErrorExtensionFeature, @@ -3433,7 +3433,7 @@ func TestConnectionClientFeaturesUmmutable(t *testing.T) { info := conn.ClientProtocolInfo() infoOrig := info.Clone() - info.Features[0] = ProtocolFeature(15532) + info.Features[0] = iproto.Feature(15532) require.Equal(t, conn.ClientProtocolInfo(), infoOrig) require.NotEqual(t, conn.ClientProtocolInfo(), info) @@ -3447,7 +3447,7 @@ func TestConnectionServerFeaturesUmmutable(t *testing.T) { info := conn.ServerProtocolInfo() infoOrig := info.Clone() - info.Features[0] = ProtocolFeature(15532) + info.Features[0] = iproto.Feature(15532) require.Equal(t, conn.ServerProtocolInfo(), infoOrig) require.NotEqual(t, conn.ServerProtocolInfo(), info) @@ -3493,7 +3493,7 @@ func TestConnectionProtocolFeatureRequirementSuccess(t *testing.T) { connOpts := opts.Clone() connOpts.RequiredProtocolInfo = ProtocolInfo{ - Features: []ProtocolFeature{TransactionsFeature}, + Features: []iproto.Feature{TransactionsFeature}, } ctx, cancel := test_helpers.GetConnectContext() @@ -3511,7 +3511,7 @@ func TestConnectionProtocolFeatureRequirementFail(t *testing.T) { connOpts := opts.Clone() connOpts.RequiredProtocolInfo = ProtocolInfo{ - Features: []ProtocolFeature{TransactionsFeature}, + Features: []iproto.Feature{TransactionsFeature}, } ctx, cancel := test_helpers.GetConnectContext() @@ -3529,7 +3529,7 @@ func TestConnectionProtocolFeatureRequirementManyFail(t *testing.T) { connOpts := opts.Clone() connOpts.RequiredProtocolInfo = ProtocolInfo{ - Features: []ProtocolFeature{TransactionsFeature, ProtocolFeature(15532)}, + Features: []iproto.Feature{TransactionsFeature, iproto.Feature(15532)}, } ctx, cancel := test_helpers.GetConnectContext() @@ -3564,7 +3564,7 @@ func TestConnectionFeatureOptsImmutable(t *testing.T) { connOpts.Reconnect = timeout connOpts.MaxReconnects = retries connOpts.RequiredProtocolInfo = ProtocolInfo{ - Features: []ProtocolFeature{TransactionsFeature}, + Features: []iproto.Feature{TransactionsFeature}, } // Connect with valid opts @@ -3572,7 +3572,7 @@ func TestConnectionFeatureOptsImmutable(t *testing.T) { defer conn.Close() // Change opts outside - connOpts.RequiredProtocolInfo.Features[0] = ProtocolFeature(15532) + connOpts.RequiredProtocolInfo.Features[0] = iproto.Feature(15532) // Trigger reconnect with opts re-check test_helpers.StopTarantool(inst) @@ -3685,7 +3685,7 @@ func TestConnection_NewWatcher(t *testing.T) { const key = "TestConnection_NewWatcher" connOpts := opts.Clone() - connOpts.RequiredProtocolInfo.Features = []ProtocolFeature{ + connOpts.RequiredProtocolInfo.Features = []iproto.Feature{ WatchersFeature, } conn := test_helpers.ConnectWithValidation(t, server, connOpts) @@ -3721,15 +3721,15 @@ func TestConnection_NewWatcher(t *testing.T) { func TestConnection_NewWatcher_noWatchersFeature(t *testing.T) { const key = "TestConnection_NewWatcher_noWatchersFeature" connOpts := opts.Clone() - connOpts.RequiredProtocolInfo.Features = []ProtocolFeature{} + connOpts.RequiredProtocolInfo.Features = []iproto.Feature{} conn := test_helpers.ConnectWithValidation(t, server, connOpts) defer conn.Close() watcher, err := conn.NewWatcher(key, func(event WatchEvent) {}) require.Nilf(t, watcher, "watcher must not be created") require.NotNilf(t, err, "an error is expected") - expected := "the feature WatchersFeature must be required by connection " + - "options to create a watcher" + expected := "the feature IPROTO_FEATURE_WATCHERS must be required by " + + "connection options to create a watcher" require.Equal(t, expected, err.Error()) } @@ -3756,7 +3756,7 @@ func TestConnection_NewWatcher_reconnect(t *testing.T) { reconnectOpts := opts reconnectOpts.Reconnect = 100 * time.Millisecond reconnectOpts.MaxReconnects = 10 - reconnectOpts.RequiredProtocolInfo.Features = []ProtocolFeature{ + reconnectOpts.RequiredProtocolInfo.Features = []iproto.Feature{ WatchersFeature, } conn := test_helpers.ConnectWithValidation(t, server, reconnectOpts) @@ -3794,7 +3794,7 @@ func TestBroadcastRequest(t *testing.T) { const value = "bar" connOpts := opts.Clone() - connOpts.RequiredProtocolInfo.Features = []ProtocolFeature{ + connOpts.RequiredProtocolInfo.Features = []iproto.Feature{ WatchersFeature, } conn := test_helpers.ConnectWithValidation(t, server, connOpts) @@ -3844,7 +3844,7 @@ func TestBroadcastRequest_multi(t *testing.T) { const key = "TestBroadcastRequest_multi" connOpts := opts.Clone() - connOpts.RequiredProtocolInfo.Features = []ProtocolFeature{ + connOpts.RequiredProtocolInfo.Features = []iproto.Feature{ WatchersFeature, } conn := test_helpers.ConnectWithValidation(t, server, connOpts) @@ -3892,7 +3892,7 @@ func TestConnection_NewWatcher_multiOnKey(t *testing.T) { const value = "bar" connOpts := opts.Clone() - connOpts.RequiredProtocolInfo.Features = []ProtocolFeature{ + connOpts.RequiredProtocolInfo.Features = []iproto.Feature{ WatchersFeature, } conn := test_helpers.ConnectWithValidation(t, server, connOpts) @@ -3955,7 +3955,7 @@ func TestWatcher_Unregister(t *testing.T) { const value = "bar" connOpts := opts.Clone() - connOpts.RequiredProtocolInfo.Features = []ProtocolFeature{ + connOpts.RequiredProtocolInfo.Features = []iproto.Feature{ WatchersFeature, } conn := test_helpers.ConnectWithValidation(t, server, connOpts) @@ -3991,7 +3991,7 @@ func TestConnection_NewWatcher_concurrent(t *testing.T) { const testConcurrency = 1000 const key = "TestConnection_NewWatcher_concurrent" connOpts := opts.Clone() - connOpts.RequiredProtocolInfo.Features = []ProtocolFeature{ + connOpts.RequiredProtocolInfo.Features = []iproto.Feature{ WatchersFeature, } conn := test_helpers.ConnectWithValidation(t, server, connOpts) @@ -4036,7 +4036,7 @@ func TestWatcher_Unregister_concurrent(t *testing.T) { const testConcurrency = 1000 const key = "TestWatcher_Unregister_concurrent" connOpts := opts.Clone() - connOpts.RequiredProtocolInfo.Features = []ProtocolFeature{ + connOpts.RequiredProtocolInfo.Features = []iproto.Feature{ WatchersFeature, } conn := test_helpers.ConnectWithValidation(t, server, connOpts)