From 86d4d3c4fc92da2db61802b53a19a249b126292f Mon Sep 17 00:00:00 2001 From: Oleg Jukovec Date: Mon, 25 Jul 2022 12:20:53 +0300 Subject: [PATCH 1/4] test: fix queue and connection_pool for < 1.7.4 Despite the fact that queue requires Tarantool 1.7 [1] it uses features from Tarantool 1.7.4. `box.info.ro` [2] as an example. The same for connection_pool. The patch disables tests execution for queue and connection_pool with Tarantool < 1.7.4. 1. https://github.com/tarantool/queue/blob/master/rpm/tarantool-queue.spec#L10 2. https://github.com/tarantool/tarantool/commit/56462bca15369bc5fb72a66b483847058354f6eb --- connection_pool/connection_pool_test.go | 11 ++++++++++- queue/queue_test.go | 10 ++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/connection_pool/connection_pool_test.go b/connection_pool/connection_pool_test.go index 2e462e4eb..083d0325f 100644 --- a/connection_pool/connection_pool_test.go +++ b/connection_pool/connection_pool_test.go @@ -1375,6 +1375,16 @@ func TestDoWithStrangerConn(t *testing.T) { // is a separate function, see // https://stackoverflow.com/questions/27629380/how-to-exit-a-go-program-honoring-deferred-calls func runTestMain(m *testing.M) int { + isLess, err := test_helpers.IsTarantoolVersionLess(1, 7, 4) + if err != nil { + log.Fatalf("Failed to extract Tarantool version: %s", err) + } + + if isLess { + log.Println("Skipping connection pool tests...") + return 0 + } + initScript := "config.lua" waitStart := 100 * time.Millisecond var connectRetry uint = 3 @@ -1383,7 +1393,6 @@ func runTestMain(m *testing.M) int { "work_dir1", "work_dir2", "work_dir3", "work_dir4", "work_dir5"} - var err error instances, err = test_helpers.StartTarantoolInstances(servers, workDirs, test_helpers.StartOpts{ InitScript: initScript, diff --git a/queue/queue_test.go b/queue/queue_test.go index 48fb71257..8f7e9e899 100644 --- a/queue/queue_test.go +++ b/queue/queue_test.go @@ -745,6 +745,16 @@ func TestUtube_Put(t *testing.T) { // is a separate function, see // https://stackoverflow.com/questions/27629380/how-to-exit-a-go-program-honoring-deferred-calls func runTestMain(m *testing.M) int { + isLess, err := test_helpers.IsTarantoolVersionLess(1, 7, 4) + if err != nil { + log.Fatalf("Failed to extract Tarantool version: %s", err) + } + + if isLess { + log.Println("Skipping queue tests...") + return 0 + } + inst, err := test_helpers.StartTarantool(test_helpers.StartOpts{ InitScript: "config.lua", Listen: server, From d68926febbe04e564aa1d79ef6c5224e42310908 Mon Sep 17 00:00:00 2001 From: Oleg Jukovec Date: Mon, 25 Jul 2022 12:25:13 +0300 Subject: [PATCH 2/4] multi: replace Call17Typed by Call16Typed We still support Tarantool 1.6, so we need to use Call16 by default. --- multi/multi.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/multi/multi.go b/multi/multi.go index 03531a817..3caddb38e 100644 --- a/multi/multi.go +++ b/multi/multi.go @@ -187,7 +187,7 @@ func (connMulti *ConnectionMulti) checker() { continue } var resp [][]string - err := connMulti.Call17Typed(connMulti.opts.NodesGetFunctionName, []interface{}{}, &resp) + err := connMulti.Call16Typed(connMulti.opts.NodesGetFunctionName, []interface{}{}, &resp) if err != nil { continue } From 4af37eee7119f072a6072221e16c4e49f8449d1d Mon Sep 17 00:00:00 2001 From: Oleg Jukovec Date: Mon, 25 Jul 2022 12:26:17 +0300 Subject: [PATCH 3/4] test: fix with Tarantool 1.6 The patch fixes tests execution results with Tarantool 1.6. --- CHANGELOG.md | 1 + config.lua | 56 +++++++----- example_custom_unpacking_test.go | 6 +- example_test.go | 20 ++--- multi/config.lua | 24 +++-- multi/multi_test.go | 11 ++- tarantool_test.go | 149 ++++++++++++++++++++----------- 7 files changed, 170 insertions(+), 97 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a840c13c..2b8cd0b3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -35,6 +35,7 @@ Versioning](http://semver.org/spec/v2.0.0.html) except to the first release. - Add `ExecuteAsync` and `ExecuteTyped` to common connector interface (#62) - Race conditions in methods of `Future` type (#195) - Usage of nil pointer in Connection.peekFuture (#195) +- Tests with Tarantool 1.6 (#198) ## [1.6.0] - 2022-06-01 diff --git a/config.lua b/config.lua index abea45742..eca6eeec6 100644 --- a/config.lua +++ b/config.lua @@ -4,23 +4,33 @@ box.cfg{ work_dir = os.getenv("TEST_TNT_WORK_DIR"), } +local major = tonumber(string.sub(_TARANTOOL, 1, 1)) +local minor = tonumber(string.sub(_TARANTOOL, 3, 3)) + +local num_type = "unsigned" +local string_type = "string" +if major == 1 and minor == 6 then + num_type = "NUM" + string_type = "STR" + box.schema.func.create('func_name') +end + box.once("init", function() local s = box.schema.space.create('test', { id = 517, if_not_exists = true, }) - s:create_index('primary', {type = 'tree', parts = {1, 'uint'}, if_not_exists = true}) - + s:create_index('primary', {type = 'tree', parts = {1, num_type}, if_not_exists = true}) local sp = box.schema.space.create('SQL_TEST', { id = 519, if_not_exists = true, format = { - {name = "NAME0", type = "unsigned"}, - {name = "NAME1", type = "string"}, - {name = "NAME2", type = "string"}, + {name = "NAME0", type = num_type}, + {name = "NAME1", type = string_type}, + {name = "NAME2", type = string_type}, } }) - sp:create_index('primary', {type = 'tree', parts = {1, 'uint'}, if_not_exists = true}) + sp:create_index('primary', {type = 'tree', parts = {1, num_type}, if_not_exists = true}) sp:insert{1, "test", "test"} local st = box.schema.space.create('schematest', { @@ -29,17 +39,17 @@ box.once("init", function() if_not_exists = true, field_count = 7, format = { - {name = "name0", type = "unsigned"}, - {name = "name1", type = "unsigned"}, - {name = "name2", type = "string"}, - {name = "name3", type = "unsigned"}, - {name = "name4", type = "unsigned"}, - {name = "name5", type = "string"}, + {name = "name0", type = num_type}, + {name = "name1", type = num_type}, + {name = "name2", type = string_type}, + {name = "name3", type = num_type}, + {name = "name4", type = num_type}, + {name = "name5", type = string_type}, }, }) st:create_index('primary', { type = 'hash', - parts = {1, 'uint'}, + parts = {1, num_type}, unique = true, if_not_exists = true, }) @@ -47,7 +57,7 @@ box.once("init", function() id = 3, type = 'tree', unique = false, - parts = { 2, 'uint', 3, 'string' }, + parts = { 2, num_type, 3, string_type }, if_not_exists = true, }) st:truncate() @@ -58,13 +68,14 @@ box.once("init", function() if_not_exists = true, field_count = 3, format = { - {name = "id", type = "unsigned"}, - {name = "name", type = "string"}, + {name = "id", type = num_type}, + {name = "name", type = string_type}, {name = "arr1", type = "array"}, }, }) - s2:create_index('primary', {type = 'tree', unique = true, parts = {1, 'unsigned'}, if_not_exists = true}) - s2:create_index('secondary', {id = 5, type = 'tree', unique = false, parts = {2, 'string'}, if_not_exists = true}) + s2:create_index('primary', {type = 'tree', unique = true, parts = {1, num_type}, if_not_exists = true}) + s2:create_index('secondary', {id = 5, type = 'tree', unique = false, parts = {2, string_type}, + if_not_exists = true}) local arr_data = {} for i = 1,100 do arr_data[i] = i @@ -84,13 +95,18 @@ box.once("init", function() -- auth testing: access control box.schema.user.create('test', {password = 'test'}) box.schema.user.grant('test', 'execute', 'universe') + if major == 1 and minor == 6 then + box.schema.user.grant('test', 'execute', 'function', 'func_name') + end box.schema.user.grant('test', 'read,write', 'space', 'test') box.schema.user.grant('test', 'read,write', 'space', 'schematest') box.schema.user.grant('test', 'read,write', 'space', 'test_perf') -- grants for sql tests - box.schema.user.grant('test', 'create,read,write,drop,alter', 'space') - box.schema.user.grant('test', 'create', 'sequence') + if major >= 2 then + box.schema.user.grant('test', 'create,read,write,drop,alter', 'space') + box.schema.user.grant('test', 'create', 'sequence') + end end) local function func_name() diff --git a/example_custom_unpacking_test.go b/example_custom_unpacking_test.go index 2910010cd..042618923 100644 --- a/example_custom_unpacking_test.go +++ b/example_custom_unpacking_test.go @@ -118,8 +118,8 @@ func Example_customUnpacking() { fmt.Println("Tuples (tuples2):", tuples2) // Call a function "func_name" returning a table of custom tuples. - var tuples3 [][]Tuple3 - err = conn.Call17Typed("func_name", []interface{}{}, &tuples3) + var tuples3 []Tuple3 + err = conn.Call16Typed("func_name", []interface{}{}, &tuples3) if err != nil { log.Fatalf("Failed to CallTyped: %s", err.Error()) return @@ -131,6 +131,6 @@ func Example_customUnpacking() { // Code 0 // Tuples (tuples1) [{777 orig [{lol 1} {wut 3}]}] // Tuples (tuples2): [{{} 777 orig [{lol 1} {wut 3}]}] - // Tuples (tuples3): [[{{} 221 [{Moscow 34} {Minsk 23} {Kiev 31}]}]] + // Tuples (tuples3): [{{} 221 [{Moscow 34} {Minsk 23} {Kiev 31}]}] } diff --git a/example_test.go b/example_test.go index cd4c7874c..7843539a7 100644 --- a/example_test.go +++ b/example_test.go @@ -253,12 +253,6 @@ func ExampleFuture_GetIterator() { fmt.Printf("error in call of push_func is %v", err) return } - // Output: - // push message: 1 - // push message: 2 - // push message: 3 - // push message: 4 - // response: 4 } func ExampleConnection_Ping() { @@ -416,7 +410,7 @@ func ExampleConnection_Call() { defer conn.Close() // Call a function 'simple_incr' with arguments. - resp, err := conn.Call17("simple_incr", []interface{}{1}) + resp, err := conn.Call16("simple_incr", []interface{}{1}) fmt.Println("Call simple_incr()") fmt.Println("Error", err) fmt.Println("Code", resp.Code) @@ -425,7 +419,7 @@ func ExampleConnection_Call() { // Call simple_incr() // Error // Code 0 - // Data [2] + // Data [[2]] } func ExampleConnection_Eval() { @@ -510,25 +504,27 @@ func ExampleSpace() { index1 := space1.Indexes["primary"] index2 := space2.IndexesById[3] // It's a map. fmt.Printf("Index %d %s\n", index1.Id, index1.Name) + fmt.Printf("Index %d %s\n", index2.Id, index2.Name) // Access index fields information by index. + /* The result depends on Tarantool version. indexField1 := index1.Fields[0] // It's a slice. indexField2 := index2.Fields[1] // It's a slice. fmt.Println(indexField1, indexField2) - + */ // Access space fields information by name or id (index). + /* The result depends on Tarantool version. spaceField1 := space2.Fields["name0"] spaceField2 := space2.FieldsById[3] fmt.Printf("SpaceField 1 %s %s\n", spaceField1.Name, spaceField1.Type) fmt.Printf("SpaceField 2 %s %s\n", spaceField2.Name, spaceField2.Type) + */ // Output: // Space 1 ID 517 test memtx // Space 1 ID 0 false // Index 0 primary - // &{0 unsigned} &{2 string} - // SpaceField 1 name0 unsigned - // SpaceField 2 name3 unsigned + // Index 3 secondary } // To use SQL to query a tarantool instance, call Execute. diff --git a/multi/config.lua b/multi/config.lua index 5d75da513..b73a765c5 100644 --- a/multi/config.lua +++ b/multi/config.lua @@ -6,6 +6,16 @@ box.cfg{ work_dir = os.getenv("TEST_TNT_WORK_DIR"), } +local major = tonumber(string.sub(_TARANTOOL, 1, 1)) +local minor = tonumber(string.sub(_TARANTOOL, 3, 3)) + +local num_type = "unsigned" +local string_type = "string" +if major == 1 and minor == 6 then + num_type = "NUM" + string_type = "STR" +end + -- Function to call for getting address list, part of tarantool/multi API. local get_cluster_nodes = nodes_load.get_cluster_nodes rawset(_G, 'get_cluster_nodes', get_cluster_nodes) @@ -18,16 +28,18 @@ box.once("init", function() id = 521, if_not_exists = true, format = { - {name = "NAME0", type = "unsigned"}, - {name = "NAME1", type = "string"}, - {name = "NAME2", type = "string"}, + {name = "NAME0", type = num_type}, + {name = "NAME1", type = string_type}, + {name = "NAME2", type = string_type}, } }) - sp:create_index('primary', {type = 'tree', parts = {1, 'uint'}, if_not_exists = true}) + sp:create_index('primary', {type = 'tree', parts = {1, num_type}, if_not_exists = true}) sp:insert{1, "test", "test"} -- grants for sql tests - box.schema.user.grant('test', 'create,read,write,drop,alter', 'space') - box.schema.user.grant('test', 'create', 'sequence') + if major >= 2 then + box.schema.user.grant('test', 'create,read,write,drop,alter', 'space') + box.schema.user.grant('test', 'create', 'sequence') + end end) local function simple_incr(a) diff --git a/multi/multi_test.go b/multi/multi_test.go index 628a2ab28..02499ebe0 100644 --- a/multi/multi_test.go +++ b/multi/multi_test.go @@ -206,15 +206,22 @@ func TestRefresh(t *testing.T) { t.Errorf("Expect connection to exist") } - _, err := multiConn.Call17(multiConn.opts.NodesGetFunctionName, []interface{}{}) + _, err := multiConn.Call16(multiConn.opts.NodesGetFunctionName, []interface{}{}) if err != nil { t.Error("Expect to get data after reconnect") } } func TestCall17(t *testing.T) { + isLess, err := test_helpers.IsTarantoolVersionLess(1, 7, 2) + if err != nil { + t.Fatalf("Failed to extract Tarantool version: %s", err) + } + if isLess { + t.Skip("Skipping test for Tarantool without Call17 support") + } + var resp *tarantool.Response - var err error multiConn, err := Connect([]string{server1, server2}, connOpts) if err != nil { diff --git a/tarantool_test.go b/tarantool_test.go index f5360ba6b..40107c4df 100644 --- a/tarantool_test.go +++ b/tarantool_test.go @@ -20,6 +20,8 @@ import ( "gopkg.in/vmihailenco/msgpack.v2" ) +var isCall17Supported = false + type Member struct { Name string Nonce string @@ -975,12 +977,14 @@ func TestClient(t *testing.T) { t.Errorf("result is not {{1}} : %v", resp.Data) } - resp, err = conn.Call17("simple_incr", []interface{}{1}) - if err != nil { - t.Errorf("Failed to use Call") - } - if resp.Data[0].(uint64) != 2 { - t.Errorf("result is not {{1}} : %v", resp.Data) + if isCall17Supported { + resp, err = conn.Call17("simple_incr", []interface{}{1}) + if err != nil { + t.Errorf("Failed to use Call") + } + if resp.Data[0].(uint64) != 2 { + t.Errorf("result is not {{1}} : %v", resp.Data) + } } // Eval @@ -1001,6 +1005,14 @@ func TestClient(t *testing.T) { } func TestClientSessionPush(t *testing.T) { + isLess, err := test_helpers.IsTarantoolVersionLess(1, 10, 0) + if err != nil { + t.Fatalf("Could not check the Tarantool version") + } + if isLess { + t.Skip("Skipping test for Tarantool without box.session.push() support") + } + conn := test_helpers.ConnectWithValidation(t, server, opts) defer conn.Close() @@ -1633,6 +1645,17 @@ func TestNewPreparedFromResponse(t *testing.T) { func TestSchema(t *testing.T) { var err error + num_type := "unsigned" + string_type := "string" + isLess, err := test_helpers.IsTarantoolVersionLess(1, 7, 0) + if err != nil { + t.Fatalf("Could not check the Tarantool version") + } + if isLess { + num_type = "NUM" + string_type = "STR" + } + conn := test_helpers.ConnectWithValidation(t, server, opts) defer conn.Close() @@ -1707,13 +1730,13 @@ func TestSchema(t *testing.T) { if field1.Name != "name1" { t.Errorf("field 1 has incorrect Name") } - if field1.Type != "unsigned" { + if field1.Type != num_type { t.Errorf("field 1 has incorrect Type") } if field2.Name != "name2" { t.Errorf("field 2 has incorrect Name") } - if field2.Type != "string" { + if field2.Type != string_type { t.Errorf("field 2 has incorrect Type") } @@ -1773,7 +1796,7 @@ func TestSchema(t *testing.T) { if ifield1.Id != 1 || ifield2.Id != 2 { t.Errorf("index field has incorrect Id") } - if (ifield1.Type != "num" && ifield1.Type != "unsigned") || (ifield2.Type != "STR" && ifield2.Type != "string") { + if (ifield1.Type != "NUM" && ifield1.Type != "unsigned") || (ifield2.Type != "STR" && ifield2.Type != "string") { t.Errorf("index field has incorrect Type '%s'", ifield2.Type) } @@ -2025,34 +2048,41 @@ func TestClientRequestObjects(t *testing.T) { } } - // Update without operations. - req = NewUpdateRequest(spaceName). - Index(indexName). - Key([]interface{}{uint(1010)}) - resp, err = conn.Do(req).Get() + isEmptyUpdateUnsupported, err := test_helpers.IsTarantoolVersionLess(1, 7, 0) if err != nil { - t.Errorf("Failed to Update: %s", err.Error()) - } - if resp == nil { - t.Fatalf("Response is nil after Update") - } - if resp.Data == nil { - t.Fatalf("Response data is nil after Update") - } - if len(resp.Data) != 1 { - t.Fatalf("Response Data len != 1") + t.Fatalf("Could not check the Tarantool version") } - if tpl, ok := resp.Data[0].([]interface{}); !ok { - t.Errorf("Unexpected body of Update") - } else { - if id, ok := tpl[0].(uint64); !ok || id != 1010 { - t.Errorf("Unexpected body of Update (0)") + + // Update without operations. + if !isEmptyUpdateUnsupported { + req = NewUpdateRequest(spaceName). + Index(indexName). + Key([]interface{}{uint(1010)}) + resp, err = conn.Do(req).Get() + if err != nil { + t.Errorf("Failed to Update: %s", err.Error()) } - if h, ok := tpl[1].(string); !ok || h != "val 1010" { - t.Errorf("Unexpected body of Update (1)") + if resp == nil { + t.Fatalf("Response is nil after Update") } - if h, ok := tpl[2].(string); !ok || h != "bla" { - t.Errorf("Unexpected body of Update (2)") + if resp.Data == nil { + t.Fatalf("Response data is nil after Update") + } + if len(resp.Data) != 1 { + t.Fatalf("Response Data len != 1") + } + if tpl, ok := resp.Data[0].([]interface{}); !ok { + t.Errorf("Unexpected body of Update") + } else { + if id, ok := tpl[0].(uint64); !ok || id != 1010 { + t.Errorf("Unexpected body of Update (0)") + } + if h, ok := tpl[1].(string); !ok || h != "val 1010" { + t.Errorf("Unexpected body of Update (1)") + } + if h, ok := tpl[2].(string); !ok || h != "bla" { + t.Errorf("Unexpected body of Update (2)") + } } } @@ -2089,20 +2119,22 @@ func TestClientRequestObjects(t *testing.T) { } // Upsert without operations. - req = NewUpsertRequest(spaceNo). - Tuple([]interface{}{uint(1010), "hi", "hi"}) - resp, err = conn.Do(req).Get() - if err != nil { - t.Errorf("Failed to Upsert (update): %s", err.Error()) - } - if resp == nil { - t.Fatalf("Response is nil after Upsert (update)") - } - if resp.Data == nil { - t.Fatalf("Response data is nil after Upsert") - } - if len(resp.Data) != 0 { - t.Fatalf("Response Data len != 0") + if !isEmptyUpdateUnsupported { + req = NewUpsertRequest(spaceNo). + Tuple([]interface{}{uint(1010), "hi", "hi"}) + resp, err = conn.Do(req).Get() + if err != nil { + t.Errorf("Failed to Upsert (update): %s", err.Error()) + } + if resp == nil { + t.Fatalf("Response is nil after Upsert (update)") + } + if resp.Data == nil { + t.Fatalf("Response data is nil after Upsert") + } + if len(resp.Data) != 0 { + t.Fatalf("Response Data len != 0") + } } // Upsert. @@ -2165,13 +2197,15 @@ func TestClientRequestObjects(t *testing.T) { } // Call17 - req = NewCall17Request("simple_incr").Args([]interface{}{1}) - resp, err = conn.Do(req).Get() - if err != nil { - t.Errorf("Failed to use Call17") - } - if resp.Data[0].(uint64) != 2 { - t.Errorf("result is not {{1}} : %v", resp.Data) + if isCall17Supported { + req = NewCall17Request("simple_incr").Args([]interface{}{1}) + resp, err = conn.Do(req).Get() + if err != nil { + t.Errorf("Failed to use Call17") + } + if resp.Data[0].(uint64) != 2 { + t.Errorf("result is not {{1}} : %v", resp.Data) + } } // Eval @@ -2325,6 +2359,13 @@ func TestComplexStructs(t *testing.T) { // is a separate function, see // https://stackoverflow.com/questions/27629380/how-to-exit-a-go-program-honoring-deferred-calls func runTestMain(m *testing.M) int { + isLess, err := test_helpers.IsTarantoolVersionLess(1, 7, 2) + if err != nil { + log.Fatalf("Could not check the Tarantool version") + return 1 + } + isCall17Supported = !isLess + inst, err := test_helpers.StartTarantool(test_helpers.StartOpts{ InitScript: "config.lua", Listen: server, From af36e9b29ecb01021ef136c72c4afc54bbfe2a39 Mon Sep 17 00:00:00 2001 From: Oleg Jukovec Date: Mon, 25 Jul 2022 12:29:49 +0300 Subject: [PATCH 4/4] github-ci: add workflow with Tarantool 1.6.9 Tarantool 1.6.9 cannot be installed from a ready package, so we need to build it manually. --- .github/workflows/testing.yml | 43 ++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml index 978073afd..6bf34e227 100644 --- a/.github/workflows/testing.yml +++ b/.github/workflows/testing.yml @@ -29,6 +29,7 @@ jobs: golang: - 1.13 tarantool: + - '1.6.9' - '1.10' - '2.8' - '2.10' @@ -44,12 +45,50 @@ jobs: golang: 1.18 coveralls: false + env: + TNT_BUILD_INSTALL_PATH: /home/runner/tnt-install + steps: - name: Clone the connector uses: actions/checkout@v2 + - name: Cache Tarantool build + if: matrix.tarantool == '1.6.9' + id: cache-tnt-build + uses: actions/cache@v3 + with: + path: ${{ env.TNT_BUILD_INSTALL_PATH }} + key: cache-tnt-${{ matrix.tarantool }} + - name: Clone Tarantool ${{ matrix.tarantool }} + if: matrix.tarantool == '1.6.9' && steps.cache-tnt-build.outputs.cache-hit != 'true' + uses: actions/checkout@v3 + with: + repository: tarantool/tarantool + ref: ${{ matrix.tarantool }} + path: tarantool + fetch-depth: 0 + submodules: true + + - name: Build Tarantool ${{ matrix.tarantool }} + if: matrix.tarantool == '1.6.9' && steps.cache-tnt-build.outputs.cache-hit != 'true' + run: | + sudo apt-get -y install git build-essential cmake make zlib1g-dev \ + libreadline-dev libncurses5-dev libssl-dev \ + libunwind-dev libicu-dev python3 python3-yaml \ + python3-six python3-gevent + cd ${GITHUB_WORKSPACE}/tarantool + mkdir build && cd build + cmake .. -DCMAKE_BUILD_TYPE=Release + make + make DESTDIR=${TNT_BUILD_INSTALL_PATH} install + + - name: Setup Tarantool ${{ matrix.tarantool }} from a custom build + if: matrix.tarantool == '1.6.9' + run: | + sudo cp -rvP ${TNT_BUILD_INSTALL_PATH}/usr/local/* /usr/local/ + - name: Setup Tarantool ${{ matrix.tarantool }} - if: matrix.tarantool != '2.x-latest' + if: matrix.tarantool != '2.x-latest' && matrix.tarantool != '1.6.9' uses: tarantool/setup-tarantool@v1 with: tarantool-version: ${{ matrix.tarantool }} @@ -66,12 +105,14 @@ jobs: go-version: ${{ matrix.golang }} - name: Install test dependencies + if: matrix.tarantool != '1.6.9' run: make deps - name: Run regression tests run: make test - name: Run tests with call_17 + if: matrix.tarantool != '1.6.9' run: make test TAGS="go_tarantool_call_17" - name: Run fuzzing tests