Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] V24.3.x rebase #142

Open
wants to merge 367 commits into
base: v24.2.x
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
367 commits
Select commit Hold shift + click to select a range
f524f06
test: Add test for sharded<>::invoke_on_...() compilation
xemul May 31, 2024
7536779
loopback_socket: Rename buffer's shutdown() to abort()
xemul Jun 4, 2024
32c61d0
loopback_socket: Shutdown socket on EOF close
xemul Jun 4, 2024
09733c2
test/http: Generalize http connection factory
xemul Jun 4, 2024
682cb63
http/client: Document max_connections
xemul Jun 4, 2024
8160eb2
http/client: Fix parser result checking
xemul Sep 22, 2023
8fedb6b
http/client: Introduce make_new_connection()
xemul Oct 17, 2023
6d38fd6
http/client: Pass request and handle by reference
xemul Sep 21, 2023
ec081a2
http/client: Fix indentation after previous patch
xemul Sep 21, 2023
3c5c7ea
http/client: Retry request over fresh connection in case old one failed
xemul Oct 17, 2023
df663b6
Merge 'io_tester: add parameter to force certain extent size hint val…
xemul Jun 4, 2024
debb85b
stall-analyser: use argparse.FileType when appropriate
tchaikov Jun 4, 2024
47bfd73
dns: use undeprecated c-ares APIs
tchaikov Apr 23, 2024
f908e5f
docker: lint dockerfile
pavelbezpravel Jun 5, 2024
2b4ddd2
docker: bind the file instead of copying during the build stage
pavelbezpravel Jun 5, 2024
14df7e6
scripts: sort packages alphanumerically
pavelbezpravel Jun 5, 2024
6c8c5f2
Merge 'Make http client restart requests' from Pavel Emelyanov
nyh Jun 6, 2024
afca834
stall-analyser: use itertools.dropwhile when appropriate
tchaikov Jun 4, 2024
8f9c857
stall-analyser: remove unused variable
tchaikov Jun 4, 2024
ebf44ab
Merge 'docker: Lint dockerfile' from Pavel Talashchenko
xemul Jun 10, 2024
71d9363
Merge 'tests: merge test_metrics.py into prometheus_test.py ' from Ke…
xemul Jun 10, 2024
5508176
build: add pyyaml to install-dependencies.sh
tchaikov Jun 10, 2024
6c14779
test: futures: verify stream yields the consumed value
tchaikov Jun 11, 2024
a99c805
json: Make formatter call write for jsonable
StephanDollberg Jun 6, 2024
8cc46a3
json: Make formatter::write(vector/map/umap) copy their arguments
StephanDollberg Jun 12, 2024
9ec1761
json: Add a test for jsonable objects
StephanDollberg Jun 7, 2024
cc9638e
tutorial.md: remove trailing whitespace
travisdowns Jun 12, 2024
a81fbc7
Update tutorial.md to reflect update preemption methods
travisdowns Jun 12, 2024
755a431
tutorial.md: fix typos
travisdowns Jun 12, 2024
d7bd2e7
Merge 'Update tutorial.md to reflect updated preemption methods' from…
nyh Jun 13, 2024
2b7bef1
Merge 'Minor improvements to the json subsystem' from Stephan Dollberg
xemul Jun 17, 2024
903e413
Merge 'Unfriend reactor from timer' from Pavel Emelyanov
avikivity Jun 17, 2024
0b53381
Merge 'Support mutable lambdas in sharded::invoke_on_others' from Pav…
avikivity Jun 18, 2024
53e33e0
timer-set: Add missing sanity headers
xemul Jun 17, 2024
55ab876
file: Don't return chain of ready futures from make_file_impl
xemul Jun 17, 2024
8b4993a
file: Fix indentation after previous patch
xemul Jun 17, 2024
cc21298
file: Use lighter access to map of fs-info-s
xemul Jun 17, 2024
cee4698
reactor: Generalize wakeup() callers
xemul Jun 18, 2024
594a8fb
reactor: Add and use stopped() getter
xemul Jun 18, 2024
66b826f
reactor: Unfriend alien and smp queues
xemul Jun 18, 2024
908ccd9
include/seastar: do not include unused headers
tchaikov Jun 19, 2024
eaf51a3
Merge 'Simplify fs-info getting in make_file_impl()' from Pavel Emely…
nyh Jun 24, 2024
cf50944
rpc: Fix hard-coded constants when sending unknown verb reply
xemul Jun 12, 2024
dc42c7b
rpc: Track handler execution time
xemul May 31, 2023
5fc9acd
rpc: Exchange handler duration with server responses
xemul May 31, 2023
41ee6ee
rpc: Calculate delay and export it via metrics
xemul May 31, 2023
595ae18
test,rpc: Extend simple ping-pong case
xemul Jun 12, 2024
fbe4dd5
tutorial.md: fix typo in Dan Kegel's name
lersek Jun 28, 2024
4cf3137
io_tester: ensure that file object is valid when closing it
pwrobelse Jun 28, 2024
0244a45
shared_token_bucket: resolve FIXME
pwrobelse Jun 28, 2024
f09e7c4
stall-analyser: gracefully handle empty input
bhalevy Jun 27, 2024
9d4e8ff
linux_perf_event: add make_linux_perf_event
bhalevy Jun 18, 2024
041523e
linux_perf_event: exclude_idle only on x86_64
bhalevy Jun 14, 2024
a901853
test: Add testing of connect()-ion abort ability
xemul Jun 25, 2024
4c7a802
build: run socket test with linux-aio reactor backend
tchaikov Jul 1, 2024
d937784
reactor: fix crash during metrics gathering
pmelkozer Jun 29, 2024
03942b2
stall-analyser: use 0 for default value of --minimum
tchaikov Jun 27, 2024
e057679
iostream: use new-style consumer to implement copy()
tchaikov Jul 3, 2024
826bc0b
Merge 'RPC delay metrics' from Pavel Emelyanov
avikivity Jul 3, 2024
367c1cd
fstream: reformat the doxygen comment of make_file_input_stream()
tchaikov Jul 3, 2024
deadc69
code-cleanup: remove redundant includes of linux-aio.hh
pwrobelse Jul 3, 2024
05e081c
docker: fix mount of install-dependencies
avikivity Jul 3, 2024
095be40
Merge 'Unfriend reactor from message queues' from Pavel Emelyanov
avikivity Jul 3, 2024
a57b448
code-cleanup: remove unneeded includes of fair_queue.hh
pwrobelse Jul 4, 2024
4390d31
scripts/perftune.py: aRFS should be disabled by default in non-MQ mode
vladzcloudius Jul 2, 2024
7c53043
Merge 'linux_perf_event: exclude_idle only on x86_64' from Benny Halevy
avikivity Jul 4, 2024
116abdf
code-cleanup: remove redundant includes of smp.hh
pwrobelse Jul 5, 2024
f28cd7d
code-cleanup: explicitly depend on io_desc.hh
pwrobelse Jul 2, 2024
6c88ebd
code-cleanup: do not include 'smp.hh' in 'reactor.hh'
pwrobelse Jul 5, 2024
95cb9b1
code-cleanup: remove redundant includes of 'reactor.hh'
pwrobelse Jul 5, 2024
dcd0d1b
code-cleanup: add missing header guards
pwrobelse Jul 5, 2024
ef8cf8d
scripts/perftune.py: refactor __learn_slaves() function
vladzcloudius Jul 5, 2024
1604104
scripts/perftune.py: improve discovery of bond device slaves
vladzcloudius Jul 5, 2024
e07b9cd
scripts/perftune.py: add support for tweaking VLAN interfaces
vladzcloudius Jul 6, 2024
7fe7d95
scripts/perftune.py: get rid of "SyntaxWarning: invalid escape sequence"
vladzcloudius Jul 5, 2024
76d696c
Merge 'perftune.py: add support for VLAN interfaces' from Vladislav Z…
xemul Jul 6, 2024
72b053d
rpc: pass start time to `wait_for_reply()` which accepts `no_wait_type`
tchaikov Jul 6, 2024
378b776
sstring: declare nested type with typename
tchaikov Jul 6, 2024
6acb4cf
gate: add try_hold
bhalevy Jul 1, 2024
ded56dc
core: fix -Wunused-but-set-variable
dotnwat Jul 6, 2024
7fcc990
reactor: respect preempt requests in debug mode
nvartolomei Jul 9, 2024
52f1ec2
when_all: stop using deprecated std::aligned_union_t
tchaikov Jul 10, 2024
a3ccb7a
src/core: remove unnecessary includes
tchaikov Jul 10, 2024
bd27a45
coding style: allow lines up to 160 chars in length
lersek Jul 12, 2024
b8fc54d
sstring: prevent fmt from formatting sstring as a sequence
tchaikov Jul 16, 2024
6706504
metrics: Use this_shard_id unconditionally
StephanDollberg Jul 10, 2024
3fdb599
file: document that close() returns the file object to uninitialized …
lersek Jul 17, 2024
3108a98
pack io_request
travisdowns Jul 19, 2024
470b539
abort_source: subscription: allow calling on_abort explicitly
bhalevy Jul 9, 2024
3f09475
native-stack: use queue::pop_eventually() in listener::accept()
tchaikov Jul 19, 2024
0e93c04
reactor: Use designated initializers to set up reactor_config
xemul Jul 6, 2024
514dbd5
reactor: Move config when constructing
xemul Jul 6, 2024
298e613
reactor_backend: Construct _polling_io from reactor config
xemul Jul 6, 2024
d376279
reactor: Move .handle_sigint on reactor_config
xemul Jul 6, 2024
c3b5c67
reactor: Move .kernel_page_cache on reactor_config
xemul Jul 6, 2024
09d4292
reactor: Move .have_aio_fsync on reactor_config
xemul Jul 6, 2024
176bb2a
reactor: Move .force_io_getevents_syscall on reactor_config
xemul Jul 6, 2024
41a2ca2
reactor: Move .max_task_backlog on reactor_config
xemul Jul 6, 2024
5ac72b3
reactor: Move .bypass_fsync on reactor_config
xemul Jul 6, 2024
b670258
reactor: Move .strict_o_direct on reactor_config
xemul Jul 6, 2024
be0d0d9
reactor: Move .task_quota on reactor_config
xemul Jul 6, 2024
12b40ce
reactor: Move .max_poll_time on reactor_config
xemul Jul 6, 2024
3d65452
reactor: Add .no_poll_aio to reactor_config
xemul Jul 6, 2024
48c6888
reactor: Set aio_nowait_supported once
xemul Jul 6, 2024
699d5fe
reactor: Mark .configure() private
xemul Jul 6, 2024
643b3c6
Merge 'Sanitize reactor configuration on start' from Pavel Emelyanov
avikivity Jul 23, 2024
97c3005
pollable_fd_state: Mark destructor protected and make non-virtual
xemul Jul 23, 2024
b101785
github: add enable-ccache input to test.yaml
tchaikov Jul 24, 2024
2b7ee27
github: disable ccache when building with C++ modules
tchaikov Jul 24, 2024
4ba9b9c
Merge 'github: disable ccache when building with C++ modules ' from K…
xemul Jul 24, 2024
8ecce18
abort_source: subscription: keep callback function alive after abort
bhalevy Jul 23, 2024
d9f1db3
scripts/perftune.py: clock source tweaking: special case Amazon and G…
vladzcloudius Jul 23, 2024
a4b2499
perftune: tune tcp_mem
avikivity Jul 11, 2024
c6b6919
pollable_fd_state: use default-generated dtor
tchaikov Jul 24, 2024
4231111
net: Expose DNS error category
michael-redpanda Jul 23, 2024
79d92fa
Merge 'code-cleanup: remove redundant includes of 'smp hh'' from Patr…
xemul Jul 26, 2024
cd9e1e6
abortable_fifo: fix a typo in comment
tchaikov Jul 19, 2024
a7d8132
reactor: Initialize _aio_pollfd later
xemul Jul 24, 2024
637ca3a
seastar.cc: include fmt/ranges.h
tchaikov Jul 26, 2024
19dc734
modules: fix FATAL_ERROR on compiler check
tomershafir Jul 30, 2024
cf405db
future: correctly document nested exception type emitted by finally()
lersek Jul 30, 2024
f619e68
reactor: Reset one-shot signal to DFL before handling
xemul Jul 30, 2024
3193c52
reactor: add missing includes of noncopyable_function.hh
tomershafir Aug 1, 2024
fa442c9
dnf: drop compatibility for c-ares <= 1.16
avikivity Aug 3, 2024
79e2ac6
dns: enter seastar::net namespace
avikivity Aug 3, 2024
ad73d01
dns: de-inline dns_resolver::impl methods
avikivity Aug 3, 2024
48e75f2
Merge 'dns: tidy-up code' from Avi Kivity
xemul Aug 6, 2024
089bb01
reactor: Export _polls counter (internally)
xemul Jul 26, 2024
746b08d
io_queue: Rename flow ratio timer to be more generic
xemul Jul 26, 2024
5030604
io_queue: Keep local variable with request execution delay
xemul Jul 26, 2024
a5d6ded
io_queue: Stall detector
xemul Jul 26, 2024
7911006
reactor: Add --io-completion-notify-ms option
xemul Aug 7, 2024
144aa53
Merge 'Detect and report slow IO requests' from Pavel Emelyanov
avikivity Aug 8, 2024
8e58341
stall-analyser: add output support for flamegraph
tchaikov Aug 2, 2024
09f431c
conditional-variable: align when() and wait() behaviour in case of a …
Aug 8, 2024
6d3857c
build: bump up the required fmtlib version to 8.1.1
tchaikov Apr 6, 2023
9b7dd3f
treewide: drop the support of fmtlib < 8.0.0
tchaikov Apr 6, 2023
9de1252
Merge 'treewide: drop the support of fmtlib < 8.0.0' from Kefu Chai
avikivity Aug 13, 2024
f859df0
ioinfo: add '--max-reqsize' parameter
pwrobelse Aug 12, 2024
e42e382
json2code_test: choose less popular port number
travisdowns Aug 15, 2024
6c6ee99
io_sink: use iteration instead of indexing
travisdowns Jul 19, 2024
f91df68
chunked_fifo: pop_front_n
travisdowns Jul 19, 2024
e8905c6
chunked_fifo: implement clear in terms of pop_n
travisdowns Jul 19, 2024
3859cf4
io_sink: use chunked_fifo as _pending_io container
travisdowns Jul 19, 2024
57c8f08
container_perf: a benchmark for container perf
travisdowns Jul 19, 2024
e6989eb
Merge 'Change pending_io container to chunked_fifo' from Travis Downs
avikivity Aug 18, 2024
1526684
cmake: undefine _FORTIFY_SOURCE on thread.cc
dotnwat Jul 10, 2024
7fe1a04
remove vestigial OSv support
travisdowns Aug 20, 2024
3c70194
tests/unit: drop support of C++17
tchaikov Aug 24, 2024
83e6cdf
fair_queue: Export the number of times class was activated
xemul Aug 24, 2024
ec5da7a
reactor, linux-aio: advise users in more detail on setting aio-max-nr
lersek Aug 21, 2024
9ba5133
treewide: s/format/seastar::format/
tchaikov Jul 8, 2023
769d1b4
rpc: do not use seastar::format() in rpc logger
tchaikov Jul 8, 2023
b6015b4
print: use fmtlib's fmt::format_string in format()
tchaikov Jul 8, 2023
3b0d5a5
httpd: remove unused prometheus structs
tomershafir Aug 29, 2024
c3e826a
signal: add seastar signal api
tomershafir Aug 7, 2024
644bb66
seastar/testing: only include used headers
tchaikov Aug 28, 2024
f03f7df
doc: add document for testing with seastar
tchaikov Aug 27, 2024
2d64e05
README.md: note GitHub discussions
tchaikov Sep 3, 2024
e3249a8
Merge 'treewide: use fmtlib's fmt::format_string in format() ' from K…
avikivity Sep 3, 2024
44cc54e
reactor: print more informative error when io_submit fails
tchaikov Nov 16, 2023
56d18e2
tutorial: explain the use case of rethrow_exception and coroutine::ex…
tchaikov Feb 8, 2024
8c58a72
rpc: fix compilation error caused by fmt::runtime()
pwrobelse Sep 9, 2024
d28c9a2
doc/lambda-coroutine-fiasco: reword for better readability
tchaikov Aug 24, 2024
28f8352
httpd: added listener index to http request
mmaslankaprv Apr 1, 2021
524a9a7
http: enable specifying a content type on exceptions
jcsp Dec 9, 2021
f1da0b4
http: don't jsonize exception if has content type
jcsp Dec 9, 2021
cd3d151
http: use base_exception content type in non-json errors
jcsp Dec 9, 2021
c0a38e9
metrics: allow multiple metrics::impl instances
Jun 1, 2022
3a6091f
metrics: expose metric impl handle to internal api
Jun 22, 2022
5210f18
metrics: expose handle in metric_groups_impl
Jul 18, 2022
630f41b
metrics: expose metric impl handle to external api
Jun 22, 2022
8aca4c6
metrics: Use handle for impl object
Jun 22, 2022
254edab
prometheus: support multiple metric impls
Jun 1, 2022
bbb201f
scollectd: select internal metrics implementation
Jun 1, 2022
10fba51
metrics: Expose 'skip_when_empty' for metrics
Jul 7, 2022
a26dff1
metrics: add helpers for creation of replicas
Jul 12, 2022
0f001fe
metrics: allow for removal of replicated metrics
Jul 11, 2022
d5cde81
metrics: add metric replication internal interface
Jul 12, 2022
bccc79b
metrics: register replicated metrics dinamically
Jul 11, 2022
f4baf3f
metrics: public family replication interface
Jul 12, 2022
ed06d7f
tests: add metrics replication unit tests
Jul 11, 2022
3df39a1
scheduling_group: expose usage statistics
Aug 8, 2022
20f97c1
net/dns: fixed socket concurrent access
mmaslankaprv Nov 2, 2022
4414ab2
http: rename http client logger
dotnwat Apr 18, 2023
49c56af
Revert default backend to aio
travisdowns May 31, 2023
a2a0ba0
reactor: refactor timers out of stall_detector
ballard26 May 8, 2023
927e3a4
tests/unit: refactor stall_detector test functions
ballard26 May 8, 2023
aeda510
core: add required include to circular_buffer_fixed_capacity
ballard26 May 11, 2023
7e33745
core: cpu profiler implementation
ballard26 May 8, 2023
e49402d
Do not use std::function for check_for_work()
travisdowns Jul 13, 2023
f6c8650
Match type for pure_check_for_work
travisdowns Jul 13, 2023
3c5b8eb
core/cpu_profiler: avoid taking samples during exception unwinding
ballard26 Aug 28, 2023
2afde7d
tests/cpu_profiler: add test to verify that `on_signal` doesn't allocate
ballard26 Aug 28, 2023
76d4d6a
tests/cpu_profiler: add tests that ensure correct behavior during exc…
ballard26 Aug 30, 2023
32bd212
core/cpu_profiler: finer-grain stats for why a sample was dropped
ballard26 Aug 28, 2023
536aaf9
Store original values from io-priorities yaml
Lazin Sep 25, 2023
09e4923
net/tls: Add reload_callback_with_creds
oleiman Sep 26, 2023
8785c2c
net/tls: Introduce cert_info and accessors
oleiman Sep 26, 2023
9c07449
tls_test: Add tests for new reload callback and cert_info accessors
oleiman Oct 6, 2023
c73c067
metrics: Add update_aggregate_labels()
StephanDollberg Oct 19, 2023
45fb0e2
net/tls: Adjust type for cert_info.serial
oleiman Oct 27, 2023
230fc9b
aio_general_context: flush: return short flush on error
bhalevy Aug 15, 2023
7ccae63
aio_general_context: flush: abort on unexpected errors
bhalevy Aug 15, 2023
e3ab4fc
aio_general_context: Allow more than max_poll() queued iocbs
StephanDollberg Nov 7, 2023
a67e812
internal/timers: Add missing #include <atomic>
BenPope Mar 9, 2024
b834677
tls: Include trust file contents with reload callback
oleiman Apr 2, 2024
bac46a6
core/cpu_profiler: add danger zone escape hatch
rockwotj Apr 4, 2024
f284942
Revert "util/log: drop unused function"
Apr 25, 2024
74da740
http: add `to_reply()` in `httpd::redirect_exception`
WillemKauf Apr 18, 2024
cb151ae
net: Modify call to ::format to ::format_to
May 3, 2024
6e1bd9d
net/tls: Replace cert_info::bytes with vector<byte>
oleiman May 7, 2024
71d3141
net: Move some to be shared code out of tls.cc
Feb 27, 2024
5b4e222
net: Create an interface for the session class
Feb 28, 2024
95a03df
net: Remove access to cert_creds _impl
Feb 27, 2024
fbc1b5d
net: Introduce OpenSSL implementation
michael-redpanda May 29, 2024
9305b64
websocket: Change cipher in use
michael-redpanda May 30, 2024
c7a16a1
tcp: Change cipher in us
michael-redpanda May 30, 2024
06be810
tests/net: Fixup for OpenSSL tests
michael-redpanda May 29, 2024
ad9347f
build: Updated configure scripts
michael-redpanda May 30, 2024
ee8c909
net: Added new functions to support OpenSSL
michael-redpanda Jun 5, 2024
88a3024
demos: Allow for setting additional key settings
michael-redpanda May 29, 2024
4d77c66
net: Added X509_V_FLAG_CRL_CHECK_ALL flag
michael-redpanda Jun 7, 2024
f827790
pkgconfig: Updated seastar.pc.in for OpenSSL build
michael-redpanda Jun 13, 2024
5f06d9d
net/ossl: Replaced ossl_error with std::system_error
michael-redpanda Jun 20, 2024
031719f
tls/ossl: Change handle_output_error to not use pointer
michael-redpanda Jun 20, 2024
d4a6adf
tls/ossl: Change handling of SSL_ERROR_SYSCALL
michael-redpanda Jun 19, 2024
f164f5c
tls/ossl: Updated ERROR_PUSH
michael-redpanda Jun 18, 2024
7b0cc99
net/tls: Update foramtter for tls_version
michael-redpanda Jun 20, 2024
ff59085
tls/ossl: Use std::generic_category for system errors
michael-redpanda Jun 24, 2024
a5d79dc
cmake: Adjust dependencies based on configuration
michael-redpanda Jun 24, 2024
59560bf
net/tls: Handle empty error condition
michael-redpanda Jun 28, 2024
b8a62cf
net/tls: Support chain of certs in set_x509_key_file
michael-redpanda Jul 9, 2024
06e56c7
net/tls: Handling app data post shutdown
michael-redpanda Jul 19, 2024
05085c7
prometheus: sanitize label value for text protocol
pgellert Aug 13, 2024
409dee1
prometheus: write to stringstream directly
pgellert Aug 13, 2024
218e2fb
tests: unit test prometheus wire format
pgellert Aug 16, 2024
7d2bb3a
prometheus: fix writing to stringstream
pgellert Aug 16, 2024
7182e5c
TLS: Add support for TLS1.3 session tickets
Mar 25, 2024
ba6f659
tls: s/get0()/get()/
tchaikov Apr 26, 2024
6fc4fca
net/tls: Added session resumption implementation to OpenSSL
michael-redpanda Aug 30, 2024
9db53d4
tls: remove duplicate definitions
ballard26 Sep 11, 2024
7ec0bcc
tests: remove unneeded prometheus CMake command
ballard26 Sep 11, 2024
8ecad59
tls: clear session ticket before releasing
pgellert Sep 10, 2024
75e0a59
net: fixes for TLS unit tests
ballard26 Sep 20, 2024
2ce9a4b
io_queue: add smp header to get full smp def
ballard26 Oct 2, 2024
cf10f47
chunked_fifo: add missing assert header
ballard26 Oct 2, 2024
b080531
treewide: specify ambiguous format calls
ballard26 Oct 2, 2024
cdb6c0e
httpd/file_handler: Always close stream
BenPope Sep 27, 2024
e296255
treewide: explicitly ignore write/read results in specific areas
ballard26 Oct 3, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 0 additions & 95 deletions .circleci/config.yml

