Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
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
205 changes: 205 additions & 0 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -185,3 +185,208 @@ jobs:
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
if: matrix.feature == 'CodeQL'

proactor-posix-smoke:
runs-on: ubuntu-24.04
timeout-minutes: 25
name: ubuntu-24.04 gcc-13 Proactor POSIX smoke
env:
ACE_ROOT: ${{ github.workspace }}/ACE
MPC_ROOT: ${{ github.workspace }}/MPC
CC: gcc-13
CXX: g++-13
steps:
- name: checkout ACE/TAO
uses: actions/checkout@v6
- name: checkout MPC
uses: actions/checkout@v6
with:
repository: DOCGroup/MPC
path: ${{ env.MPC_ROOT }}
- name: Install apt packages
shell: bash
run: |
set -euxo pipefail
sudo apt-get update
sudo apt-get install -y "$CXX"
- name: Configure ACE
shell: bash
run: |
set -euxo pipefail
cat > "$ACE_ROOT/ace/config.h" <<'EOF'
#include "ace/config-linux.h"
EOF
cat > "$ACE_ROOT/include/makeinclude/platform_macros.GNU" <<'EOF'
ipv6=1
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
EOF
cat > "$ACE_ROOT/bin/MakeProjectCreator/config/default.features" <<'EOF'
ipv6=1
versioned_namespace=1
EOF
- name: Generate ACE makefiles
shell: bash
run: |
set -euxo pipefail
perl "$ACE_ROOT/bin/mwc.pl" -type gnuace "$ACE_ROOT/ace/ace.mwc" -workers 4
perl "$ACE_ROOT/bin/mwc.pl" -type gnuace "$ACE_ROOT/tests/tests.mwc" -workers 4
- name: Build Proactor smoke targets
shell: bash
run: |
set -euxo pipefail
proactor_targets=(
Proactor_Contract_Test
Proactor_File_Test
Proactor_Stress_Test
Proactor_Test
Proactor_Test_IPV6
Proactor_Timer_Test
Proactor_UDP_Test
)
make -j4 -C "$ACE_ROOT/ace" depend
make -j4 -C "$ACE_ROOT/ace" ACE
make -j4 -C "$ACE_ROOT/tests" depend
make -j4 -C "$ACE_ROOT/tests" "${proactor_targets[@]}"
- name: Run Proactor POSIX smoke tests
shell: bash
working-directory: ${{ env.ACE_ROOT }}/tests
run: |
set -euxo pipefail
BASE_PORT=23000 RUN_ID=gha-posix-contract INCLUDE_DEFAULT=1 perl ./run_proactor_correctness_matrix.pl \
--test Proactor_Contract_Test \
--backend default \
--backend aiocb \
--backend sig \
--backend cb
BASE_PORT=24000 RUN_ID=gha-posix-default INCLUDE_DEFAULT=1 perl ./run_proactor_correctness_matrix.pl \
--backend default \
--test Proactor_File_Test \
--test Proactor_Stress_Test \
--test Proactor_Test \
--test Proactor_Test_IPV6 \
--test Proactor_Timer_Test \
--test Proactor_UDP_Test
- name: Upload Proactor POSIX smoke logs
if: always()
uses: actions/upload-artifact@v4
with:
name: linux-proactor-posix-smoke
path: ${{ env.ACE_ROOT }}/tests/log/proactor_matrix/gha-posix*
if-no-files-found: ignore

proactor-uring-smoke:
runs-on: ubuntu-24.04
timeout-minutes: 25
name: ubuntu-24.04 gcc-13 Proactor io_uring smoke
env:
ACE_ROOT: ${{ github.workspace }}/ACE
MPC_ROOT: ${{ github.workspace }}/MPC
CC: gcc-13
CXX: g++-13
steps:
- name: checkout ACE/TAO
uses: actions/checkout@v6
- name: checkout MPC
uses: actions/checkout@v6
with:
repository: DOCGroup/MPC
path: ${{ env.MPC_ROOT }}
- name: Install apt packages
shell: bash
run: |
set -euxo pipefail
sudo apt-get update
sudo apt-get install -y "$CXX" liburing-dev
- name: Configure ACE for io_uring
shell: bash
run: |
set -euxo pipefail
cat > "$ACE_ROOT/ace/config.h" <<'EOF'
#include "ace/config-linux.h"
EOF
cat > "$ACE_ROOT/include/makeinclude/platform_macros.GNU" <<'EOF'
ipv6=1
uring=1
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
EOF
cat > "$ACE_ROOT/bin/MakeProjectCreator/config/default.features" <<'EOF'
ipv6=1
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add a MPC feature for this?

