Client: nodets
This adds the tests for the "nodets" library. This isn't an actual library, and are just another set of tests for the nodejs library, but also using typescript. Therefore I have added them in the existing "nodejs" job.
Client: rust
This upgrades the version of rust in the rust-toolchain file, docs and dockerfiles. Doing so requires a few changes to the source, mainly to fix or silence new warnings.
Submitted on behalf of a third-party: Jiayu Liu
Derived from the following PR: https://github.com/apache/thrift/pull/3045
Co-authored-by: Jiayu Liu <jiayu@hey.com>
These tests exist, but don't currently run on github actions. This adds a new job to run these.
This also fixes the regression in the tests caused by https://github.com/apache/thrift/pull/3014.
* cmake to build with java and kotlin
* add kotlin
* turn off python in cmake
* cmake and cpack
---------
Co-authored-by: Jiayu Liu <jiayu.liu@airbnb.com>
Build and test the netstd library so there is some basic testing.
Run tests on ubuntu-22.04, as 20.04 wil be EoL soon and also had some issues with dotnet-sdk.
There were some recent changes causing six to be installed on the `make
install` step instead of (implicitly) on the `Python setup` step before,
and the six installed on `make install` step was not available to the
next `make check` step and causing errors.
Install six on `Python setup` step explicitly instead.
Client: go
With the release of go 1.23, update supported go versions to 1.22+1.23
according to our go support policy.
Also update the code to use the new range loop feature introduced in go
1.22 when appropriate.
Also fix a bug in TSSLServerSocket.Addr that it does not return the
listener address.
Ubuntu-20.04 will be EoL in 9 months, therefore let's use the next LTS version as default.
Images for ubuntu-24.04 are available, so use them also for building the compiler.
V3 is based on Node.js v16 and will get deprecated. Currently it's just causing a warning.
With v4 the artifact-upload action fails as all matrix-jobs use the same name and the
default prevents overwriting existing ones. Therefore we use individual artifact names
which will also preserve all logs, not just a singe one only.
This is tested with https://github.com/apache/thrift/pull/2927, which
published to https://test.pypi.org/project/thrift-test/. I tested
locally with:
(venv) fishy@penguin:~/work/test$ pip install -i https://test.pypi.org/simple/ thrift-test
Looking in indexes: https://test.pypi.org/simple/
Collecting thrift-test
Downloading 5885ea1406/thrift-test-0.21.0.tar.gz (62 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.3/62.3 kB 1.4 MB/s eta 0:00:00
Preparing metadata (setup.py) ... done
Collecting six>=1.7.2 (from thrift-test)
Downloading 238e259082/six-1.10.0.tar.gz (29 kB)
Preparing metadata (setup.py) ... done
Building wheels for collected packages: thrift-test, six
Building wheel for thrift-test (setup.py) ... done
Created wheel for thrift-test: filename=thrift_test-0.21.0-cp311-cp311-linux_x86_64.whl size=416914 sha256=3a972bc562be7ed19cb37399e444ed0d373cde5319023974080b625e550901d4
Stored in directory: /home/fishy/.cache/pip/wheels/45/20/1f/d3e1b869ac068d63ca2b2c13a2f4e33a80b360fae7091c8a9b
Building wheel for six (setup.py) ... done
Created wheel for six: filename=six-1.10.0-py2.py3-none-any.whl size=9942 sha256=74014380446ccf331366316cec0b1aaf40e0162e70307622b493e38e8451115f
Stored in directory: /home/fishy/.cache/pip/wheels/e4/18/d0/e02474c90dcf14c511c0f52145d7e72e41ff3fb80b330ba58e
Successfully built thrift-test six
Installing collected packages: six, thrift-test
Successfully installed six-1.10.0 thrift-test-0.21.0
(venv) fishy@penguin:~/work/test$ python3
Python 3.11.7 (main, Dec 8 2023, 14:22:46) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from thrift.transport import TSocket
>>> transport = TSocket.TSocket('localhost', 9090)
>>> transport
<thrift.transport.TSocket.TSocket object at 0x785b18d83690>
>>> transport.open()
Could not connect to any of [('::1', 9090, 0, 0), ('127.0.0.1', 9090)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/fishy/work/test/venv/lib/python3.11/site-packages/thrift/transport/TSocket.py", line 149, in open
raise TTransportException(type=TTransportException.NOT_OPEN, message=msg)
thrift.transport.TTransport.TTransportException: Could not connect to any of [('::1', 9090, 0, 0), ('127.0.0.1', 9090)]
>>> from thrift.protocol import fastbinary
>>> fastbinary
<module 'thrift.protocol.fastbinary' from '/home/fishy/work/test/venv/lib/python3.11/site-packages/thrift/protocol/fastbinary.cpython-311-x86_64-linux-gnu.so'>
>>> fastbinary.decode_compact
<built-in function decode_compact>
>>>
If we want to merge this version, I'll enable pending publishing with
`pypi.yml` from this repo on pypi [1].
[1]: https://pypi.org/manage/account/publishing/
With --disable-tests, for example for Go the `make check` under `lib/go`
would only run unit tests under `lib/go/thrift` but not the unit tests
under `lib/go/test`.
Also some changes in lib/go/test/fuzz/Makefile.am so it works in both go
1.20 and 1.21 (The current state breaks in 1.21 but because of
`--disable-tests` we never noticed that).
Although we haven't removed py2 support yet, it's no longer available in
github actions so it's been consistently failing in recent github action
runs.
Also add `fail-fast: false` to all matrices in github actions.