This file was deleted.

108 changes: 108 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
name: Test

permissions:
contents: read

on:
workflow_call:
inputs:
compiler:
description: 'the C++ compiler to use'
type: string
required: true
standard:
description: 'the C++ standard to use'
type: number
required: true
mode:
description: 'build mode (debug, dev or release)'
type: string
required: true
enables:
description: 'the --enable-* option passed to configure.py'
type: string
default: ''
required: false
enable-ccache:
description: 'build with ccache enabled'
type: boolean
default: true
required: false
options:
description: 'additional options passed to configure.py'
type: string
default: ''
required: false

jobs:
test:
timeout-minutes: 40
runs-on: ubuntu-latest
container: fedora:40
steps:
- name: Install Git
run: |
sudo dnf -y install git

- uses: actions/checkout@v4
with:
submodules: "${{ contains(inputs.enables, 'dpdk') }}"

- name: Install build dependencies
run: |
sudo ./install-dependencies.sh

- name: Install clang++
if: ${{ inputs.compiler == 'clang++' }}
run: |
sudo dnf -y install clang

- name: Install clang-scan-deps
if: ${{ contains(inputs.enables, 'cxx-modules') }}
run: |
sudo dnf -y install clang-tools-extra

- name: Install ccache
if: ${{ inputs.enable-ccache }}
run: |
sudo dnf -y install ccache