versioned_namespace=1
EOF
- name: Generate ACE makefiles
shell: bash
run: |
set -euxo pipefail
perl "$ACE_ROOT/bin/mwc.pl" -type gnuace "$ACE_ROOT/ace/ace.mwc" -workers 4
perl "$ACE_ROOT/bin/mwc.pl" -type gnuace "$ACE_ROOT/tests/tests.mwc" -workers 4
- name: Build Proactor io_uring smoke targets
shell: bash
run: |
set -euxo pipefail
proactor_targets=(
Proactor_Contract_Test
Proactor_File_Test
Proactor_Scatter_Gather_Test
Proactor_Stress_Test
Proactor_Test
Proactor_Test_IPV6
Proactor_Timer_Test
Proactor_UDP_Test
)
make -j4 -C "$ACE_ROOT/ace" depend
make -j4 -C "$ACE_ROOT/ace" ACE
make -j4 -C "$ACE_ROOT/tests" depend
make -j4 -C "$ACE_ROOT/tests" "${proactor_targets[@]}"
- name: Probe io_uring availability
id: uring_probe
shell: bash
working-directory: ${{ env.ACE_ROOT }}/tests
run: |
set -euo pipefail
set +e
BASE_PORT=25000 RUN_ID=gha-uring-probe perl ./run_proactor_correctness_matrix.pl \
--test Proactor_Contract_Test \
--backend uring
rc=$?
set -e
if [ "$rc" -eq 0 ]; then
echo "available=true" >> "$GITHUB_OUTPUT"
exit 0
fi
probe_unavailable=0
for log in log/proactor_matrix/gha-uring-probe/Proactor_Contract_Test.uring*.log; do
[ -e "$log" ] || continue
if grep -Eiq 'Failed to initialize uring proactor|io_uring_queue_init|Operation not permitted|EPERM' "$log"; then
probe_unavailable=1
break
fi
done
if [ "$probe_unavailable" -eq 1 ]; then
echo "available=false" >> "$GITHUB_OUTPUT"
echo "io_uring is unavailable on this runner; skipping io_uring smoke."
exit 0
fi
exit "$rc"
- name: Run Proactor io_uring smoke tests
if: steps.uring_probe.outputs.available == 'true'
shell: bash
working-directory: ${{ env.ACE_ROOT }}/tests
run: |
set -euxo pipefail
BASE_PORT=26000 RUN_ID=gha-uring-smoke perl ./run_proactor_correctness_matrix.pl \
--backend uring \
--test Proactor_Contract_Test \
--test Proactor_File_Test \
--test Proactor_Scatter_Gather_Test \
--test Proactor_Stress_Test \
--test Proactor_Test \
--test Proactor_Test_IPV6 \
--test Proactor_Timer_Test \
--test Proactor_UDP_Test
- name: Upload Proactor io_uring smoke logs
if: always()
uses: actions/upload-artifact@v4
with:
name: linux-proactor-uring-smoke
path: ${{ env.ACE_ROOT }}/tests/log/proactor_matrix/gha-uring*
if-no-files-found: ignore
41 changes: 41 additions & 0 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -127,3 +127,44 @@ jobs:
run: msbuild -maxcpucount -p:Platform=${{ matrix.BuildPlatform }} -p:Configuration=${{ matrix.BuildConfiguration }} ACE/tests/tests.sln
- name: Build solution TAO/tests/IDL_Test/IDL_Test.sln
run: msbuild -maxcpucount -p:Platform=${{ matrix.BuildPlatform }} -p:Configuration=${{ matrix.BuildConfiguration }} TAO/tests/IDL_Test/IDL_Test.sln
- name: Run Proactor Win32 correctness smoke tests
if: matrix.name == 'VS2022Debug64Cxx17'
working-directory: ${{ env.ACE_ROOT }}/tests
shell: pwsh
run: |
$env:PATH = "${env:ACE_ROOT}\lib;${env:ACE_ROOT}\lib\${{ matrix.BuildPlatform }}\${{ matrix.BuildConfiguration }};${env:ACE_ROOT}\tests\${{ matrix.BuildPlatform }}\${{ matrix.BuildConfiguration }};$env:PATH"
$env:RUN_ID = "gha-win32-correctness"
$env:BASE_PORT = "23000"
perl .\run_proactor_correctness_matrix.pl --backend win32 `
--test Proactor_Contract_Test `
--test Proactor_File_Test `
--test Proactor_Network_Performance_Test:tcp `
--test Proactor_Network_Performance_Test:udp `
--test Proactor_Scatter_Gather_Test `
--test Proactor_Stress_Test `
--test Proactor_Test `
--test Proactor_Test_IPV6 `
--test Proactor_Timer_Test `
--test Proactor_UDP_Test
- name: Run Proactor Win32 performance smoke tests
if: matrix.name == 'VS2022Debug64Cxx17'
working-directory: ${{ env.ACE_ROOT }}/tests
shell: pwsh
run: |
$env:PATH = "${env:ACE_ROOT}\lib;${env:ACE_ROOT}\lib\${{ matrix.BuildPlatform }}\${{ matrix.BuildConfiguration }};${env:ACE_ROOT}\tests\${{ matrix.BuildPlatform }}\${{ matrix.BuildConfiguration }};$env:PATH"
$env:RUN_ID = "gha-win32-performance"
$env:BASE_PORT = "24000"
perl .\run_proactor_performance_matrix.pl --backend win32 `
--scenario stress_recursive `
--scenario tcp_1x1_light_v4 `
--scenario tcp_1x16_moderate_mt_v4 `
--scenario udp_1x16_moderate_mt_buf4m_v4
- name: Upload Proactor Win32 smoke logs
if: always() && matrix.name == 'VS2022Debug64Cxx17'
uses: actions/upload-artifact@v4
with:
name: windows-proactor-win32-smoke
path: |
${{ env.ACE_ROOT }}/tests/log/proactor_matrix/gha-win32-correctness
${{ env.ACE_ROOT }}/tests/log/proactor_performance/gha-win32-performance
if-no-files-found: ignore
8 changes: 0 additions & 8 deletions ACE/ace/Asynch_IO.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,6 @@ ACE_Asynch_Read_Stream::read (ACE_Message_Block &message_block,
signal_number);
}