- name: Setup ccache
if: ${{ inputs.enable-ccache }}
uses: hendrikmuhs/ccache-action@v1
with:
key: ${{ inputs.compiler }}-${{ inputs.standard }}-${{ inputs.mode }}-${{ inputs.enables }}

- name: Configure
run: |
if [ ${{ inputs.compiler }} = "clang++" ]; then
CC=clang
else
CC=gcc
fi
if ${{ inputs.enable-ccache }}; then
MAYBE_CCACHE_OPT="--ccache"
fi
./configure.py \
--c++-standard ${{ inputs.standard }} \
--compiler ${{ inputs.compiler }} \
--c-compiler $CC \
--mode ${{ inputs.mode }} \
$MAYBE_CCACHE_OPT \
${{ inputs.options }} \
${{ inputs.enables }}

- name: Build
run: cmake --build build/${{inputs.mode}}

- name: Check Header
if: ${{ inputs.mode == 'dev' && inputs.compiler == 'clang++' }}
run: cmake --build build/${{ inputs.mode }} --target checkheaders

- name: Build with C++20 modules
if: ${{ contains(inputs.enables, 'cxx-modules') }}
run: cmake --build build/${{ inputs.mode }} --target hello_cxx_module

- name: Test
if: ${{ ! contains(inputs.enables, 'cxx-modules') }}
run: ./test.py --mode=${{ inputs.mode }}
49 changes: 49 additions & 0 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Test

permissions:
contents: read

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ startsWith(github.ref, 'refs/pull/') }}

jobs:
regular_test:
name: "Test (${{ matrix.compiler }}, C++${{ matrix.standard}}, ${{ matrix.mode }})"
uses: ./.github/workflows/test.yaml
strategy:
fail-fast: false
matrix:
compiler: [clang++, g++]
standard: [20, 23]
mode: [dev, debug, release]
with:
compiler: ${{ matrix.compiler }}
standard: ${{ matrix.standard }}
mode: ${{ matrix.mode }}
enables: ${{ matrix.enables }}
options: ${{ matrix.options }}
build_with_dpdk:
name: "Test with DPDK enabled"
uses: ./.github/workflows/test.yaml
strategy:
fail-fast: false
with:
compiler: clang++
standard: 23
mode: release
enables: --enable-dpdk
options: --cook dpdk
build_with_cxx_modules:
name: "Test with C++20 modules enabled"
uses: ./.github/workflows/test.yaml
strategy:
fail-fast: false
with:
compiler: clang++
standard: 23
mode: debug
enables: --enable-cxx-modules
enable-ccache: false
Loading
Loading