#if defined (ACE_HAS_WIN32_OVERLAPPED_IO)
int
ACE_Asynch_Read_Stream::readv (ACE_Message_Block &message_block,
size_t bytes_to_read,
Expand All @@ -219,7 +218,6 @@ ACE_Asynch_Read_Stream::readv (ACE_Message_Block &message_block,
priority,
signal_number);
}
#endif /* ACE_HAS_WIN32_OVERLAPPED_IO */

ACE_Asynch_Operation_Impl *
ACE_Asynch_Read_Stream::implementation (void) const
Expand Down Expand Up @@ -318,7 +316,6 @@ ACE_Asynch_Write_Stream::write (ACE_Message_Block &message_block,
signal_number);
}

#if defined (ACE_HAS_WIN32_OVERLAPPED_IO)
int
ACE_Asynch_Write_Stream::writev (ACE_Message_Block &message_block,
size_t bytes_to_write,
Expand All @@ -337,7 +334,6 @@ ACE_Asynch_Write_Stream::writev (ACE_Message_Block &message_block,
priority,
signal_number);
}
#endif /* ACE_HAS_WIN32_OVERLAPPED_IO */

ACE_Asynch_Operation_Impl *
ACE_Asynch_Write_Stream::implementation (void) const
Expand Down Expand Up @@ -440,7 +436,6 @@ ACE_Asynch_Read_File::read (ACE_Message_Block &message_block,
signal_number);
}

#if (defined (ACE_WIN32) && !defined (ACE_HAS_WINCE))
int
ACE_Asynch_Read_File::readv (ACE_Message_Block &message_block,
size_t bytes_to_read,
Expand All @@ -463,7 +458,6 @@ ACE_Asynch_Read_File::readv (ACE_Message_Block &message_block,
priority,
signal_number);
}
#endif /* (defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)) */

ACE_Asynch_Operation_Impl *
ACE_Asynch_Read_File::implementation (void) const
Expand Down Expand Up @@ -548,7 +542,6 @@ ACE_Asynch_Write_File::write (ACE_Message_Block &message_block,
signal_number);
}

#if (defined (ACE_WIN32) && !defined (ACE_HAS_WINCE))
int
ACE_Asynch_Write_File::writev (ACE_Message_Block &message_block,
size_t bytes_to_write,
Expand All @@ -571,7 +564,6 @@ ACE_Asynch_Write_File::writev (ACE_Message_Block &message_block,
priority,
signal_number);
}
#endif /* (defined (ACE_WIN32) && !defined (ACE_HAS_WINCE)) */

ACE_Asynch_Operation_Impl *
ACE_Asynch_Write_File::implementation (void) const
Expand Down
Loading
Loading